From effec343423c7ad60656f1cc1fcba8610c7104df Mon Sep 17 00:00:00 2001 From: chaudhari-mithilesh Date: Wed, 30 Apr 2025 06:17:43 +0000 Subject: [PATCH] [create-pull-request] automated change --- logs/UpdateProcessor.log | 39 + processor_output.txt | 6 + update_results.json | 29 +- wp-content/plugins/bbpress/bbpress.php | 8 +- wp-content/plugins/bbpress/bbpress.pot | 10 +- .../bbpress/includes/replies/functions.php | 21 +- wp-content/plugins/bbpress/readme.txt | 4 +- wp-content/plugins/breeze/breeze.php | 5 +- .../plugins/breeze/inc/breeze-admin.php | 17 + .../plugins/breeze/inc/cache/purge-cache.php | 4 +- .../breeze/inc/cache/purge-per-time.php | 42 +- .../breeze/inc/class-breeze-bulk-update.php | 84 + wp-content/plugins/breeze/inc/upgrade.php | 48 + wp-content/plugins/breeze/readme.txt | 14 +- .../contact-form-7/modules/stripe/api.php | 47 +- .../contact-form-7/modules/stripe/stripe.php | 65 +- wp-content/plugins/contact-form-7/readme.txt | 8 +- .../contact-form-7/wp-contact-form-7.php | 4 +- .../assets/css/general.css | 43 +- .../assets/css/general.min.css | 2 +- .../assets/css/settings-base.css | 19 + .../assets/css/settings-base.min.css | 2 +- .../assets/css/whats-new.css | 173 + .../assets/css/whats-new.min.css | 1 + .../assets/images/hcaptcha-icon-animated.svg | 68 + .../assets/images/logo/events-manager.svg | 63 + .../assets/images/logo/password-protected.png | Bin 0 -> 14487 bytes .../assets/images/passive-mode-example.gif | Bin 0 -> 753519 bytes .../assets/images/protect-content-example.gif | Bin 0 -> 131176 bytes .../assets/js/admin-cf7.js | 1 - .../assets/js/apps/hcaptcha.js | 2 +- .../assets/js/general.js | 2 +- .../assets/js/general.min.js | 2 +- .../assets/js/hcaptcha-auto-verify.js | 6 +- .../assets/js/hcaptcha-auto-verify.min.js | 2 +- .../assets/js/hcaptcha-cf7.js | 21 +- .../assets/js/hcaptcha-cf7.min.js | 2 +- .../assets/js/hcaptcha-elementor-pro.js | 7 +- .../assets/js/hcaptcha-elementor-pro.min.js | 2 +- .../assets/js/hcaptcha-fluentform.js | 2 +- .../assets/js/hcaptcha-fluentform.min.js | 2 +- .../assets/js/hcaptcha-forminator.js | 7 +- .../assets/js/hcaptcha-forminator.min.js | 2 +- .../assets/js/hcaptcha-kadence-advanced.js | 6 +- .../js/hcaptcha-kadence-advanced.min.js | 2 +- .../assets/js/hcaptcha-kadence.js | 19 +- .../assets/js/hcaptcha-kadence.min.js | 2 +- .../assets/js/hcaptcha-quform.js | 20 +- .../assets/js/hcaptcha-quform.min.js | 2 +- .../assets/js/settings-base.js | 78 +- .../assets/js/settings-base.min.js | 2 +- .../assets/js/whats-new.js | 100 + .../assets/js/whats-new.min.js | 1 + .../hcaptcha-for-forms-and-more/changelog.txt | 42 + .../hcaptcha-for-forms-and-more/composer.json | 12 +- .../hcaptcha-for-forms-and-more/hcaptcha.php | 6 +- .../hcaptcha-for-forms-and-more/readme.txt | 235 +- .../src/php/Abstracts/LoginBase.php | 16 + .../src/php/Admin/Notifications.php | 167 +- .../src/php/Admin/NotificationsBase.php | 71 + .../src/php/Admin/Privacy.php | 149 + .../src/php/Admin/WhatsNew.php | 414 + .../src/php/AutoVerify/AutoVerify.php | 10 +- .../src/php/Avada/Form.php | 16 +- .../src/php/BeaverBuilder/Base.php | 11 +- .../src/php/BeaverBuilder/Contact.php | 5 +- .../src/php/BeaverBuilder/Login.php | 3 +- .../src/php/CF7/Admin.php | 2 +- .../src/php/CF7/ReallySimpleCaptcha.php | 3 + .../src/php/ColorlibCustomizer/Base.php | 15 + .../src/php/DelayedScript/DelayedScript.php | 6 +- .../src/php/EasyDigitalDownloads/Login.php | 15 + .../src/php/EssentialAddons/Login.php | 2 +- .../src/php/EssentialAddons/Register.php | 4 +- .../src/php/EssentialBlocks/Form.php | 2 +- .../src/php/EventsManager/Booking.php | 110 + .../src/php/FluentForm/Form.php | 89 +- .../src/php/FormidableForms/Form.php | 2 +- .../src/php/Forminator/Form.php | 8 +- .../src/php/GiveWP/Base.php | 2 +- .../src/php/GravityForms/Field.php | 4 +- .../src/php/GravityForms/Form.php | 2 +- .../src/php/Helpers/HCaptcha.php | 14 +- .../src/php/Helpers/Request.php | 2 + .../src/php/Jetpack/Base.php | 2 +- .../src/php/Main.php | 99 +- .../src/php/Migrations/Migrations.php | 56 +- .../src/php/Passster/Protect.php | 2 +- .../src/php/PasswordProtected/Protect.php | 104 + .../src/php/ProtectContent/ProtectContent.php | 545 + .../php/Settings/Abstracts/SettingsBase.php | 5 +- .../src/php/Settings/General.php | 52 +- .../src/php/Settings/Integrations.php | 16 + .../src/php/Settings/ListPageBase.php | 8 +- .../src/php/Settings/PluginSettingsBase.php | 10 +- .../src/php/Settings/Settings.php | 9 + .../src/php/Spectra/Form.php | 2 +- .../src/php/SupportCandy/Base.php | 8 +- .../src/php/WP/Base.php | 17 +- .../src/php/WP/PasswordProtected.php | 2 +- .../src/php/WP/Register.php | 2 +- .../src/php/WPDiscuz/Comment.php | 11 +- .../src/php/WPForms/Form.php | 2 +- .../src/php/WPForo/Base.php | 8 +- .../src/php/includes/request.php | 3 +- .../hcaptcha-for-forms-and-more/uninstall.php | 9 +- .../vendor/autoload.php | 7 +- .../vendor/composer/InstalledVersions.php | 20 +- .../vendor/composer/autoload_classmap.php | 6 + .../vendor/composer/autoload_real.php | 8 +- .../vendor/composer/autoload_static.php | 14 +- .../vendor/composer/installed.php | 12 +- wp-content/plugins/otter-blocks/CHANGELOG.md | 4 + .../build/dashboard/index.asset.php | 2 +- .../otter-blocks/build/dashboard/index.js | 6 +- .../plugins/otter-blocks/inc/class-main.php | 2 +- .../blocks/class-core-image-plugin-css.php | 2 +- .../inc/plugins/class-dashboard.php | 61 +- .../plugins/otter-blocks/otter-blocks.php | 5 +- wp-content/plugins/otter-blocks/readme.md | 8 +- wp-content/plugins/otter-blocks/readme.txt | 8 +- .../plugins/otter-blocks/vendor/autoload.php | 7 +- .../codeinwp/themeisle-sdk/CHANGELOG.md | 18 + .../js/build/survey/survey_deps.asset.php | 2 +- .../assets/js/build/survey/survey_deps.js | 2 +- .../vendor/codeinwp/themeisle-sdk/load.php | 2 +- .../themeisle-sdk/src/Modules/Logger.php | 16 +- .../src/Modules/Script_loader.php | 105 +- .../src/Modules/Translations.php | 2 +- .../vendor/composer/InstalledVersions.php | 20 +- .../vendor/composer/autoload_real.php | 10 +- .../vendor/composer/autoload_static.php | 8 +- .../vendor/composer/installed.json | 14 +- .../vendor/composer/installed.php | 14 +- wp-content/plugins/updraftplus/SECURITY.md | 19 + .../updraftplus/addons/anonymisation.php | 349 - .../plugins/updraftplus/addons/autobackup.php | 1205 -- .../plugins/updraftplus/addons/azure.php | 712 -- .../plugins/updraftplus/addons/backblaze.php | 758 -- .../addons/cloudfiles-enhanced.php | 403 - .../updraftplus/addons/dropbox-folders.php | 77 - .../plugins/updraftplus/addons/fixtime.php | 584 - .../updraftplus/addons/google-enhanced.php | 109 - .../updraftplus/addons/googlecloud.php | 1367 -- .../plugins/updraftplus/addons/importer.php | 376 - .../updraftplus/addons/incremental.php | 497 - .../plugins/updraftplus/addons/lockadmin.php | 256 - .../plugins/updraftplus/addons/migrator.php | 1804 --- .../updraftplus/addons/moredatabase.php | 606 - .../plugins/updraftplus/addons/morefiles.php | 1252 -- .../updraftplus/addons/morestorage.php | 303 - .../plugins/updraftplus/addons/multisite.php | 841 -- .../plugins/updraftplus/addons/noadverts.php | 13 - .../plugins/updraftplus/addons/onedrive.php | 1343 -- .../plugins/updraftplus/addons/pcloud.php | 789 -- .../plugins/updraftplus/addons/reporting.php | 579 - .../updraftplus/addons/s3-enhanced.php | 569 - .../plugins/updraftplus/addons/sftp.php | 1180 -- .../plugins/updraftplus/addons/webdav.php | 1577 --- .../plugins/updraftplus/addons/wp-cli.php | 1231 -- wp-content/plugins/updraftplus/admin.php | 1224 +- wp-content/plugins/updraftplus/backup.php | 951 +- .../plugins/updraftplus/central/bootstrap.php | 205 +- .../classes/class-automatic-upgrader-skin.php | 2 +- .../class-updraftcentral-wp-upgrader.php | 49 + .../plugins/updraftplus/central/commands.php | 14 +- ...-2-23-3.min.css => central-1-25-5.min.css} | 2 +- ...min.css.map => central-1-25-5.min.css.map} | 2 +- .../plugins/updraftplus/central/host.php | 14 +- ...al-2-23-3.min.js => central-1-25-5.min.js} | 2 +- .../plugins/updraftplus/central/js/central.js | 29 +- .../plugins/updraftplus/central/listener.php | 43 +- .../updraftplus/central/modules/analytics.php | 8 +- .../updraftplus/central/modules/backups.php | 391 + .../updraftplus/central/modules/comments.php | 16 +- .../updraftplus/central/modules/core.php | 68 +- .../updraftplus/central/modules/media.php | 5 +- .../updraftplus/central/modules/plugin.php | 20 +- .../updraftplus/central/modules/posts.php | 19 +- .../updraftplus/central/modules/theme.php | 10 +- .../updraftplus/central/modules/updates.php | 181 +- .../updraftplus/central/modules/users.php | 2 +- .../central/translations-central.php | 20 +- .../updraftplus/central/updraftplus.php | 8 +- .../updraftplus/central/wp-optimize.php | 18 +- .../plugins/updraftplus/changelog-old.txt | 16 +- .../plugins/updraftplus/class-updraftplus.php | 575 +- .../css/updraftplus-admin-1-25-5.min.css | 2 + .../css/updraftplus-admin-1-25-5.min.css.map | 1 + .../css/updraftplus-admin-2-23-3.min.css | 2 - .../css/updraftplus-admin-2-23-3.min.css.map | 1 - .../updraftplus/css/updraftplus-admin.css | 95 +- .../css/updraftplus-notices-1-25-5.min.css | 2 + .../updraftplus-notices-1-25-5.min.css.map | 1 + .../css/updraftplus-notices-2-23-3.min.css | 2 - .../updraftplus-notices-2-23-3.min.css.map | 1 - .../updraftplus/css/updraftplus-notices.css | 14 +- ...in.css => updraftplus-tour-1-25-5.min.css} | 2 +- ...ap => updraftplus-tour-1-25-5.min.css.map} | 2 +- .../plugins/updraftplus/example-decrypt.php | 2 +- .../updraftplus/images/dashicon-white.png | Bin 0 -> 785 bytes .../updraftplus/images/notices/aios_logo.png | Bin 0 -> 2605 bytes .../images/notices/black_friday_sale_24.png | Bin 0 -> 55570 bytes .../images/notices/collection_sale_24.png | Bin 0 -> 56645 bytes .../images/notices/new_year_sale_24.png | Bin 0 -> 51210 bytes .../updraftplus/images/notices/sale_20_24.png | Bin 0 -> 5525 bytes .../updraftplus/images/notices/sale_20_25.png | Bin 0 -> 2500 bytes .../images/notices/spring_sale_24.png | Bin 0 -> 51840 bytes .../images/notices/summer_sale_24.png | Bin 0 -> 51058 bytes .../images/notices/teamupdraft_logo.png | Bin 0 -> 1805 bytes .../images/notices/updraft_logo.png | Bin 3137 -> 2453 bytes .../images/notices/updraftcentral_logo.png | Bin 0 -> 2421 bytes .../images/notices/wp_optimize_logo.png | Bin 8112 -> 2545 bytes .../updraftplus/images/updraftvault-150.png | Bin 6382 -> 0 bytes .../includes/Backblaze/CurlClient.php | 839 -- .../updraftplus/includes/Dropbox2/API.php | 21 +- .../OAuth/Consumer/ConsumerAbstract.php | 12 +- .../includes/Dropbox2/OAuth/Consumer/Curl.php | 67 +- .../Dropbox2/OAuth/Consumer/WordPress.php | 4 +- .../Dropbox2/OAuth/Storage/Encrypter.php | 16 +- .../Dropbox2/OAuth/Storage/WordPress.php | 6 +- .../includes/Google/Auth/ComputeEngine.php | 4 +- .../includes/Google/Auth/OAuth2.php | 2 + .../updraftplus/includes/Google/Cache/Apc.php | 2 +- .../includes/Google/Cache/File.php | 2 +- .../includes/Google/Cache/Memcache.php | 6 +- .../includes/Google/Http/MediaFileUpload.php | 2 +- .../updraftplus/includes/Google/Http/REST.php | 6 +- .../updraftplus/includes/Google/IO/Curl.php | 4 +- .../updraftplus/includes/Google/IO/Stream.php | 11 +- .../includes/Google/Logger/Abstract.php | 2 +- .../includes/Google/Logger/File.php | 4 +- .../updraftplus/includes/Google/Model.php | 2 +- .../Google/Service/CloudMonitoring.php | 1167 -- .../includes/Google/Service/Cloudsearch.php | 57 - .../Google/Service/Deploymentmanager.php | 1194 -- .../includes/Google/Service/Drive.php | 14 + .../includes/Google/Service/Manager.php | 1857 --- .../includes/Google/Service/Oauth2.php | 2 + .../includes/Google/Service/Resource.php | 6 +- .../includes/Google/Service/Storage.php | 6 + .../includes/Google/Signer/P12.php | 2 +- .../includes/Google/Verifier/Pem.php | 4 +- .../updraftplus/includes/PEAR/Archive/Tar.php | 2421 ---- .../includes/PEAR/HTTP/Request2.php | 1053 -- .../includes/PEAR/HTTP/Request2/Adapter.php | 143 - .../PEAR/HTTP/Request2/Adapter/Curl.php | 585 - .../PEAR/HTTP/Request2/Adapter/Mock.php | 168 - .../PEAR/HTTP/Request2/Adapter/Socket.php | 1146 -- .../HTTP/Request2/ConnectionException.php | 38 - .../includes/PEAR/HTTP/Request2/CookieJar.php | 578 - .../includes/PEAR/HTTP/Request2/Exception.php | 118 - .../PEAR/HTTP/Request2/LogicException.php | 42 - .../PEAR/HTTP/Request2/MessageException.php | 37 - .../PEAR/HTTP/Request2/MultipartBody.php | 275 - .../HTTP/Request2/NotImplementedException.php | 35 - .../PEAR/HTTP/Request2/Observer/Log.php | 195 - .../Observer/UncompressingDownload.php | 276 - .../includes/PEAR/HTTP/Request2/Response.php | 692 - .../includes/PEAR/HTTP/Request2/SOCKS5.php | 137 - .../PEAR/HTTP/Request2/SocketWrapper.php | 390 - .../WebDAV/Tools/_parse_lock_response.php | 75 - .../WebDAV/Tools/_parse_propfind_response.php | 157 - .../updraftplus/includes/PEAR/Net/Socket.php | 686 - .../updraftplus/includes/PEAR/Net/URL.php | 475 - .../updraftplus/includes/PEAR/Net/URL2.php | 1219 -- .../updraftplus/includes/PEAR/PEAR.php | 1060 -- .../includes/PEAR/PEAR/Exception.php | 389 - .../updraftplus/includes/PEAR/PEAR5.php | 33 - .../plugins/updraftplus/includes/S3.php | 109 +- .../plugins/updraftplus/includes/S3compat.php | 76 +- .../WindowsAzure/Blob/BlobRestProxy.php | 2461 ---- .../WindowsAzure/Blob/Internal/IBlob.php | 491 - .../Blob/Models/AccessCondition.php | 247 - .../WindowsAzure/Blob/Models/AccessPolicy.php | 143 - .../Blob/Models/AcquireLeaseOptions.php | 68 - .../Blob/Models/AcquireLeaseResult.php | 88 - .../WindowsAzure/Blob/Models/Blob.php | 176 - .../Blob/Models/BlobBlockType.php | 65 - .../WindowsAzure/Blob/Models/BlobPrefix.php | 68 - .../Blob/Models/BlobProperties.php | 431 - .../Blob/Models/BlobServiceOptions.php | 65 - .../WindowsAzure/Blob/Models/BlobType.php | 44 - .../WindowsAzure/Blob/Models/Block.php | 95 - .../WindowsAzure/Blob/Models/BlockList.php | 175 - .../Blob/Models/BreakLeaseResult.php | 86 - .../Blob/Models/CommitBlobBlocksOptions.php | 258 - .../WindowsAzure/Blob/Models/Container.php | 150 - .../WindowsAzure/Blob/Models/ContainerACL.php | 219 - .../Blob/Models/ContainerProperties.php | 95 - .../Blob/Models/CopyBlobOptions.php | 205 - .../Blob/Models/CopyBlobResult.php | 120 - .../Blob/Models/CreateBlobBlockOptions.php | 95 - .../Blob/Models/CreateBlobOptions.php | 421 - .../Blob/Models/CreateBlobPagesOptions.php | 122 - .../Blob/Models/CreateBlobPagesResult.php | 184 - .../Blob/Models/CreateBlobSnapshotOptions.php | 123 - .../Blob/Models/CreateBlobSnapshotResult.php | 154 - .../Blob/Models/CreateContainerOptions.php | 123 - .../Blob/Models/DeleteBlobOptions.php | 151 - .../Blob/Models/DeleteContainerOptions.php | 68 - .../Blob/Models/GetBlobMetadataOptions.php | 122 - .../Blob/Models/GetBlobMetadataResult.php | 147 - .../Blob/Models/GetBlobOptions.php | 207 - .../Blob/Models/GetBlobPropertiesOptions.php | 122 - .../Blob/Models/GetBlobPropertiesResult.php | 95 - .../Blob/Models/GetBlobResult.php | 143 - .../Blob/Models/GetContainerACLResult.php | 145 - .../Models/GetContainerPropertiesResult.php | 126 - .../WindowsAzure/Blob/Models/LeaseMode.php | 46 - .../Blob/Models/ListBlobBlocksOptions.php | 187 - .../Blob/Models/ListBlobBlocksResult.php | 274 - .../Blob/Models/ListBlobsOptions.php | 238 - .../Blob/Models/ListBlobsResult.php | 339 - .../Blob/Models/ListContainersOptions.php | 172 - .../Blob/Models/ListContainersResult.php | 261 - .../Blob/Models/ListPageBlobRangesOptions.php | 179 - .../Blob/Models/ListPageBlobRangesResult.php | 196 - .../WindowsAzure/Blob/Models/PageRange.php | 131 - .../Blob/Models/PageWriteOption.php | 44 - .../Blob/Models/PublicAccessType.php | 66 - .../Blob/Models/SetBlobMetadataOptions.php | 95 - .../Blob/Models/SetBlobMetadataResult.php | 118 - .../Blob/Models/SetBlobPropertiesOptions.php | 292 - .../Blob/Models/SetBlobPropertiesResult.php | 149 - .../Models/SetContainerMetadataOptions.php | 78 - .../Blob/Models/SignedIdentifier.php | 104 - .../Common/CloudConfigurationManager.php | 167 - .../Common/Internal/Atom/AtomBase.php | 326 - .../Common/Internal/Atom/AtomLink.php | 343 - .../Common/Internal/Atom/Category.php | 253 - .../Common/Internal/Atom/Content.php | 213 - .../Common/Internal/Atom/Entry.php | 645 - .../Common/Internal/Atom/Feed.php | 730 -- .../Common/Internal/Atom/Generator.php | 200 - .../Common/Internal/Atom/Person.php | 222 - .../Common/Internal/Atom/Source.php | 632 - .../Internal/Authentication/IAuthScheme.php | 60 - .../Internal/Authentication/OAuthScheme.php | 142 - .../Authentication/SharedKeyAuthScheme.php | 137 - .../Authentication/StorageAuthScheme.php | 215 - .../TableSharedKeyLiteAuthScheme.php | 118 - .../Internal/ConnectionStringParser.php | 365 - .../Internal/ConnectionStringSource.php | 98 - .../Common/Internal/FilterableService.php | 52 - .../Internal/Filters/AuthenticationFilter.php | 93 - .../Common/Internal/Filters/DateFilter.php | 72 - .../Filters/ExponentialRetryPolicy.php | 134 - .../Common/Internal/Filters/HeadersFilter.php | 93 - .../Common/Internal/Filters/RetryPolicy.php | 66 - .../Internal/Filters/RetryPolicyFilter.php | 99 - .../Common/Internal/Filters/WrapFilter.php | 113 - .../Common/Internal/Http/BatchRequest.php | 162 - .../Common/Internal/Http/BatchResponse.php | 125 - .../Common/Internal/Http/HttpCallContext.php | 446 - .../Common/Internal/Http/HttpClient.php | 388 - .../Common/Internal/Http/IHttpClient.php | 204 - .../Common/Internal/Http/IUrl.php | 114 - .../WindowsAzure/Common/Internal/Http/Url.php | 192 - .../Common/Internal/IServiceFilter.php | 61 - .../Internal/InvalidArgumentTypeException.php | 57 - .../WindowsAzure/Common/Internal/Logger.php | 83 - .../Common/Internal/MediaServicesSettings.php | 267 - .../Common/Internal/OAuthRestProxy.php | 118 - .../Common/Internal/Resources.php | 458 - .../Common/Internal/RestProxy.php | 207 - .../Internal/Serialization/ISerializer.php | 73 - .../Internal/Serialization/JsonSerializer.php | 96 - .../Internal/Serialization/XmlSerializer.php | 245 - .../Common/Internal/ServiceBusSettings.php | 267 - .../Internal/ServiceManagementSettings.php | 207 - .../Common/Internal/ServiceRestProxy.php | 347 - .../Common/Internal/ServiceSettings.php | 287 - .../Internal/StorageServiceSettings.php | 487 - .../Common/Internal/Utilities.php | 731 -- .../WindowsAzure/Common/Internal/Validate.php | 397 - .../Models/GetServicePropertiesResult.php | 81 - .../WindowsAzure/Common/Models/Logging.php | 229 - .../WindowsAzure/Common/Models/Metrics.php | 202 - .../Common/Models/OAuthAccessToken.php | 153 - .../Common/Models/RetentionPolicy.php | 136 - .../Common/Models/ServiceProperties.php | 136 - .../WindowsAzure/Common/ServiceException.php | 84 - .../WindowsAzure/Common/ServicesBuilder.php | 505 - .../includes/WindowsAzure/WindowsAzure.php | 335 - .../updraftplus/includes/azure-extensions.php | 87 - .../blockui/jquery.blockUI-1-25-5.min.js | 1 + .../blockui/jquery.blockUI-2-23-3.min.js | 1 - .../includes/blockui/jquery.blockUI.js | 4 +- .../blockui/jquery.blockUI.min-1-25-5.min.js | 1 + .../blockui/jquery.blockUI.min-2-23-3.min.js | 1 - .../plugins/updraftplus/includes/cacert.pem | 1005 +- ....css => udp-checkout-embed-1-25-5.min.css} | 2 +- ... => udp-checkout-embed-1-25-5.min.css.map} | 2 +- .../assets/udp-checkout-embed-1-25-5.min.js | 1 + .../assets/udp-checkout-embed-2-23-3.min.js | 1 - .../assets/udp-checkout-embed.js | 2 +- .../class-udp-checkout-embed.php | 35 + .../includes/checkout-embed/products.json | 2 +- .../includes/checkout-embed/readme.md | 2 +- .../includes/class-backup-history.php | 28 +- .../updraftplus/includes/class-commands.php | 76 +- .../includes/class-database-utility.php | 112 +- .../includes/class-filesystem-functions.php | 158 +- .../class-http-error-descriptions.php | 92 +- .../includes/class-job-scheduler.php | 2 +- .../includes/class-manipulation-functions.php | 6 +- .../includes/class-onedrive-account.php | 47 - .../includes/class-partialfileservlet.php | 8 +- .../includes/class-remote-send.php | 156 +- .../includes/class-search-replace.php | 29 +- .../class-storage-methods-interface.php | 8 +- .../includes/class-updraft-dashboard-news.php | 34 +- .../includes/class-updraftplus-encryption.php | 17 +- .../includes/class-wpadmin-commands.php | 137 +- .../updraftplus/includes/class-zip.php | 8 +- .../includes/cloudfiles/cloudfiles.php | 22 +- .../cloudfiles/cloudfiles_exceptions.php | 2 +- .../includes/cloudfiles/cloudfiles_http.php | 10 +- .../updraftplus/includes/ftp.class.php | 4 +- .../includes/google-extensions.php | 2 +- .../includes/handlebars/handlebars.js | 1038 +- .../includes/handlebars/handlebars.min.js | 8 +- .../includes/handlebars/handlebars.runtime.js | 979 +- .../handlebars/handlebars.runtime.min.js | 4 +- ...> jquery-ui.custom-v1.11.4-1-25-5.min.css} | 2 +- ...uery-ui.custom-v1.11.4-1-25-5.min.css.map} | 2 +- ...> jquery-ui.custom-v1.12.1-1-25-5.min.css} | 2 +- ...uery-ui.custom-v1.12.1-1-25-5.min.css.map} | 2 +- .../jquery-ui.dialog.extended-1-25-5.min.js | 1 + .../jquery-ui.dialog.extended-2-23-3.min.js | 1 - .../updraftplus/includes/jstree/jstree.js | 113 +- .../updraftplus/includes/jstree/jstree.min.js | 4 +- ...in.css => jquery-labelauty-1-25-5.min.css} | 2 +- ...ap => jquery-labelauty-1-25-5.min.css.map} | 2 +- .../labelauty/jquery-labelauty-1-25-5.min.js | 1 + .../labelauty/jquery-labelauty-2-23-3.min.js | 1 - .../updraftplus/includes/migrator-lite.php | 1108 ++ .../updraftplus/includes/onedrive/LICENSE | 674 - .../updraftplus/includes/onedrive/client.php | 945 -- .../updraftplus/includes/onedrive/file.php | 60 - .../updraftplus/includes/onedrive/folder.php | 68 - .../updraftplus/includes/onedrive/object.php | 227 - .../includes/onedrive/onedrive.php | 5 - .../pcloud/UpdraftPlus_Pcloud_API.php | 6 +- .../updraftplus/includes/select2/select2.css | 537 - .../updraftplus/includes/select2/select2.js | 6209 --------- .../includes/select2/select2.min.css | 1 - .../includes/select2/select2.min.js | 2 - .../updraft-admin-common-1-25-5.min.js | 1 + .../updraft-admin-common-2-23-3.min.js | 1 - .../includes/updraft-admin-common.js | 530 +- .../updraftplus/includes/updraftcentral.php | 13 +- .../temporary-clone-dash-notice.php | 14 +- .../updraftclone/temporary-clone-restore.php | 4 +- .../updraftclone/temporary-clone-status.php | 83 +- .../temporary-clone-user-notice.php | 12 +- .../includes/updraftplus-clone.php | 13 +- .../includes/updraftplus-notices.php | 299 +- .../updraftplus/includes/updraftplus-tour.php | 10 +- .../plugins/updraftplus/js/tour-1-25-5.min.js | 1 + .../plugins/updraftplus/js/tour-2-23-3.min.js | 1 - wp-content/plugins/updraftplus/js/tour.js | 2 +- .../js/updraft-admin-restore-1-25-5.min.js | 1 + .../js/updraft-admin-restore-2-23-3.min.js | 1 - .../updraftplus/js/updraft-admin-restore.js | 45 +- .../updraftplus/languages/updraftplus-af.mo | Bin 0 -> 278 bytes .../updraftplus/languages/updraftplus-af.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-ar.mo | Bin 0 -> 239498 bytes .../updraftplus/languages/updraftplus-ar.po | 10391 ++++++++++++++++ .../languages/updraftplus-bg_BG.mo | Bin 0 -> 244509 bytes .../languages/updraftplus-bg_BG.po | 10367 +++++++++++++++ .../languages/updraftplus-bn_BD.mo | Bin 0 -> 20916 bytes .../languages/updraftplus-bn_BD.po | 10367 +++++++++++++++ .../languages/updraftplus-bs_BA.mo | Bin 0 -> 381 bytes .../languages/updraftplus-bs_BA.po | 10373 +++++++++++++++ .../updraftplus/languages/updraftplus-ca.mo | Bin 0 -> 3752 bytes .../updraftplus/languages/updraftplus-ca.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-ckb.mo | Bin 0 -> 278 bytes .../updraftplus/languages/updraftplus-ckb.po | 10367 +++++++++++++++ .../languages/updraftplus-da_DK.mo | Bin 0 -> 158920 bytes .../languages/updraftplus-da_DK.po | 10369 +++++++++++++++ .../languages/updraftplus-es_AR.mo | Bin 0 -> 304227 bytes .../languages/updraftplus-es_AR.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-et.mo | Bin 0 -> 9181 bytes .../updraftplus/languages/updraftplus-et.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-eu.mo | Bin 0 -> 12254 bytes .../updraftplus/languages/updraftplus-eu.po | 10367 +++++++++++++++ .../languages/updraftplus-fa_IR.mo | Bin 0 -> 140544 bytes .../languages/updraftplus-fa_IR.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-fi.mo | Bin 0 -> 42237 bytes .../updraftplus/languages/updraftplus-fi.po | 10367 +++++++++++++++ .../languages/updraftplus-fr_CA.mo | Bin 0 -> 277 bytes .../languages/updraftplus-fr_CA.po | 10367 +++++++++++++++ .../languages/updraftplus-he_IL.mo | Bin 0 -> 21240 bytes .../languages/updraftplus-he_IL.po | 10367 +++++++++++++++ .../languages/updraftplus-hi_IN.mo | Bin 0 -> 1765 bytes .../languages/updraftplus-hi_IN.po | 10367 +++++++++++++++ .../languages/updraftplus-hu_HU.mo | Bin 0 -> 44132 bytes .../languages/updraftplus-hu_HU.po | 10367 +++++++++++++++ .../languages/updraftplus-id_ID.mo | Bin 0 -> 47829 bytes .../languages/updraftplus-id_ID.po | 10369 +++++++++++++++ .../languages/updraftplus-ko_KR.mo | Bin 0 -> 1663 bytes .../languages/updraftplus-ko_KR.po | 10361 +++++++++++++++ .../languages/updraftplus-lt_LT.mo | Bin 0 -> 5669 bytes .../languages/updraftplus-lt_LT.po | 10373 +++++++++++++++ .../languages/updraftplus-pt_BR.mo | Bin 0 -> 204639 bytes .../languages/updraftplus-pt_BR.po | 10371 +++++++++++++++ .../languages/updraftplus-ru_RU.mo | Bin 0 -> 171063 bytes .../languages/updraftplus-ru_RU.po | 10380 +++++++++++++++ .../languages/updraftplus-sl_SI.mo | Bin 0 -> 85134 bytes .../languages/updraftplus-sl_SI.po | 10379 +++++++++++++++ .../languages/updraftplus-sr_RS.mo | Bin 0 -> 942 bytes .../languages/updraftplus-sr_RS.po | 10373 +++++++++++++++ .../updraftplus/languages/updraftplus-te.mo | Bin 0 -> 275 bytes .../updraftplus/languages/updraftplus-te.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-th.mo | Bin 0 -> 270 bytes .../updraftplus/languages/updraftplus-th.po | 10361 +++++++++++++++ .../updraftplus/languages/updraftplus-tl.mo | Bin 0 -> 77395 bytes .../updraftplus/languages/updraftplus-tl.po | 10367 +++++++++++++++ .../languages/updraftplus-tr_TR.mo | Bin 0 -> 112868 bytes .../languages/updraftplus-tr_TR.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-ur.mo | Bin 0 -> 1719 bytes .../updraftplus/languages/updraftplus-ur.po | 10367 +++++++++++++++ .../updraftplus/languages/updraftplus-vi.mo | Bin 0 -> 19873 bytes .../updraftplus/languages/updraftplus-vi.po | 10361 +++++++++++++++ .../languages/updraftplus-zh_HK.mo | Bin 0 -> 30842 bytes .../languages/updraftplus-zh_HK.po | 10361 +++++++++++++++ .../languages/updraftplus-zh_TW.mo | Bin 0 -> 38842 bytes .../languages/updraftplus-zh_TW.po | 10361 +++++++++++++++ .../updraftplus/languages/updraftplus.pot | 9084 ++++++++------ .../updraftplus/methods/addon-base-v2.php | 27 +- .../methods/addon-not-yet-present.php | 23 +- .../updraftplus/methods/backup-module.php | 67 +- .../updraftplus/methods/cloudfiles-new.php | 39 +- .../updraftplus/methods/cloudfiles.php | 42 +- .../updraftplus/methods/dreamobjects.php | 10 +- .../plugins/updraftplus/methods/dropbox.php | 169 +- .../plugins/updraftplus/methods/email.php | 17 +- .../plugins/updraftplus/methods/ftp.php | 26 +- .../updraftplus/methods/googledrive.php | 333 +- .../updraftplus/methods/insufficient.php | 26 +- .../updraftplus/methods/openstack-base.php | 30 +- .../updraftplus/methods/openstack2.php | 22 +- .../updraftplus/methods/remotesend.php | 39 +- wp-content/plugins/updraftplus/methods/s3.php | 200 +- .../plugins/updraftplus/methods/s3generic.php | 75 +- .../plugins/updraftplus/methods/sftp.php | 2 +- .../plugins/updraftplus/methods/template.php | 2 +- .../updraftplus/methods/updraftvault.php | 164 +- wp-content/plugins/updraftplus/options.php | 71 +- wp-content/plugins/updraftplus/readme.txt | 560 +- wp-content/plugins/updraftplus/restorer.php | 840 +- .../wp-admin/advanced/advanced-tools.php | 3 +- .../wp-admin/advanced/cron-events.php | 24 + .../templates/wp-admin/advanced/db-size.php | 31 +- .../wp-admin/advanced/export-settings.php | 10 +- .../wp-admin/advanced/lock-admin.php | 16 +- .../wp-admin/advanced/search-replace.php | 6 +- .../templates/wp-admin/advanced/site-info.php | 14 +- .../wp-admin/advanced/tools-menu.php | 18 +- .../wp-admin/advanced/total-size.php | 4 +- .../wp-admin/advanced/wipe-settings.php | 14 +- .../wp-admin/notices/autobackup-notice.php | 36 +- .../wp-admin/notices/bottom-notice.php | 34 +- .../wp-admin/notices/button-label.php | 18 + .../wp-admin/notices/horizontal-notice.php | 62 +- .../wp-admin/notices/report-plain.php | 40 +- .../templates/wp-admin/notices/report.php | 45 +- .../notices/thanks-for-using-main-dash.php | 33 +- .../wp-admin/settings/backupnow-modal.php | 42 +- .../settings/delete-and-restore-modals.php | 59 +- .../settings/downloading-and-restoring.php | 35 +- .../wp-admin/settings/exclude-modal.php | 44 +- .../exclude-panel-heading.php | 2 +- .../exclude-panel-submit.php | 2 +- .../settings/existing-backups-table.php | 64 +- .../wp-admin/settings/file-backup-exclude.php | 8 +- .../wp-admin/settings/form-contents.php | 61 +- .../templates/wp-admin/settings/header.php | 16 +- .../settings/migrator-no-migrator.php | 10 +- .../wp-admin/settings/tab-addons.php | 180 +- .../wp-admin/settings/tab-backups.php | 41 +- .../templates/wp-admin/settings/tab-bar.php | 4 +- .../wp-admin/settings/take-backup.php | 2 +- .../wp-admin/settings/temporary-clone.php | 44 +- .../settings/updraftcentral-connect.php | 35 +- .../settings/upload-backups-modal.php | 6 +- .../plugins/updraftplus/udaddons/options.php | 537 - .../plugins/updraftplus/udaddons/shopcart.png | Bin 14096 -> 0 bytes .../udaddons/updraftplus-addons.php | 1084 -- .../plugins/updraftplus/udaddons/yes.png | Bin 2493 -> 0 bytes .../plugins/updraftplus/updraftplus.php | 24 +- .../plugins/updraftplus/vendor/autoload.php | 20 +- .../brumann/polyfill-unserialize/LICENSE | 21 + .../brumann/polyfill-unserialize/README.md | 153 + .../polyfill-unserialize/composer.json | 26 + .../src/DisallowedClassesSubstitutor.php | 177 + .../polyfill-unserialize/src/Unserialize.php | 39 + .../vendor/components/jquery/README.md | 2 +- .../vendor/components/jquery/bower.json | 2 +- .../vendor/components/jquery/component.json | 2 +- .../vendor/components/jquery/jquery.js | 2117 ++-- .../vendor/components/jquery/jquery.min.js | 4 +- .../vendor/components/jquery/jquery.min.map | 2 +- .../vendor/components/jquery/jquery.slim.js | 2059 ++- .../components/jquery/jquery.slim.min.js | 4 +- .../components/jquery/jquery.slim.min.map | 2 +- .../vendor/components/jquery/package.json | 2 +- .../vendor/composer/ClassLoader.php | 164 +- .../vendor/composer/InstalledVersions.php | 44 +- .../vendor/composer/autoload_classmap.php | 2 +- .../vendor/composer/autoload_files.php | 4 +- .../vendor/composer/autoload_namespaces.php | 7 +- .../vendor/composer/autoload_psr4.php | 4 +- .../vendor/composer/autoload_real.php | 59 +- .../vendor/composer/autoload_static.php | 63 +- .../vendor/composer/include_paths.php | 10 - .../vendor/composer/installed.json | 292 +- .../updraftplus/vendor/composer/installed.php | 94 +- .../vendor/guzzlehttp/guzzle/Dockerfile | 18 - .../vendor/guzzlehttp/promises/CHANGELOG.md | 6 + .../vendor/guzzlehttp/promises/composer.json | 5 - .../vendor/guzzlehttp/promises/src/Each.php | 2 +- .../vendor/guzzlehttp/promises/src/Utils.php | 2 +- .../vendor/guzzlehttp/psr7/CHANGELOG.md | 6 + .../vendor/guzzlehttp/psr7/composer.json | 5 - .../guzzlehttp/psr7/src/MessageTrait.php | 13 +- .../vendor/phpseclib/phpseclib/AUTHORS | 1 + .../vendor/phpseclib/phpseclib/BACKERS.md | 12 +- .../vendor/phpseclib/phpseclib/README.md | 10 +- .../vendor/phpseclib/phpseclib/composer.json | 24 +- .../phpseclib/phpseclib/Crypt/AES.php | 135 +- .../phpseclib/phpseclib/Crypt/Base.php | 814 +- .../phpseclib/phpseclib/Crypt/Blowfish.php | 555 +- .../phpseclib/phpseclib/Crypt/DES.php | 237 +- .../phpseclib/phpseclib/Crypt/Hash.php | 147 +- .../phpseclib/phpseclib/Crypt/RC2.php | 147 +- .../phpseclib/phpseclib/Crypt/RC4.php | 138 +- .../phpseclib/phpseclib/Crypt/RSA.php | 1029 +- .../phpseclib/phpseclib/Crypt/Random.php | 161 +- .../phpseclib/phpseclib/Crypt/Rijndael.php | 209 +- .../phpseclib/phpseclib/Crypt/TripleDES.php | 189 +- .../phpseclib/phpseclib/Crypt/Twofish.php | 133 +- .../phpseclib/phpseclib/File/ANSI.php | 57 +- .../phpseclib/phpseclib/File/ASN1.php | 658 +- .../phpseclib/phpseclib/File/ASN1/Element.php | 47 + .../phpseclib/phpseclib/File/X509.php | 1039 +- .../phpseclib/phpseclib/Math/BigInteger.php | 1282 +- .../phpseclib/phpseclib/phpseclib/Net/SCP.php | 177 +- .../phpseclib/phpseclib/Net/SFTP.php | 423 +- .../phpseclib/phpseclib/Net/SFTP/Stream.php | 58 +- .../phpseclib/phpseclib/Net/SSH1.php | 633 +- .../phpseclib/phpseclib/Net/SSH2.php | 1487 ++- .../phpseclib/phpseclib/System/SSH/Agent.php | 378 +- .../phpseclib/System/SSH/Agent/Identity.php | 241 + .../phpseclib/phpseclib/System/SSH_Agent.php | 39 - .../vendor/psr/http-message/README.md | 5 +- .../vendor/psr/http-message/composer.json | 4 +- .../psr/http-message/docs/PSR7-Interfaces.md | 130 + .../psr/http-message/docs/PSR7-Usage.md | 159 + .../psr/http-message/src/MessageInterface.php | 16 +- .../psr/http-message/src/RequestInterface.php | 10 +- .../http-message/src/ResponseInterface.php | 4 +- .../src/ServerRequestInterface.php | 8 +- .../psr/http-message/src/StreamInterface.php | 12 +- .../src/UploadedFileInterface.php | 4 +- .../psr/http-message/src/UriInterface.php | 17 +- .../src/updraft-rpc/class-udrpc.php | 20 +- .../src/updraft-rpc/class-udrpc2.php | 1081 ++ .../class-updraft-task-manager-commands.php | 2 +- .../class-updraft-task-manager.php | 46 +- .../src/updraft-tasks/class-updraft-task.php | 57 +- .../class-updraft-tasks-activation.php | 106 +- .../plugin-update-checker/Puc/v4/Factory.php | 6 - .../Puc/v4p11/Autoloader.php | 63 - .../Puc/v4p11/DebugBar/Extension.php | 190 - .../Puc/v4p11/DebugBar/Panel.php | 165 - .../Puc/v4p11/DebugBar/PluginExtension.php | 33 - .../Puc/v4p11/DebugBar/PluginPanel.php | 38 - .../Puc/v4p11/DebugBar/ThemePanel.php | 21 - .../Puc/v4p11/Factory.php | 365 - .../Puc/v4p11/InstalledPackage.php | 103 - .../Puc/v4p11/Metadata.php | 132 - .../Puc/v4p11/OAuthSignature.php | 100 - .../Puc/v4p11/Plugin/Info.php | 132 - .../Puc/v4p11/Plugin/Package.php | 184 - .../Puc/v4p11/Plugin/Ui.php | 278 - .../Puc/v4p11/Plugin/Update.php | 112 - .../Puc/v4p11/Plugin/UpdateChecker.php | 414 - .../Puc/v4p11/Scheduler.php | 266 - .../Puc/v4p11/StateStore.php | 207 - .../Puc/v4p11/Theme/Package.php | 65 - .../Puc/v4p11/Theme/Update.php | 84 - .../Puc/v4p11/Theme/UpdateChecker.php | 152 - .../Puc/v4p11/Update.php | 34 - .../Puc/v4p11/UpdateChecker.php | 997 -- .../Puc/v4p11/UpgraderStatus.php | 199 - .../plugin-update-checker/Puc/v4p11/Utils.php | 69 - .../Puc/v4p11/Vcs/Api.php | 302 - .../Puc/v4p11/Vcs/BaseChecker.php | 27 - .../Puc/v4p11/Vcs/BitBucketApi.php | 265 - .../Puc/v4p11/Vcs/GitHubApi.php | 441 - .../Puc/v4p11/Vcs/GitLabApi.php | 309 - .../Puc/v4p11/Vcs/PluginUpdateChecker.php | 218 - .../Puc/v4p11/Vcs/Reference.php | 49 - .../Puc/v4p11/Vcs/ThemeUpdateChecker.php | 118 - .../plugin-update-checker/README.md | 301 - .../plugin-update-checker/composer.json | 23 - .../css/puc-debug-bar.css | 70 - .../examples/plugin.json | 52 - .../plugin-update-checker/examples/theme.json | 5 - .../plugin-update-checker/js/debug-bar.js | 52 - .../languages/plugin-update-checker-ca.mo | Bin 1186 -> 0 bytes .../languages/plugin-update-checker-ca.po | 48 - .../languages/plugin-update-checker-cs_CZ.mo | Bin 1077 -> 0 bytes .../languages/plugin-update-checker-cs_CZ.po | 45 - .../languages/plugin-update-checker-da_DK.mo | Bin 1010 -> 0 bytes .../languages/plugin-update-checker-da_DK.po | 42 - .../languages/plugin-update-checker-de_DE.mo | Bin 980 -> 0 bytes .../languages/plugin-update-checker-de_DE.po | 38 - .../languages/plugin-update-checker-es_AR.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_AR.po | 48 - .../languages/plugin-update-checker-es_CL.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_CL.po | 48 - .../languages/plugin-update-checker-es_CO.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_CO.po | 48 - .../languages/plugin-update-checker-es_CR.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_CR.po | 48 - .../languages/plugin-update-checker-es_DO.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_DO.po | 48 - .../languages/plugin-update-checker-es_ES.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_ES.po | 48 - .../languages/plugin-update-checker-es_GT.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_GT.po | 48 - .../languages/plugin-update-checker-es_HN.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_HN.po | 48 - .../languages/plugin-update-checker-es_MX.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_MX.po | 48 - .../languages/plugin-update-checker-es_PE.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_PE.po | 48 - .../languages/plugin-update-checker-es_PR.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_PR.po | 48 - .../languages/plugin-update-checker-es_UY.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_UY.po | 48 - .../languages/plugin-update-checker-es_VE.mo | Bin 1140 -> 0 bytes .../languages/plugin-update-checker-es_VE.po | 48 - .../languages/plugin-update-checker-fa_IR.mo | Bin 1128 -> 0 bytes .../languages/plugin-update-checker-fa_IR.po | 38 - .../languages/plugin-update-checker-fr_CA.mo | Bin 1208 -> 0 bytes .../languages/plugin-update-checker-fr_CA.po | 48 - .../languages/plugin-update-checker-fr_FR.mo | Bin 1066 -> 0 bytes .../languages/plugin-update-checker-fr_FR.po | 42 - .../languages/plugin-update-checker-hu_HU.mo | Bin 982 -> 0 bytes .../languages/plugin-update-checker-hu_HU.po | 41 - .../languages/plugin-update-checker-it_IT.mo | Bin 989 -> 0 bytes .../languages/plugin-update-checker-it_IT.po | 38 - .../languages/plugin-update-checker-ja.mo | Bin 1454 -> 0 bytes .../languages/plugin-update-checker-ja.po | 57 - .../languages/plugin-update-checker-nl_BE.mo | Bin 1211 -> 0 bytes .../languages/plugin-update-checker-nl_BE.po | 48 - .../languages/plugin-update-checker-nl_NL.mo | Bin 1211 -> 0 bytes .../languages/plugin-update-checker-nl_NL.po | 48 - .../languages/plugin-update-checker-pt_BR.mo | Bin 1014 -> 0 bytes .../languages/plugin-update-checker-pt_BR.po | 48 - .../languages/plugin-update-checker-sl_SI.mo | Bin 1203 -> 0 bytes .../languages/plugin-update-checker-sl_SI.po | 48 - .../languages/plugin-update-checker-sv_SE.mo | Bin 1006 -> 0 bytes .../languages/plugin-update-checker-sv_SE.po | 42 - .../languages/plugin-update-checker-zh_CN.mo | Bin 1060 -> 0 bytes .../languages/plugin-update-checker-zh_CN.po | 48 - .../languages/plugin-update-checker.pot | 49 - .../plugin-update-checker/license.txt | 7 - .../plugin-update-checker/load-v4p11.php | 28 - .../plugin-update-checker.php | 10 - .../vendor/Parsedown.php | 9 - .../vendor/ParsedownLegacy.php | 1535 --- .../vendor/ParsedownModern.php | 1538 --- .../vendor/PucReadmeParser.php | 348 - ... => activity-report-widget.1744125809.css} | 0 ...iff.1736960042.css => diff.1744125809.css} | 0 ....1736960042.css => fullLog.1744125809.css} | 0 ...f.1736960042.css => iptraf.1744125809.css} | 0 ...jquery-ui-timepicker-addon.1744125809.css} | 0 ...60042.css => jquery-ui.min.1744125809.css} | 0 ...=> jquery-ui.structure.min.1744125809.css} | 0 ...css => jquery-ui.theme.min.1744125809.css} | 0 ...6960042.css => care-global.1744125809.css} | 0 ...are.1736960042.css => care.1744125809.css} | 0 ...6960042.css => free-global.1744125809.css} | 0 ...ree.1736960042.css => free.1744125809.css} | 0 ...0042.css => premium-global.1744125809.css} | 0 ....1736960042.css => premium.1744125809.css} | 0 ...042.css => response-global.1744125809.css} | 0 ....css => response-variables.1744125809.css} | 0 ...1736960042.css => response.1744125809.css} | 0 ...ain.1736960042.css => main.1744125809.css} | 0 ....1736960042.css => phpinfo.1744125809.css} | 0 ...6960042.css => wf-adminbar.1744125809.css} | 0 ...6960042.css => wf-colorbox.1744125809.css} | 0 ...042.css => wf-font-awesome.1744125809.css} | 0 ...736960042.css => wf-global.1744125809.css} | 0 ...6960042.css => wf-ionicons.1744125809.css} | 0 ...60042.css => wf-onboarding.1744125809.css} | 2 +- ...0042.css => wf-roboto-font.1744125809.css} | 0 ...60042.css => wfselect2.min.1744125809.css} | 0 ...960042.css => wordfenceBox.1744125809.css} | 0 ...dmin.1736960042.js => admin.1744125809.js} | 0 ...042.js => admin.ajaxWatcher.1744125809.js} | 0 ...042.js => admin.liveTraffic.1744125809.js} | 0 ....1736960042.js => chart.umd.1744125809.js} | 0 ...{date.1736960042.js => date.1744125809.js} | 0 ... jquery-ui-timepicker-addon.1744125809.js} | 0 ...2.js => jquery.colorbox-min.1744125809.js} | 0 ...60042.js => jquery.colorbox.1744125809.js} | 0 ...042.js => jquery.qrcode.min.1744125809.js} | 0 ...60042.js => jquery.tmpl.min.1744125809.js} | 0 ...960042.js => knockout-3.5.1.1744125809.js} | 0 ...736960042.js => wfdashboard.1744125809.js} | 0 ...1736960042.js => wfdropdown.1744125809.js} | 0 ...l.1736960042.js => wfglobal.1744125809.js} | 0 ...18n.1736960042.js => wfi18n.1744125809.js} | 0 ...36960042.js => wfonboarding.1744125809.js} | 14 +- ....1736960042.js => wfpopover.1744125809.js} | 0 ...6960042.js => wfselect2.min.1744125809.js} | 0 .../plugins/wordfence/languages/wordfence.pot | 1239 +- wp-content/plugins/wordfence/lib/wfAPI.php | 16 +- wp-content/plugins/wordfence/lib/wfLog.php | 14 +- .../plugins/wordfence/lib/wfScanEngine.php | 7 + .../plugins/wordfence/lib/wordfenceClass.php | 21 +- ...960042.css => admin-global.1744125809.css} | 0 ...in.1736960042.css => admin.1744125809.css} | 0 ...1736960042.css => colorbox.1744125809.css} | 0 ...1736960042.css => embedded.1744125809.css} | 0 ...960042.css => font-awesome.1744125809.css} | 0 ...1736960042.css => ionicons.1744125809.css} | 0 ...60042.css => jquery-ui.min.1744125809.css} | 0 ...=> jquery-ui.structure.min.1744125809.css} | 0 ...css => jquery-ui.theme.min.1744125809.css} | 0 ...in.1736960042.css => login.1744125809.css} | 0 ...css => woocommerce-account.1744125809.css} | 0 ...36960042.js => admin-global.1744125809.js} | 0 ...dmin.1736960042.js => admin.1744125809.js} | 0 ....1736960042.js => chart.umd.1744125809.js} | 0 ...60042.js => jquery.colorbox.1744125809.js} | 0 ...2.js => jquery.colorbox.min.1744125809.js} | 0 ...042.js => jquery.qrcode.min.1744125809.js} | 0 ...60042.js => jquery.tmpl.min.1744125809.js} | 0 ...ogin.1736960042.js => login.1744125809.js} | 0 .../wordfence-login-security.php | 2 +- wp-content/plugins/wordfence/readme.txt | 121 +- .../views/dashboard/options-group-license.php | 15 +- .../views/onboarding/registration-prompt.php | 25 +- wp-content/plugins/wordfence/wordfence.php | 6 +- .../plugins/wordpress-seo/admin/ajax.php | 28 +- .../capabilities/class-capability-manager.php | 6 + .../admin/class-bulk-editor-list-table.php | 16 +- .../wordpress-seo/admin/class-collector.php | 2 +- .../admin/class-database-proxy.php | 8 +- .../admin/class-gutenberg-compatibility.php | 4 +- .../admin/class-meta-columns.php | 4 +- .../admin/class-my-yoast-proxy.php | 3 +- .../admin/class-plugin-availability.php | 42 +- .../admin/class-premium-popup.php | 2 +- .../wordpress-seo/admin/class-yoast-form.php | 8 +- .../admin/class-yoast-input-validation.php | 26 +- .../class-yoast-network-settings-api.php | 2 +- .../admin/class-yoast-notification-center.php | 26 +- .../admin/class-yoast-notification.php | 4 +- .../admin/class-yoast-plugin-conflict.php | 2 +- .../formatter/class-metabox-formatter.php | 4 +- .../class-post-metabox-formatter.php | 2 + .../import/plugins/class-import-aioseo-v4.php | 4 +- .../import/plugins/class-import-squirrly.php | 2 +- .../admin/menu/class-replacevar-editor.php | 4 +- .../admin/metabox/class-metabox.php | 6 +- .../admin/services/class-file-size.php | 3 +- .../admin/taxonomy/class-taxonomy.php | 4 +- .../tracking/class-tracking-settings-data.php | 2 + .../views/class-yoast-feature-toggle.php | 2 +- .../admin/views/tabs/dashboard/dashboard.php | 2 +- .../admin/views/tabs/tool/import-seo.php | 2 +- .../admin/views/tool-file-editor.php | 6 +- .../admin/views/user-profile.php | 2 +- ...demy-2460-rtl.css => academy-2500-rtl.css} | 0 .../{academy-2460.css => academy-2500.css} | 0 ...2460-rtl.css => admin-global-2500-rtl.css} | 2 +- ...-global-2460.css => admin-global-2500.css} | 2 +- ...bar-2460-rtl.css => adminbar-2500-rtl.css} | 0 .../{adminbar-2460.css => adminbar-2500.css} | 0 ...tl.css => ai-fix-assessments-2500-rtl.css} | 0 ...s-2460.css => ai-fix-assessments-2500.css} | 0 ...2460-rtl.css => ai-generator-2500-rtl.css} | 0 ...nerator-2460.css => ai-generator-2500.css} | 0 ...lerts-2460-rtl.css => alerts-2500-rtl.css} | 0 .../dist/{alerts-2460.css => alerts-2500.css} | 0 ...l.css => black-friday-banner-2500-rtl.css} | 0 ...-2460.css => black-friday-banner-2500.css} | 0 ...2460-rtl.css => block-editor-2500-rtl.css} | 0 ...-editor-2460.css => block-editor-2500.css} | 0 ...rd-2460-rtl.css => dashboard-2500-rtl.css} | 0 ...{dashboard-2460.css => dashboard-2500.css} | 0 ...ge-2460-rtl.css => edit-page-2500-rtl.css} | 0 ...{edit-page-2460.css => edit-page-2500.css} | 0 ...or-2460-rtl.css => elementor-2500-rtl.css} | 0 ...{elementor-2460.css => elementor-2500.css} | 0 ...60-rtl.css => featured-image-2500-rtl.css} | 0 ...image-2460.css => featured-image-2500.css} | 0 ...tl.css => filter-explanation-2500-rtl.css} | 0 ...n-2460.css => filter-explanation-2500.css} | 0 ... => first-time-configuration-2500-rtl.css} | 0 ....css => first-time-configuration-2500.css} | 0 ...2460-rtl.css => general-page-2500-rtl.css} | 0 ...al-page-2460.css => general-page-2500.css} | 0 ...{icons-2460-rtl.css => icons-2500-rtl.css} | 0 .../dist/{icons-2460.css => icons-2500.css} | 0 ...460-rtl.css => inside-editor-2500-rtl.css} | 0 ...editor-2460.css => inside-editor-2500.css} | 0 ...460-rtl.css => introductions-2500-rtl.css} | 0 ...ctions-2460.css => introductions-2500.css} | 0 ...abox-2460-rtl.css => metabox-2500-rtl.css} | 0 .../{metabox-2460.css => metabox-2500.css} | 0 ... => metabox-primary-category-2500-rtl.css} | 0 ....css => metabox-primary-category-2500.css} | 0 ...{modal-2460-rtl.css => modal-2500-rtl.css} | 0 .../dist/{modal-2460.css => modal-2500.css} | 0 ...epo-2460-rtl.css => monorepo-2500-rtl.css} | 0 .../{monorepo-2460.css => monorepo-2500.css} | 0 ...2460-rtl.css => new-settings-2500-rtl.css} | 0 ...ettings-2460.css => new-settings-2500.css} | 0 ...460-rtl.css => notifications-2500-rtl.css} | 0 ...ations-2460.css => notifications-2500.css} | 0 ...n-2460-rtl.css => score_icon-2500-rtl.css} | 0 ...core_icon-2460.css => score_icon-2500.css} | 0 ...ss => structured-data-blocks-2500-rtl.css} | 0 ...60.css => structured-data-blocks-2500.css} | 0 ...port-2460-rtl.css => support-2500-rtl.css} | 0 .../{support-2460.css => support-2500.css} | 0 .../{tailwind-2460.css => tailwind-2500.css} | 2 +- ...460-rtl.css => toggle-switch-2500-rtl.css} | 0 ...switch-2460.css => toggle-switch-2500.css} | 0 ...ips-2460-rtl.css => tooltips-2500-rtl.css} | 0 .../{tooltips-2460.css => tooltips-2500.css} | 0 ...uts-2460-rtl.css => workouts-2500-rtl.css} | 0 .../{workouts-2460.css => workouts-2500.css} | 0 ...rtl.css => wpseo-dismissible-2500-rtl.css} | 0 ...le-2460.css => wpseo-dismissible-2500.css} | 0 ...-rtl.css => yoast-extensions-2500-rtl.css} | 0 ...ons-2460.css => yoast-extensions-2500.css} | 0 ...-rtl.css => yst_plugin_tools-2500-rtl.css} | 0 ...ols-2460.css => yst_plugin_tools-2500.css} | 0 ...460-rtl.css => yst_seo_score-2500-rtl.css} | 0 ..._score-2460.css => yst_seo_score-2500.css} | 0 .../wordpress-seo/inc/class-addon-manager.php | 2 +- .../inc/class-my-yoast-api-request.php | 3 +- .../inc/class-upgrade-history.php | 2 +- .../inc/class-wpseo-admin-bar-menu.php | 14 +- .../inc/class-wpseo-custom-fields.php | 4 +- .../inc/class-wpseo-custom-taxonomies.php | 4 +- .../inc/class-wpseo-image-utils.php | 2 +- .../wordpress-seo/inc/class-wpseo-meta.php | 4 +- .../inc/class-wpseo-replace-vars.php | 2 +- .../wordpress-seo/inc/class-wpseo-utils.php | 4 +- .../inc/options/class-wpseo-option-titles.php | 2 +- .../inc/options/class-wpseo-option-wpseo.php | 8 + .../inc/options/class-wpseo-option.php | 1 - .../inc/options/class-wpseo-taxonomy-meta.php | 2 +- .../class-sitemaps-cache-validator.php | 8 +- .../inc/sitemaps/class-sitemaps.php | 4 +- .../plugins/wordpress-seo/js/dist/academy.js | 2 +- .../wordpress-seo/js/dist/block-editor.js | 353 +- .../wordpress-seo/js/dist/classic-editor.js | 29 +- .../wordpress-seo/js/dist/editor-modules.js | 16 +- .../wordpress-seo/js/dist/elementor.js | 277 +- .../js/dist/externals/analysis.js | 140 +- .../js/dist/externals/componentsNew.js | 11 +- .../js/dist/externals/dashboardFrontend.js | 5 + .../js/dist/externals/helpers.js | 22 +- .../externals/replacementVariableEditor.js | 3 +- .../wordpress-seo/js/dist/general-page.js | 101 +- .../wordpress-seo/js/dist/how-to-block.js | 18 +- .../wordpress-seo/js/dist/indexation.js | 2 +- .../js/dist/installation-success.js | 12 +- .../js/dist/integrations-page.js | 119 +- .../wordpress-seo/js/dist/introductions.js | 42 +- .../wordpress-seo/js/dist/languages/es.js | 2 +- .../wordpress-seo/js/dist/languages/fa.js | 2 +- .../wordpress-seo/js/dist/languages/ja.js | 2 +- .../wordpress-seo/js/dist/new-settings.js | 35 +- .../plugins/wordpress-seo/js/dist/support.js | 2 +- .../js/dist/wincher-dashboard-widget.js | 18 +- .../wordpress-seo/lib/abstract-main.php | 3 +- wp-content/plugins/wordpress-seo/lib/orm.php | 36 +- .../yoast-connect-google-site-kit-success.svg | 66 + wp-content/plugins/wordpress-seo/readme.txt | 44 +- .../first-time-configuration-action.php | 2 +- ...tract-aioseo-settings-importing-action.php | 4 +- .../aioseo/aioseo-cleanup-action.php | 7 +- .../aioseo/aioseo-posts-importing-action.php | 7 +- ...seo-taxonomy-settings-importing-action.php | 4 +- .../indexing/abstract-indexing-action.php | 2 +- ...le-post-type-archive-indexation-action.php | 4 +- .../indexing/indexing-prepare-action.php | 4 +- .../wincher/wincher-account-action.php | 2 +- .../wincher/wincher-keyphrases-action.php | 2 +- .../src/builders/indexable-builder.php | 8 +- .../indexable-date-archive-builder.php | 5 +- .../src/builders/indexable-link-builder.php | 5 +- .../src/builders/indexable-post-builder.php | 2 +- .../indexable-system-page-builder.php | 5 +- .../src/config/badge-group-names.php | 2 +- .../src/config/semrush-client.php | 5 +- .../src/config/wincher-client.php | 6 +- .../src/config/wincher-pkce-provider.php | 2 +- ...ontent-type-visibility-watcher-actions.php | 2 +- .../src/context/meta-tags-context.php | 8 +- .../configuration/dashboard-configuration.php | 32 +- .../content-types-repository.php | 2 +- .../seo-score-groups-repository.php | 4 +- .../abstract-score-results-repository.php | 4 +- .../current-scores-repository.php | 6 +- .../search-ranking-compare-repository.php | 61 + .../search-rankings/top-page-repository.php | 30 +- .../search-rankings/top-query-repository.php | 29 +- .../tracking/setup-steps-tracking.php | 87 + .../organic-sessions-compare-repository.php | 61 + .../organic-sessions-daily-repository.php | 61 + .../analytics-4/failed-request-exception.php | 21 + .../analytics-4/invalid-request-exception.php | 20 + .../unexpected-response-exception.php | 18 + .../content-types/content-types-list.php | 2 +- .../dashboard-repository-interface.php | 4 +- .../domain/data-provider/data-container.php | 4 +- .../domain/data-provider/parameters.php | 63 +- .../domain/endpoint/endpoint-list.php | 4 +- .../bad-readability-score-group.php | 4 +- .../good-readability-score-group.php | 4 +- .../no-readability-score-group.php | 4 +- .../ok-readability-score-group.php | 4 +- .../score-groups/score-groups-interface.php | 4 +- .../seo-score-groups/bad-seo-score-group.php | 4 +- .../seo-score-groups/good-seo-score-group.php | 4 +- .../seo-score-groups/no-seo-score-group.php | 4 +- .../seo-score-groups/ok-seo-score-group.php | 4 +- .../domain/score-results/current-score.php | 18 +- .../domain/score-results/score-result.php | 2 +- .../unexpected-response-exception.php | 18 + .../comparison-search-ranking-data.php | 87 + ...earch-data.php => search-ranking-data.php} | 48 +- .../domain/search-rankings/top-page-data.php | 24 +- .../data-source-not-available-exception.php | 20 + .../traffic/comparison-traffic-data.php | 73 + .../domain/traffic/daily-traffic-data.php | 48 + .../dashboard/domain/traffic/traffic-data.php | 66 + .../analytics-4/analytics-4-parameters.php | 138 + .../site-kit-analytics-4-adapter.php | 311 + .../site-kit-analytics-4-api-call.php | 34 + .../content-types/content-types-collector.php | 4 +- .../endpoints/readability-scores-endpoint.php | 3 +- .../endpoints/seo-scores-endpoint.php | 3 +- .../setup-steps-tracking-endpoint.php | 50 + ...e-kit-configuration-dismissal-endpoint.php | 3 +- .../site-kit-consent-management-endpoint.php | 3 +- .../top-page-indexable-collector.php | 4 +- .../infrastructure/integrations/site-kit.php | 210 +- .../score-group-link-collector.php | 4 +- ...ed-readability-score-results-collector.php | 5 +- .../cached-seo-score-results-collector.php | 5 +- .../search-console-parameters.php | 2 +- .../site-kit-search-console-adapter.php | 179 +- .../site-kit-search-console-api-call.php | 33 + .../taxonomies/taxonomies-collector.php | 5 +- .../taxonomies/taxonomy-validator.php | 1 - ...up-steps-tracking-repository-interface.php | 30 + .../setup-steps-tracking-repository.php | 55 + ...site-kit-configuration-dismissal-route.php | 15 +- .../site-kit-consent-management-route.php | 15 +- .../scores/abstract-scores-route.php | 6 +- .../scores/readability-scores-route.php | 4 +- .../scores/seo-scores-route.php | 4 +- .../setup/setup-flow-interceptor.php | 89 + .../setup/setup-url-interceptor.php | 132 + .../time-based-seo-metrics-route.php | 166 +- .../tracking/setup-steps-tracking-route.php | 175 + .../src/deprecated/admin/class-customizer.php | 4 +- .../src/deprecated/frontend/breadcrumbs.php | 2 +- .../src/deprecated/frontend/frontend.php | 2 +- .../deprecated/src/helpers/request-helper.php | 5 +- ...isable-concatenate-scripts-integration.php | 7 +- .../admin/unsupported-php-version-notice.php | 69 + .../integrations/third-party/wordproof.php | 4 +- ...s-and-descriptions-introduction-upsell.php | 5 +- .../integration-information-repository.php | 4 +- .../seo/post-seo-information-repository.php | 4 +- .../seo/term-seo-information-repository.php | 4 +- .../site/website-information-repository.php | 4 +- .../analysis-features/analysis-feature.php | 4 +- .../analysis-features-list.php | 4 +- .../integration-data-provider-interface.php | 4 +- .../src/editors/domain/seo/description.php | 4 +- .../src/editors/domain/seo/keyphrase.php | 4 +- .../src/editors/domain/seo/social.php | 8 +- .../src/editors/domain/seo/title.php | 4 +- .../integrations/jetpack-markdown.php | 4 +- .../framework/integrations/multilingual.php | 10 +- .../framework/integrations/news-seo.php | 4 +- .../framework/integrations/semrush.php | 4 +- .../framework/integrations/wincher.php | 4 +- .../integrations/woocommerce-seo.php | 4 +- .../framework/integrations/woocommerce.php | 6 +- .../framework/readability-analysis.php | 1 + .../seo/posts/description-data-provider.php | 4 +- .../seo/posts/keyphrase-data-provider.php | 2 +- .../seo/posts/social-data-provider.php | 2 +- .../seo/posts/title-data-provider.php | 2 +- .../seo/terms/description-data-provider.php | 1 + .../seo/terms/title-data-provider.php | 1 + .../framework/site/base-site-information.php | 18 +- .../framework/site/post-site-information.php | 8 +- .../framework/site/term-site-information.php | 4 +- .../elementor/infrastructure/request-post.php | 2 +- .../general-page-integration.php | 10 +- .../src/generated/assets/externals.php | 2 +- .../src/generated/assets/languages.php | 2 +- .../src/generated/assets/plugin.php | 2 +- .../wordpress-seo/src/generated/container.php | 108 +- .../src/generators/breadcrumbs-generator.php | 6 +- .../src/generators/schema-generator.php | 5 +- .../src/generators/schema/author.php | 8 +- .../src/generators/schema/main-image.php | 2 +- .../src/generators/schema/person.php | 6 +- .../generators/twitter-image-generator.php | 2 +- .../src/helpers/aioseo-helper.php | 5 +- .../src/helpers/author-archive-helper.php | 5 +- .../src/helpers/current-page-helper.php | 6 +- ...first-time-configuration-notice-helper.php | 5 +- .../src/helpers/import-cursor-helper.php | 4 +- .../helpers/indexable-to-postmeta-helper.php | 4 +- .../src/helpers/indexing-helper.php | 4 +- .../src/helpers/notification-helper.php | 8 +- .../src/helpers/open-graph/image-helper.php | 4 +- .../src/helpers/pagination-helper.php | 5 +- .../wordpress-seo/src/helpers/post-helper.php | 5 +- .../src/helpers/require-file-helper.php | 2 + .../src/helpers/robots-helper.php | 5 +- .../src/helpers/schema/article-helper.php | 2 +- .../src/helpers/short-link-helper.php | 5 +- .../wordpress-seo/src/helpers/url-helper.php | 6 +- .../wordpress-seo/src/helpers/wpdb-helper.php | 2 +- .../src/initializers/migration-runner.php | 2 +- .../abstract-exclude-post-type.php | 2 +- .../admin/activation-cleanup-integration.php | 5 +- .../admin/background-indexing-integration.php | 2 +- .../admin/check-required-version.php | 6 +- .../integrations/admin/cron-integration.php | 4 +- .../installation-success-integration.php | 5 +- .../admin/unsupported-php-version-notice.php | 167 - .../blocks/structured-data-blocks.php | 5 +- .../exclude-oembed-cache-post-type.php | 2 +- .../integrations/front-end-integration.php | 4 +- .../front-end/feed-improvements.php | 5 +- .../front-end/force-rewrite-title.php | 2 +- .../src/integrations/settings-integration.php | 2 +- .../integrations/third-party/elementor.php | 2 +- .../exclude-elementor-post-types.php | 2 +- .../exclude-woocommerce-post-types.php | 2 +- .../third-party/wincher-publish.php | 4 +- .../watchers/indexable-ancestor-watcher.php | 2 +- .../watchers/indexable-post-watcher.php | 2 +- .../watchers/option-titles-watcher.php | 4 +- .../src/models/indexable-extension.php | 2 +- .../indexable-term-archive-presentation.php | 7 +- .../src/presenters/admin/notice-presenter.php | 4 +- .../presenters/open-graph/image-presenter.php | 6 +- .../src/presenters/url-list-presenter.php | 2 +- .../indexable-cleanup-repository.php | 1 + .../routes/first-time-configuration-route.php | 4 +- .../src/routes/integrations-route.php | 4 +- .../src/routes/workouts-route.php | 4 +- .../health-check/default-tagline-check.php | 5 +- .../health-check/links-table-check.php | 5 +- .../health-check/links-table-runner.php | 5 +- .../health-check/page-comments-check.php | 5 +- .../health-check/postname-permalink-check.php | 5 +- .../aioseo/aioseo-replacevar-service.php | 4 +- .../aioseo/aioseo-robots-provider-service.php | 4 +- .../aioseo-robots-transformer-service.php | 4 +- .../aioseo-social-images-provider-service.php | 5 +- .../importing/conflicting-plugins-service.php | 2 +- .../src/surfaces/meta-surface.php | 4 +- .../src/surfaces/values/meta.php | 7 +- .../additional-contactmethods-collector.php | 2 +- .../user-meta/application/cleanup-service.php | 6 +- .../application/custom-meta-collector.php | 2 +- .../domain/custom-meta-interface.php | 2 +- .../additional-contactmethods-integration.php | 2 +- .../user-interface/cleanup-integration.php | 2 +- .../custom-meta-integration.php | 2 +- .../user-profiles-additions-ui.php | 5 +- .../src/values/oauth/oauth-token.php | 2 +- .../plugins/wordpress-seo/vendor/autoload.php | 2 +- .../vendor/composer/autoload_classmap.php | 52 +- .../vendor/composer/autoload_files.php | 10 - .../vendor/composer/autoload_psr4.php | 1 - .../vendor/composer/autoload_real.php | 31 +- .../vendor/composer/autoload_static.php | 72 +- .../vendor/composer/installed.php | 13 +- .../vendor/composer/platform_check.php | 4 +- .../vendor/yoast/whip/CHANGELOG.md | 102 - .../vendor/yoast/whip/src/Configs/default.php | 10 - .../vendor/yoast/whip/src/Configs/version.php | 8 - .../vendor/yoast/whip/src/Configuration.php | 61 - .../whip/src/Exceptions/EmptyProperty.php | 20 - .../src/Exceptions/InvalidOperatorType.php | 27 - .../yoast/whip/src/Exceptions/InvalidType.php | 22 - .../InvalidVersionComparisonString.php | 27 - .../yoast/whip/src/Facades/wordpress.php | 60 - .../vendor/yoast/whip/src/Host.php | 107 - .../whip/src/Interfaces/DismissStorage.php | 25 - .../yoast/whip/src/Interfaces/Listener.php | 16 - .../yoast/whip/src/Interfaces/Message.php | 16 - .../whip/src/Interfaces/MessagePresenter.php | 16 - .../yoast/whip/src/Interfaces/Requirement.php | 30 - .../whip/src/Interfaces/VersionDetector.php | 23 - .../yoast/whip/src/MessageDismisser.php | 75 - .../yoast/whip/src/MessageFormatter.php | 42 - .../yoast/whip/src/Messages/BasicMessage.php | 60 - .../yoast/whip/src/Messages/HostMessage.php | 62 - .../InvalidVersionRequirementMessage.php | 53 - .../yoast/whip/src/Messages/NullMessage.php | 20 - .../whip/src/Messages/UpgradePhpMessage.php | 87 - .../vendor/yoast/whip/src/MessagesManager.php | 91 - .../src/Presenters/WPMessagePresenter.php | 112 - .../yoast/whip/src/RequirementsChecker.php | 181 - .../yoast/whip/src/VersionRequirement.php | 153 - .../vendor/yoast/whip/src/WPDismissOption.php | 45 - .../whip/src/WPMessageDismissListener.php | 66 - .../plugins/wordpress-seo/wp-seo-main.php | 6 +- wp-content/plugins/wordpress-seo/wp-seo.php | 6 +- .../plugins/wp-maintenance-mode/CHANGELOG.md | 4 + .../plugins/wp-maintenance-mode/README.md | 11 +- .../includes/classes/wp-maintenance-mode.php | 2 +- .../plugins/wp-maintenance-mode/readme.txt | 11 +- .../wp-maintenance-mode/vendor/autoload.php | 7 +- .../codeinwp/themeisle-sdk/CHANGELOG.md | 18 + .../js/build/survey/survey_deps.asset.php | 2 +- .../assets/js/build/survey/survey_deps.js | 2 +- .../vendor/codeinwp/themeisle-sdk/load.php | 2 +- .../themeisle-sdk/src/Modules/Logger.php | 16 +- .../src/Modules/Script_loader.php | 105 +- .../src/Modules/Translations.php | 2 +- .../vendor/composer/InstalledVersions.php | 38 +- .../vendor/composer/autoload_real.php | 10 +- .../vendor/composer/autoload_static.php | 4 +- .../vendor/composer/installed.json | 14 +- .../vendor/composer/installed.php | 14 +- .../wp-maintenance-mode.php | 2 +- .../Controllers/class-alert-manager.php | 2 +- .../Controllers/slack/class-slack-api.php | 153 + .../classes/Controllers/slack/class-slack.php | 227 + .../classes/Controllers/slack/index.php | 6 + .../Controllers/twilio/class-twilio.php | 8 +- .../Entities/class-abstract-entity.php | 25 +- .../Free/assets/plugin-update-card.php | 6 +- .../classes/Helpers/class-settings-helper.php | 7 +- .../classes/Helpers/class-wp-helper.php | 40 +- .../class-alert-formatter-configuration.php | 36 + .../formatters/class-alert-formatter.php | 34 +- .../admin/wsal-notification-settings.js | 111 + .../settings/class-settings-builder.php | 2 +- .../MainWPAddon/class-mainwp-addon.php | 2 +- .../Migration/class-abstract-migration.php | 11 + .../classes/Migration/class-migrate-53.php | 19 +- .../classes/Migration/class-migration.php | 78 +- .../classes/Views/Help.php | 8 +- .../class-woocommerce-custom-alerts.php | 40 +- .../WPSensors/class-mainwp-server-sensor.php | 5 +- ...class-woocommerce-sensor-helper-second.php | 10 +- .../WPSensors/class-woocommerce-sensor.php | 2 + .../WPSensors/class-wp-register-sensor.php | 7 +- .../WPSensors/class-wp-system-sensor.php | 128 +- .../class-wp-user-profile-sensor.php | 22 +- .../classes/Writers/class-html-writer.php | 4 +- .../classes/class-wp-security-audit-log.php | 45 +- .../class-notification-helper.php | 90 +- .../class-notification-logger.php | 22 +- .../class-notification-template.php | 43 +- .../notification/class-notifications.php | 140 +- .../options/notifications-highlights.php | 9 +- .../options/wordpress-notifications.php | 8 + .../wp-security-audit-log/defaults.php | 6 +- .../wp-security-audit-log/img/help/mlr.jpg | Bin 0 -> 11081 bytes .../js/src/jquery-steps/build/jquery.steps.js | 2054 --- .../jquery-steps/build/jquery.steps.min.js | 6 - .../languages/wp-security-audit-log.pot | 4030 +----- .../plugins/wp-security-audit-log/readme.txt | 17 +- .../third-party/vendor/autoload.php | 2 +- .../vendor/composer/autoload_real.php | 8 +- .../vendor/composer/autoload_static.php | 4 +- .../wp-security-audit-log/vendor/autoload.php | 2 +- .../vendor/composer/autoload_classmap.php | 2 + .../vendor/composer/autoload_real.php | 8 +- .../vendor/composer/autoload_static.php | 10 +- .../wp-security-audit-log.php | 28 +- .../assets/css/admin-integrations.css | 2 +- .../assets/css/admin-integrations.min.css | 2 +- .../plugins/wpforms-lite/assets/css/admin.css | 120 +- .../wpforms-lite/assets/css/admin.min.css | 2 +- .../assets/css/admin/admin-form-templates.css | 27 +- .../css/admin/admin-form-templates.min.css | 2 +- .../assets/css/builder/builder-basic.css | 25 +- .../assets/css/builder/builder-basic.min.css | 2 +- .../assets/css/builder/builder-fields.css | 358 +- .../assets/css/builder/builder-fields.min.css | 2 +- .../assets/css/builder/builder-panels.css | 108 +- .../assets/css/builder/builder-panels.min.css | 2 +- .../assets/css/builder/builder-scrollbars.css | 8 +- .../css/builder/builder-scrollbars.min.css | 2 +- .../assets/css/builder/builder-ui-general.css | 45 +- .../css/builder/builder-ui-general.min.css | 2 +- .../wpforms-lite/assets/css/challenge.css | 14 +- .../wpforms-lite/assets/css/challenge.min.css | 2 +- .../assets/css/dashboard-widget.css | 1 + .../assets/css/dashboard-widget.min.css | 2 +- .../assets/css/emails/classic.css | 9 +- .../assets/css/emails/classic.min.css | 2 +- .../assets/css/emails/compact.css | 9 +- .../assets/css/emails/compact.min.css | 2 +- .../assets/css/emails/general.css | 9 +- .../assets/css/emails/general.min.css | 2 +- .../emails/partials/layout_media_queries.css | 26 - .../partials/layout_media_queries.min.css | 1 - .../partials/notifications_media_queries.css | 21 - .../notifications_media_queries.min.css | 1 - .../assets/css/emails/summary.css | 9 +- .../assets/css/emails/summary.min.css | 2 +- .../wpforms-lite/assets/css/entry-print.css | 759 -- .../assets/css/entry-print.min.css | 1 - .../css/frontend/modern/wpforms-full.css | 10 + .../css/frontend/modern/wpforms-full.min.css | 2 +- .../assets/css/integrations/ai/ai-forms.css | 115 +- .../css/integrations/ai/ai-forms.min.css | 2 +- .../css/integrations/ai/chat-element.css | 19 +- .../css/integrations/ai/chat-element.min.css | 2 +- .../assets/css/integrations/ai/modal.css | 176 +- .../assets/css/integrations/ai/modal.min.css | 2 +- .../css/integrations/divi/wpforms-base.css | 2764 ---- .../integrations/divi/wpforms-base.min.css | 1 - .../css/integrations/divi/wpforms-full.css | 3948 ------ .../integrations/divi/wpforms-full.min.css | 1 - .../integrations/divi/wpforms-modern-full.css | 20 + .../divi/wpforms-modern-full.min.css | 2 +- .../square/admin-settings-square.css | 17 + .../square/admin-settings-square.min.css | 1 + .../divi/wpforms-square-card-placeholder.css | 239 + .../wpforms-square-card-placeholder.min.css | 1 + .../square/divi/wpforms-square.css | 123 + .../square/divi/wpforms-square.min.css | 1 + .../wpforms-square-card-placeholder.css | 239 + .../wpforms-square-card-placeholder.min.css | 1 + .../integrations/square/wpforms-square.css | 123 + .../square/wpforms-square.min.css | 1 + .../wpforms-lite/assets/css/wpforms-base.css | 1381 -- .../assets/css/wpforms-base.min.css | 1 - .../wpforms-lite/assets/css/wpforms-full.css | 1973 --- .../assets/css/wpforms-full.min.css | 1 - .../assets/images/addon-icon-make.png | Bin 0 -> 5914 bytes .../assets/images/addon-icon-pipedrive.png | Bin 0 -> 3264 bytes .../wpforms-lite/assets/images/icon-tags.svg | 1 + .../assets/images/integrations/ai/close.svg | 2 +- .../images/integrations/ai/pin-chat.svg | 1 + .../images/integrations/ai/unpin-chat.svg | 1 + .../admin/builder/admin-builder-providers.js | 17 +- .../builder/admin-builder-providers.min.js | 2 +- .../assets/js/admin/builder/admin-builder.js | 588 +- .../js/admin/builder/admin-builder.min.js | 10 +- .../assets/js/admin/builder/dropdown-list.js | 126 +- .../js/admin/builder/dropdown-list.min.js | 13 +- .../assets/js/admin/builder/field-map.js | 236 + .../assets/js/admin/builder/field-map.min.js | 1 + .../assets/js/admin/builder/fields/numbers.js | 61 +- .../js/admin/builder/fields/numbers.min.js | 2 +- .../assets/js/admin/builder/payments-utils.js | 119 + .../js/admin/builder/payments-utils.min.js | 1 + .../assets/js/admin/builder/providers.js | 67 +- .../assets/js/admin/builder/providers.min.js | 2 +- .../assets/js/admin/builder/smart-tags.js | 1572 +++ .../assets/js/admin/builder/smart-tags.min.js | 5 + .../js/admin/builder/wpforms-choicesjs.js | 8 +- .../js/admin/builder/wpforms-choicesjs.min.js | 2 +- .../js/admin/challenge/challenge-core.js | 18 +- .../js/admin/challenge/challenge-core.min.js | 2 +- .../assets/js/admin/education/core.js | 2 +- .../js/admin/education/edit-post.es5.js | 261 +- .../js/admin/education/edit-post.es5.min.js | 2 +- .../assets/js/admin/education/edit-post.js | 272 +- .../assets/js/admin/payments/overview.js | 1 + .../assets/js/admin/payments/overview.min.js | 2 +- .../assets/js/admin/share/admin-utils.js | 57 + .../assets/js/admin/share/admin-utils.min.js | 2 +- .../assets/js/frontend/fields/address.js | 125 + .../assets/js/frontend/fields/address.min.js | 1 + .../js/frontend/fields/text-limit.es5.js | 18 +- .../js/frontend/fields/text-limit.es5.min.js | 2 +- .../assets/js/frontend/fields/text-limit.js | 18 + .../assets/js/frontend/wpforms-modern.js | 2 +- .../assets/js/frontend/wpforms-modern.min.js | 2 +- .../assets/js/frontend/wpforms.js | 24 +- .../assets/js/frontend/wpforms.min.js | 2 +- .../chat-element/modules/helpers-choices.js | 5 + .../modules/helpers-choices.min.js | 2 +- .../ai/chat-element/modules/helpers-forms.js | 87 +- .../chat-element/modules/helpers-forms.min.js | 4 +- .../chat-element/wpforms-ai-chat-element.js | 120 +- .../wpforms-ai-chat-element.min.js | 10 +- .../ai/chat-element/wpforms-ai-dock.js | 245 + .../ai/chat-element/wpforms-ai-dock.min.js | 3 + .../ai/choices/wpforms-ai-modal.js | 10 +- .../ai/choices/wpforms-ai-modal.min.js | 2 +- .../constant-contact-v3/builder.js | 5 +- .../constant-contact-v3/builder.min.js | 2 +- .../js/integrations/divi/formselector.es5.js | 17 +- .../integrations/divi/formselector.es5.min.js | 2 +- .../js/integrations/elementor/frontend.js | 5 + .../js/integrations/elementor/frontend.min.js | 2 +- .../gutenberg/formselector-legacy.es5.js | 2 +- .../integrations/gutenberg/modules/common.js | 15 +- .../square/admin/builder-square.js | 416 + .../square/admin/builder-square.min.js | 1 + .../square/admin/settings-square.js | 375 + .../square/admin/settings-square.min.js | 1 + .../js/integrations/square/wpforms-square.js | 791 ++ .../integrations/square/wpforms-square.min.js | 1 + .../stripe/admin-builder-modern-stripe.js | 197 +- .../stripe/admin-builder-modern-stripe.min.js | 2 +- .../stripe/admin-builder-stripe-card-field.js | 20 +- .../admin-builder-stripe-card-field.min.js | 2 +- .../stripe/admin-builder-stripe.js | 51 +- .../stripe/admin-builder-stripe.min.js | 2 +- .../stripe/admin-settings-stripe.js | 30 +- .../stripe/admin-settings-stripe.min.js | 2 +- .../stripe/wpforms-stripe-elements.js | 36 +- .../stripe/wpforms-stripe-elements.min.js | 2 +- .../stripe/wpforms-stripe-payment-element.js | 3 + .../wpforms-stripe-payment-element.min.js | 2 +- .../assets/languages/wpforms-lite.pot | 2799 +++-- .../wpforms-lite/assets/lib/purify.min.js | 4 +- .../gutenberg/formselector.es5.js | 20 +- .../gutenberg/formselector.es5.min.js | 2 +- .../js/integrations/gutenberg/themes.json | 4 +- wp-content/plugins/wpforms-lite/changelog.txt | 29 + .../includes/admin/ajax-actions.php | 6 +- .../includes/admin/builder/class-builder.php | 66 +- .../includes/admin/builder/functions.php | 18 +- .../admin/builder/panels/class-base.php | 34 + .../admin/builder/panels/class-settings.php | 7 +- .../includes/admin/class-about.php | 13 +- .../includes/admin/class-install-skin.php | 27 - .../includes/admin/class-menu.php | 15 +- .../includes/admin/settings-api.php | 25 +- .../wpforms-lite/includes/class-process.php | 6 +- .../wpforms-lite/includes/deprecated.php | 56 +- .../includes/fields/class-base.php | 71 +- .../fields/class-internal-information.php | 25 +- .../includes/fields/class-name.php | 8 +- .../includes/fields/class-select.php | 8 +- .../wpforms-lite/includes/functions.php | 1 - .../includes/functions/filesystem-media.php | 4 +- .../wpforms-lite/includes/functions/forms.php | 2 +- .../includes/functions/payments.php | 25 + .../includes/functions/unused.php | 332 - .../wpforms-lite/includes/integrations.php | 2 +- .../includes/templates/class-blank.php | 1 + .../wpforms-lite/lite/wpforms-lite.php | 124 +- wp-content/plugins/wpforms-lite/readme.txt | 37 +- .../wpforms-lite/src/Admin/AdminBarMenu.php | 4 +- .../wpforms-lite/src/Admin/Builder/Addons.php | 308 +- .../wpforms-lite/src/Admin/Builder/Help.php | 8 + .../src/Admin/Builder/Templates.php | 22 +- .../src/Admin/FormEmbedWizard.php | 27 - .../src/Admin/Forms/Ajax/Tags.php | 35 +- .../wpforms-lite/src/Admin/Forms/Page.php | 43 - .../wpforms-lite/src/Admin/Forms/Search.php | 18 - .../src/Admin/Forms/UserTemplates.php | 26 +- .../Admin/Payments/Views/Overview/Page.php | 69 +- .../src/Admin/Payments/Views/Single.php | 4 + .../wpforms-lite/src/Admin/Revisions.php | 49 +- .../Admin/Tools/Importers/ContactForm7.php | 150 +- .../Tools/Importers/ImporterInterface.php | 4 +- .../src/Admin/Tools/Importers/NinjaForms.php | 68 +- .../src/Admin/Tools/Importers/PirateForms.php | 76 +- .../src/Admin/Tools/Views/Export.php | 68 +- .../wpforms-lite/src/Emails/InfoBlocks.php | 18 +- .../wpforms-lite/src/Emails/Mailer.php | 15 +- .../wpforms-lite/src/Emails/Notifications.php | 185 +- .../plugins/wpforms-lite/src/ErrorHandler.php | 3 +- .../wpforms-lite/src/Forms/Akismet.php | 8 +- .../src/Forms/Fields/Address/Frontend.php | 73 + .../src/Forms/Fields/PaymentSelect/Field.php | 9 +- .../src/Forms/Fields/PaymentTotal/Field.php | 73 +- .../src/Forms/Fields/Traits/ContentInput.php | 14 +- .../src/Forms/Fields/Traits/ProField.php | 181 +- .../wpforms-lite/src/Forms/IconChoices.php | 37 +- .../wpforms-lite/src/Forms/Preview.php | 15 - .../wpforms-lite/src/Frontend/Classic.php | 2 +- .../wpforms-lite/src/Frontend/Frontend.php | 10 +- .../wpforms-lite/src/Helpers/Crypto.php | 2 +- .../src/Helpers/PluginSilentUpgraderSkin.php | 61 - .../src/Integrations/AI/API/Http/Request.php | 2 +- .../AI/Admin/Builder/Enqueues.php | 15 +- .../Integrations/AI/Admin/Builder/Forms.php | 2 +- .../ConstantContact/V3/Api/Api.php | 2 +- .../Integrations/ConstantContact/V3/Auth.php | 4 + .../V3/Migration/Migration.php | 4 + .../Integrations/Gutenberg/FormSelector.php | 197 +- .../Integrations/LiteConnect/Integration.php | 7 +- .../wpforms-lite/src/Integrations/Loader.php | 1 + .../src/Integrations/SMTP/Notifications.php | 8 +- .../Square/AddonCompatibility.php | 67 + .../Square/Admin/Builder/Enqueues.php | 118 + .../Square/Admin/Builder/Notifications.php | 132 + .../Square/Admin/Builder/Settings.php | 296 + .../Square/Admin/Builder/Traits/Content.php | 565 + .../src/Integrations/Square/Admin/Connect.php | 876 ++ .../src/Integrations/Square/Admin/Entries.php | 54 + .../src/Integrations/Square/Admin/Notices.php | 276 + .../Admin/Payments/SingleActionsHandler.php | 165 + .../Integrations/Square/Admin/Settings.php | 577 + .../Square/Admin/WebhookSettings.php | 436 + .../src/Integrations/Square/Api/Api.php | 1757 +++ .../Integrations/Square/Api/WebhookEvent.php | 50 + .../Integrations/Square/Api/WebhookRoute.php | 364 + .../Integrations/Square/Api/Webhooks/Base.php | 220 + .../Square/Api/Webhooks/PaymentCreated.php | 224 + .../Square/Api/Webhooks/PaymentUpdated.php | 183 + .../Square/Api/Webhooks/RefundUpdated.php | 94 + .../Api/Webhooks/SubscriptionCreated.php | 42 + .../Api/Webhooks/SubscriptionUpdated.php | 60 + .../Square/Api/WebhooksManager.php | 206 + .../src/Integrations/Square/Connection.php | 561 + .../Integrations/Square/CurlCompatibility.php | 59 + .../src/Integrations/Square/Fields/Square.php | 575 + .../src/Integrations/Square/Frontend.php | 177 + .../src/Integrations/Square/Helpers.php | 558 + .../Square/Integrations/BlockEditor.php | 183 + .../Integrations/Square/Integrations/Divi.php | 113 + .../Square/Integrations/Elementor.php | 74 + .../Integrations/IntegrationInterface.php | 36 + .../Square/Integrations/Loader.php | 69 + .../src/Integrations/Square/Process.php | 1313 ++ .../src/Integrations/Square/Square.php | 237 + .../src/Integrations/Square/Tasks.php | 51 + .../Square/WebhooksHealthCheck.php | 241 + .../Stripe/Admin/Builder/Enqueues.php | 27 +- .../Stripe/Admin/Builder/Notifications.php | 132 + .../Admin/Builder/Traits/ContentTrait.php | 5 +- .../src/Integrations/Stripe/Admin/Connect.php | 35 +- .../Integrations/Stripe/Admin/Settings.php | 2 +- .../Stripe/Api/PaymentIntents.php | 2 +- .../Api/Webhooks/ChargeRefundUpdated.php | 2 +- .../Stripe/Api/Webhooks/ChargeRefunded.php | 2 +- .../Stripe/Api/Webhooks/ChargeSucceeded.php | 2 +- .../Stripe/Api/Webhooks/InvoiceCreated.php | 2 +- .../Api/Webhooks/InvoicePaymentSucceeded.php | 2 +- .../Stripe/Fields/Traits/CreditCard.php | 8 - .../src/Integrations/Stripe/Helpers.php | 15 +- .../src/Integrations/Stripe/Process.php | 15 +- .../src/Integrations/Stripe/Stripe.php | 1 + .../Stripe/WebhooksHealthCheck.php | 2 +- .../UsageTracking/UsageTracking.php | 4 + .../src/Lite/Admin/ConnectSkin.php | 20 +- .../plugins/wpforms-lite/src/Loader.php | 14 +- .../src/Migrations/Tasks/UpgradeBaseTask.php | 304 + .../src/Migrations/UpgradeBase.php | 70 +- .../Provider/Settings/FormBuilder.php | 60 + .../Provider/Settings/PageIntegrations.php | 46 +- .../src/Requirements/Requirements.php | 11 +- .../src/SmartTags/SmartTag/FieldId.php | 2 +- .../src/SmartTags/SmartTag/FieldValueId.php | 2 +- .../src/SmartTags/SmartTag/SmartTag.php | 10 +- .../wpforms-lite/src/SmartTags/SmartTags.php | 147 +- .../src/Tasks/Actions/AsyncRequestTask.php | 2 +- .../SquareSubscriptionTransactionIDTask.php | 161 + .../education/admin/payments/single-page.php | 11 +- .../plugins/wpforms-lite/vendor/autoload.php | 7 +- .../vendor/composer/InstalledVersions.php | 20 +- .../vendor/composer/autoload_classmap.php | 2368 +++- .../vendor/composer/autoload_files.php | 1 + .../vendor/composer/autoload_psr4.php | 2 + .../vendor/composer/autoload_real.php | 10 +- .../vendor/composer/autoload_static.php | 2390 +++- .../vendor/composer/installed.php | 96 +- .../vendor/composer/platform_check.php | 4 +- .../wpforms-lite/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/symfony/polyfill-iconv/Iconv.php | 59 +- .../vendor/symfony/polyfill-iconv/LICENSE | 2 +- .../Resources/charset/translit.php | 5 +- .../symfony/polyfill-iconv/bootstrap.php | 8 +- .../symfony/polyfill-iconv/bootstrap80.php | 80 + .../vendor/symfony/polyfill-mbstring/LICENSE | 2 +- .../symfony/polyfill-mbstring/Mbstring.php | 317 +- .../Resources/mb_convert_variables.php8 | 31 - .../Resources/unidata/caseFolding.php | 119 + .../Resources/unidata/lowerCase.php | 2 +- .../Resources/unidata/upperCase.php | 129 +- .../symfony/polyfill-mbstring/bootstrap.php | 41 +- .../symfony/polyfill-mbstring/bootstrap80.php | 167 + .../vendor/symfony/polyfill-php80/LICENSE | 19 + .../vendor/symfony/polyfill-php80/Php80.php | 115 + .../symfony/polyfill-php80/PhpToken.php | 103 + .../Resources/stubs/Attribute.php | 31 + .../Resources/stubs/PhpToken.php | 16 + .../Resources/stubs/Stringable.php | 20 + .../Resources/stubs/UnhandledMatchError.php | 16 + .../Resources/stubs/ValueError.php | 16 + .../symfony/polyfill-php80/bootstrap.php | 42 + .../apimatic/core-interfaces}/LICENSE | 2 +- .../src/Core/Authentication/AuthGroup.php | 9 + .../src/Core/Authentication/AuthInterface.php | 15 + .../src/Core/ContextInterface.php | 11 + .../core-interfaces/src/Core/Format.php | 10 + .../src/Core/Logger/ApiLoggerInterface.php | 21 + .../Core/Request/NonEmptyParamInterface.php | 8 + .../src/Core/Request/ParamInterface.php | 31 + .../Request/RequestArraySerialization.php | 13 + .../src/Core/Request/RequestInterface.php | 29 + .../src/Core/Request/RequestMethod.php | 13 + .../Core/Request/RequestSetterInterface.php | 16 + .../Core/Request/TypeValidatorInterface.php | 19 + .../src/Core/Response/ResponseInterface.php | 16 + .../src/Http/HttpClientInterface.php | 17 + .../src/Http/HttpConfigurations.php | 43 + .../core-interfaces/src/Http/RetryOption.php | 19 + .../src/Sdk/ConverterInterface.php | 16 + .../src/Sdk/ExceptionInterface.php | 7 + .../vendor_prefixed/apimatic/core/LICENSE | 21 + .../apimatic/core/src/ApiCall.php | 45 + .../apimatic/core/src/Authentication/Auth.php | 107 + .../core/src/Authentication/CoreAuth.php | 44 + .../apimatic/core/src/Client.php | 128 + .../apimatic/core/src/ClientBuilder.php | 174 + .../Exceptions/AuthValidationException.php | 22 + .../apimatic/core/src/Logger/ApiLogger.php | 69 + .../BaseHttpLoggingConfiguration.php | 76 + .../Configuration/LoggingConfiguration.php | 58 + .../Configuration/RequestConfiguration.php | 31 + .../Configuration/ResponseConfiguration.php | 8 + .../core/src/Logger/ConsoleLogger.php | 36 + .../core/src/Logger/LoggerConstants.php | 19 + .../core/src/Logger/NullApiLogger.php | 24 + .../Parameters/AdditionalFormParams.php | 42 + .../Parameters/AdditionalHeaderParams.php | 19 + .../Parameters/AdditionalQueryParams.php | 72 + .../core/src/Request/Parameters/BodyParam.php | 41 + .../src/Request/Parameters/EncodedParam.php | 81 + .../core/src/Request/Parameters/FormParam.php | 85 + .../src/Request/Parameters/HeaderParam.php | 31 + .../src/Request/Parameters/MultipleParams.php | 52 + .../core/src/Request/Parameters/Parameter.php | 130 + .../src/Request/Parameters/QueryParam.php | 81 + .../src/Request/Parameters/TemplateParam.php | 65 + .../apimatic/core/src/Request/Request.php | 240 + .../core/src/Request/RequestBuilder.php | 132 + .../apimatic/core/src/Response/Context.php | 100 + .../core/src/Response/ResponseError.php | 67 + .../core/src/Response/ResponseHandler.php | 175 + .../src/Response/Types/DeserializableType.php | 30 + .../core/src/Response/Types/ErrorType.php | 127 + .../src/Response/Types/ResponseMultiType.php | 42 + .../core/src/Response/Types/ResponseType.php | 56 + .../TestCase/BodyMatchers/BodyComparator.php | 184 + .../src/TestCase/BodyMatchers/BodyMatcher.php | 50 + .../BodyMatchers/KeysAndValuesBodyMatcher.php | 17 + .../TestCase/BodyMatchers/KeysBodyMatcher.php | 26 + .../BodyMatchers/NativeBodyMatcher.php | 45 + .../TestCase/BodyMatchers/RawBodyMatcher.php | 30 + .../core/src/TestCase/CoreTestCase.php | 80 + .../core/src/TestCase/HeadersMatcher.php | 60 + .../core/src/TestCase/StatusCodeMatcher.php | 62 + .../apimatic/core/src/TestCase/TestParam.php | 77 + .../core/src/Types/CallbackCatcher.php | 54 + .../core/src/Types/Sdk/CoreApiResponse.php | 98 + .../core/src/Types/Sdk/CoreCallback.php | 97 + .../core/src/Types/Sdk/CoreContext.php | 29 + .../core/src/Types/Sdk/CoreFileWrapper.php | 84 + .../core/src/Types/Sdk/CoreRequest.php | 127 + .../core/src/Types/Sdk/CoreResponse.php | 66 + .../apimatic/core/src/Utils/CoreHelper.php | 263 + .../apimatic/core/src/Utils/DateHelper.php | 582 + .../apimatic/core/src/Utils/JsonHelper.php | 76 + .../core/src/Utils/XmlDeserializer.php | 160 + .../apimatic/core/src/Utils/XmlSerializer.php | 120 + .../apimatic/core/tests/ApiCallTest.php | 833 ++ .../core/tests/AuthenticationTest.php | 167 + .../apimatic/core/tests/ClientTest.php | 175 + .../apimatic/core/tests/CoreTestCaseTest.php | 191 + .../apimatic/core/tests/EndToEndTest.php | 69 + .../apimatic/core/tests/LoggerTest.php | 184 + .../Authentication/FormAuthManager.php | 13 + .../Authentication/HeaderAuthManager.php | 13 + .../Authentication/QueryAuthManager.php | 13 + .../core/tests/Mocking/Logger/LogEntry.php | 21 + .../core/tests/Mocking/Logger/MockLogger.php | 38 + .../core/tests/Mocking/Logger/MockPrinter.php | 15 + .../core/tests/Mocking/MockConverter.php | 43 + .../core/tests/Mocking/MockHelper.php | 142 + .../core/tests/Mocking/MockHttpClient.php | 15 + .../core/tests/Mocking/Other/Customer.php | 16 + .../core/tests/Mocking/Other/MockChild1.php | 32 + .../core/tests/Mocking/Other/MockChild2.php | 32 + .../core/tests/Mocking/Other/MockChild3.php | 32 + .../core/tests/Mocking/Other/MockClass.php | 57 + .../tests/Mocking/Other/MockException.php | 30 + .../tests/Mocking/Other/MockException1.php | 11 + .../tests/Mocking/Other/MockException2.php | 11 + .../tests/Mocking/Other/MockException3.php | 11 + .../core/tests/Mocking/Other/Order.php | 32 + .../core/tests/Mocking/Other/Person.php | 20 + .../tests/Mocking/Response/MockResponse.php | 62 + .../tests/Mocking/Types/MockApiResponse.php | 29 + .../core/tests/Mocking/Types/MockCallback.php | 9 + .../core/tests/Mocking/Types/MockContext.php | 17 + .../tests/Mocking/Types/MockCoreResponse.php | 9 + .../tests/Mocking/Types/MockFileWrapper.php | 23 + .../core/tests/Mocking/Types/MockRequest.php | 9 + .../apimatic/core/tests/TypesTest.php | 139 + .../apimatic/core/tests/UtilsTest.php | 385 + .../apimatic/core/tests/bootstrap.php | 10 + .../apimatic/jsonmapper/example/Address.php | 15 + .../apimatic/jsonmapper/example/Contact.php | 12 + .../apimatic/jsonmapper/example/run.php | 12 + .../src/AnyOfValidationException.php | 39 + .../apimatic/jsonmapper/src/JsonMapper.php | 1656 +++ .../jsonmapper/src/JsonMapperException.php | 153 + .../src/OneOfValidationException.php | 53 + .../jsonmapper/src/TypeCombination.php | 365 + .../jsonmapper/tests/JsonMapperTest.php | 998 ++ .../jsonmapper/tests/JsonMapperTest/Array.php | 89 + .../tests/JsonMapperTest/Broken.php | 37 + .../tests/JsonMapperTest/ClassWithCtor.php | 22 + .../JsonMapperTest/ComplexClassWithCtor.php | 56 + .../JsonMapperTest/DependencyInjector.php | 26 + .../tests/JsonMapperTest/DerivedClass.php | 12 + .../tests/JsonMapperTest/DerivedClass2.php | 12 + .../tests/JsonMapperTest/FactoryMethod.php | 118 + .../JsonMapperTest/FactoryMethodWithError.php | 29 + .../JsonMapperCommentsDiscardedException.php | 18 + .../JsonMapperForCheckingAllowedPaths.php | 12 + .../tests/JsonMapperTest/Logger.php | 41 + .../tests/JsonMapperTest/MapsWithSetters.php | 49 + .../tests/JsonMapperTest/Php7TypedClass.php | 35 + .../tests/JsonMapperTest/Php7_1TypedClass.php | 20 + .../JsonMapperTest/PrivateWithSetter.php | 46 + .../tests/JsonMapperTest/Simple.php | 200 + .../tests/JsonMapperTest/SimpleBase.php | 24 + .../SimpleBaseWithMissingDiscrimType.php | 23 + .../tests/JsonMapperTest/ValueObject.php | 16 + .../apimatic/jsonmapper/tests/bootstrap.php | 9 + .../multitypetest/MultiTypeJsonMapper.php | 16 + .../tests/multitypetest/MultiTypeTest.php | 1128 ++ .../tests/multitypetest/model/Atom.php | 80 + .../tests/multitypetest/model/Car.php | 58 + .../multitypetest/model/ComplexCaseA.php | 86 + .../multitypetest/model/ComplexCaseB.php | 82 + .../multitypetest/model/DateTimeHelper.php | 358 + .../tests/multitypetest/model/DaysEnum.php | 47 + .../tests/multitypetest/model/Deer.php | 77 + .../tests/multitypetest/model/Employee.php | 210 + .../tests/multitypetest/model/Evening.php | 110 + .../tests/multitypetest/model/Lion.php | 77 + .../multitypetest/model/MonthNameEnum.php | 51 + .../multitypetest/model/MonthNumberEnum.php | 51 + .../tests/multitypetest/model/Morning.php | 110 + .../tests/multitypetest/model/Orbit.php | 56 + .../multitypetest/model/OuterArrayCase.php | 57 + .../tests/multitypetest/model/Person.php | 206 + .../tests/multitypetest/model/Postman.php | 189 + .../tests/multitypetest/model/SimpleCase.php | 57 + .../tests/multitypetest/model/SimpleCaseA.php | 58 + .../tests/multitypetest/model/SimpleCaseB.php | 57 + .../tests/multitypetest/model/Vehicle.php | 56 + .../tests/multitypetest/model/Vehicle2.php | 56 + .../tests/namespacetest/NamespaceTest.php | 123 + .../jsonmapper/tests/namespacetest/Unit.php | 8 + .../tests/namespacetest/UnitData.php | 36 + .../tests/namespacetest/model/Group.php | 32 + .../tests/namespacetest/model/User.php | 13 + .../tests/namespacetest/model/UserList.php | 7 + .../jsonmapper/tests/othernamespace/Foo.php | 12 + .../tests/othernamespace/Programmers.php | 18 + .../apimatic/unirest-php/LICENSE | 26 + .../unirest-php/src/Configuration.php | 341 + .../apimatic/unirest-php/src/HttpClient.php | 309 + .../apimatic/unirest-php/src/Request/Body.php | 58 + .../unirest-php/src/Request/Request.php | 119 + .../apimatic/unirest-php/src/Response.php | 55 + .../apimatic/unirest-php/tests/BodyTest.php | 58 + .../tests/Mocking/HttpClientChild.php | 16 + .../unirest-php/tests/RequestTest.php | 358 + .../unirest-php/tests/ResponseTest.php | 24 + .../apimatic/unirest-php/tests/bootstrap.php | 10 + .../php-jsonpointer/src/Rs/Json/Pointer.php | 144 + .../Rs/Json/Pointer/InvalidJsonException.php | 7 + .../Json/Pointer/InvalidPointerException.php | 7 + .../Json/Pointer/NonWalkableJsonException.php | 7 + .../NonexistentValueReferencedException.php | 7 + .../vendor_prefixed/square/square/LICENSE | 10 + .../square/square/example-autoload.php | 55 + .../square/square/src/ApiHelper.php | 148 + .../square/square/src/Apis/ApplePayApi.php | 45 + .../square/src/Apis/BankAccountsApi.php | 70 + .../square/square/src/Apis/BaseApi.php | 37 + .../src/Apis/BookingCustomAttributesApi.php | 327 + .../square/square/src/Apis/BookingsApi.php | 287 + .../square/square/src/Apis/CardsApi.php | 87 + .../square/square/src/Apis/CashDrawersApi.php | 72 + .../square/square/src/Apis/CatalogApi.php | 417 + .../square/square/src/Apis/CheckoutApi.php | 197 + .../src/Apis/CustomerCustomAttributesApi.php | 319 + .../square/src/Apis/CustomerGroupsApi.php | 106 + .../square/src/Apis/CustomerSegmentsApi.php | 52 + .../square/square/src/Apis/CustomersApi.php | 336 + .../square/square/src/Apis/DevicesApi.php | 108 + .../square/square/src/Apis/DisputesApi.php | 180 + .../square/square/src/Apis/EmployeesApi.php | 45 + .../square/square/src/Apis/EventsApi.php | 72 + .../square/src/Apis/GiftCardActivitiesApi.php | 79 + .../square/square/src/Apis/GiftCardsApi.php | 155 + .../square/square/src/Apis/InventoryApi.php | 301 + .../square/square/src/Apis/InvoicesApi.php | 230 + .../square/square/src/Apis/LaborApi.php | 330 + .../src/Apis/LocationCustomAttributesApi.php | 312 + .../square/square/src/Apis/LocationsApi.php | 83 + .../square/square/src/Apis/LoyaltyApi.php | 455 + .../src/Apis/MerchantCustomAttributesApi.php | 313 + .../square/square/src/Apis/MerchantsApi.php | 51 + .../src/Apis/MobileAuthorizationApi.php | 43 + .../square/square/src/Apis/OAuthApi.php | 104 + .../src/Apis/OrderCustomAttributesApi.php | 333 + .../square/square/src/Apis/OrdersApi.php | 200 + .../square/square/src/Apis/PaymentsApi.php | 208 + .../square/square/src/Apis/PayoutsApi.php | 94 + .../square/square/src/Apis/RefundsApi.php | 106 + .../square/square/src/Apis/SitesApi.php | 28 + .../square/square/src/Apis/SnippetsApi.php | 82 + .../square/src/Apis/SubscriptionsApi.php | 263 + .../square/square/src/Apis/TeamApi.php | 263 + .../square/square/src/Apis/TerminalApi.php | 264 + .../square/src/Apis/TransactionsApi.php | 122 + .../square/src/Apis/V1TransactionsApi.php | 77 + .../square/square/src/Apis/VendorsApi.php | 131 + .../src/Apis/WebhookSubscriptionsApi.php | 166 + .../BearerAuthCredentialsBuilder.php | 45 + .../src/Authentication/BearerAuthManager.php | 41 + .../square/src/BearerAuthCredentials.php | 21 + .../square/src/ConfigurationDefaults.php | 30 + .../square/src/ConfigurationInterface.php | 49 + .../square/square/src/Environment.php | 14 + .../square/src/Exceptions/ApiException.php | 58 + .../square/square/src/Http/ApiResponse.php | 95 + .../square/square/src/Http/HttpCallBack.php | 12 + .../square/square/src/Http/HttpContext.php | 30 + .../square/square/src/Http/HttpMethod.php | 18 + .../square/square/src/Http/HttpRequest.php | 12 + .../square/square/src/Http/HttpResponse.php | 12 + .../square/square/src/Models/ACHDetails.php | 140 + .../src/Models/AcceptDisputeResponse.php | 85 + .../src/Models/AcceptedPaymentMethods.php | 170 + .../Models/AccumulateLoyaltyPointsRequest.php | 114 + .../AccumulateLoyaltyPointsResponse.php | 120 + .../square/src/Models/ActionCancelReason.php | 20 + .../square/square/src/Models/ActivityType.php | 269 + .../src/Models/AddGroupToCustomerResponse.php | 59 + .../square/src/Models/AdditionalRecipient.php | 173 + .../square/square/src/Models/Address.php | 559 + .../src/Models/AdjustLoyaltyPointsRequest.php | 136 + .../Models/AdjustLoyaltyPointsResponse.php | 87 + .../square/src/Models/AfterpayDetails.php | 65 + .../square/src/Models/ApplicationDetails.php | 108 + ...pplicationDetailsExternalSquareProduct.php | 21 + .../square/src/Models/ApplicationType.php | 9 + .../square/src/Models/AppointmentSegment.php | 252 + .../square/src/Models/ArchivedState.php | 25 + .../square/square/src/Models/Availability.php | 131 + .../square/square/src/Models/BankAccount.php | 565 + .../src/Models/BankAccountPaymentDetails.php | 316 + .../square/src/Models/BankAccountStatus.php | 27 + .../square/src/Models/BankAccountType.php | 36 + .../Models/BatchChangeInventoryRequest.php | 154 + .../Models/BatchChangeInventoryResponse.php | 113 + .../BatchDeleteCatalogObjectsRequest.php | 72 + .../BatchDeleteCatalogObjectsResponse.php | 111 + .../BatchRetrieveCatalogObjectsRequest.php | 283 + .../BatchRetrieveCatalogObjectsResponse.php | 113 + .../BatchRetrieveInventoryChangesRequest.php | 369 + .../BatchRetrieveInventoryChangesResponse.php | 117 + .../BatchRetrieveInventoryCountsRequest.php | 284 + .../BatchRetrieveInventoryCountsResponse.php | 119 + .../src/Models/BatchRetrieveOrdersRequest.php | 104 + .../Models/BatchRetrieveOrdersResponse.php | 88 + .../BatchUpsertCatalogObjectsRequest.php | 155 + .../BatchUpsertCatalogObjectsResponse.php | 140 + .../square/square/src/Models/Booking.php | 553 + .../src/Models/BookingBookingSource.php | 29 + .../src/Models/BookingCreatorDetails.php | 110 + .../BookingCreatorDetailsCreatorType.php | 19 + .../BookingCustomAttributeDeleteRequest.php | 93 + .../BookingCustomAttributeDeleteResponse.php | 85 + .../BookingCustomAttributeUpsertRequest.php | 133 + .../BookingCustomAttributeUpsertResponse.php | 112 + .../square/src/Models/BookingStatus.php | 36 + .../square/square/src/Models/BreakType.php | 255 + .../src/Models/Builders/ACHDetailsBuilder.php | 91 + .../Builders/AcceptDisputeResponseBuilder.php | 59 + .../AcceptedPaymentMethodsBuilder.php | 109 + .../AccumulateLoyaltyPointsRequestBuilder.php | 42 + ...AccumulateLoyaltyPointsResponseBuilder.php | 69 + .../AddGroupToCustomerResponseBuilder.php | 48 + .../Builders/AdditionalRecipientBuilder.php | 77 + .../src/Models/Builders/AddressBuilder.php | 281 + .../AdjustLoyaltyPointsRequestBuilder.php | 59 + .../AdjustLoyaltyPointsResponseBuilder.php | 59 + .../Builders/AfterpayDetailsBuilder.php | 55 + .../Builders/ApplicationDetailsBuilder.php | 65 + .../Builders/AppointmentSegmentBuilder.php | 123 + .../Models/Builders/AvailabilityBuilder.php | 84 + .../Models/Builders/BankAccountBuilder.php | 166 + .../BankAccountPaymentDetailsBuilder.php | 175 + .../BatchChangeInventoryRequestBuilder.php | 76 + .../BatchChangeInventoryResponseBuilder.php | 70 + ...atchDeleteCatalogObjectsRequestBuilder.php | 55 + ...tchDeleteCatalogObjectsResponseBuilder.php | 68 + ...chRetrieveCatalogObjectsRequestBuilder.php | 111 + ...hRetrieveCatalogObjectsResponseBuilder.php | 69 + ...RetrieveInventoryChangesRequestBuilder.php | 181 + ...etrieveInventoryChangesResponseBuilder.php | 69 + ...hRetrieveInventoryCountsRequestBuilder.php | 145 + ...RetrieveInventoryCountsResponseBuilder.php | 69 + .../BatchRetrieveOrdersRequestBuilder.php | 57 + .../BatchRetrieveOrdersResponseBuilder.php | 59 + ...atchUpsertCatalogObjectsRequestBuilder.php | 41 + ...tchUpsertCatalogObjectsResponseBuilder.php | 80 + .../src/Models/Builders/BookingBuilder.php | 258 + .../Builders/BookingCreatorDetailsBuilder.php | 67 + ...ingCustomAttributeDeleteRequestBuilder.php | 40 + ...ngCustomAttributeDeleteResponseBuilder.php | 58 + ...ingCustomAttributeUpsertRequestBuilder.php | 59 + ...ngCustomAttributeUpsertResponseBuilder.php | 69 + .../src/Models/Builders/BreakTypeBuilder.php | 82 + .../BulkCreateCustomerDataBuilder.php | 221 + .../BulkCreateCustomersRequestBuilder.php | 40 + .../BulkCreateCustomersResponseBuilder.php | 59 + .../BulkCreateTeamMembersRequestBuilder.php | 40 + .../BulkCreateTeamMembersResponseBuilder.php | 59 + .../BulkCreateVendorsRequestBuilder.php | 40 + .../BulkCreateVendorsResponseBuilder.php | 59 + ...eBookingCustomAttributesRequestBuilder.php | 40 + ...BookingCustomAttributesResponseBuilder.php | 59 + .../BulkDeleteCustomersRequestBuilder.php | 39 + .../BulkDeleteCustomersResponseBuilder.php | 59 + ...LocationCustomAttributesRequestBuilder.php | 40 + ...ionCustomAttributeDeleteRequestBuilder.php | 49 + ...ocationCustomAttributesResponseBuilder.php | 51 + ...onCustomAttributeDeleteResponseBuilder.php | 60 + ...MerchantCustomAttributesRequestBuilder.php | 40 + ...antCustomAttributeDeleteRequestBuilder.php | 49 + ...erchantCustomAttributesResponseBuilder.php | 51 + ...ntCustomAttributeDeleteResponseBuilder.php | 50 + ...eteOrderCustomAttributesRequestBuilder.php | 40 + ...tesRequestDeleteCustomAttributeBuilder.php | 49 + ...teOrderCustomAttributesResponseBuilder.php | 51 + .../BulkRetrieveBookingsRequestBuilder.php | 39 + .../BulkRetrieveBookingsResponseBuilder.php | 59 + .../BulkRetrieveCustomersRequestBuilder.php | 39 + .../BulkRetrieveCustomersResponseBuilder.php | 59 + ...eamMemberBookingProfilesRequestBuilder.php | 39 + ...amMemberBookingProfilesResponseBuilder.php | 59 + .../BulkRetrieveVendorsRequestBuilder.php | 55 + .../BulkRetrieveVendorsResponseBuilder.php | 59 + .../Builders/BulkSwapPlanRequestBuilder.php | 41 + .../Builders/BulkSwapPlanResponseBuilder.php | 58 + .../BulkUpdateCustomerDataBuilder.php | 231 + .../BulkUpdateCustomersRequestBuilder.php | 40 + .../BulkUpdateCustomersResponseBuilder.php | 59 + .../BulkUpdateTeamMembersRequestBuilder.php | 40 + .../BulkUpdateTeamMembersResponseBuilder.php | 59 + .../BulkUpdateVendorsRequestBuilder.php | 40 + .../BulkUpdateVendorsResponseBuilder.php | 59 + ...tBookingCustomAttributesRequestBuilder.php | 40 + ...BookingCustomAttributesResponseBuilder.php | 59 + ...CustomerCustomAttributesRequestBuilder.php | 40 + ...merCustomAttributeUpsertRequestBuilder.php | 61 + ...ustomerCustomAttributesResponseBuilder.php | 59 + ...erCustomAttributeUpsertResponseBuilder.php | 71 + ...LocationCustomAttributesRequestBuilder.php | 40 + ...ionCustomAttributeUpsertRequestBuilder.php | 61 + ...ocationCustomAttributesResponseBuilder.php | 59 + ...onCustomAttributeUpsertResponseBuilder.php | 71 + ...MerchantCustomAttributesRequestBuilder.php | 40 + ...antCustomAttributeUpsertRequestBuilder.php | 61 + ...erchantCustomAttributesResponseBuilder.php | 59 + ...ntCustomAttributeUpsertResponseBuilder.php | 71 + ...ertOrderCustomAttributesRequestBuilder.php | 40 + ...tesRequestUpsertCustomAttributeBuilder.php | 59 + ...rtOrderCustomAttributesResponseBuilder.php | 51 + .../BusinessAppointmentSettingsBuilder.php | 240 + .../BusinessBookingProfileBuilder.php | 150 + .../Models/Builders/BusinessHoursBuilder.php | 56 + .../Builders/BusinessHoursPeriodBuilder.php | 83 + .../Builders/BuyNowPayLaterDetailsBuilder.php | 77 + .../CalculateLoyaltyPointsRequestBuilder.php | 84 + .../CalculateLoyaltyPointsResponseBuilder.php | 68 + .../Builders/CalculateOrderRequestBuilder.php | 59 + .../CalculateOrderResponseBuilder.php | 59 + .../Builders/CancelBookingRequestBuilder.php | 73 + .../Builders/CancelBookingResponseBuilder.php | 59 + .../Builders/CancelInvoiceRequestBuilder.php | 39 + .../Builders/CancelInvoiceResponseBuilder.php | 59 + .../CancelLoyaltyPromotionResponseBuilder.php | 59 + ...lPaymentByIdempotencyKeyRequestBuilder.php | 39 + ...PaymentByIdempotencyKeyResponseBuilder.php | 48 + .../Builders/CancelPaymentResponseBuilder.php | 59 + .../CancelSubscriptionResponseBuilder.php | 70 + .../CancelTerminalActionResponseBuilder.php | 59 + .../CancelTerminalCheckoutResponseBuilder.php | 59 + .../CancelTerminalRefundResponseBuilder.php | 59 + .../CaptureTransactionResponseBuilder.php | 48 + .../src/Models/Builders/CardBuilder.php | 248 + .../Builders/CardPaymentDetailsBuilder.php | 305 + .../Builders/CardPaymentTimelineBuilder.php | 91 + .../Models/Builders/CashAppDetailsBuilder.php | 83 + .../Builders/CashDrawerDeviceBuilder.php | 65 + .../Builders/CashDrawerShiftBuilder.php | 281 + .../Builders/CashDrawerShiftEventBuilder.php | 106 + .../CashDrawerShiftSummaryBuilder.php | 190 + .../Builders/CashPaymentDetailsBuilder.php | 50 + .../CatalogAvailabilityPeriodBuilder.php | 83 + .../Builders/CatalogCategoryBuilder.php | 206 + ...atalogCustomAttributeDefinitionBuilder.php | 151 + ...AttributeDefinitionNumberConfigBuilder.php | 55 + ...ributeDefinitionSelectionConfigBuilder.php | 74 + ...nConfigCustomAttributeSelectionBuilder.php | 59 + ...AttributeDefinitionStringConfigBuilder.php | 55 + .../CatalogCustomAttributeValueBuilder.php | 157 + .../Builders/CatalogDiscountBuilder.php | 150 + .../Builders/CatalogEcomSeoDataBuilder.php | 91 + .../Builders/CatalogIdMappingBuilder.php | 73 + .../Models/Builders/CatalogImageBuilder.php | 109 + .../Builders/CatalogInfoResponseBuilder.php | 70 + .../CatalogInfoResponseLimitsBuilder.php | 235 + .../Models/Builders/CatalogItemBuilder.php | 453 + ...talogItemFoodAndBeverageDetailsBuilder.php | 93 + ...everageDetailsDietaryPreferenceBuilder.php | 75 + ...oodAndBeverageDetailsIngredientBuilder.php | 75 + .../CatalogItemModifierListInfoBuilder.php | 130 + .../Builders/CatalogItemOptionBuilder.php | 128 + .../CatalogItemOptionForItemBuilder.php | 55 + .../CatalogItemOptionValueBuilder.php | 127 + ...ItemOptionValueForItemVariationBuilder.php | 73 + .../Builders/CatalogItemVariationBuilder.php | 379 + .../CatalogMeasurementUnitBuilder.php | 66 + .../Builders/CatalogModifierBuilder.php | 139 + .../Builders/CatalogModifierListBuilder.php | 184 + .../CatalogModifierOverrideBuilder.php | 57 + .../Builders/CatalogObjectBatchBuilder.php | 40 + .../Models/Builders/CatalogObjectBuilder.php | 379 + .../Builders/CatalogObjectCategoryBuilder.php | 65 + .../CatalogObjectReferenceBuilder.php | 73 + .../Builders/CatalogPricingRuleBuilder.php | 256 + .../Builders/CatalogProductSetBuilder.php | 163 + .../Models/Builders/CatalogQueryBuilder.php | 147 + .../Builders/CatalogQueryExactBuilder.php | 40 + ...emVariationsForItemOptionValuesBuilder.php | 55 + ...CatalogQueryItemsForItemOptionsBuilder.php | 55 + ...atalogQueryItemsForModifierListBuilder.php | 39 + .../CatalogQueryItemsForTaxBuilder.php | 39 + .../Builders/CatalogQueryPrefixBuilder.php | 40 + .../Builders/CatalogQueryRangeBuilder.php | 75 + .../Builders/CatalogQuerySetBuilder.php | 40 + .../CatalogQuerySortedAttributeBuilder.php | 67 + .../Builders/CatalogQueryTextBuilder.php | 39 + .../Builders/CatalogQuickAmountBuilder.php | 77 + .../CatalogQuickAmountsSettingsBuilder.php | 76 + .../CatalogStockConversionBuilder.php | 41 + .../CatalogSubscriptionPlanBuilder.php | 131 + ...atalogSubscriptionPlanVariationBuilder.php | 113 + .../src/Models/Builders/CatalogTaxBuilder.php | 147 + .../Builders/CatalogTimePeriodBuilder.php | 55 + .../Models/Builders/CatalogV1IdBuilder.php | 73 + .../CategoryPathToRootNodeBuilder.php | 73 + .../ChangeBillingAnchorDateRequestBuilder.php | 73 + ...ChangeBillingAnchorDateResponseBuilder.php | 70 + ...hargeRequestAdditionalRecipientBuilder.php | 42 + .../Models/Builders/ChargeRequestBuilder.php | 243 + .../Models/Builders/ChargeResponseBuilder.php | 59 + .../src/Models/Builders/CheckoutBuilder.php | 188 + ...heckoutLocationSettingsBrandingBuilder.php | 75 + .../CheckoutLocationSettingsBuilder.php | 135 + ...CheckoutLocationSettingsCouponsBuilder.php | 55 + .../CheckoutLocationSettingsPolicyBuilder.php | 91 + ...CheckoutLocationSettingsTippingBuilder.php | 120 + .../CheckoutMerchantSettingsBuilder.php | 58 + ...sPaymentMethodsAfterpayClearpayBuilder.php | 68 + ...fterpayClearpayEligibilityRangeBuilder.php | 43 + ...tMerchantSettingsPaymentMethodsBuilder.php | 79 + ...ingsPaymentMethodsPaymentMethodBuilder.php | 55 + .../Builders/CheckoutOptionsBuilder.php | 215 + .../Builders/ClearpayDetailsBuilder.php | 55 + .../Builders/CloneOrderRequestBuilder.php | 67 + .../Builders/CloneOrderResponseBuilder.php | 59 + .../Models/Builders/CollectedDataBuilder.php | 47 + .../CompletePaymentRequestBuilder.php | 55 + .../CompletePaymentResponseBuilder.php | 59 + .../src/Models/Builders/ComponentBuilder.php | 94 + .../Builders/ConfirmationDecisionBuilder.php | 47 + .../Builders/ConfirmationOptionsBuilder.php | 70 + .../Models/Builders/CoordinatesBuilder.php | 73 + ...ustomAttributeDefinitionRequestBuilder.php | 50 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../Builders/CreateBookingRequestBuilder.php | 50 + .../Builders/CreateBookingResponseBuilder.php | 59 + .../CreateBreakTypeRequestBuilder.php | 50 + .../CreateBreakTypeResponseBuilder.php | 59 + .../Builders/CreateCardRequestBuilder.php | 52 + .../Builders/CreateCardResponseBuilder.php | 59 + .../CreateCatalogImageRequestBuilder.php | 61 + .../CreateCatalogImageResponseBuilder.php | 59 + .../Builders/CreateCheckoutRequestBuilder.php | 113 + .../CreateCheckoutResponseBuilder.php | 59 + .../CreateCustomerCardRequestBuilder.php | 70 + .../CreateCustomerCardResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 50 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../CreateCustomerGroupRequestBuilder.php | 50 + .../CreateCustomerGroupResponseBuilder.php | 59 + .../Builders/CreateCustomerRequestBuilder.php | 159 + .../CreateCustomerResponseBuilder.php | 59 + .../CreateDeviceCodeRequestBuilder.php | 41 + .../CreateDeviceCodeResponseBuilder.php | 59 + ...reateDisputeEvidenceFileRequestBuilder.php | 59 + ...eateDisputeEvidenceFileResponseBuilder.php | 59 + ...reateDisputeEvidenceTextRequestBuilder.php | 50 + ...eateDisputeEvidenceTextResponseBuilder.php | 59 + .../CreateGiftCardActivityRequestBuilder.php | 41 + .../CreateGiftCardActivityResponseBuilder.php | 59 + .../Builders/CreateGiftCardRequestBuilder.php | 42 + .../CreateGiftCardResponseBuilder.php | 59 + .../CreateInvoiceAttachmentRequestBuilder.php | 57 + ...CreateInvoiceAttachmentResponseBuilder.php | 59 + .../Builders/CreateInvoiceRequestBuilder.php | 50 + .../Builders/CreateInvoiceResponseBuilder.php | 59 + .../Builders/CreateJobRequestBuilder.php | 41 + .../Builders/CreateJobResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 50 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../Builders/CreateLocationRequestBuilder.php | 48 + .../CreateLocationResponseBuilder.php | 59 + .../CreateLoyaltyAccountRequestBuilder.php | 41 + .../CreateLoyaltyAccountResponseBuilder.php | 59 + .../CreateLoyaltyPromotionRequestBuilder.php | 41 + .../CreateLoyaltyPromotionResponseBuilder.php | 59 + .../CreateLoyaltyRewardRequestBuilder.php | 41 + .../CreateLoyaltyRewardResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 50 + ...stomAttributeDefinitionResponseBuilder.php | 59 + ...eMobileAuthorizationCodeRequestBuilder.php | 47 + ...MobileAuthorizationCodeResponseBuilder.php | 68 + ...ustomAttributeDefinitionRequestBuilder.php | 50 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../Builders/CreateOrderRequestBuilder.php | 58 + .../Builders/CreateOrderResponseBuilder.php | 59 + .../CreatePaymentLinkRequestBuilder.php | 111 + .../CreatePaymentLinkResponseBuilder.php | 70 + .../Builders/CreatePaymentRequestBuilder.php | 276 + .../Builders/CreatePaymentResponseBuilder.php | 59 + .../Builders/CreateRefundRequestBuilder.php | 52 + .../Builders/CreateRefundResponseBuilder.php | 59 + .../Builders/CreateShiftRequestBuilder.php | 50 + .../Builders/CreateShiftResponseBuilder.php | 59 + .../CreateSubscriptionRequestBuilder.php | 153 + .../CreateSubscriptionResponseBuilder.php | 59 + .../CreateTeamMemberRequestBuilder.php | 58 + .../CreateTeamMemberResponseBuilder.php | 59 + .../CreateTerminalActionRequestBuilder.php | 41 + .../CreateTerminalActionResponseBuilder.php | 59 + .../CreateTerminalCheckoutRequestBuilder.php | 41 + .../CreateTerminalCheckoutResponseBuilder.php | 59 + .../CreateTerminalRefundRequestBuilder.php | 50 + .../CreateTerminalRefundResponseBuilder.php | 59 + .../Builders/CreateVendorRequestBuilder.php | 50 + .../Builders/CreateVendorResponseBuilder.php | 59 + ...reateWebhookSubscriptionRequestBuilder.php | 50 + ...eateWebhookSubscriptionResponseBuilder.php | 59 + .../Builders/CustomAttributeBuilder.php | 124 + .../CustomAttributeDefinitionBuilder.php | 149 + .../Builders/CustomAttributeFilterBuilder.php | 138 + .../Models/Builders/CustomFieldBuilder.php | 39 + .../Builders/CustomerAddressFilterBuilder.php | 58 + .../src/Models/Builders/CustomerBuilder.php | 337 + .../CustomerCreationSourceFilterBuilder.php | 65 + .../CustomerCustomAttributeFilterBuilder.php | 61 + ...tomerCustomAttributeFilterValueBuilder.php | 130 + .../CustomerCustomAttributeFiltersBuilder.php | 56 + .../Builders/CustomerDetailsBuilder.php | 73 + .../Models/Builders/CustomerFilterBuilder.php | 132 + .../Models/Builders/CustomerGroupBuilder.php | 69 + .../Builders/CustomerPreferencesBuilder.php | 55 + .../Models/Builders/CustomerQueryBuilder.php | 59 + .../Builders/CustomerSegmentBuilder.php | 69 + .../Models/Builders/CustomerSortBuilder.php | 57 + .../Models/Builders/CustomerTaxIdsBuilder.php | 55 + .../Builders/CustomerTextFilterBuilder.php | 73 + .../Builders/DataCollectionOptionsBuilder.php | 52 + .../src/Models/Builders/DateRangeBuilder.php | 73 + ...stomAttributeDefinitionResponseBuilder.php | 48 + ...eBookingCustomAttributeResponseBuilder.php | 48 + .../DeleteBreakTypeResponseBuilder.php | 48 + .../DeleteCatalogObjectResponseBuilder.php | 68 + .../DeleteCustomerCardResponseBuilder.php | 48 + ...stomAttributeDefinitionResponseBuilder.php | 48 + ...CustomerCustomAttributeResponseBuilder.php | 48 + .../DeleteCustomerGroupResponseBuilder.php | 48 + .../Builders/DeleteCustomerRequestBuilder.php | 47 + .../DeleteCustomerResponseBuilder.php | 48 + .../DeleteDisputeEvidenceResponseBuilder.php | 48 + ...DeleteInvoiceAttachmentResponseBuilder.php | 48 + .../Builders/DeleteInvoiceRequestBuilder.php | 47 + .../Builders/DeleteInvoiceResponseBuilder.php | 48 + ...stomAttributeDefinitionResponseBuilder.php | 48 + ...LocationCustomAttributeResponseBuilder.php | 48 + .../DeleteLoyaltyRewardResponseBuilder.php | 48 + ...stomAttributeDefinitionResponseBuilder.php | 48 + ...MerchantCustomAttributeResponseBuilder.php | 48 + ...stomAttributeDefinitionResponseBuilder.php | 48 + ...eteOrderCustomAttributeResponseBuilder.php | 48 + .../DeletePaymentLinkResponseBuilder.php | 68 + .../Builders/DeleteShiftResponseBuilder.php | 48 + .../Builders/DeleteSnippetResponseBuilder.php | 48 + ...eleteSubscriptionActionResponseBuilder.php | 59 + ...leteWebhookSubscriptionResponseBuilder.php | 48 + ...reateDisputeEvidenceFileRequestBuilder.php | 67 + ...eateDisputeEvidenceFileResponseBuilder.php | 59 + ...reateDisputeEvidenceTextRequestBuilder.php | 50 + ...eateDisputeEvidenceTextResponseBuilder.php | 59 + .../Models/Builders/DestinationBuilder.php | 57 + .../Builders/DestinationDetailsBuilder.php | 70 + ...inationDetailsCardRefundDetailsBuilder.php | 84 + ...inationDetailsCashRefundDetailsBuilder.php | 50 + ...ionDetailsExternalRefundDetailsBuilder.php | 58 + .../Builders/DeviceAttributesBuilder.php | 131 + .../src/Models/Builders/DeviceBuilder.php | 80 + .../Builders/DeviceCheckoutOptionsBuilder.php | 104 + .../src/Models/Builders/DeviceCodeBuilder.php | 153 + ...ponentDetailsApplicationDetailsBuilder.php | 93 + ...eComponentDetailsBatteryDetailsBuilder.php | 65 + ...mponentDetailsCardReaderDetailsBuilder.php | 47 + ...ComponentDetailsEthernetDetailsBuilder.php | 73 + ...viceComponentDetailsMeasurementBuilder.php | 55 + ...tDetailsNetworkInterfaceDetailsBuilder.php | 55 + ...viceComponentDetailsWiFiDetailsBuilder.php | 120 + .../Models/Builders/DeviceDetailsBuilder.php | 91 + .../Models/Builders/DeviceMetadataBuilder.php | 253 + .../Models/Builders/DeviceStatusBuilder.php | 47 + .../Builders/DigitalWalletDetailsBuilder.php | 84 + .../Builders/DisableCardResponseBuilder.php | 59 + .../Builders/DisableEventsResponseBuilder.php | 48 + .../DismissTerminalActionResponseBuilder.php | 59 + ...DismissTerminalCheckoutResponseBuilder.php | 59 + .../DismissTerminalRefundResponseBuilder.php | 59 + .../src/Models/Builders/DisputeBuilder.php | 255 + .../Builders/DisputeEvidenceBuilder.php | 140 + .../Builders/DisputeEvidenceFileBuilder.php | 73 + .../Builders/DisputedPaymentBuilder.php | 55 + .../src/Models/Builders/EmployeeBuilder.php | 185 + .../Models/Builders/EmployeeWageBuilder.php | 94 + .../Builders/EnableEventsResponseBuilder.php | 48 + .../src/Models/Builders/ErrorBuilder.php | 60 + .../src/Models/Builders/EventBuilder.php | 130 + .../src/Models/Builders/EventDataBuilder.php | 101 + .../Models/Builders/EventMetadataBuilder.php | 73 + .../Builders/EventTypeMetadataBuilder.php | 67 + .../ExternalPaymentDetailsBuilder.php | 69 + .../Models/Builders/FilterValueBuilder.php | 91 + .../Builders/FloatNumberRangeBuilder.php | 73 + .../Models/Builders/FulfillmentBuilder.php | 147 + .../FulfillmentDeliveryDetailsBuilder.php | 388 + .../FulfillmentFulfillmentEntryBuilder.php | 76 + .../FulfillmentPickupDetailsBuilder.php | 283 + ...kupDetailsCurbsidePickupDetailsBuilder.php | 73 + .../Builders/FulfillmentRecipientBuilder.php | 120 + .../FulfillmentShipmentDetailsBuilder.php | 260 + .../GetBankAccountByV1IdResponseBuilder.php | 59 + .../GetBankAccountResponseBuilder.php | 59 + .../Builders/GetBreakTypeResponseBuilder.php | 59 + .../Builders/GetDeviceCodeResponseBuilder.php | 59 + .../Builders/GetDeviceResponseBuilder.php | 59 + .../GetEmployeeWageResponseBuilder.php | 59 + .../Builders/GetInvoiceResponseBuilder.php | 59 + .../GetPaymentRefundResponseBuilder.php | 59 + .../Builders/GetPaymentResponseBuilder.php | 59 + .../Builders/GetPayoutResponseBuilder.php | 59 + .../Builders/GetShiftResponseBuilder.php | 59 + .../GetTeamMemberWageResponseBuilder.php | 59 + .../GetTerminalActionResponseBuilder.php | 59 + .../GetTerminalCheckoutResponseBuilder.php | 59 + .../GetTerminalRefundResponseBuilder.php | 59 + .../GiftCardActivityActivateBuilder.php | 120 + ...GiftCardActivityAdjustDecrementBuilder.php | 41 + ...GiftCardActivityAdjustIncrementBuilder.php | 41 + .../Builders/GiftCardActivityBlockBuilder.php | 37 + .../Builders/GiftCardActivityBuilder.php | 272 + .../GiftCardActivityClearBalanceBuilder.php | 39 + .../GiftCardActivityDeactivateBuilder.php | 39 + .../GiftCardActivityImportBuilder.php | 40 + .../GiftCardActivityImportReversalBuilder.php | 40 + .../Builders/GiftCardActivityLoadBuilder.php | 120 + .../GiftCardActivityRedeemBuilder.php | 78 + .../GiftCardActivityRefundBuilder.php | 94 + ...CardActivityTransferBalanceFromBuilder.php | 41 + ...ftCardActivityTransferBalanceToBuilder.php | 41 + .../GiftCardActivityUnblockBuilder.php | 37 + ...dActivityUnlinkedActivityRefundBuilder.php | 68 + .../src/Models/Builders/GiftCardBuilder.php | 118 + .../Builders/InventoryAdjustmentBuilder.php | 294 + .../InventoryAdjustmentGroupBuilder.php | 77 + .../Builders/InventoryChangeBuilder.php | 101 + .../Models/Builders/InventoryCountBuilder.php | 139 + .../InventoryPhysicalCountBuilder.php | 222 + .../Builders/InventoryTransferBuilder.php | 240 + .../InvoiceAcceptedPaymentMethodsBuilder.php | 127 + .../Builders/InvoiceAttachmentBuilder.php | 107 + .../src/Models/Builders/InvoiceBuilder.php | 371 + .../Builders/InvoiceCustomFieldBuilder.php | 83 + .../Models/Builders/InvoiceFilterBuilder.php | 57 + .../InvoicePaymentReminderBuilder.php | 103 + .../Builders/InvoicePaymentRequestBuilder.php | 217 + .../Models/Builders/InvoiceQueryBuilder.php | 51 + .../Builders/InvoiceRecipientBuilder.php | 127 + .../InvoiceRecipientTaxIdsBuilder.php | 47 + .../Models/Builders/InvoiceSortBuilder.php | 47 + .../ItemVariationLocationOverridesBuilder.php | 142 + .../Models/Builders/JobAssignmentBuilder.php | 114 + .../square/src/Models/Builders/JobBuilder.php | 113 + .../LinkCustomerToGiftCardRequestBuilder.php | 39 + .../LinkCustomerToGiftCardResponseBuilder.php | 59 + .../ListBankAccountsRequestBuilder.php | 91 + .../ListBankAccountsResponseBuilder.php | 69 + ...stomAttributeDefinitionsRequestBuilder.php | 73 + ...tomAttributeDefinitionsResponseBuilder.php | 69 + ...tBookingCustomAttributesRequestBuilder.php | 91 + ...BookingCustomAttributesResponseBuilder.php | 69 + .../Builders/ListBookingsRequestBuilder.php | 163 + .../Builders/ListBookingsResponseBuilder.php | 69 + .../Builders/ListBreakTypesRequestBuilder.php | 91 + .../ListBreakTypesResponseBuilder.php | 69 + .../Builders/ListCardsRequestBuilder.php | 119 + .../Builders/ListCardsResponseBuilder.php | 69 + ...istCashDrawerShiftEventsRequestBuilder.php | 75 + ...stCashDrawerShiftEventsResponseBuilder.php | 69 + .../ListCashDrawerShiftsRequestBuilder.php | 121 + .../ListCashDrawerShiftsResponseBuilder.php | 69 + .../Builders/ListCatalogRequestBuilder.php | 91 + .../Builders/ListCatalogResponseBuilder.php | 69 + ...stomAttributeDefinitionsRequestBuilder.php | 73 + ...tomAttributeDefinitionsResponseBuilder.php | 69 + ...CustomerCustomAttributesRequestBuilder.php | 91 + ...ustomerCustomAttributesResponseBuilder.php | 69 + .../ListCustomerGroupsRequestBuilder.php | 73 + .../ListCustomerGroupsResponseBuilder.php | 69 + .../ListCustomerSegmentsRequestBuilder.php | 73 + .../ListCustomerSegmentsResponseBuilder.php | 69 + .../Builders/ListCustomersRequestBuilder.php | 111 + .../Builders/ListCustomersResponseBuilder.php | 79 + .../ListDeviceCodesRequestBuilder.php | 101 + .../ListDeviceCodesResponseBuilder.php | 69 + .../Builders/ListDevicesRequestBuilder.php | 101 + .../Builders/ListDevicesResponseBuilder.php | 69 + .../ListDisputeEvidenceRequestBuilder.php | 55 + .../ListDisputeEvidenceResponseBuilder.php | 69 + .../Builders/ListDisputesRequestBuilder.php | 91 + .../Builders/ListDisputesResponseBuilder.php | 69 + .../ListEmployeeWagesRequestBuilder.php | 91 + .../ListEmployeeWagesResponseBuilder.php | 69 + .../Builders/ListEmployeesRequestBuilder.php | 101 + .../Builders/ListEmployeesResponseBuilder.php | 69 + .../Builders/ListEventTypesRequestBuilder.php | 55 + .../ListEventTypesResponseBuilder.php | 69 + .../ListGiftCardActivitiesRequestBuilder.php | 181 + .../ListGiftCardActivitiesResponseBuilder.php | 69 + .../Builders/ListGiftCardsRequestBuilder.php | 127 + .../Builders/ListGiftCardsResponseBuilder.php | 69 + .../Builders/ListInvoicesRequestBuilder.php | 75 + .../Builders/ListInvoicesResponseBuilder.php | 69 + .../Builders/ListJobsRequestBuilder.php | 55 + .../Builders/ListJobsResponseBuilder.php | 69 + ...tLocationBookingProfilesRequestBuilder.php | 73 + ...LocationBookingProfilesResponseBuilder.php | 69 + ...stomAttributeDefinitionsRequestBuilder.php | 83 + ...tomAttributeDefinitionsResponseBuilder.php | 69 + ...LocationCustomAttributesRequestBuilder.php | 101 + ...ocationCustomAttributesResponseBuilder.php | 69 + .../Builders/ListLocationsResponseBuilder.php | 59 + .../ListLoyaltyProgramsResponseBuilder.php | 59 + .../ListLoyaltyPromotionsRequestBuilder.php | 83 + .../ListLoyaltyPromotionsResponseBuilder.php | 69 + ...stomAttributeDefinitionsRequestBuilder.php | 83 + ...tomAttributeDefinitionsResponseBuilder.php | 69 + ...MerchantCustomAttributesRequestBuilder.php | 101 + ...erchantCustomAttributesResponseBuilder.php | 69 + .../Builders/ListMerchantsRequestBuilder.php | 55 + .../Builders/ListMerchantsResponseBuilder.php | 69 + ...stomAttributeDefinitionsRequestBuilder.php | 83 + ...tomAttributeDefinitionsResponseBuilder.php | 61 + ...istOrderCustomAttributesRequestBuilder.php | 101 + ...stOrderCustomAttributesResponseBuilder.php | 69 + .../ListPaymentLinksRequestBuilder.php | 73 + .../ListPaymentLinksResponseBuilder.php | 69 + .../ListPaymentRefundsRequestBuilder.php | 181 + .../ListPaymentRefundsResponseBuilder.php | 69 + .../Builders/ListPaymentsRequestBuilder.php | 299 + .../Builders/ListPaymentsResponseBuilder.php | 69 + .../ListPayoutEntriesRequestBuilder.php | 83 + .../ListPayoutEntriesResponseBuilder.php | 69 + .../Builders/ListPayoutsRequestBuilder.php | 147 + .../Builders/ListPayoutsResponseBuilder.php | 69 + .../Builders/ListRefundsRequestBuilder.php | 101 + .../Builders/ListRefundsResponseBuilder.php | 69 + .../Builders/ListSitesResponseBuilder.php | 59 + .../ListSubscriptionEventsRequestBuilder.php | 73 + .../ListSubscriptionEventsResponseBuilder.php | 69 + ...eamMemberBookingProfilesRequestBuilder.php | 109 + ...amMemberBookingProfilesResponseBuilder.php | 69 + .../ListTeamMemberWagesRequestBuilder.php | 91 + .../ListTeamMemberWagesResponseBuilder.php | 69 + .../ListTransactionsRequestBuilder.php | 101 + .../ListTransactionsResponseBuilder.php | 69 + .../ListWebhookEventTypesRequestBuilder.php | 55 + .../ListWebhookEventTypesResponseBuilder.php | 69 + ...ListWebhookSubscriptionsRequestBuilder.php | 101 + ...istWebhookSubscriptionsResponseBuilder.php | 69 + .../ListWorkweekConfigsRequestBuilder.php | 73 + .../ListWorkweekConfigsResponseBuilder.php | 69 + .../LocationBookingProfileBuilder.php | 91 + .../src/Models/Builders/LocationBuilder.php | 407 + .../Models/Builders/LoyaltyAccountBuilder.php | 155 + ...ltyAccountExpiringPointDeadlineBuilder.php | 40 + .../Builders/LoyaltyAccountMappingBuilder.php | 75 + .../LoyaltyEventAccumulatePointsBuilder.php | 83 + ...yEventAccumulatePromotionPointsBuilder.php | 60 + .../LoyaltyEventAdjustPointsBuilder.php | 67 + .../Models/Builders/LoyaltyEventBuilder.php | 141 + .../LoyaltyEventCreateRewardBuilder.php | 50 + .../LoyaltyEventDateTimeFilterBuilder.php | 40 + .../LoyaltyEventDeleteRewardBuilder.php | 50 + .../LoyaltyEventExpirePointsBuilder.php | 40 + .../Builders/LoyaltyEventFilterBuilder.php | 92 + .../LoyaltyEventLocationFilterBuilder.php | 39 + ...oyaltyEventLoyaltyAccountFilterBuilder.php | 39 + .../LoyaltyEventOrderFilterBuilder.php | 39 + .../Builders/LoyaltyEventOtherBuilder.php | 40 + .../Builders/LoyaltyEventQueryBuilder.php | 48 + .../LoyaltyEventRedeemRewardBuilder.php | 59 + .../LoyaltyEventTypeFilterBuilder.php | 39 + .../LoyaltyProgramAccrualRuleBuilder.php | 101 + ...yProgramAccrualRuleCategoryDataBuilder.php | 39 + ...ramAccrualRuleItemVariationDataBuilder.php | 39 + ...altyProgramAccrualRuleSpendDataBuilder.php | 77 + ...altyProgramAccrualRuleVisitDataBuilder.php | 50 + .../Models/Builders/LoyaltyProgramBuilder.php | 155 + .../LoyaltyProgramExpirationPolicyBuilder.php | 39 + .../LoyaltyProgramRewardDefinitionBuilder.php | 81 + .../LoyaltyProgramRewardTierBuilder.php | 82 + .../LoyaltyProgramTerminologyBuilder.php | 40 + ...yaltyPromotionAvailableTimeDataBuilder.php | 59 + .../Builders/LoyaltyPromotionBuilder.php | 161 + .../LoyaltyPromotionIncentiveBuilder.php | 61 + ...tionIncentivePointsAdditionDataBuilder.php | 39 + ...onIncentivePointsMultiplierDataBuilder.php | 73 + .../LoyaltyPromotionTriggerLimitBuilder.php | 49 + .../Models/Builders/LoyaltyRewardBuilder.php | 118 + .../src/Models/Builders/MBreakBuilder.php | 71 + .../Builders/MeasurementUnitBuilder.php | 118 + .../Builders/MeasurementUnitCustomBuilder.php | 40 + .../src/Models/Builders/MerchantBuilder.php | 133 + .../ModifierLocationOverridesBuilder.php | 76 + .../src/Models/Builders/MoneyBuilder.php | 65 + .../Builders/ObtainTokenRequestBuilder.php | 184 + .../Builders/ObtainTokenResponseBuilder.php | 148 + .../Builders/OfflinePaymentDetailsBuilder.php | 47 + .../src/Models/Builders/OrderBuilder.php | 425 + .../Models/Builders/OrderCreatedBuilder.php | 103 + .../Builders/OrderCreatedObjectBuilder.php | 48 + .../src/Models/Builders/OrderEntryBuilder.php | 83 + .../Builders/OrderFulfillmentBuilder.php | 147 + ...OrderFulfillmentDeliveryDetailsBuilder.php | 388 + ...rderFulfillmentFulfillmentEntryBuilder.php | 76 + .../OrderFulfillmentPickupDetailsBuilder.php | 283 + ...kupDetailsCurbsidePickupDetailsBuilder.php | 73 + .../OrderFulfillmentRecipientBuilder.php | 120 + ...OrderFulfillmentShipmentDetailsBuilder.php | 260 + .../OrderFulfillmentUpdatedBuilder.php | 132 + .../OrderFulfillmentUpdatedObjectBuilder.php | 48 + .../OrderFulfillmentUpdatedUpdateBuilder.php | 75 + .../OrderLineItemAppliedDiscountBuilder.php | 68 + ...derLineItemAppliedServiceChargeBuilder.php | 68 + .../OrderLineItemAppliedTaxBuilder.php | 68 + .../Models/Builders/OrderLineItemBuilder.php | 344 + .../Builders/OrderLineItemDiscountBuilder.php | 206 + .../Builders/OrderLineItemModifierBuilder.php | 166 + ...ricingBlocklistsBlockedDiscountBuilder.php | 91 + ...ItemPricingBlocklistsBlockedTaxBuilder.php | 91 + .../OrderLineItemPricingBlocklistsBuilder.php | 75 + .../Builders/OrderLineItemTaxBuilder.php | 186 + .../Builders/OrderMoneyAmountsBuilder.php | 88 + .../Builders/OrderPricingOptionsBuilder.php | 73 + .../Builders/OrderQuantityUnitBuilder.php | 102 + .../Models/Builders/OrderReturnBuilder.php | 174 + .../Builders/OrderReturnDiscountBuilder.php | 186 + .../Builders/OrderReturnLineItemBuilder.php | 333 + .../OrderReturnLineItemModifierBuilder.php | 166 + .../OrderReturnServiceChargeBuilder.php | 253 + .../Models/Builders/OrderReturnTaxBuilder.php | 176 + .../Models/Builders/OrderReturnTipBuilder.php | 102 + .../Models/Builders/OrderRewardBuilder.php | 40 + .../OrderRoundingAdjustmentBuilder.php | 84 + .../Builders/OrderServiceChargeBuilder.php | 263 + .../Models/Builders/OrderSourceBuilder.php | 55 + .../Models/Builders/OrderUpdatedBuilder.php | 113 + .../Builders/OrderUpdatedObjectBuilder.php | 48 + .../Builders/PaginationCursorBuilder.php | 55 + .../PauseSubscriptionRequestBuilder.php | 119 + .../PauseSubscriptionResponseBuilder.php | 70 + .../Builders/PayOrderRequestBuilder.php | 75 + .../Builders/PayOrderResponseBuilder.php | 59 + ...lanceActivityAppFeeRefundDetailBuilder.php | 91 + ...anceActivityAppFeeRevenueDetailBuilder.php | 73 + ...eActivityAutomaticSavingsDetailBuilder.php | 73 + ...yAutomaticSavingsReversedDetailBuilder.php | 73 + ...mentBalanceActivityChargeDetailBuilder.php | 55 + ...BalanceActivityDepositFeeDetailBuilder.php | 55 + ...ctivityDepositFeeReversedDetailBuilder.php | 55 + ...entBalanceActivityDisputeDetailBuilder.php | 73 + ...PaymentBalanceActivityFeeDetailBuilder.php | 55 + ...nceActivityFreeProcessingDetailBuilder.php | 55 + ...nceActivityHoldAdjustmentDetailBuilder.php | 55 + ...alanceActivityOpenDisputeDetailBuilder.php | 73 + ...ceActivityOtherAdjustmentDetailBuilder.php | 55 + ...ymentBalanceActivityOtherDetailBuilder.php | 55 + ...mentBalanceActivityRefundDetailBuilder.php | 73 + ...ActivityReleaseAdjustmentDetailBuilder.php | 55 + ...alanceActivityReserveHoldDetailBuilder.php | 55 + ...nceActivityReserveReleaseDetailBuilder.php | 55 + ...ivitySquareCapitalPaymentDetailBuilder.php | 55 + ...areCapitalReversedPaymentDetailBuilder.php | 55 + ...vitySquarePayrollTransferDetailBuilder.php | 55 + ...rePayrollTransferReversedDetailBuilder.php | 55 + ...ntBalanceActivityTaxOnFeeDetailBuilder.php | 73 + ...anceActivityThirdPartyFeeDetailBuilder.php | 55 + ...tivityThirdPartyFeeRefundDetailBuilder.php | 73 + .../src/Models/Builders/PaymentBuilder.php | 515 + .../Models/Builders/PaymentLinkBuilder.php | 157 + .../PaymentLinkRelatedResourcesBuilder.php | 75 + .../Models/Builders/PaymentOptionsBuilder.php | 101 + .../Models/Builders/PaymentRefundBuilder.php | 239 + .../src/Models/Builders/PayoutBuilder.php | 167 + .../Models/Builders/PayoutEntryBuilder.php | 374 + .../src/Models/Builders/PayoutFeeBuilder.php | 76 + .../src/Models/Builders/PhaseBuilder.php | 109 + .../src/Models/Builders/PhaseInputBuilder.php | 57 + .../Builders/PrePopulatedDataBuilder.php | 84 + .../Models/Builders/ProcessingFeeBuilder.php | 84 + .../Builders/PublishInvoiceRequestBuilder.php | 57 + .../PublishInvoiceResponseBuilder.php | 59 + .../Models/Builders/QrCodeOptionsBuilder.php | 41 + .../Models/Builders/QuantityRatioBuilder.php | 73 + .../src/Models/Builders/QuickPayBuilder.php | 42 + .../src/Models/Builders/RangeBuilder.php | 73 + .../Models/Builders/ReceiptOptionsBuilder.php | 75 + .../RedeemLoyaltyRewardRequestBuilder.php | 40 + .../RedeemLoyaltyRewardResponseBuilder.php | 59 + .../src/Models/Builders/RefundBuilder.php | 102 + .../Builders/RefundPaymentRequestBuilder.php | 217 + .../Builders/RefundPaymentResponseBuilder.php | 59 + .../Builders/RegisterDomainRequestBuilder.php | 39 + .../RegisterDomainResponseBuilder.php | 58 + ...RemoveGroupFromCustomerResponseBuilder.php | 48 + .../ResumeSubscriptionRequestBuilder.php | 65 + .../ResumeSubscriptionResponseBuilder.php | 70 + ...ustomAttributeDefinitionRequestBuilder.php | 47 + ...stomAttributeDefinitionResponseBuilder.php | 59 + ...veBookingCustomAttributeRequestBuilder.php | 65 + ...eBookingCustomAttributeResponseBuilder.php | 59 + .../RetrieveBookingResponseBuilder.php | 59 + ...eBusinessBookingProfileResponseBuilder.php | 59 + .../Builders/RetrieveCardResponseBuilder.php | 59 + .../RetrieveCashDrawerShiftRequestBuilder.php | 39 + ...RetrieveCashDrawerShiftResponseBuilder.php | 59 + .../RetrieveCatalogObjectRequestBuilder.php | 91 + .../RetrieveCatalogObjectResponseBuilder.php | 69 + ...ustomAttributeDefinitionRequestBuilder.php | 47 + ...stomAttributeDefinitionResponseBuilder.php | 59 + ...eCustomerCustomAttributeRequestBuilder.php | 65 + ...CustomerCustomAttributeResponseBuilder.php | 59 + .../RetrieveCustomerGroupResponseBuilder.php | 59 + .../RetrieveCustomerResponseBuilder.php | 59 + ...RetrieveCustomerSegmentResponseBuilder.php | 59 + ...RetrieveDisputeEvidenceResponseBuilder.php | 59 + .../RetrieveDisputeResponseBuilder.php | 59 + .../RetrieveEmployeeResponseBuilder.php | 59 + .../RetrieveGiftCardFromGANRequestBuilder.php | 39 + ...RetrieveGiftCardFromGANResponseBuilder.php | 59 + ...etrieveGiftCardFromNonceRequestBuilder.php | 39 + ...trieveGiftCardFromNonceResponseBuilder.php | 59 + .../RetrieveGiftCardResponseBuilder.php | 59 + ...ieveInventoryAdjustmentResponseBuilder.php | 59 + ...RetrieveInventoryChangesRequestBuilder.php | 73 + ...etrieveInventoryChangesResponseBuilder.php | 69 + .../RetrieveInventoryCountRequestBuilder.php | 73 + .../RetrieveInventoryCountResponseBuilder.php | 69 + ...eInventoryPhysicalCountResponseBuilder.php | 59 + ...trieveInventoryTransferResponseBuilder.php | 59 + .../Builders/RetrieveJobResponseBuilder.php | 59 + ...eLocationBookingProfileResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 47 + ...stomAttributeDefinitionResponseBuilder.php | 59 + ...eLocationCustomAttributeRequestBuilder.php | 65 + ...LocationCustomAttributeResponseBuilder.php | 59 + .../RetrieveLocationResponseBuilder.php | 59 + ...etrieveLocationSettingsResponseBuilder.php | 59 + .../RetrieveLoyaltyAccountResponseBuilder.php | 59 + .../RetrieveLoyaltyProgramResponseBuilder.php | 59 + ...etrieveLoyaltyPromotionResponseBuilder.php | 59 + .../RetrieveLoyaltyRewardResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 47 + ...stomAttributeDefinitionResponseBuilder.php | 59 + ...eMerchantCustomAttributeRequestBuilder.php | 65 + ...MerchantCustomAttributeResponseBuilder.php | 59 + .../RetrieveMerchantResponseBuilder.php | 59 + ...etrieveMerchantSettingsResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 47 + ...stomAttributeDefinitionResponseBuilder.php | 59 + ...ieveOrderCustomAttributeRequestBuilder.php | 65 + ...eveOrderCustomAttributeResponseBuilder.php | 59 + .../Builders/RetrieveOrderResponseBuilder.php | 59 + .../RetrievePaymentLinkResponseBuilder.php | 59 + .../RetrieveSnippetResponseBuilder.php | 59 + .../RetrieveSubscriptionRequestBuilder.php | 55 + .../RetrieveSubscriptionResponseBuilder.php | 59 + ...eamMemberBookingProfileResponseBuilder.php | 59 + .../RetrieveTeamMemberResponseBuilder.php | 59 + .../RetrieveTokenStatusResponseBuilder.php | 88 + .../RetrieveTransactionResponseBuilder.php | 59 + .../RetrieveVendorResponseBuilder.php | 59 + .../RetrieveWageSettingResponseBuilder.php | 59 + ...ieveWebhookSubscriptionResponseBuilder.php | 59 + .../Builders/RevokeTokenRequestBuilder.php | 109 + .../Builders/RevokeTokenResponseBuilder.php | 58 + .../Models/Builders/RiskEvaluationBuilder.php | 57 + .../Builders/SaveCardOptionsBuilder.php | 67 + .../SearchAvailabilityFilterBuilder.php | 95 + .../SearchAvailabilityQueryBuilder.php | 40 + .../SearchAvailabilityRequestBuilder.php | 40 + .../SearchAvailabilityResponseBuilder.php | 59 + .../SearchCatalogItemsRequestBuilder.php | 138 + .../SearchCatalogItemsResponseBuilder.php | 79 + .../SearchCatalogObjectsRequestBuilder.php | 118 + .../SearchCatalogObjectsResponseBuilder.php | 89 + .../SearchCustomersRequestBuilder.php | 78 + .../SearchCustomersResponseBuilder.php | 79 + .../Builders/SearchEventsFilterBuilder.php | 102 + .../Builders/SearchEventsQueryBuilder.php | 59 + .../Builders/SearchEventsRequestBuilder.php | 68 + .../Builders/SearchEventsResponseBuilder.php | 80 + .../Builders/SearchEventsSortBuilder.php | 57 + .../Builders/SearchInvoicesRequestBuilder.php | 60 + .../SearchInvoicesResponseBuilder.php | 69 + .../SearchLoyaltyAccountsRequestBuilder.php | 68 + ...ountsRequestLoyaltyAccountQueryBuilder.php | 74 + .../SearchLoyaltyAccountsResponseBuilder.php | 69 + .../SearchLoyaltyEventsRequestBuilder.php | 68 + .../SearchLoyaltyEventsResponseBuilder.php | 69 + .../SearchLoyaltyRewardsRequestBuilder.php | 68 + ...ewardsRequestLoyaltyRewardQueryBuilder.php | 49 + .../SearchLoyaltyRewardsResponseBuilder.php | 69 + .../SearchOrdersCustomerFilterBuilder.php | 55 + .../SearchOrdersDateTimeFilterBuilder.php | 68 + .../Builders/SearchOrdersFilterBuilder.php | 92 + .../SearchOrdersFulfillmentFilterBuilder.php | 73 + .../Builders/SearchOrdersQueryBuilder.php | 59 + .../Builders/SearchOrdersRequestBuilder.php | 88 + .../Builders/SearchOrdersResponseBuilder.php | 80 + .../Builders/SearchOrdersSortBuilder.php | 49 + .../SearchOrdersSourceFilterBuilder.php | 55 + .../SearchOrdersStateFilterBuilder.php | 39 + .../Builders/SearchShiftsRequestBuilder.php | 68 + .../Builders/SearchShiftsResponseBuilder.php | 69 + .../SearchSubscriptionsFilterBuilder.php | 91 + .../SearchSubscriptionsQueryBuilder.php | 48 + .../SearchSubscriptionsRequestBuilder.php | 78 + .../SearchSubscriptionsResponseBuilder.php | 69 + .../SearchTeamMembersFilterBuilder.php | 83 + .../SearchTeamMembersQueryBuilder.php | 48 + .../SearchTeamMembersRequestBuilder.php | 68 + .../SearchTeamMembersResponseBuilder.php | 69 + .../SearchTerminalActionsRequestBuilder.php | 68 + .../SearchTerminalActionsResponseBuilder.php | 69 + .../SearchTerminalCheckoutsRequestBuilder.php | 68 + ...SearchTerminalCheckoutsResponseBuilder.php | 69 + .../SearchTerminalRefundsRequestBuilder.php | 68 + .../SearchTerminalRefundsResponseBuilder.php | 69 + .../Builders/SearchVendorsRequestBuilder.php | 69 + .../SearchVendorsRequestFilterBuilder.php | 73 + .../SearchVendorsRequestSortBuilder.php | 57 + .../Builders/SearchVendorsResponseBuilder.php | 69 + .../Models/Builders/SegmentFilterBuilder.php | 50 + .../Models/Builders/SelectOptionBuilder.php | 40 + .../Models/Builders/SelectOptionsBuilder.php | 52 + .../src/Models/Builders/ShiftBuilder.php | 203 + .../Models/Builders/ShiftFilterBuilder.php | 133 + .../src/Models/Builders/ShiftQueryBuilder.php | 59 + .../src/Models/Builders/ShiftSortBuilder.php | 57 + .../src/Models/Builders/ShiftWageBuilder.php | 94 + .../Models/Builders/ShiftWorkdayBuilder.php | 76 + .../Models/Builders/ShippingFeeBuilder.php | 58 + .../Models/Builders/SignatureImageBuilder.php | 57 + .../Builders/SignatureOptionsBuilder.php | 51 + .../src/Models/Builders/SiteBuilder.php | 121 + .../src/Models/Builders/SnippetBuilder.php | 79 + .../Builders/SnippetResponseBuilder.php | 59 + .../Builders/SourceApplicationBuilder.php | 83 + .../Builders/SquareAccountDetailsBuilder.php | 74 + .../StandardUnitDescriptionBuilder.php | 84 + .../StandardUnitDescriptionGroupBuilder.php | 74 + .../SubmitEvidenceResponseBuilder.php | 59 + .../Builders/SubscriptionActionBuilder.php | 130 + .../Models/Builders/SubscriptionBuilder.php | 263 + .../Builders/SubscriptionEventBuilder.php | 82 + .../Builders/SubscriptionEventInfoBuilder.php | 65 + .../Builders/SubscriptionPhaseBuilder.php | 115 + .../Builders/SubscriptionPricingBuilder.php | 76 + .../Builders/SubscriptionSourceBuilder.php | 55 + .../SubscriptionTestResultBuilder.php | 103 + .../Builders/SwapPlanRequestBuilder.php | 74 + .../Builders/SwapPlanResponseBuilder.php | 70 + .../src/Models/Builders/TaxIdsBuilder.php | 87 + .../TeamMemberAssignedLocationsBuilder.php | 65 + .../TeamMemberBookingProfileBuilder.php | 95 + .../src/Models/Builders/TeamMemberBuilder.php | 199 + .../Models/Builders/TeamMemberWageBuilder.php | 130 + .../TenderBankAccountDetailsBuilder.php | 47 + .../src/Models/Builders/TenderBuilder.php | 254 + .../TenderBuyNowPayLaterDetailsBuilder.php | 57 + .../Builders/TenderCardDetailsBuilder.php | 68 + .../Builders/TenderCashDetailsBuilder.php | 58 + .../TenderSquareAccountDetailsBuilder.php | 47 + .../Models/Builders/TerminalActionBuilder.php | 277 + .../Builders/TerminalActionQueryBuilder.php | 59 + .../TerminalActionQueryFilterBuilder.php | 94 + .../TerminalActionQuerySortBuilder.php | 47 + .../Builders/TerminalCheckoutBuilder.php | 289 + .../Builders/TerminalCheckoutQueryBuilder.php | 59 + .../TerminalCheckoutQueryFilterBuilder.php | 84 + .../TerminalCheckoutQuerySortBuilder.php | 47 + .../Models/Builders/TerminalRefundBuilder.php | 151 + .../Builders/TerminalRefundQueryBuilder.php | 59 + .../TerminalRefundQueryFilterBuilder.php | 84 + .../TerminalRefundQuerySortBuilder.php | 55 + .../TestWebhookSubscriptionRequestBuilder.php | 55 + ...TestWebhookSubscriptionResponseBuilder.php | 59 + .../src/Models/Builders/TimeRangeBuilder.php | 73 + .../Models/Builders/TipSettingsBuilder.php | 127 + .../Models/Builders/TransactionBuilder.php | 188 + ...linkCustomerFromGiftCardRequestBuilder.php | 39 + ...inkCustomerFromGiftCardResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 58 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../Builders/UpdateBookingRequestBuilder.php | 58 + .../Builders/UpdateBookingResponseBuilder.php | 59 + .../UpdateBreakTypeRequestBuilder.php | 40 + .../UpdateBreakTypeResponseBuilder.php | 59 + .../UpdateCatalogImageRequestBuilder.php | 39 + .../UpdateCatalogImageResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 58 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../UpdateCustomerGroupRequestBuilder.php | 40 + .../UpdateCustomerGroupResponseBuilder.php | 59 + .../Builders/UpdateCustomerRequestBuilder.php | 231 + .../UpdateCustomerResponseBuilder.php | 59 + .../Builders/UpdateInvoiceRequestBuilder.php | 76 + .../Builders/UpdateInvoiceResponseBuilder.php | 59 + .../UpdateItemModifierListsRequestBuilder.php | 75 + ...UpdateItemModifierListsResponseBuilder.php | 58 + .../UpdateItemTaxesRequestBuilder.php | 75 + .../UpdateItemTaxesResponseBuilder.php | 58 + .../Builders/UpdateJobRequestBuilder.php | 40 + .../Builders/UpdateJobResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 58 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../Builders/UpdateLocationRequestBuilder.php | 48 + .../UpdateLocationResponseBuilder.php | 59 + .../UpdateLocationSettingsRequestBuilder.php | 40 + .../UpdateLocationSettingsResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 58 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../UpdateMerchantSettingsRequestBuilder.php | 40 + .../UpdateMerchantSettingsResponseBuilder.php | 59 + ...ustomAttributeDefinitionRequestBuilder.php | 58 + ...stomAttributeDefinitionResponseBuilder.php | 59 + .../Builders/UpdateOrderRequestBuilder.php | 84 + .../Builders/UpdateOrderResponseBuilder.php | 59 + .../UpdatePaymentLinkRequestBuilder.php | 40 + .../UpdatePaymentLinkResponseBuilder.php | 59 + .../Builders/UpdatePaymentRequestBuilder.php | 50 + .../Builders/UpdatePaymentResponseBuilder.php | 59 + .../Builders/UpdateShiftRequestBuilder.php | 40 + .../Builders/UpdateShiftResponseBuilder.php | 59 + .../UpdateSubscriptionRequestBuilder.php | 48 + .../UpdateSubscriptionResponseBuilder.php | 59 + .../UpdateTeamMemberRequestBuilder.php | 48 + .../UpdateTeamMemberResponseBuilder.php | 59 + .../Builders/UpdateVendorRequestBuilder.php | 58 + .../Builders/UpdateVendorResponseBuilder.php | 59 + .../UpdateWageSettingRequestBuilder.php | 40 + .../UpdateWageSettingResponseBuilder.php | 59 + ...pdateWebhookSubscriptionRequestBuilder.php | 48 + ...dateWebhookSubscriptionResponseBuilder.php | 59 + ...SubscriptionSignatureKeyRequestBuilder.php | 55 + ...ubscriptionSignatureKeyResponseBuilder.php | 58 + .../UpdateWorkweekConfigRequestBuilder.php | 40 + .../UpdateWorkweekConfigResponseBuilder.php | 59 + ...rtBookingCustomAttributeRequestBuilder.php | 58 + ...tBookingCustomAttributeResponseBuilder.php | 59 + .../UpsertCatalogObjectRequestBuilder.php | 41 + .../UpsertCatalogObjectResponseBuilder.php | 70 + ...tCustomerCustomAttributeRequestBuilder.php | 58 + ...CustomerCustomAttributeResponseBuilder.php | 59 + ...tLocationCustomAttributeRequestBuilder.php | 58 + ...LocationCustomAttributeResponseBuilder.php | 59 + ...tMerchantCustomAttributeRequestBuilder.php | 58 + ...MerchantCustomAttributeResponseBuilder.php | 59 + ...sertOrderCustomAttributeRequestBuilder.php | 58 + ...ertOrderCustomAttributeResponseBuilder.php | 59 + .../Builders/UpsertSnippetRequestBuilder.php | 40 + .../Builders/UpsertSnippetResponseBuilder.php | 59 + .../src/Models/Builders/V1DeviceBuilder.php | 65 + .../Builders/V1ListOrdersRequestBuilder.php | 83 + .../Builders/V1ListOrdersResponseBuilder.php | 48 + .../src/Models/Builders/V1MoneyBuilder.php | 65 + .../src/Models/Builders/V1OrderBuilder.php | 404 + .../Builders/V1OrderHistoryEntryBuilder.php | 57 + .../Models/Builders/V1PhoneNumberBuilder.php | 40 + .../src/Models/Builders/V1TenderBuilder.php | 262 + .../Builders/V1UpdateOrderRequestBuilder.php | 111 + .../src/Models/Builders/VendorBuilder.php | 171 + .../Models/Builders/VendorContactBuilder.php | 121 + .../VoidTransactionResponseBuilder.php | 48 + .../Models/Builders/WageSettingBuilder.php | 122 + .../Builders/WebhookSubscriptionBuilder.php | 167 + .../Models/Builders/WorkweekConfigBuilder.php | 80 + .../src/Models/BulkCreateCustomerData.php | 435 + .../src/Models/BulkCreateCustomersRequest.php | 79 + .../Models/BulkCreateCustomersResponse.php | 100 + .../Models/BulkCreateTeamMembersRequest.php | 76 + .../Models/BulkCreateTeamMembersResponse.php | 90 + .../src/Models/BulkCreateVendorsRequest.php | 66 + .../src/Models/BulkCreateVendorsResponse.php | 97 + ...lkDeleteBookingCustomAttributesRequest.php | 70 + ...kDeleteBookingCustomAttributesResponse.php | 92 + .../src/Models/BulkDeleteCustomersRequest.php | 65 + .../Models/BulkDeleteCustomersResponse.php | 100 + ...kDeleteLocationCustomAttributesRequest.php | 68 + ...stLocationCustomAttributeDeleteRequest.php | 60 + ...DeleteLocationCustomAttributesResponse.php | 98 + ...eLocationCustomAttributeDeleteResponse.php | 85 + ...kDeleteMerchantCustomAttributesRequest.php | 68 + ...stMerchantCustomAttributeDeleteRequest.php | 60 + ...DeleteMerchantCustomAttributesResponse.php | 98 + ...eMerchantCustomAttributeDeleteResponse.php | 60 + ...BulkDeleteOrderCustomAttributesRequest.php | 64 + ...AttributesRequestDeleteCustomAttribute.php | 87 + ...ulkDeleteOrderCustomAttributesResponse.php | 95 + .../Models/BulkRetrieveBookingsRequest.php | 64 + .../Models/BulkRetrieveBookingsResponse.php | 89 + .../Models/BulkRetrieveCustomersRequest.php | 65 + .../Models/BulkRetrieveCustomersResponse.php | 100 + ...trieveTeamMemberBookingProfilesRequest.php | 65 + ...rieveTeamMemberBookingProfilesResponse.php | 90 + .../src/Models/BulkRetrieveVendorsRequest.php | 69 + .../Models/BulkRetrieveVendorsResponse.php | 93 + .../square/src/Models/BulkSwapPlanRequest.php | 121 + .../src/Models/BulkSwapPlanResponse.php | 84 + .../src/Models/BulkUpdateCustomerData.php | 470 + .../src/Models/BulkUpdateCustomersRequest.php | 81 + .../Models/BulkUpdateCustomersResponse.php | 100 + .../Models/BulkUpdateTeamMembersRequest.php | 80 + .../Models/BulkUpdateTeamMembersResponse.php | 90 + .../src/Models/BulkUpdateVendorsRequest.php | 68 + .../src/Models/BulkUpdateVendorsResponse.php | 95 + ...lkUpsertBookingCustomAttributesRequest.php | 70 + ...kUpsertBookingCustomAttributesResponse.php | 94 + ...kUpsertCustomerCustomAttributesRequest.php | 70 + ...stCustomerCustomAttributeUpsertRequest.php | 133 + ...UpsertCustomerCustomAttributesResponse.php | 94 + ...eCustomerCustomAttributeUpsertResponse.php | 112 + ...kUpsertLocationCustomAttributesRequest.php | 70 + ...stLocationCustomAttributeUpsertRequest.php | 133 + ...UpsertLocationCustomAttributesResponse.php | 94 + ...eLocationCustomAttributeUpsertResponse.php | 112 + ...kUpsertMerchantCustomAttributesRequest.php | 70 + ...stMerchantCustomAttributeUpsertRequest.php | 133 + ...UpsertMerchantCustomAttributesResponse.php | 94 + ...eMerchantCustomAttributeUpsertResponse.php | 112 + ...BulkUpsertOrderCustomAttributesRequest.php | 64 + ...AttributesRequestUpsertCustomAttribute.php | 130 + ...ulkUpsertOrderCustomAttributesResponse.php | 93 + .../Models/BusinessAppointmentSettings.php | 490 + ...sinessAppointmentSettingsAlignmentTime.php | 27 + ...AppointmentSettingsBookingLocationType.php | 23 + ...sAppointmentSettingsCancellationPolicy.php | 20 + ...SettingsMaxAppointmentsPerDayLimitType.php | 19 + .../src/Models/BusinessBookingProfile.php | 276 + .../BusinessBookingProfileBookingPolicy.php | 19 + ...ssBookingProfileCustomerTimezoneChoice.php | 19 + .../square/src/Models/BusinessHours.php | 69 + .../square/src/Models/BusinessHoursPeriod.php | 138 + .../src/Models/BuyNowPayLaterDetails.php | 118 + .../Models/CalculateLoyaltyPointsRequest.php | 174 + .../Models/CalculateLoyaltyPointsResponse.php | 112 + .../src/Models/CalculateOrderRequest.php | 119 + .../src/Models/CalculateOrderResponse.php | 90 + .../src/Models/CancelBookingRequest.php | 98 + .../src/Models/CancelBookingResponse.php | 84 + .../src/Models/CancelInvoiceRequest.php | 64 + .../src/Models/CancelInvoiceResponse.php | 87 + .../Models/CancelLoyaltyPromotionResponse.php | 90 + .../CancelPaymentByIdempotencyKeyRequest.php | 61 + .../CancelPaymentByIdempotencyKeyResponse.php | 60 + .../src/Models/CancelPaymentResponse.php | 83 + .../src/Models/CancelSubscriptionResponse.php | 119 + .../Models/CancelTerminalActionResponse.php | 80 + .../Models/CancelTerminalCheckoutResponse.php | 80 + .../Models/CancelTerminalRefundResponse.php | 82 + .../src/Models/CaptureTransactionResponse.php | 59 + .../square/square/src/Models/Card.php | 532 + .../square/square/src/Models/CardBrand.php | 25 + .../square/square/src/Models/CardCoBrand.php | 14 + .../square/src/Models/CardPaymentDetails.php | 611 + .../square/src/Models/CardPaymentTimeline.php | 137 + .../square/src/Models/CardPrepaidType.php | 14 + .../square/square/src/Models/CardType.php | 14 + .../square/src/Models/CashAppDetails.php | 132 + .../square/src/Models/CashDrawerDevice.php | 87 + .../square/src/Models/CashDrawerEventType.php | 66 + .../square/src/Models/CashDrawerShift.php | 691 + .../src/Models/CashDrawerShiftEvent.php | 206 + .../src/Models/CashDrawerShiftState.php | 24 + .../src/Models/CashDrawerShiftSummary.php | 412 + .../square/src/Models/CashPaymentDetails.php | 111 + .../src/Models/CatalogAvailabilityPeriod.php | 138 + .../square/src/Models/CatalogCategory.php | 422 + .../square/src/Models/CatalogCategoryType.php | 23 + .../CatalogCustomAttributeDefinition.php | 400 + ...CustomAttributeDefinitionAppVisibility.php | 26 + ...gCustomAttributeDefinitionNumberConfig.php | 86 + ...stomAttributeDefinitionSelectionConfig.php | 120 + ...electionConfigCustomAttributeSelection.php | 96 + ...tomAttributeDefinitionSellerVisibility.php | 23 + ...gCustomAttributeDefinitionStringConfig.php | 77 + .../CatalogCustomAttributeDefinitionType.php | 27 + .../Models/CatalogCustomAttributeValue.php | 306 + .../square/src/Models/CatalogDiscount.php | 322 + .../Models/CatalogDiscountModifyTaxBasis.php | 16 + .../square/src/Models/CatalogDiscountType.php | 29 + .../square/src/Models/CatalogEcomSeoData.php | 137 + .../square/src/Models/CatalogIdMapping.php | 111 + .../square/square/src/Models/CatalogImage.php | 202 + .../square/src/Models/CatalogInfoResponse.php | 103 + .../src/Models/CatalogInfoResponseLimits.php | 455 + .../square/square/src/Models/CatalogItem.php | 1107 ++ .../CatalogItemFoodAndBeverageDetails.php | 145 + ...oodAndBeverageDetailsDietaryPreference.php | 118 + ...aryPreferenceStandardDietaryPreference.php | 18 + ...ndBeverageDetailsDietaryPreferenceType.php | 19 + ...ogItemFoodAndBeverageDetailsIngredient.php | 118 + ...ageDetailsIngredientStandardIngredient.php | 25 + .../Models/CatalogItemModifierListInfo.php | 339 + .../square/src/Models/CatalogItemOption.php | 228 + .../src/Models/CatalogItemOptionForItem.php | 69 + .../src/Models/CatalogItemOptionValue.php | 223 + ...CatalogItemOptionValueForItemVariation.php | 104 + .../src/Models/CatalogItemProductType.php | 50 + .../src/Models/CatalogItemVariation.php | 891 ++ .../src/Models/CatalogMeasurementUnit.php | 119 + .../square/src/Models/CatalogModifier.php | 260 + .../square/src/Models/CatalogModifierList.php | 429 + .../CatalogModifierListModifierType.php | 19 + .../CatalogModifierListSelectionType.php | 21 + .../src/Models/CatalogModifierOverride.php | 96 + .../square/src/Models/CatalogObject.php | 1085 ++ .../square/src/Models/CatalogObjectBatch.php | 64 + .../src/Models/CatalogObjectCategory.php | 92 + .../src/Models/CatalogObjectReference.php | 103 + .../square/src/Models/CatalogObjectType.php | 133 + .../square/src/Models/CatalogPricingRule.php | 588 + .../square/src/Models/CatalogPricingType.php | 19 + .../square/src/Models/CatalogProductSet.php | 359 + .../square/square/src/Models/CatalogQuery.php | 321 + .../square/src/Models/CatalogQueryExact.php | 93 + ...QueryItemVariationsForItemOptionValues.php | 75 + .../CatalogQueryItemsForItemOptions.php | 75 + .../CatalogQueryItemsForModifierList.php | 64 + .../src/Models/CatalogQueryItemsForTax.php | 64 + .../square/src/Models/CatalogQueryPrefix.php | 87 + .../square/src/Models/CatalogQueryRange.php | 133 + .../square/src/Models/CatalogQuerySet.php | 96 + .../Models/CatalogQuerySortedAttribute.php | 127 + .../square/src/Models/CatalogQueryText.php | 65 + .../square/src/Models/CatalogQuickAmount.php | 173 + .../src/Models/CatalogQuickAmountType.php | 19 + .../Models/CatalogQuickAmountsSettings.php | 139 + .../CatalogQuickAmountsSettingsOption.php | 23 + .../src/Models/CatalogStockConversion.php | 145 + .../src/Models/CatalogSubscriptionPlan.php | 271 + .../CatalogSubscriptionPlanVariation.php | 249 + .../square/square/src/Models/CatalogTax.php | 280 + .../square/src/Models/CatalogTimePeriod.php | 107 + .../square/square/src/Models/CatalogV1Id.php | 104 + .../src/Models/CategoryPathToRootNode.php | 101 + .../Models/ChangeBillingAnchorDateRequest.php | 114 + .../ChangeBillingAnchorDateResponse.php | 119 + .../square/square/src/Models/ChangeTiming.php | 19 + .../square/src/Models/ChargeRequest.php | 662 + .../ChargeRequestAdditionalRecipient.php | 125 + .../square/src/Models/ChargeResponse.php | 94 + .../square/square/src/Models/Checkout.php | 445 + .../src/Models/CheckoutLocationSettings.php | 241 + .../CheckoutLocationSettingsBranding.php | 108 + ...outLocationSettingsBrandingButtonShape.php | 11 + ...koutLocationSettingsBrandingHeaderType.php | 11 + .../CheckoutLocationSettingsCoupons.php | 62 + .../Models/CheckoutLocationSettingsPolicy.php | 140 + .../CheckoutLocationSettingsTipping.php | 230 + .../src/Models/CheckoutMerchantSettings.php | 80 + ...CheckoutMerchantSettingsPaymentMethods.php | 126 + ...SettingsPaymentMethodsAfterpayClearpay.php | 104 + ...ethodsAfterpayClearpayEligibilityRange.php | 110 + ...antSettingsPaymentMethodsPaymentMethod.php | 65 + .../square/src/Models/CheckoutOptions.php | 413 + .../src/Models/CheckoutOptionsPaymentType.php | 43 + .../square/src/Models/ClearpayDetails.php | 65 + .../square/src/Models/CloneOrderRequest.php | 152 + .../square/src/Models/CloneOrderResponse.php | 94 + .../square/src/Models/CollectedData.php | 51 + .../src/Models/CompletePaymentRequest.php | 75 + .../src/Models/CompletePaymentResponse.php | 83 + .../square/square/src/Models/Component.php | 175 + .../src/Models/ComponentComponentType.php | 17 + .../src/Models/ConfirmationDecision.php | 51 + .../square/src/Models/ConfirmationOptions.php | 168 + .../square/square/src/Models/Coordinates.php | 101 + .../square/square/src/Models/Country.php | 1012 ++ ...ookingCustomAttributeDefinitionRequest.php | 91 + ...okingCustomAttributeDefinitionResponse.php | 88 + .../src/Models/CreateBookingRequest.php | 86 + .../src/Models/CreateBookingResponse.php | 84 + .../src/Models/CreateBreakTypeRequest.php | 87 + .../src/Models/CreateBreakTypeResponse.php | 87 + .../square/src/Models/CreateCardRequest.php | 164 + .../square/src/Models/CreateCardResponse.php | 89 + .../src/Models/CreateCatalogImageRequest.php | 187 + .../src/Models/CreateCatalogImageResponse.php | 106 + .../src/Models/CreateCheckoutRequest.php | 364 + .../src/Models/CreateCheckoutResponse.php | 86 + .../src/Models/CreateCustomerCardRequest.php | 162 + .../src/Models/CreateCustomerCardResponse.php | 88 + ...stomerCustomAttributeDefinitionRequest.php | 91 + ...tomerCustomAttributeDefinitionResponse.php | 88 + .../src/Models/CreateCustomerGroupRequest.php | 94 + .../Models/CreateCustomerGroupResponse.php | 92 + .../src/Models/CreateCustomerRequest.php | 382 + .../src/Models/CreateCustomerResponse.php | 87 + .../src/Models/CreateDeviceCodeRequest.php | 89 + .../src/Models/CreateDeviceCodeResponse.php | 78 + .../CreateDisputeEvidenceFileRequest.php | 114 + .../CreateDisputeEvidenceFileResponse.php | 81 + .../CreateDisputeEvidenceTextRequest.php | 113 + .../CreateDisputeEvidenceTextResponse.php | 81 + .../Models/CreateGiftCardActivityRequest.php | 92 + .../Models/CreateGiftCardActivityResponse.php | 90 + .../src/Models/CreateGiftCardRequest.php | 116 + .../src/Models/CreateGiftCardResponse.php | 85 + .../Models/CreateInvoiceAttachmentRequest.php | 83 + .../CreateInvoiceAttachmentResponse.php | 83 + .../src/Models/CreateInvoiceRequest.php | 99 + .../src/Models/CreateInvoiceResponse.php | 87 + .../square/src/Models/CreateJobRequest.php | 94 + .../square/src/Models/CreateJobResponse.php | 88 + ...cationCustomAttributeDefinitionRequest.php | 91 + ...ationCustomAttributeDefinitionResponse.php | 88 + .../src/Models/CreateLocationRequest.php | 54 + .../src/Models/CreateLocationResponse.php | 85 + .../Models/CreateLoyaltyAccountRequest.php | 92 + .../Models/CreateLoyaltyAccountResponse.php | 87 + .../Models/CreateLoyaltyPromotionRequest.php | 94 + .../Models/CreateLoyaltyPromotionResponse.php | 90 + .../src/Models/CreateLoyaltyRewardRequest.php | 94 + .../Models/CreateLoyaltyRewardResponse.php | 89 + ...rchantCustomAttributeDefinitionRequest.php | 91 + ...chantCustomAttributeDefinitionResponse.php | 88 + .../CreateMobileAuthorizationCodeRequest.php | 55 + .../CreateMobileAuthorizationCodeResponse.php | 113 + ...eOrderCustomAttributeDefinitionRequest.php | 91 + ...OrderCustomAttributeDefinitionResponse.php | 85 + .../square/src/Models/CreateOrderRequest.php | 102 + .../square/src/Models/CreateOrderResponse.php | 96 + .../src/Models/CreatePaymentLinkRequest.php | 233 + .../src/Models/CreatePaymentLinkResponse.php | 101 + .../src/Models/CreatePaymentRequest.php | 864 ++ .../src/Models/CreatePaymentResponse.php | 86 + .../square/src/Models/CreateRefundRequest.php | 180 + .../src/Models/CreateRefundResponse.php | 86 + .../square/src/Models/CreateShiftRequest.php | 89 + .../square/src/Models/CreateShiftResponse.php | 89 + .../src/Models/CreateSubscriptionRequest.php | 436 + .../src/Models/CreateSubscriptionResponse.php | 90 + .../src/Models/CreateTeamMemberRequest.php | 89 + .../src/Models/CreateTeamMemberResponse.php | 84 + .../Models/CreateTerminalActionRequest.php | 93 + .../Models/CreateTerminalActionResponse.php | 80 + .../Models/CreateTerminalCheckoutRequest.php | 91 + .../Models/CreateTerminalCheckoutResponse.php | 80 + .../Models/CreateTerminalRefundRequest.php | 92 + .../Models/CreateTerminalRefundResponse.php | 82 + .../square/src/Models/CreateVendorRequest.php | 97 + .../src/Models/CreateVendorResponse.php | 83 + .../CreateWebhookSubscriptionRequest.php | 89 + .../CreateWebhookSubscriptionResponse.php | 91 + .../square/square/src/Models/Currency.php | 744 ++ .../square/src/Models/CustomAttribute.php | 301 + .../src/Models/CustomAttributeDefinition.php | 376 + .../CustomAttributeDefinitionVisibility.php | 30 + .../src/Models/CustomAttributeFilter.php | 279 + .../square/square/src/Models/CustomField.php | 64 + .../square/square/src/Models/Customer.php | 725 ++ .../src/Models/CustomerAddressFilter.php | 87 + .../src/Models/CustomerCreationSource.php | 107 + .../Models/CustomerCreationSourceFilter.php | 102 + .../Models/CustomerCustomAttributeFilter.php | 130 + .../CustomerCustomAttributeFilterValue.php | 274 + .../Models/CustomerCustomAttributeFilters.php | 83 + .../square/src/Models/CustomerDetails.php | 104 + .../square/src/Models/CustomerFilter.php | 315 + .../square/src/Models/CustomerGroup.php | 138 + .../src/Models/CustomerInclusionExclusion.php | 22 + .../square/src/Models/CustomerPreferences.php | 71 + .../square/src/Models/CustomerQuery.php | 84 + .../square/src/Models/CustomerSegment.php | 138 + .../square/square/src/Models/CustomerSort.php | 80 + .../square/src/Models/CustomerSortField.php | 23 + .../square/src/Models/CustomerTaxIds.php | 71 + .../square/src/Models/CustomerTextFilter.php | 112 + .../src/Models/DataCollectionOptions.php | 134 + .../Models/DataCollectionOptionsInputType.php | 21 + .../square/square/src/Models/DateRange.php | 114 + .../square/square/src/Models/DayOfWeek.php | 39 + ...okingCustomAttributeDefinitionResponse.php | 62 + .../DeleteBookingCustomAttributeResponse.php | 60 + .../src/Models/DeleteBreakTypeResponse.php | 59 + .../Models/DeleteCatalogObjectResponse.php | 117 + .../src/Models/DeleteCustomerCardResponse.php | 59 + ...tomerCustomAttributeDefinitionResponse.php | 58 + .../DeleteCustomerCustomAttributeResponse.php | 60 + .../Models/DeleteCustomerGroupResponse.php | 59 + .../src/Models/DeleteCustomerRequest.php | 65 + .../src/Models/DeleteCustomerResponse.php | 59 + .../Models/DeleteDisputeEvidenceResponse.php | 58 + .../DeleteInvoiceAttachmentResponse.php | 58 + .../src/Models/DeleteInvoiceRequest.php | 58 + .../src/Models/DeleteInvoiceResponse.php | 58 + ...ationCustomAttributeDefinitionResponse.php | 58 + .../DeleteLocationCustomAttributeResponse.php | 60 + .../Models/DeleteLoyaltyRewardResponse.php | 58 + ...chantCustomAttributeDefinitionResponse.php | 58 + .../DeleteMerchantCustomAttributeResponse.php | 60 + ...OrderCustomAttributeDefinitionResponse.php | 58 + .../DeleteOrderCustomAttributeResponse.php | 58 + .../src/Models/DeletePaymentLinkResponse.php | 105 + .../square/src/Models/DeleteShiftResponse.php | 59 + .../src/Models/DeleteSnippetResponse.php | 58 + .../DeleteSubscriptionActionResponse.php | 91 + .../DeleteWebhookSubscriptionResponse.php | 60 + ...ecatedCreateDisputeEvidenceFileRequest.php | 126 + ...catedCreateDisputeEvidenceFileResponse.php | 81 + ...ecatedCreateDisputeEvidenceTextRequest.php | 113 + ...catedCreateDisputeEvidenceTextResponse.php | 81 + .../square/square/src/Models/Destination.php | 79 + .../square/src/Models/DestinationDetails.php | 102 + .../DestinationDetailsCardRefundDetails.php | 128 + .../DestinationDetailsCashRefundDetails.php | 109 + ...estinationDetailsExternalRefundDetails.php | 150 + .../square/src/Models/DestinationType.php | 24 + .../square/square/src/Models/Device.php | 145 + .../square/src/Models/DeviceAttributes.php | 279 + .../src/Models/DeviceAttributesDeviceType.php | 12 + .../src/Models/DeviceCheckoutOptions.php | 195 + .../square/square/src/Models/DeviceCode.php | 319 + .../square/src/Models/DeviceCodeStatus.php | 27 + ...viceComponentDetailsApplicationDetails.php | 146 + .../DeviceComponentDetailsBatteryDetails.php | 87 + ...eviceComponentDetailsCardReaderDetails.php | 51 + .../DeviceComponentDetailsEthernetDetails.php | 98 + .../DeviceComponentDetailsExternalPower.php | 27 + .../DeviceComponentDetailsMeasurement.php | 62 + ...omponentDetailsNetworkInterfaceDetails.php | 62 + .../DeviceComponentDetailsWiFiDetails.php | 198 + .../square/src/Models/DeviceDetails.php | 137 + .../square/src/Models/DeviceMetadata.php | 470 + .../square/square/src/Models/DeviceStatus.php | 49 + .../src/Models/DeviceStatusCategory.php | 11 + .../src/Models/DigitalWalletDetails.php | 132 + .../square/src/Models/DisableCardResponse.php | 89 + .../src/Models/DisableEventsResponse.php | 62 + .../Models/DismissTerminalActionResponse.php | 80 + .../DismissTerminalCheckoutResponse.php | 80 + .../Models/DismissTerminalRefundResponse.php | 82 + .../square/square/src/Models/Dispute.php | 528 + .../square/src/Models/DisputeEvidence.php | 245 + .../square/src/Models/DisputeEvidenceFile.php | 104 + .../square/src/Models/DisputeEvidenceType.php | 134 + .../square/src/Models/DisputeReason.php | 72 + .../square/square/src/Models/DisputeState.php | 43 + .../square/src/Models/DisputedPayment.php | 65 + .../square/src/Models/EcomVisibility.php | 27 + .../square/square/src/Models/Employee.php | 361 + .../square/src/Models/EmployeeStatus.php | 21 + .../square/square/src/Models/EmployeeWage.php | 165 + .../src/Models/EnableEventsResponse.php | 62 + .../square/square/src/Models/Error.php | 145 + .../square/src/Models/ErrorCategory.php | 55 + .../square/square/src/Models/ErrorCode.php | 687 + .../square/square/src/Models/Event.php | 218 + .../square/square/src/Models/EventData.php | 167 + .../square/src/Models/EventMetadata.php | 104 + .../square/src/Models/EventTypeMetadata.php | 104 + .../square/src/Models/ExcludeStrategy.php | 28 + .../src/Models/ExternalPaymentDetails.php | 188 + .../square/square/src/Models/FilterValue.php | 156 + .../square/src/Models/FloatNumberRange.php | 101 + .../square/square/src/Models/Fulfillment.php | 360 + .../src/Models/FulfillmentDeliveryDetails.php | 878 ++ ...FulfillmentDeliveryDetailsScheduleType.php | 20 + .../Models/FulfillmentFulfillmentEntry.php | 223 + ...fillmentFulfillmentLineItemApplication.php | 20 + .../src/Models/FulfillmentPickupDetails.php | 647 + ...mentPickupDetailsCurbsidePickupDetails.php | 110 + .../FulfillmentPickupDetailsScheduleType.php | 20 + .../src/Models/FulfillmentRecipient.php | 250 + .../src/Models/FulfillmentShipmentDetails.php | 546 + .../square/src/Models/FulfillmentState.php | 36 + .../square/src/Models/FulfillmentType.php | 23 + .../Models/GetBankAccountByV1IdResponse.php | 87 + .../src/Models/GetBankAccountResponse.php | 87 + .../src/Models/GetBreakTypeResponse.php | 87 + .../src/Models/GetDeviceCodeResponse.php | 78 + .../square/src/Models/GetDeviceResponse.php | 78 + .../src/Models/GetEmployeeWageResponse.php | 89 + .../square/src/Models/GetInvoiceResponse.php | 87 + .../src/Models/GetPaymentRefundResponse.php | 88 + .../square/src/Models/GetPaymentResponse.php | 83 + .../square/src/Models/GetPayoutResponse.php | 82 + .../square/src/Models/GetShiftResponse.php | 89 + .../src/Models/GetTeamMemberWageResponse.php | 87 + .../src/Models/GetTerminalActionResponse.php | 80 + .../Models/GetTerminalCheckoutResponse.php | 80 + .../src/Models/GetTerminalRefundResponse.php | 82 + .../square/square/src/Models/GiftCard.php | 275 + .../square/src/Models/GiftCardActivity.php | 637 + .../src/Models/GiftCardActivityActivate.php | 271 + .../GiftCardActivityAdjustDecrement.php | 98 + .../GiftCardActivityAdjustDecrementReason.php | 29 + .../GiftCardActivityAdjustIncrement.php | 98 + .../GiftCardActivityAdjustIncrementReason.php | 24 + .../src/Models/GiftCardActivityBlock.php | 52 + .../Models/GiftCardActivityBlockReason.php | 15 + .../Models/GiftCardActivityClearBalance.php | 60 + .../GiftCardActivityClearBalanceReason.php | 26 + .../src/Models/GiftCardActivityDeactivate.php | 60 + .../GiftCardActivityDeactivateReason.php | 29 + .../src/Models/GiftCardActivityImport.php | 74 + .../Models/GiftCardActivityImportReversal.php | 72 + .../src/Models/GiftCardActivityLoad.php | 280 + .../src/Models/GiftCardActivityRedeem.php | 175 + .../Models/GiftCardActivityRedeemStatus.php | 30 + .../src/Models/GiftCardActivityRefund.php | 182 + .../GiftCardActivityTransferBalanceFrom.php | 99 + .../GiftCardActivityTransferBalanceTo.php | 98 + .../src/Models/GiftCardActivityType.php | 88 + .../src/Models/GiftCardActivityUnblock.php | 52 + .../Models/GiftCardActivityUnblockReason.php | 15 + ...GiftCardActivityUnlinkedActivityRefund.php | 134 + .../square/src/Models/GiftCardGANSource.php | 23 + .../square/src/Models/GiftCardStatus.php | 30 + .../square/square/src/Models/GiftCardType.php | 19 + .../square/src/Models/InventoryAdjustment.php | 666 + .../src/Models/InventoryAdjustmentGroup.php | 128 + .../square/src/Models/InventoryAlertType.php | 20 + .../square/src/Models/InventoryChange.php | 195 + .../square/src/Models/InventoryChangeType.php | 24 + .../square/src/Models/InventoryCount.php | 288 + .../src/Models/InventoryPhysicalCount.php | 467 + .../square/src/Models/InventoryState.php | 95 + .../square/src/Models/InventoryTransfer.php | 503 + .../square/square/src/Models/Invoice.php | 971 ++ .../Models/InvoiceAcceptedPaymentMethods.php | 252 + .../square/src/Models/InvoiceAttachment.php | 210 + .../Models/InvoiceAutomaticPaymentSource.php | 39 + .../square/src/Models/InvoiceCustomField.php | 134 + .../Models/InvoiceCustomFieldPlacement.php | 20 + .../src/Models/InvoiceDeliveryMethod.php | 30 + .../square/src/Models/InvoiceFilter.php | 112 + .../src/Models/InvoicePaymentReminder.php | 186 + .../Models/InvoicePaymentReminderStatus.php | 32 + .../src/Models/InvoicePaymentRequest.php | 564 + .../square/square/src/Models/InvoiceQuery.php | 85 + .../square/src/Models/InvoiceRecipient.php | 261 + .../src/Models/InvoiceRecipientTaxIds.php | 57 + .../src/Models/InvoiceRequestMethod.php | 71 + .../square/src/Models/InvoiceRequestType.php | 39 + .../square/square/src/Models/InvoiceSort.php | 77 + .../square/src/Models/InvoiceSortField.php | 19 + .../square/src/Models/InvoiceStatus.php | 60 + .../Models/ItemVariationLocationOverrides.php | 314 + .../square/square/src/Models/Job.php | 217 + .../square/src/Models/JobAssignment.php | 244 + .../src/Models/JobAssignmentPayType.php | 23 + .../Models/LinkCustomerToGiftCardRequest.php | 60 + .../Models/LinkCustomerToGiftCardResponse.php | 84 + .../src/Models/ListBankAccountsRequest.php | 162 + .../src/Models/ListBankAccountsResponse.php | 122 + ...okingCustomAttributeDefinitionsRequest.php | 124 + ...kingCustomAttributeDefinitionsResponse.php | 125 + .../ListBookingCustomAttributesRequest.php | 171 + .../ListBookingCustomAttributesResponse.php | 127 + .../square/src/Models/ListBookingsRequest.php | 296 + .../src/Models/ListBookingsResponse.php | 111 + .../src/Models/ListBreakTypesRequest.php | 143 + .../src/Models/ListBreakTypesResponse.php | 116 + .../square/src/Models/ListCardsRequest.php | 217 + .../square/src/Models/ListCardsResponse.php | 124 + .../ListCashDrawerShiftEventsRequest.php | 132 + .../ListCashDrawerShiftEventsResponse.php | 113 + .../Models/ListCashDrawerShiftsRequest.php | 229 + .../Models/ListCashDrawerShiftsResponse.php | 113 + .../square/src/Models/ListCatalogRequest.php | 197 + .../square/src/Models/ListCatalogResponse.php | 113 + ...tomerCustomAttributeDefinitionsRequest.php | 124 + ...omerCustomAttributeDefinitionsResponse.php | 125 + .../ListCustomerCustomAttributesRequest.php | 171 + .../ListCustomerCustomAttributesResponse.php | 127 + .../src/Models/ListCustomerGroupsRequest.php | 132 + .../src/Models/ListCustomerGroupsResponse.php | 125 + .../Models/ListCustomerSegmentsRequest.php | 131 + .../Models/ListCustomerSegmentsResponse.php | 125 + .../src/Models/ListCustomersRequest.php | 224 + .../src/Models/ListCustomersResponse.php | 164 + .../src/Models/ListDeviceCodesRequest.php | 182 + .../src/Models/ListDeviceCodesResponse.php | 119 + .../square/src/Models/ListDevicesRequest.php | 168 + .../square/src/Models/ListDevicesResponse.php | 115 + .../src/Models/ListDisputeEvidenceRequest.php | 74 + .../Models/ListDisputeEvidenceResponse.php | 116 + .../square/src/Models/ListDisputesRequest.php | 156 + .../src/Models/ListDisputesResponse.php | 116 + .../src/Models/ListEmployeeWagesRequest.php | 140 + .../src/Models/ListEmployeeWagesResponse.php | 115 + .../src/Models/ListEmployeesRequest.php | 160 + .../src/Models/ListEmployeesResponse.php | 107 + .../src/Models/ListEventTypesRequest.php | 68 + .../src/Models/ListEventTypesResponse.php | 122 + .../Models/ListGiftCardActivitiesRequest.php | 366 + .../Models/ListGiftCardActivitiesResponse.php | 121 + .../src/Models/ListGiftCardsRequest.php | 243 + .../src/Models/ListGiftCardsResponse.php | 121 + .../square/src/Models/ListInvoicesRequest.php | 147 + .../src/Models/ListInvoicesResponse.php | 120 + .../square/src/Models/ListJobsRequest.php | 71 + .../square/src/Models/ListJobsResponse.php | 117 + .../ListLocationBookingProfilesRequest.php | 101 + .../ListLocationBookingProfilesResponse.php | 111 + ...ationCustomAttributeDefinitionsRequest.php | 151 + ...tionCustomAttributeDefinitionsResponse.php | 125 + .../ListLocationCustomAttributesRequest.php | 198 + .../ListLocationCustomAttributesResponse.php | 125 + .../src/Models/ListLocationsResponse.php | 90 + .../Models/ListLoyaltyProgramsResponse.php | 87 + .../Models/ListLoyaltyPromotionsRequest.php | 144 + .../Models/ListLoyaltyPromotionsResponse.php | 121 + ...chantCustomAttributeDefinitionsRequest.php | 151 + ...hantCustomAttributeDefinitionsResponse.php | 125 + .../ListMerchantCustomAttributesRequest.php | 198 + .../ListMerchantCustomAttributesResponse.php | 125 + .../src/Models/ListMerchantsRequest.php | 65 + .../src/Models/ListMerchantsResponse.php | 112 + ...OrderCustomAttributeDefinitionsRequest.php | 152 + ...rderCustomAttributeDefinitionsResponse.php | 128 + .../ListOrderCustomAttributesRequest.php | 200 + .../ListOrderCustomAttributesResponse.php | 122 + .../src/Models/ListPaymentLinksRequest.php | 122 + .../src/Models/ListPaymentLinksResponse.php | 115 + .../src/Models/ListPaymentRefundsRequest.php | 401 + .../src/Models/ListPaymentRefundsResponse.php | 122 + .../square/src/Models/ListPaymentsRequest.php | 649 + .../src/Models/ListPaymentsResponse.php | 120 + .../src/Models/ListPayoutEntriesRequest.php | 150 + .../src/Models/ListPayoutEntriesResponse.php | 116 + .../square/src/Models/ListPayoutsRequest.php | 295 + .../square/src/Models/ListPayoutsResponse.php | 116 + .../square/src/Models/ListRefundsRequest.php | 207 + .../square/src/Models/ListRefundsResponse.php | 125 + .../square/src/Models/ListSitesResponse.php | 87 + .../Models/ListSubscriptionEventsRequest.php | 121 + .../Models/ListSubscriptionEventsResponse.php | 125 + .../ListTeamMemberBookingProfilesRequest.php | 176 + .../ListTeamMemberBookingProfilesResponse.php | 119 + .../src/Models/ListTeamMemberWagesRequest.php | 143 + .../Models/ListTeamMemberWagesResponse.php | 115 + .../src/Models/ListTransactionsRequest.php | 207 + .../src/Models/ListTransactionsResponse.php | 125 + .../Models/ListWebhookEventTypesRequest.php | 68 + .../Models/ListWebhookEventTypesResponse.php | 122 + .../ListWebhookSubscriptionsRequest.php | 189 + .../ListWebhookSubscriptionsResponse.php | 125 + .../src/Models/ListWorkweekConfigsRequest.php | 101 + .../Models/ListWorkweekConfigsResponse.php | 116 + .../square/square/src/Models/Location.php | 904 ++ .../src/Models/LocationBookingProfile.php | 138 + .../square/src/Models/LocationCapability.php | 23 + .../square/src/Models/LocationStatus.php | 20 + .../square/square/src/Models/LocationType.php | 19 + .../square/src/Models/LoyaltyAccount.php | 387 + .../LoyaltyAccountExpiringPointDeadline.php | 86 + .../src/Models/LoyaltyAccountMapping.php | 119 + .../src/Models/LoyaltyAccountMappingType.php | 15 + .../square/square/src/Models/LoyaltyEvent.php | 391 + .../Models/LoyaltyEventAccumulatePoints.php | 129 + .../LoyaltyEventAccumulatePromotionPoints.php | 138 + .../src/Models/LoyaltyEventAdjustPoints.php | 121 + .../src/Models/LoyaltyEventCreateReward.php | 113 + .../src/Models/LoyaltyEventDateTimeFilter.php | 68 + .../src/Models/LoyaltyEventDeleteReward.php | 113 + .../src/Models/LoyaltyEventExpirePoints.php | 86 + .../square/src/Models/LoyaltyEventFilter.php | 155 + .../src/Models/LoyaltyEventLocationFilter.php | 68 + .../LoyaltyEventLoyaltyAccountFilter.php | 60 + .../src/Models/LoyaltyEventOrderFilter.php | 60 + .../square/src/Models/LoyaltyEventOther.php | 86 + .../square/src/Models/LoyaltyEventQuery.php | 56 + .../src/Models/LoyaltyEventRedeemReward.php | 114 + .../square/src/Models/LoyaltyEventSource.php | 19 + .../square/src/Models/LoyaltyEventType.php | 46 + .../src/Models/LoyaltyEventTypeFilter.php | 70 + .../square/src/Models/LoyaltyProgram.php | 315 + .../src/Models/LoyaltyProgramAccrualRule.php | 200 + .../LoyaltyProgramAccrualRuleCategoryData.php | 62 + ...ltyProgramAccrualRuleItemVariationData.php | 64 + .../LoyaltyProgramAccrualRuleSpendData.php | 202 + .../LoyaltyProgramAccrualRuleTaxMode.php | 22 + .../Models/LoyaltyProgramAccrualRuleType.php | 31 + .../LoyaltyProgramAccrualRuleVisitData.php | 103 + .../Models/LoyaltyProgramExpirationPolicy.php | 66 + .../Models/LoyaltyProgramRewardDefinition.php | 245 + .../LoyaltyProgramRewardDefinitionScope.php | 26 + .../LoyaltyProgramRewardDefinitionType.php | 22 + .../src/Models/LoyaltyProgramRewardTier.php | 198 + .../src/Models/LoyaltyProgramStatus.php | 20 + .../src/Models/LoyaltyProgramTerminology.php | 86 + .../square/src/Models/LoyaltyPromotion.php | 472 + .../LoyaltyPromotionAvailableTimeData.php | 141 + .../src/Models/LoyaltyPromotionIncentive.php | 118 + ...tyPromotionIncentivePointsAdditionData.php | 67 + ...PromotionIncentivePointsMultiplierData.php | 183 + .../Models/LoyaltyPromotionIncentiveType.php | 22 + .../src/Models/LoyaltyPromotionStatus.php | 30 + .../Models/LoyaltyPromotionTriggerLimit.php | 96 + .../LoyaltyPromotionTriggerLimitInterval.php | 26 + .../square/src/Models/LoyaltyReward.php | 277 + .../square/src/Models/LoyaltyRewardStatus.php | 23 + .../square/square/src/Models/MBreak.php | 234 + .../square/src/Models/MeasurementUnit.php | 231 + .../square/src/Models/MeasurementUnitArea.php | 43 + .../src/Models/MeasurementUnitCustom.php | 88 + .../src/Models/MeasurementUnitGeneric.php | 12 + .../src/Models/MeasurementUnitLength.php | 43 + .../square/src/Models/MeasurementUnitTime.php | 31 + .../src/Models/MeasurementUnitUnitType.php | 36 + .../src/Models/MeasurementUnitVolume.php | 55 + .../src/Models/MeasurementUnitWeight.php | 35 + .../square/square/src/Models/Merchant.php | 283 + .../square/src/Models/MerchantStatus.php | 17 + .../src/Models/ModifierLocationOverrides.php | 135 + .../square/square/src/Models/Money.php | 107 + .../square/src/Models/ObtainTokenRequest.php | 466 + .../square/src/Models/ObtainTokenResponse.php | 329 + .../src/Models/OfflinePaymentDetails.php | 54 + .../square/square/src/Models/Order.php | 1189 ++ .../square/square/src/Models/OrderCreated.php | 183 + .../square/src/Models/OrderCreatedObject.php | 49 + .../square/square/src/Models/OrderEntry.php | 137 + .../square/src/Models/OrderFulfillment.php | 341 + .../OrderFulfillmentDeliveryDetails.php | 873 ++ ...FulfillmentDeliveryDetailsScheduleType.php | 20 + .../OrderFulfillmentFulfillmentEntry.php | 206 + ...fillmentFulfillmentLineItemApplication.php | 20 + .../Models/OrderFulfillmentPickupDetails.php | 644 + ...mentPickupDetailsCurbsidePickupDetails.php | 110 + ...erFulfillmentPickupDetailsScheduleType.php | 20 + .../src/Models/OrderFulfillmentRecipient.php | 238 + .../OrderFulfillmentShipmentDetails.php | 546 + .../src/Models/OrderFulfillmentState.php | 36 + .../src/Models/OrderFulfillmentType.php | 23 + .../src/Models/OrderFulfillmentUpdated.php | 248 + .../Models/OrderFulfillmentUpdatedObject.php | 49 + .../Models/OrderFulfillmentUpdatedUpdate.php | 115 + .../square/src/Models/OrderLineItem.php | 969 ++ .../Models/OrderLineItemAppliedDiscount.php | 146 + .../OrderLineItemAppliedServiceCharge.php | 138 + .../src/Models/OrderLineItemAppliedTax.php | 146 + .../src/Models/OrderLineItemDiscount.php | 506 + .../src/Models/OrderLineItemDiscountScope.php | 25 + .../src/Models/OrderLineItemDiscountType.php | 39 + .../src/Models/OrderLineItemItemType.php | 25 + .../src/Models/OrderLineItemModifier.php | 392 + .../Models/OrderLineItemPricingBlocklists.php | 124 + ...neItemPricingBlocklistsBlockedDiscount.php | 147 + ...derLineItemPricingBlocklistsBlockedTax.php | 147 + .../square/src/Models/OrderLineItemTax.php | 428 + .../src/Models/OrderLineItemTaxScope.php | 25 + .../src/Models/OrderLineItemTaxType.php | 30 + .../square/src/Models/OrderMoneyAmounts.php | 214 + .../square/src/Models/OrderPricingOptions.php | 109 + .../square/src/Models/OrderQuantityUnit.php | 197 + .../square/square/src/Models/OrderReturn.php | 345 + .../square/src/Models/OrderReturnDiscount.php | 383 + .../square/src/Models/OrderReturnLineItem.php | 818 ++ .../Models/OrderReturnLineItemModifier.php | 340 + .../src/Models/OrderReturnServiceCharge.php | 589 + .../square/src/Models/OrderReturnTax.php | 339 + .../square/src/Models/OrderReturnTip.php | 174 + .../square/square/src/Models/OrderReward.php | 87 + .../src/Models/OrderRoundingAdjustment.php | 140 + .../square/src/Models/OrderServiceCharge.php | 682 + .../OrderServiceChargeCalculationPhase.php | 37 + .../src/Models/OrderServiceChargeScope.php | 26 + .../OrderServiceChargeTreatmentType.php | 14 + .../src/Models/OrderServiceChargeType.php | 10 + .../square/square/src/Models/OrderSource.php | 68 + .../square/square/src/Models/OrderState.php | 30 + .../square/square/src/Models/OrderUpdated.php | 208 + .../square/src/Models/OrderUpdatedObject.php | 49 + .../square/src/Models/PaginationCursor.php | 69 + .../src/Models/PauseSubscriptionRequest.php | 223 + .../src/Models/PauseSubscriptionResponse.php | 119 + .../square/src/Models/PayOrderRequest.php | 150 + .../square/src/Models/PayOrderResponse.php | 94 + .../square/square/src/Models/Payment.php | 1381 ++ ...ymentBalanceActivityAppFeeRefundDetail.php | 134 + ...mentBalanceActivityAppFeeRevenueDetail.php | 98 + ...tBalanceActivityAutomaticSavingsDetail.php | 98 + ...ActivityAutomaticSavingsReversedDetail.php | 98 + .../PaymentBalanceActivityChargeDetail.php | 62 + ...PaymentBalanceActivityDepositFeeDetail.php | 62 + ...alanceActivityDepositFeeReversedDetail.php | 62 + .../PaymentBalanceActivityDisputeDetail.php | 98 + .../PaymentBalanceActivityFeeDetail.php | 71 + ...entBalanceActivityFreeProcessingDetail.php | 62 + ...entBalanceActivityHoldAdjustmentDetail.php | 62 + ...aymentBalanceActivityOpenDisputeDetail.php | 98 + ...ntBalanceActivityOtherAdjustmentDetail.php | 62 + .../PaymentBalanceActivityOtherDetail.php | 62 + .../PaymentBalanceActivityRefundDetail.php | 98 + ...BalanceActivityReleaseAdjustmentDetail.php | 62 + ...aymentBalanceActivityReserveHoldDetail.php | 62 + ...entBalanceActivityReserveReleaseDetail.php | 62 + ...anceActivitySquareCapitalPaymentDetail.php | 62 + ...vitySquareCapitalReversedPaymentDetail.php | 62 + ...nceActivitySquarePayrollTransferDetail.php | 62 + ...itySquarePayrollTransferReversedDetail.php | 62 + .../PaymentBalanceActivityTaxOnFeeDetail.php | 98 + ...mentBalanceActivityThirdPartyFeeDetail.php | 62 + ...lanceActivityThirdPartyFeeRefundDetail.php | 98 + .../square/square/src/Models/PaymentLink.php | 341 + .../Models/PaymentLinkRelatedResources.php | 106 + .../square/src/Models/PaymentOptions.php | 239 + .../src/Models/PaymentOptionsDelayAction.php | 22 + .../square/src/Models/PaymentRefund.php | 563 + .../square/src/Models/PaymentSortField.php | 11 + .../square/square/src/Models/Payout.php | 405 + .../square/square/src/Models/PayoutEntry.php | 834 ++ .../square/square/src/Models/PayoutFee.php | 127 + .../square/src/Models/PayoutFeeType.php | 19 + .../square/square/src/Models/PayoutStatus.php | 23 + .../square/square/src/Models/PayoutType.php | 23 + .../square/square/src/Models/Phase.php | 173 + .../square/square/src/Models/PhaseInput.php | 96 + .../square/src/Models/PrePopulatedData.php | 133 + .../square/src/Models/ProcessingFee.php | 138 + .../square/square/src/Models/Product.php | 51 + .../square/square/src/Models/ProductType.php | 9 + .../src/Models/PublishInvoiceRequest.php | 113 + .../src/Models/PublishInvoiceResponse.php | 87 + .../square/src/Models/QrCodeOptions.php | 114 + .../square/src/Models/QuantityRatio.php | 110 + .../square/square/src/Models/QuickPay.php | 126 + .../square/square/src/Models/Range.php | 107 + .../square/src/Models/ReceiptOptions.php | 141 + .../src/Models/RedeemLoyaltyRewardRequest.php | 88 + .../Models/RedeemLoyaltyRewardResponse.php | 87 + .../square/square/src/Models/Refund.php | 343 + .../src/Models/RefundPaymentRequest.php | 541 + .../src/Models/RefundPaymentResponse.php | 89 + .../square/square/src/Models/RefundStatus.php | 27 + .../src/Models/RegisterDomainRequest.php | 61 + .../src/Models/RegisterDomainResponse.php | 86 + .../Models/RegisterDomainResponseStatus.php | 19 + .../RemoveGroupFromCustomerResponse.php | 60 + .../src/Models/ResumeSubscriptionRequest.php | 91 + .../src/Models/ResumeSubscriptionResponse.php | 119 + ...ookingCustomAttributeDefinitionRequest.php | 62 + ...okingCustomAttributeDefinitionResponse.php | 88 + .../RetrieveBookingCustomAttributeRequest.php | 109 + ...RetrieveBookingCustomAttributeResponse.php | 87 + .../src/Models/RetrieveBookingResponse.php | 84 + ...RetrieveBusinessBookingProfileResponse.php | 80 + .../src/Models/RetrieveCardResponse.php | 89 + .../Models/RetrieveCashDrawerShiftRequest.php | 57 + .../RetrieveCashDrawerShiftResponse.php | 86 + .../Models/RetrieveCatalogObjectRequest.php | 206 + .../Models/RetrieveCatalogObjectResponse.php | 135 + ...stomerCustomAttributeDefinitionRequest.php | 62 + ...tomerCustomAttributeDefinitionResponse.php | 88 + ...RetrieveCustomerCustomAttributeRequest.php | 110 + ...etrieveCustomerCustomAttributeResponse.php | 88 + .../Models/RetrieveCustomerGroupResponse.php | 92 + .../src/Models/RetrieveCustomerResponse.php | 86 + .../RetrieveCustomerSegmentResponse.php | 92 + .../RetrieveDisputeEvidenceResponse.php | 81 + .../src/Models/RetrieveDisputeResponse.php | 85 + .../src/Models/RetrieveEmployeeResponse.php | 84 + .../Models/RetrieveGiftCardFromGANRequest.php | 64 + .../RetrieveGiftCardFromGANResponse.php | 84 + .../RetrieveGiftCardFromNonceRequest.php | 62 + .../RetrieveGiftCardFromNonceResponse.php | 84 + .../src/Models/RetrieveGiftCardResponse.php | 84 + .../RetrieveInventoryAdjustmentResponse.php | 82 + .../RetrieveInventoryChangesRequest.php | 113 + .../RetrieveInventoryChangesResponse.php | 117 + .../Models/RetrieveInventoryCountRequest.php | 113 + .../Models/RetrieveInventoryCountResponse.php | 119 + ...RetrieveInventoryPhysicalCountResponse.php | 86 + .../RetrieveInventoryTransferResponse.php | 82 + .../square/src/Models/RetrieveJobResponse.php | 88 + ...RetrieveLocationBookingProfileResponse.php | 82 + ...cationCustomAttributeDefinitionRequest.php | 62 + ...ationCustomAttributeDefinitionResponse.php | 88 + ...RetrieveLocationCustomAttributeRequest.php | 110 + ...etrieveLocationCustomAttributeResponse.php | 88 + .../src/Models/RetrieveLocationResponse.php | 84 + .../RetrieveLocationSettingsResponse.php | 78 + .../Models/RetrieveLoyaltyAccountResponse.php | 87 + .../Models/RetrieveLoyaltyProgramResponse.php | 93 + .../RetrieveLoyaltyPromotionResponse.php | 89 + .../Models/RetrieveLoyaltyRewardResponse.php | 89 + ...rchantCustomAttributeDefinitionRequest.php | 62 + ...chantCustomAttributeDefinitionResponse.php | 88 + ...RetrieveMerchantCustomAttributeRequest.php | 110 + ...etrieveMerchantCustomAttributeResponse.php | 88 + .../src/Models/RetrieveMerchantResponse.php | 83 + .../RetrieveMerchantSettingsResponse.php | 78 + ...eOrderCustomAttributeDefinitionRequest.php | 58 + ...OrderCustomAttributeDefinitionResponse.php | 85 + .../RetrieveOrderCustomAttributeRequest.php | 106 + .../RetrieveOrderCustomAttributeResponse.php | 85 + .../src/Models/RetrieveOrderResponse.php | 90 + .../Models/RetrievePaymentLinkResponse.php | 78 + .../src/Models/RetrieveSnippetResponse.php | 85 + .../Models/RetrieveSubscriptionRequest.php | 78 + .../Models/RetrieveSubscriptionResponse.php | 90 + ...trieveTeamMemberBookingProfileResponse.php | 82 + .../src/Models/RetrieveTeamMemberResponse.php | 83 + .../Models/RetrieveTokenStatusResponse.php | 167 + .../Models/RetrieveTransactionResponse.php | 94 + .../src/Models/RetrieveVendorResponse.php | 83 + .../Models/RetrieveWageSettingResponse.php | 86 + .../RetrieveWebhookSubscriptionResponse.php | 91 + .../square/src/Models/RevokeTokenRequest.php | 185 + .../square/src/Models/RevokeTokenResponse.php | 80 + .../square/src/Models/RiskEvaluation.php | 82 + .../src/Models/RiskEvaluationRiskLevel.php | 24 + .../square/src/Models/SaveCardOptions.php | 127 + .../src/Models/SearchAvailabilityFilter.php | 210 + .../src/Models/SearchAvailabilityQuery.php | 60 + .../src/Models/SearchAvailabilityRequest.php | 57 + .../src/Models/SearchAvailabilityResponse.php | 84 + .../src/Models/SearchCatalogItemsRequest.php | 321 + .../SearchCatalogItemsRequestStockLevel.php | 19 + .../src/Models/SearchCatalogItemsResponse.php | 142 + .../Models/SearchCatalogObjectsRequest.php | 376 + .../Models/SearchCatalogObjectsResponse.php | 171 + .../src/Models/SearchCustomersRequest.php | 158 + .../src/Models/SearchCustomersResponse.php | 168 + .../square/src/Models/SearchEventsFilter.php | 182 + .../square/src/Models/SearchEventsQuery.php | 79 + .../square/src/Models/SearchEventsRequest.php | 124 + .../src/Models/SearchEventsResponse.php | 153 + .../square/src/Models/SearchEventsSort.php | 79 + .../src/Models/SearchEventsSortField.php | 16 + .../src/Models/SearchInvoicesRequest.php | 120 + .../src/Models/SearchInvoicesResponse.php | 120 + .../Models/SearchLoyaltyAccountsRequest.php | 114 + ...altyAccountsRequestLoyaltyAccountQuery.php | 133 + .../Models/SearchLoyaltyAccountsResponse.php | 120 + .../src/Models/SearchLoyaltyEventsRequest.php | 114 + .../Models/SearchLoyaltyEventsResponse.php | 119 + .../Models/SearchLoyaltyRewardsRequest.php | 112 + ...oyaltyRewardsRequestLoyaltyRewardQuery.php | 85 + .../Models/SearchLoyaltyRewardsResponse.php | 116 + .../src/Models/SearchOrdersCustomerFilter.php | 77 + .../src/Models/SearchOrdersDateTimeFilter.php | 142 + .../square/src/Models/SearchOrdersFilter.php | 187 + .../Models/SearchOrdersFulfillmentFilter.php | 127 + .../square/src/Models/SearchOrdersQuery.php | 83 + .../square/src/Models/SearchOrdersRequest.php | 181 + .../src/Models/SearchOrdersResponse.php | 154 + .../square/src/Models/SearchOrdersSort.php | 86 + .../src/Models/SearchOrdersSortField.php | 30 + .../src/Models/SearchOrdersSourceFilter.php | 78 + .../src/Models/SearchOrdersStateFilter.php | 66 + .../square/src/Models/SearchShiftsRequest.php | 104 + .../src/Models/SearchShiftsResponse.php | 114 + .../src/Models/SearchSubscriptionsFilter.php | 151 + .../src/Models/SearchSubscriptionsQuery.php | 58 + .../src/Models/SearchSubscriptionsRequest.php | 154 + .../Models/SearchSubscriptionsResponse.php | 125 + .../src/Models/SearchTeamMembersFilter.php | 139 + .../src/Models/SearchTeamMembersQuery.php | 66 + .../src/Models/SearchTeamMembersRequest.php | 106 + .../src/Models/SearchTeamMembersResponse.php | 114 + .../Models/SearchTerminalActionsRequest.php | 107 + .../Models/SearchTerminalActionsResponse.php | 119 + .../Models/SearchTerminalCheckoutsRequest.php | 105 + .../SearchTerminalCheckoutsResponse.php | 117 + .../Models/SearchTerminalRefundsRequest.php | 101 + .../Models/SearchTerminalRefundsResponse.php | 117 + .../src/Models/SearchVendorsRequest.php | 112 + .../src/Models/SearchVendorsRequestFilter.php | 112 + .../src/Models/SearchVendorsRequestSort.php | 79 + .../Models/SearchVendorsRequestSortField.php | 19 + .../src/Models/SearchVendorsResponse.php | 120 + .../square/src/Models/SegmentFilter.php | 95 + .../square/square/src/Models/SelectOption.php | 83 + .../square/src/Models/SelectOptions.php | 136 + .../square/square/src/Models/Shift.php | 481 + .../square/square/src/Models/ShiftFilter.php | 271 + .../square/src/Models/ShiftFilterStatus.php | 19 + .../square/square/src/Models/ShiftQuery.php | 81 + .../square/square/src/Models/ShiftSort.php | 79 + .../square/src/Models/ShiftSortField.php | 27 + .../square/square/src/Models/ShiftStatus.php | 19 + .../square/square/src/Models/ShiftWage.php | 165 + .../square/square/src/Models/ShiftWorkday.php | 127 + .../square/src/Models/ShiftWorkdayMatcher.php | 23 + .../square/square/src/Models/ShippingFee.php | 105 + .../square/src/Models/SignatureImage.php | 78 + .../square/src/Models/SignatureOptions.php | 112 + .../square/square/src/Models/Site.php | 212 + .../square/square/src/Models/Snippet.php | 161 + .../square/src/Models/SnippetResponse.php | 82 + .../square/square/src/Models/SortOrder.php | 19 + .../square/src/Models/SourceApplication.php | 132 + .../src/Models/SquareAccountDetails.php | 105 + .../src/Models/StandardUnitDescription.php | 130 + .../Models/StandardUnitDescriptionGroup.php | 105 + .../src/Models/SubmitEvidenceResponse.php | 85 + .../square/square/src/Models/Subscription.php | 644 + .../square/src/Models/SubscriptionAction.php | 227 + .../src/Models/SubscriptionActionType.php | 31 + .../square/src/Models/SubscriptionCadence.php | 63 + .../square/src/Models/SubscriptionEvent.php | 228 + .../src/Models/SubscriptionEventInfo.php | 90 + .../src/Models/SubscriptionEventInfoCode.php | 35 + ...SubscriptionEventSubscriptionEventType.php | 39 + .../square/src/Models/SubscriptionPhase.php | 240 + .../square/src/Models/SubscriptionPricing.php | 131 + .../src/Models/SubscriptionPricingType.php | 19 + .../square/src/Models/SubscriptionSource.php | 71 + .../square/src/Models/SubscriptionStatus.php | 31 + .../src/Models/SubscriptionTestResult.php | 183 + .../square/src/Models/SwapPlanRequest.php | 112 + .../square/src/Models/SwapPlanResponse.php | 119 + .../square/src/Models/TaxCalculationPhase.php | 19 + .../square/square/src/Models/TaxIds.php | 170 + .../square/src/Models/TaxInclusionType.php | 24 + .../square/square/src/Models/TeamMember.php | 395 + .../Models/TeamMemberAssignedLocations.php | 94 + ...mMemberAssignedLocationsAssignmentType.php | 21 + .../src/Models/TeamMemberBookingProfile.php | 171 + .../src/Models/TeamMemberInvitationStatus.php | 23 + .../square/src/Models/TeamMemberStatus.php | 20 + .../square/src/Models/TeamMemberWage.php | 239 + .../square/square/src/Models/Tender.php | 581 + .../src/Models/TenderBankAccountDetails.php | 57 + .../Models/TenderBankAccountDetailsStatus.php | 23 + .../Models/TenderBuyNowPayLaterDetails.php | 75 + .../TenderBuyNowPayLaterDetailsBrand.php | 10 + .../TenderBuyNowPayLaterDetailsStatus.php | 24 + .../square/src/Models/TenderCardDetails.php | 106 + .../Models/TenderCardDetailsEntryMethod.php | 33 + .../src/Models/TenderCardDetailsStatus.php | 27 + .../square/src/Models/TenderCashDetails.php | 103 + .../src/Models/TenderSquareAccountDetails.php | 52 + .../TenderSquareAccountDetailsStatus.php | 24 + .../square/square/src/Models/TenderType.php | 58 + .../square/src/Models/TerminalAction.php | 610 + .../src/Models/TerminalActionActionType.php | 52 + .../square/src/Models/TerminalActionQuery.php | 72 + .../src/Models/TerminalActionQueryFilter.php | 164 + .../src/Models/TerminalActionQuerySort.php | 51 + .../square/src/Models/TerminalCheckout.php | 711 ++ .../src/Models/TerminalCheckoutQuery.php | 72 + .../Models/TerminalCheckoutQueryFilter.php | 140 + .../src/Models/TerminalCheckoutQuerySort.php | 51 + .../square/src/Models/TerminalRefund.php | 432 + .../square/src/Models/TerminalRefundQuery.php | 72 + .../src/Models/TerminalRefundQueryFilter.php | 137 + .../src/Models/TerminalRefundQuerySort.php | 68 + .../Models/TestWebhookSubscriptionRequest.php | 71 + .../TestWebhookSubscriptionResponse.php | 90 + .../square/square/src/Models/TimeRange.php | 111 + .../square/square/src/Models/TipSettings.php | 255 + .../square/square/src/Models/Transaction.php | 394 + .../square/src/Models/TransactionProduct.php | 43 + .../square/src/Models/TransactionType.php | 13 + .../UnlinkCustomerFromGiftCardRequest.php | 60 + .../UnlinkCustomerFromGiftCardResponse.php | 84 + ...ookingCustomAttributeDefinitionRequest.php | 103 + ...okingCustomAttributeDefinitionResponse.php | 88 + .../src/Models/UpdateBookingRequest.php | 97 + .../src/Models/UpdateBookingResponse.php | 84 + .../src/Models/UpdateBreakTypeRequest.php | 62 + .../src/Models/UpdateBreakTypeResponse.php | 87 + .../src/Models/UpdateCatalogImageRequest.php | 65 + .../src/Models/UpdateCatalogImageResponse.php | 106 + ...stomerCustomAttributeDefinitionRequest.php | 103 + ...tomerCustomAttributeDefinitionResponse.php | 88 + .../src/Models/UpdateCustomerGroupRequest.php | 67 + .../Models/UpdateCustomerGroupResponse.php | 92 + .../src/Models/UpdateCustomerRequest.php | 509 + .../src/Models/UpdateCustomerResponse.php | 87 + .../src/Models/UpdateInvoiceRequest.php | 161 + .../src/Models/UpdateInvoiceResponse.php | 87 + .../Models/UpdateItemModifierListsRequest.php | 147 + .../UpdateItemModifierListsResponse.php | 82 + .../src/Models/UpdateItemTaxesRequest.php | 149 + .../src/Models/UpdateItemTaxesResponse.php | 82 + .../square/src/Models/UpdateJobRequest.php | 64 + .../square/src/Models/UpdateJobResponse.php | 88 + ...cationCustomAttributeDefinitionRequest.php | 103 + ...ationCustomAttributeDefinitionResponse.php | 88 + .../src/Models/UpdateLocationRequest.php | 54 + .../src/Models/UpdateLocationResponse.php | 83 + .../Models/UpdateLocationSettingsRequest.php | 55 + .../Models/UpdateLocationSettingsResponse.php | 78 + ...rchantCustomAttributeDefinitionRequest.php | 103 + ...chantCustomAttributeDefinitionResponse.php | 88 + .../Models/UpdateMerchantSettingsRequest.php | 55 + .../Models/UpdateMerchantSettingsResponse.php | 78 + ...eOrderCustomAttributeDefinitionRequest.php | 104 + ...OrderCustomAttributeDefinitionResponse.php | 85 + .../square/src/Models/UpdateOrderRequest.php | 177 + .../square/src/Models/UpdateOrderResponse.php | 94 + .../src/Models/UpdatePaymentLinkRequest.php | 55 + .../src/Models/UpdatePaymentLinkResponse.php | 78 + .../src/Models/UpdatePaymentRequest.php | 94 + .../src/Models/UpdatePaymentResponse.php | 84 + .../square/src/Models/UpdateShiftRequest.php | 64 + .../square/src/Models/UpdateShiftResponse.php | 89 + .../src/Models/UpdateSubscriptionRequest.php | 61 + .../src/Models/UpdateSubscriptionResponse.php | 90 + .../src/Models/UpdateTeamMemberRequest.php | 54 + .../src/Models/UpdateTeamMemberResponse.php | 84 + .../square/src/Models/UpdateVendorRequest.php | 114 + .../src/Models/UpdateVendorResponse.php | 83 + .../src/Models/UpdateWageSettingRequest.php | 62 + .../src/Models/UpdateWageSettingResponse.php | 86 + .../UpdateWebhookSubscriptionRequest.php | 56 + .../UpdateWebhookSubscriptionResponse.php | 90 + ...WebhookSubscriptionSignatureKeyRequest.php | 69 + ...ebhookSubscriptionSignatureKeyResponse.php | 89 + .../Models/UpdateWorkweekConfigRequest.php | 62 + .../Models/UpdateWorkweekConfigResponse.php | 87 + .../UpsertBookingCustomAttributeRequest.php | 102 + .../UpsertBookingCustomAttributeResponse.php | 87 + .../src/Models/UpsertCatalogObjectRequest.php | 129 + .../Models/UpsertCatalogObjectResponse.php | 135 + .../UpsertCustomerCustomAttributeRequest.php | 102 + .../UpsertCustomerCustomAttributeResponse.php | 87 + .../UpsertLocationCustomAttributeRequest.php | 102 + .../UpsertLocationCustomAttributeResponse.php | 87 + .../UpsertMerchantCustomAttributeRequest.php | 102 + .../UpsertMerchantCustomAttributeResponse.php | 87 + .../UpsertOrderCustomAttributeRequest.php | 104 + .../UpsertOrderCustomAttributeResponse.php | 85 + .../src/Models/UpsertSnippetRequest.php | 62 + .../src/Models/UpsertSnippetResponse.php | 85 + .../square/square/src/Models/V1Device.php | 87 + .../square/src/Models/V1ListOrdersRequest.php | 126 + .../src/Models/V1ListOrdersResponse.php | 53 + .../square/square/src/Models/V1Money.php | 92 + .../square/square/src/Models/V1Order.php | 853 ++ .../square/src/Models/V1OrderHistoryEntry.php | 77 + .../src/Models/V1OrderHistoryEntryAction.php | 15 + .../square/square/src/Models/V1OrderState.php | 14 + .../square/src/Models/V1PhoneNumber.php | 86 + .../square/square/src/Models/V1Tender.php | 535 + .../square/src/Models/V1TenderCardBrand.php | 20 + .../square/src/Models/V1TenderEntryMethod.php | 15 + .../square/square/src/Models/V1TenderType.php | 16 + .../src/Models/V1UpdateOrderRequest.php | 202 + .../src/Models/V1UpdateOrderRequestAction.php | 11 + .../square/square/src/Models/Vendor.php | 342 + .../square/src/Models/VendorContact.php | 234 + .../square/square/src/Models/VendorStatus.php | 20 + .../square/src/Models/VisibilityFilter.php | 26 + .../src/Models/VoidTransactionResponse.php | 59 + .../square/square/src/Models/WageSetting.php | 228 + .../square/src/Models/WebhookSubscription.php | 324 + .../square/square/src/Models/Weekday.php | 39 + .../square/src/Models/WorkweekConfig.php | 197 + .../square/square/src/Server.php | 12 + .../square/square/src/SquareClient.php | 675 + .../square/square/src/SquareClientBuilder.php | 145 + .../src/Utils/CompatibilityConverter.php | 42 + .../square/square/src/Utils/FileWrapper.php | 19 + .../square/src/Utils/WebhooksHelper.php | 43 + .../square/tests/Apis/BaseTestController.php | 26 + .../square/tests/Apis/LocationsApiTest.php | 32 + .../square/square/tests/ClientFactory.php | 59 + .../square/square/tests/Flows/CatalogTest.php | 110 + .../square/tests/Flows/CustomerGroupsTest.php | 100 + .../square/tests/Flows/CustomersTest.php | 256 + .../square/tests/Flows/DisputesTest.php | 37 + .../square/square/tests/Flows/ErrorsTest.php | 22 + .../square/tests/Flows/JsonSerializeTest.php | 20 + .../square/tests/Flows/MerchantsTest.php | 55 + .../tests/Flows/MobileAuthorizationTest.php | 51 + .../square/square/tests/Flows/OrdersTest.php | 142 + .../square/tests/Flows/PaymentsTest.php | 153 + .../square/square/tests/Flows/RefundsTest.php | 112 + .../square/tests/Flows/WebhooksHelperTest.php | 83 + .../Models/CustomAttributeDefinitionTest.php | 36 + .../tests/Models/CustomAttributeTest.php | 99 + .../square/square/tests/bootstrap.php | 11 + .../css-selector/CssSelectorConverter.php | 2 +- .../Exception/ExceptionInterface.php | 2 +- .../symfony/css-selector/LICENSE | 2 +- .../css-selector/Node/AbstractNode.php | 5 +- .../css-selector/Node/AttributeNode.php | 40 +- .../symfony/css-selector/Node/ClassNode.php | 22 +- .../Node/CombinedSelectorNode.php | 27 +- .../symfony/css-selector/Node/ElementNode.php | 23 +- .../css-selector/Node/FunctionNode.php | 22 +- .../symfony/css-selector/Node/HashNode.php | 22 +- .../css-selector/Node/NegationNode.php | 17 +- .../css-selector/Node/NodeInterface.php | 21 +- .../symfony/css-selector/Node/PseudoNode.php | 22 +- .../css-selector/Node/SelectorNode.php | 22 +- .../symfony/css-selector/Node/Specificity.php | 29 +- .../Parser/Handler/CommentHandler.php | 2 +- .../Parser/Handler/HandlerInterface.php | 5 +- .../Parser/Handler/HashHandler.php | 2 +- .../Parser/Handler/IdentifierHandler.php | 2 +- .../Parser/Handler/NumberHandler.php | 2 +- .../Parser/Handler/StringHandler.php | 2 +- .../Parser/Handler/WhitespaceHandler.php | 2 +- .../symfony/css-selector/Parser/Parser.php | 56 +- .../css-selector/Parser/ParserInterface.php | 4 +- .../symfony/css-selector/Parser/Reader.php | 44 +- .../Parser/Shortcut/ClassParser.php | 2 +- .../Parser/Shortcut/ElementParser.php | 2 +- .../Parser/Shortcut/EmptyStringParser.php | 2 +- .../Parser/Shortcut/HashParser.php | 2 +- .../symfony/css-selector/Parser/Token.php | 76 +- .../css-selector/Parser/TokenStream.php | 18 +- .../Parser/Tokenizer/Tokenizer.php | 4 +- .../Parser/Tokenizer/TokenizerEscaping.php | 21 +- .../Parser/Tokenizer/TokenizerPatterns.php | 37 +- .../XPath/Extension/AbstractExtension.php | 10 +- .../Extension/AttributeMatchingExtension.php | 68 +- .../XPath/Extension/CombinationExtension.php | 24 +- .../XPath/Extension/ExtensionInterface.php | 14 +- .../XPath/Extension/FunctionExtension.php | 35 +- .../XPath/Extension/HtmlExtension.php | 50 +- .../XPath/Extension/NodeExtension.php | 83 +- .../XPath/Extension/PseudoClassExtension.php | 47 +- .../symfony/css-selector/XPath/Translator.php | 73 +- .../XPath/TranslatorInterface.php | 13 +- .../symfony/css-selector/XPath/XPathExpr.php | 43 +- wp-content/plugins/wpforms-lite/wpforms.php | 10 +- .../patterns/banner-intro-image.php | 2 +- .../patterns/header-centered.php | 4 +- .../patterns/header-columns.php | 2 +- .../patterns/header-large-title.php | 2 +- .../twentytwentyfive/patterns/header.php | 2 +- .../patterns/hero-full-width-image.php | 2 +- .../template-404-vertical-header-blog.php | 2 +- .../patterns/template-archive-text-blog.php | 2 +- .../template-archive-vertical-header-blog.php | 2 +- .../patterns/template-home-text-blog.php | 2 +- .../template-home-vertical-header-blog.php | 2 +- .../template-page-vertical-header-blog.php | 2 +- .../template-query-loop-text-blog.php | 2 +- ...mplate-query-loop-vertical-header-blog.php | 2 +- .../patterns/template-search-text-blog.php | 2 +- .../patterns/template-single-text-blog.php | 2 +- .../patterns/vertical-header.php | 4 +- wp-content/themes/twentytwentyfive/readme.txt | 11 +- wp-content/themes/twentytwentyfive/style.css | 4 +- wp-content/themes/twentytwentyfive/theme.json | 2 +- 4036 files changed, 657607 insertions(+), 124858 deletions(-) create mode 100644 logs/UpdateProcessor.log create mode 100644 wp-content/plugins/breeze/inc/class-breeze-bulk-update.php create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.css create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.min.css create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/hcaptcha-icon-animated.svg create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/events-manager.svg create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/password-protected.png create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/passive-mode-example.gif create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/protect-content-example.gif create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/js/whats-new.js create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/assets/js/whats-new.min.js create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/src/php/Admin/NotificationsBase.php create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/src/php/Admin/Privacy.php create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/src/php/Admin/WhatsNew.php create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/src/php/EventsManager/Booking.php create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/src/php/PasswordProtected/Protect.php create mode 100644 wp-content/plugins/hcaptcha-for-forms-and-more/src/php/ProtectContent/ProtectContent.php create mode 100644 wp-content/plugins/updraftplus/SECURITY.md delete mode 100644 wp-content/plugins/updraftplus/addons/anonymisation.php delete mode 100644 wp-content/plugins/updraftplus/addons/autobackup.php delete mode 100644 wp-content/plugins/updraftplus/addons/azure.php delete mode 100644 wp-content/plugins/updraftplus/addons/backblaze.php delete mode 100644 wp-content/plugins/updraftplus/addons/cloudfiles-enhanced.php delete mode 100644 wp-content/plugins/updraftplus/addons/dropbox-folders.php delete mode 100644 wp-content/plugins/updraftplus/addons/fixtime.php delete mode 100644 wp-content/plugins/updraftplus/addons/google-enhanced.php delete mode 100644 wp-content/plugins/updraftplus/addons/googlecloud.php delete mode 100644 wp-content/plugins/updraftplus/addons/importer.php delete mode 100644 wp-content/plugins/updraftplus/addons/incremental.php delete mode 100644 wp-content/plugins/updraftplus/addons/lockadmin.php delete mode 100644 wp-content/plugins/updraftplus/addons/migrator.php delete mode 100644 wp-content/plugins/updraftplus/addons/moredatabase.php delete mode 100644 wp-content/plugins/updraftplus/addons/morefiles.php delete mode 100644 wp-content/plugins/updraftplus/addons/morestorage.php delete mode 100644 wp-content/plugins/updraftplus/addons/multisite.php delete mode 100644 wp-content/plugins/updraftplus/addons/noadverts.php delete mode 100644 wp-content/plugins/updraftplus/addons/onedrive.php delete mode 100644 wp-content/plugins/updraftplus/addons/pcloud.php delete mode 100644 wp-content/plugins/updraftplus/addons/reporting.php delete mode 100644 wp-content/plugins/updraftplus/addons/s3-enhanced.php delete mode 100644 wp-content/plugins/updraftplus/addons/sftp.php delete mode 100644 wp-content/plugins/updraftplus/addons/webdav.php delete mode 100644 wp-content/plugins/updraftplus/addons/wp-cli.php create mode 100644 wp-content/plugins/updraftplus/central/classes/class-updraftcentral-wp-upgrader.php rename wp-content/plugins/updraftplus/central/css/{central-2-23-3.min.css => central-1-25-5.min.css} (93%) rename wp-content/plugins/updraftplus/central/css/{central-2-23-3.min.css.map => central-1-25-5.min.css.map} (95%) rename wp-content/plugins/updraftplus/central/js/{central-2-23-3.min.js => central-1-25-5.min.js} (70%) create mode 100644 wp-content/plugins/updraftplus/central/modules/backups.php create mode 100644 wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css create mode 100644 wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css.map delete mode 100644 wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css delete mode 100644 wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css.map create mode 100644 wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css create mode 100644 wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css.map delete mode 100644 wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css delete mode 100644 wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css.map rename wp-content/plugins/updraftplus/css/{updraftplus-tour-2-23-3.min.css => updraftplus-tour-1-25-5.min.css} (98%) rename wp-content/plugins/updraftplus/css/{updraftplus-tour-2-23-3.min.css.map => updraftplus-tour-1-25-5.min.css.map} (99%) create mode 100644 wp-content/plugins/updraftplus/images/dashicon-white.png create mode 100644 wp-content/plugins/updraftplus/images/notices/aios_logo.png create mode 100644 wp-content/plugins/updraftplus/images/notices/black_friday_sale_24.png create mode 100644 wp-content/plugins/updraftplus/images/notices/collection_sale_24.png create mode 100644 wp-content/plugins/updraftplus/images/notices/new_year_sale_24.png create mode 100644 wp-content/plugins/updraftplus/images/notices/sale_20_24.png create mode 100644 wp-content/plugins/updraftplus/images/notices/sale_20_25.png create mode 100644 wp-content/plugins/updraftplus/images/notices/spring_sale_24.png create mode 100644 wp-content/plugins/updraftplus/images/notices/summer_sale_24.png create mode 100644 wp-content/plugins/updraftplus/images/notices/teamupdraft_logo.png create mode 100644 wp-content/plugins/updraftplus/images/notices/updraftcentral_logo.png delete mode 100644 wp-content/plugins/updraftplus/images/updraftvault-150.png delete mode 100644 wp-content/plugins/updraftplus/includes/Backblaze/CurlClient.php delete mode 100644 wp-content/plugins/updraftplus/includes/Google/Service/CloudMonitoring.php delete mode 100644 wp-content/plugins/updraftplus/includes/Google/Service/Cloudsearch.php delete mode 100644 wp-content/plugins/updraftplus/includes/Google/Service/Deploymentmanager.php delete mode 100644 wp-content/plugins/updraftplus/includes/Google/Service/Manager.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/Archive/Tar.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Curl.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Mock.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Socket.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/ConnectionException.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/CookieJar.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Exception.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/LogicException.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MessageException.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MultipartBody.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/NotImplementedException.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/Log.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/UncompressingDownload.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Response.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SOCKS5.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SocketWrapper.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_lock_response.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_propfind_response.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/Net/Socket.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/Net/URL.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/Net/URL2.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/PEAR.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/PEAR/Exception.php delete mode 100644 wp-content/plugins/updraftplus/includes/PEAR/PEAR5.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/BlobRestProxy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Internal/IBlob.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessCondition.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessPolicy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Blob.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobBlockType.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobPrefix.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobProperties.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobServiceOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobType.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Block.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlockList.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BreakLeaseResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CommitBlobBlocksOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Container.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerACL.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerProperties.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobBlockOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateContainerOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteBlobOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteContainerOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerACLResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerPropertiesResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/LeaseMode.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageRange.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageWriteOption.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PublicAccessType.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetContainerMetadataOptions.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SignedIdentifier.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/CloudConfigurationManager.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomBase.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomLink.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Category.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Content.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Entry.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Feed.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Generator.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Person.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Source.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/IAuthScheme.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/OAuthScheme.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/SharedKeyAuthScheme.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/StorageAuthScheme.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/TableSharedKeyLiteAuthScheme.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringParser.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringSource.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/FilterableService.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/AuthenticationFilter.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/DateFilter.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/ExponentialRetryPolicy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/HeadersFilter.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicyFilter.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/WrapFilter.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchRequest.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchResponse.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpCallContext.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpClient.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IHttpClient.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IUrl.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/Url.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/IServiceFilter.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/InvalidArgumentTypeException.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Logger.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/MediaServicesSettings.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/OAuthRestProxy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Resources.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/RestProxy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/ISerializer.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/JsonSerializer.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/XmlSerializer.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceBusSettings.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceManagementSettings.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceRestProxy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceSettings.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/StorageServiceSettings.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Utilities.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Validate.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/GetServicePropertiesResult.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Logging.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Metrics.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/OAuthAccessToken.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/RetentionPolicy.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/ServiceProperties.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServiceException.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServicesBuilder.php delete mode 100644 wp-content/plugins/updraftplus/includes/WindowsAzure/WindowsAzure.php delete mode 100644 wp-content/plugins/updraftplus/includes/azure-extensions.php create mode 100644 wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI-2-23-3.min.js create mode 100644 wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI.min-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI.min-2-23-3.min.js rename wp-content/plugins/updraftplus/includes/checkout-embed/assets/{udp-checkout-embed-2-23-3.min.css => udp-checkout-embed-1-25-5.min.css} (96%) rename wp-content/plugins/updraftplus/includes/checkout-embed/assets/{udp-checkout-embed-2-23-3.min.css.map => udp-checkout-embed-1-25-5.min.css.map} (98%) create mode 100644 wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed-2-23-3.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/class-onedrive-account.php rename wp-content/plugins/updraftplus/includes/{jquery-ui.custom-v1.11.4-2-23-3.min.css => jquery-ui.custom-v1.11.4-1-25-5.min.css} (99%) rename wp-content/plugins/updraftplus/includes/{jquery-ui.custom-v1.11.4-2-23-3.min.css.map => jquery-ui.custom-v1.11.4-1-25-5.min.css.map} (99%) rename wp-content/plugins/updraftplus/includes/{jquery-ui.custom-v1.12.1-2-23-3.min.css => jquery-ui.custom-v1.12.1-1-25-5.min.css} (99%) rename wp-content/plugins/updraftplus/includes/{jquery-ui.custom-v1.12.1-2-23-3.min.css.map => jquery-ui.custom-v1.12.1-1-25-5.min.css.map} (99%) create mode 100644 wp-content/plugins/updraftplus/includes/jquery-ui.dialog.extended/jquery-ui.dialog.extended-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/jquery-ui.dialog.extended/jquery-ui.dialog.extended-2-23-3.min.js rename wp-content/plugins/updraftplus/includes/labelauty/{jquery-labelauty-2-23-3.min.css => jquery-labelauty-1-25-5.min.css} (99%) rename wp-content/plugins/updraftplus/includes/labelauty/{jquery-labelauty-2-23-3.min.css.map => jquery-labelauty-1-25-5.min.css.map} (99%) create mode 100644 wp-content/plugins/updraftplus/includes/labelauty/jquery-labelauty-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/labelauty/jquery-labelauty-2-23-3.min.js create mode 100644 wp-content/plugins/updraftplus/includes/migrator-lite.php delete mode 100644 wp-content/plugins/updraftplus/includes/onedrive/LICENSE delete mode 100644 wp-content/plugins/updraftplus/includes/onedrive/client.php delete mode 100644 wp-content/plugins/updraftplus/includes/onedrive/file.php delete mode 100644 wp-content/plugins/updraftplus/includes/onedrive/folder.php delete mode 100644 wp-content/plugins/updraftplus/includes/onedrive/object.php delete mode 100644 wp-content/plugins/updraftplus/includes/onedrive/onedrive.php delete mode 100644 wp-content/plugins/updraftplus/includes/select2/select2.css delete mode 100644 wp-content/plugins/updraftplus/includes/select2/select2.js delete mode 100644 wp-content/plugins/updraftplus/includes/select2/select2.min.css delete mode 100644 wp-content/plugins/updraftplus/includes/select2/select2.min.js create mode 100644 wp-content/plugins/updraftplus/includes/updraft-admin-common-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/includes/updraft-admin-common-2-23-3.min.js create mode 100644 wp-content/plugins/updraftplus/js/tour-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/js/tour-2-23-3.min.js create mode 100644 wp-content/plugins/updraftplus/js/updraft-admin-restore-1-25-5.min.js delete mode 100644 wp-content/plugins/updraftplus/js/updraft-admin-restore-2-23-3.min.js create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-af.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-af.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ar.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ar.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-bg_BG.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-bg_BG.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-bn_BD.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-bn_BD.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-bs_BA.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-bs_BA.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ca.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ca.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ckb.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ckb.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-da_DK.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-da_DK.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-es_AR.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-es_AR.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-et.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-et.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-eu.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-eu.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-fa_IR.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-fa_IR.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-fi.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-fi.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-fr_CA.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-fr_CA.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-he_IL.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-he_IL.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-hi_IN.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-hi_IN.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-hu_HU.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-hu_HU.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-id_ID.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-id_ID.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ko_KR.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ko_KR.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-lt_LT.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-lt_LT.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-pt_BR.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-pt_BR.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ru_RU.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ru_RU.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-sl_SI.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-sl_SI.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-sr_RS.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-sr_RS.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-te.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-te.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-th.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-th.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-tl.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-tl.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-tr_TR.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-tr_TR.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ur.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-ur.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-vi.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-vi.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-zh_HK.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-zh_HK.po create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-zh_TW.mo create mode 100644 wp-content/plugins/updraftplus/languages/updraftplus-zh_TW.po create mode 100644 wp-content/plugins/updraftplus/templates/wp-admin/advanced/cron-events.php create mode 100644 wp-content/plugins/updraftplus/templates/wp-admin/notices/button-label.php delete mode 100644 wp-content/plugins/updraftplus/udaddons/options.php delete mode 100644 wp-content/plugins/updraftplus/udaddons/shopcart.png delete mode 100644 wp-content/plugins/updraftplus/udaddons/updraftplus-addons.php delete mode 100644 wp-content/plugins/updraftplus/udaddons/yes.png create mode 100644 wp-content/plugins/updraftplus/vendor/brumann/polyfill-unserialize/LICENSE create mode 100644 wp-content/plugins/updraftplus/vendor/brumann/polyfill-unserialize/README.md create mode 100644 wp-content/plugins/updraftplus/vendor/brumann/polyfill-unserialize/composer.json create mode 100644 wp-content/plugins/updraftplus/vendor/brumann/polyfill-unserialize/src/DisallowedClassesSubstitutor.php create mode 100644 wp-content/plugins/updraftplus/vendor/brumann/polyfill-unserialize/src/Unserialize.php delete mode 100644 wp-content/plugins/updraftplus/vendor/composer/include_paths.php delete mode 100644 wp-content/plugins/updraftplus/vendor/guzzlehttp/guzzle/Dockerfile create mode 100644 wp-content/plugins/updraftplus/vendor/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php create mode 100644 wp-content/plugins/updraftplus/vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php delete mode 100644 wp-content/plugins/updraftplus/vendor/phpseclib/phpseclib/phpseclib/System/SSH_Agent.php create mode 100644 wp-content/plugins/updraftplus/vendor/psr/http-message/docs/PSR7-Interfaces.md create mode 100644 wp-content/plugins/updraftplus/vendor/psr/http-message/docs/PSR7-Usage.md create mode 100644 wp-content/plugins/updraftplus/vendor/team-updraft/common-libs/src/updraft-rpc/class-udrpc2.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4/Factory.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Autoloader.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/DebugBar/Extension.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/DebugBar/Panel.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/DebugBar/PluginExtension.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/DebugBar/PluginPanel.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/DebugBar/ThemePanel.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Factory.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/InstalledPackage.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Metadata.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/OAuthSignature.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Plugin/Info.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Plugin/Package.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Plugin/Ui.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Plugin/Update.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Plugin/UpdateChecker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Scheduler.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/StateStore.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Theme/Package.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Theme/Update.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Theme/UpdateChecker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Update.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/UpdateChecker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/UpgraderStatus.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Utils.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/Api.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/BaseChecker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/BitBucketApi.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/GitHubApi.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/GitLabApi.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/PluginUpdateChecker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/Reference.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/Puc/v4p11/Vcs/ThemeUpdateChecker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/README.md delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/composer.json delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/css/puc-debug-bar.css delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/examples/plugin.json delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/examples/theme.json delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/js/debug-bar.js delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ca.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-cs_CZ.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-da_DK.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-de_DE.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_AR.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CL.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CO.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_CR.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_DO.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_ES.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_GT.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_HN.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_MX.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PE.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_PR.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_UY.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-es_VE.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fa_IR.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_CA.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-fr_FR.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-hu_HU.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-it_IT.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-ja.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_BE.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-nl_NL.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-pt_BR.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sl_SI.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-sv_SE.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.mo delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker-zh_CN.po delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/languages/plugin-update-checker.pot delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/license.txt delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/load-v4p11.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/plugin-update-checker.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/vendor/Parsedown.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/vendor/ParsedownLegacy.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/vendor/ParsedownModern.php delete mode 100644 wp-content/plugins/updraftplus/vendor/yahnis-elsts/plugin-update-checker/vendor/PucReadmeParser.php rename wp-content/plugins/wordfence/css/{activity-report-widget.1736960042.css => activity-report-widget.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{diff.1736960042.css => diff.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{fullLog.1736960042.css => fullLog.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{iptraf.1736960042.css => iptraf.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{jquery-ui-timepicker-addon.1736960042.css => jquery-ui-timepicker-addon.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{jquery-ui.min.1736960042.css => jquery-ui.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{jquery-ui.structure.min.1736960042.css => jquery-ui.structure.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{jquery-ui.theme.min.1736960042.css => jquery-ui.theme.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{care-global.1736960042.css => care-global.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{care.1736960042.css => care.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{free-global.1736960042.css => free-global.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{free.1736960042.css => free.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{premium-global.1736960042.css => premium-global.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{premium.1736960042.css => premium.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{response-global.1736960042.css => response-global.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{response-variables.1736960042.css => response-variables.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/license/{response.1736960042.css => response.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{main.1736960042.css => main.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{phpinfo.1736960042.css => phpinfo.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wf-adminbar.1736960042.css => wf-adminbar.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wf-colorbox.1736960042.css => wf-colorbox.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wf-font-awesome.1736960042.css => wf-font-awesome.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wf-global.1736960042.css => wf-global.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wf-ionicons.1736960042.css => wf-ionicons.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wf-onboarding.1736960042.css => wf-onboarding.1744125809.css} (99%) rename wp-content/plugins/wordfence/css/{wf-roboto-font.1736960042.css => wf-roboto-font.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wfselect2.min.1736960042.css => wfselect2.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/css/{wordfenceBox.1736960042.css => wordfenceBox.1744125809.css} (100%) rename wp-content/plugins/wordfence/js/{admin.1736960042.js => admin.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{admin.ajaxWatcher.1736960042.js => admin.ajaxWatcher.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{admin.liveTraffic.1736960042.js => admin.liveTraffic.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{chart.umd.1736960042.js => chart.umd.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{date.1736960042.js => date.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{jquery-ui-timepicker-addon.1736960042.js => jquery-ui-timepicker-addon.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{jquery.colorbox-min.1736960042.js => jquery.colorbox-min.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{jquery.colorbox.1736960042.js => jquery.colorbox.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{jquery.qrcode.min.1736960042.js => jquery.qrcode.min.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{jquery.tmpl.min.1736960042.js => jquery.tmpl.min.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{knockout-3.5.1.1736960042.js => knockout-3.5.1.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{wfdashboard.1736960042.js => wfdashboard.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{wfdropdown.1736960042.js => wfdropdown.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{wfglobal.1736960042.js => wfglobal.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{wfi18n.1736960042.js => wfi18n.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{wfonboarding.1736960042.js => wfonboarding.1744125809.js} (96%) rename wp-content/plugins/wordfence/js/{wfpopover.1736960042.js => wfpopover.1744125809.js} (100%) rename wp-content/plugins/wordfence/js/{wfselect2.min.1736960042.js => wfselect2.min.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{admin-global.1736960042.css => admin-global.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{admin.1736960042.css => admin.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{colorbox.1736960042.css => colorbox.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{embedded.1736960042.css => embedded.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{font-awesome.1736960042.css => font-awesome.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{ionicons.1736960042.css => ionicons.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{jquery-ui.min.1736960042.css => jquery-ui.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{jquery-ui.structure.min.1736960042.css => jquery-ui.structure.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{jquery-ui.theme.min.1736960042.css => jquery-ui.theme.min.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{login.1736960042.css => login.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/css/{woocommerce-account.1736960042.css => woocommerce-account.1744125809.css} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{admin-global.1736960042.js => admin-global.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{admin.1736960042.js => admin.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{chart.umd.1736960042.js => chart.umd.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{jquery.colorbox.1736960042.js => jquery.colorbox.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{jquery.colorbox.min.1736960042.js => jquery.colorbox.min.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{jquery.qrcode.min.1736960042.js => jquery.qrcode.min.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{jquery.tmpl.min.1736960042.js => jquery.tmpl.min.1744125809.js} (100%) rename wp-content/plugins/wordfence/modules/login-security/js/{login.1736960042.js => login.1744125809.js} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{academy-2460-rtl.css => academy-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{academy-2460.css => academy-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{admin-global-2460-rtl.css => admin-global-2500-rtl.css} (99%) rename wp-content/plugins/wordpress-seo/css/dist/{admin-global-2460.css => admin-global-2500.css} (99%) rename wp-content/plugins/wordpress-seo/css/dist/{adminbar-2460-rtl.css => adminbar-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{adminbar-2460.css => adminbar-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{ai-fix-assessments-2460-rtl.css => ai-fix-assessments-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{ai-fix-assessments-2460.css => ai-fix-assessments-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{ai-generator-2460-rtl.css => ai-generator-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{ai-generator-2460.css => ai-generator-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{alerts-2460-rtl.css => alerts-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{alerts-2460.css => alerts-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{black-friday-banner-2460-rtl.css => black-friday-banner-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{black-friday-banner-2460.css => black-friday-banner-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{block-editor-2460-rtl.css => block-editor-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{block-editor-2460.css => block-editor-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{dashboard-2460-rtl.css => dashboard-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{dashboard-2460.css => dashboard-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{edit-page-2460-rtl.css => edit-page-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{edit-page-2460.css => edit-page-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{elementor-2460-rtl.css => elementor-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{elementor-2460.css => elementor-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{featured-image-2460-rtl.css => featured-image-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{featured-image-2460.css => featured-image-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{filter-explanation-2460-rtl.css => filter-explanation-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{filter-explanation-2460.css => filter-explanation-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{first-time-configuration-2460-rtl.css => first-time-configuration-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{first-time-configuration-2460.css => first-time-configuration-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{general-page-2460-rtl.css => general-page-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{general-page-2460.css => general-page-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{icons-2460-rtl.css => icons-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{icons-2460.css => icons-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{inside-editor-2460-rtl.css => inside-editor-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{inside-editor-2460.css => inside-editor-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{introductions-2460-rtl.css => introductions-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{introductions-2460.css => introductions-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{metabox-2460-rtl.css => metabox-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{metabox-2460.css => metabox-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{metabox-primary-category-2460-rtl.css => metabox-primary-category-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{metabox-primary-category-2460.css => metabox-primary-category-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{modal-2460-rtl.css => modal-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{modal-2460.css => modal-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{monorepo-2460-rtl.css => monorepo-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{monorepo-2460.css => monorepo-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{new-settings-2460-rtl.css => new-settings-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{new-settings-2460.css => new-settings-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{notifications-2460-rtl.css => notifications-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{notifications-2460.css => notifications-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{score_icon-2460-rtl.css => score_icon-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{score_icon-2460.css => score_icon-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{structured-data-blocks-2460-rtl.css => structured-data-blocks-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{structured-data-blocks-2460.css => structured-data-blocks-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{support-2460-rtl.css => support-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{support-2460.css => support-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{tailwind-2460.css => tailwind-2500.css} (74%) rename wp-content/plugins/wordpress-seo/css/dist/{toggle-switch-2460-rtl.css => toggle-switch-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{toggle-switch-2460.css => toggle-switch-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{tooltips-2460-rtl.css => tooltips-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{tooltips-2460.css => tooltips-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{workouts-2460-rtl.css => workouts-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{workouts-2460.css => workouts-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{wpseo-dismissible-2460-rtl.css => wpseo-dismissible-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{wpseo-dismissible-2460.css => wpseo-dismissible-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{yoast-extensions-2460-rtl.css => yoast-extensions-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{yoast-extensions-2460.css => yoast-extensions-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{yst_plugin_tools-2460-rtl.css => yst_plugin_tools-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{yst_plugin_tools-2460.css => yst_plugin_tools-2500.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{yst_seo_score-2460-rtl.css => yst_seo_score-2500-rtl.css} (100%) rename wp-content/plugins/wordpress-seo/css/dist/{yst_seo_score-2460.css => yst_seo_score-2500.css} (100%) create mode 100644 wp-content/plugins/wordpress-seo/js/dist/externals/dashboardFrontend.js create mode 100644 wp-content/plugins/wordpress-seo/packages/js/images/yoast-connect-google-site-kit-success.svg create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/application/search-rankings/search-ranking-compare-repository.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/application/tracking/setup-steps-tracking.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/application/traffic/organic-sessions-compare-repository.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/application/traffic/organic-sessions-daily-repository.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/analytics-4/failed-request-exception.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/analytics-4/invalid-request-exception.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/analytics-4/unexpected-response-exception.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/search-console/unexpected-response-exception.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/search-rankings/comparison-search-ranking-data.php rename wp-content/plugins/wordpress-seo/src/dashboard/domain/search-rankings/{search-data.php => search-ranking-data.php} (69%) create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/time-based-seo-metrics/data-source-not-available-exception.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/traffic/comparison-traffic-data.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/traffic/daily-traffic-data.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/domain/traffic/traffic-data.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/analytics-4/analytics-4-parameters.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/analytics-4/site-kit-analytics-4-adapter.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/analytics-4/site-kit-analytics-4-api-call.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/endpoints/setup-steps-tracking-endpoint.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/search-console/site-kit-search-console-api-call.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/tracking/setup-steps-tracking-repository-interface.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/infrastructure/tracking/setup-steps-tracking-repository.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/user-interface/setup/setup-flow-interceptor.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/user-interface/setup/setup-url-interceptor.php create mode 100644 wp-content/plugins/wordpress-seo/src/dashboard/user-interface/tracking/setup-steps-tracking-route.php create mode 100644 wp-content/plugins/wordpress-seo/src/deprecated/src/integrations/admin/unsupported-php-version-notice.php delete mode 100644 wp-content/plugins/wordpress-seo/src/integrations/admin/unsupported-php-version-notice.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/composer/autoload_files.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/CHANGELOG.md delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Configs/default.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Configs/version.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Configuration.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Exceptions/EmptyProperty.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Exceptions/InvalidOperatorType.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Exceptions/InvalidType.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Exceptions/InvalidVersionComparisonString.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Facades/wordpress.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Host.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Interfaces/DismissStorage.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Interfaces/Listener.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Interfaces/Message.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Interfaces/MessagePresenter.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Interfaces/Requirement.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Interfaces/VersionDetector.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/MessageDismisser.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/MessageFormatter.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Messages/BasicMessage.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Messages/HostMessage.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Messages/InvalidVersionRequirementMessage.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Messages/NullMessage.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Messages/UpgradePhpMessage.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/MessagesManager.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/Presenters/WPMessagePresenter.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/RequirementsChecker.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/VersionRequirement.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/WPDismissOption.php delete mode 100644 wp-content/plugins/wordpress-seo/vendor/yoast/whip/src/WPMessageDismissListener.php create mode 100644 wp-content/plugins/wp-security-audit-log/classes/Controllers/slack/class-slack-api.php create mode 100644 wp-content/plugins/wp-security-audit-log/classes/Controllers/slack/class-slack.php create mode 100644 wp-content/plugins/wp-security-audit-log/classes/Controllers/slack/index.php create mode 100644 wp-content/plugins/wp-security-audit-log/img/help/mlr.jpg delete mode 100644 wp-content/plugins/wp-security-audit-log/js/src/jquery-steps/build/jquery.steps.js delete mode 100644 wp-content/plugins/wp-security-audit-log/js/src/jquery-steps/build/jquery.steps.min.js delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/emails/partials/layout_media_queries.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/emails/partials/layout_media_queries.min.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/emails/partials/notifications_media_queries.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/emails/partials/notifications_media_queries.min.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/entry-print.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/entry-print.min.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/divi/wpforms-base.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/divi/wpforms-base.min.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/divi/wpforms-full.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/divi/wpforms-full.min.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/admin-settings-square.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/admin-settings-square.min.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/divi/wpforms-square-card-placeholder.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/divi/wpforms-square-card-placeholder.min.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/divi/wpforms-square.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/divi/wpforms-square.min.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/wpforms-square-card-placeholder.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/wpforms-square-card-placeholder.min.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/wpforms-square.css create mode 100644 wp-content/plugins/wpforms-lite/assets/css/integrations/square/wpforms-square.min.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/wpforms-base.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/wpforms-base.min.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/wpforms-full.css delete mode 100644 wp-content/plugins/wpforms-lite/assets/css/wpforms-full.min.css create mode 100644 wp-content/plugins/wpforms-lite/assets/images/addon-icon-make.png create mode 100644 wp-content/plugins/wpforms-lite/assets/images/addon-icon-pipedrive.png create mode 100644 wp-content/plugins/wpforms-lite/assets/images/icon-tags.svg create mode 100644 wp-content/plugins/wpforms-lite/assets/images/integrations/ai/pin-chat.svg create mode 100644 wp-content/plugins/wpforms-lite/assets/images/integrations/ai/unpin-chat.svg create mode 100644 wp-content/plugins/wpforms-lite/assets/js/admin/builder/field-map.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/admin/builder/field-map.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/admin/builder/payments-utils.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/admin/builder/payments-utils.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/admin/builder/smart-tags.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/admin/builder/smart-tags.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/frontend/fields/address.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/frontend/fields/address.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/ai/chat-element/wpforms-ai-dock.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/ai/chat-element/wpforms-ai-dock.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/square/admin/builder-square.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/square/admin/builder-square.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/square/admin/settings-square.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/square/admin/settings-square.min.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/square/wpforms-square.js create mode 100644 wp-content/plugins/wpforms-lite/assets/js/integrations/square/wpforms-square.min.js delete mode 100644 wp-content/plugins/wpforms-lite/includes/admin/class-install-skin.php delete mode 100644 wp-content/plugins/wpforms-lite/includes/functions/unused.php create mode 100644 wp-content/plugins/wpforms-lite/src/Forms/Fields/Address/Frontend.php delete mode 100644 wp-content/plugins/wpforms-lite/src/Helpers/PluginSilentUpgraderSkin.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/AddonCompatibility.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Builder/Enqueues.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Builder/Notifications.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Builder/Settings.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Builder/Traits/Content.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Connect.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Entries.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Notices.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Payments/SingleActionsHandler.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/Settings.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Admin/WebhookSettings.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Api.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/WebhookEvent.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/WebhookRoute.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Webhooks/Base.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Webhooks/PaymentCreated.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Webhooks/PaymentUpdated.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Webhooks/RefundUpdated.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Webhooks/SubscriptionCreated.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/Webhooks/SubscriptionUpdated.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Api/WebhooksManager.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Connection.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/CurlCompatibility.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Fields/Square.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Frontend.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Helpers.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Integrations/BlockEditor.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Integrations/Divi.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Integrations/Elementor.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Integrations/IntegrationInterface.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Integrations/Loader.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Process.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Square.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/Tasks.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Square/WebhooksHealthCheck.php create mode 100644 wp-content/plugins/wpforms-lite/src/Integrations/Stripe/Admin/Builder/Notifications.php create mode 100644 wp-content/plugins/wpforms-lite/src/Migrations/Tasks/UpgradeBaseTask.php create mode 100644 wp-content/plugins/wpforms-lite/src/Tasks/Actions/SquareSubscriptionTransactionIDTask.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/LICENSE create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/AbstractLogger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/InvalidArgumentException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/LogLevel.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/LoggerAwareInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/LoggerAwareTrait.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/LoggerInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/LoggerTrait.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/psr/log/Psr/Log/NullLogger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-iconv/bootstrap80.php delete mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-mbstring/Resources/mb_convert_variables.php8 create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-mbstring/bootstrap80.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/LICENSE create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/Php80.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/PhpToken.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php create mode 100644 wp-content/plugins/wpforms-lite/vendor/symfony/polyfill-php80/bootstrap.php rename wp-content/plugins/{wordpress-seo/vendor/yoast/whip => wpforms-lite/vendor_prefixed/apimatic/core-interfaces}/LICENSE (97%) create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Authentication/AuthGroup.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Authentication/AuthInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/ContextInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Format.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Logger/ApiLoggerInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/NonEmptyParamInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/ParamInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/RequestArraySerialization.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/RequestInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/RequestMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/RequestSetterInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Request/TypeValidatorInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Core/Response/ResponseInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Http/HttpClientInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Http/HttpConfigurations.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Http/RetryOption.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Sdk/ConverterInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core-interfaces/src/Sdk/ExceptionInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/LICENSE create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/ApiCall.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Authentication/Auth.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Authentication/CoreAuth.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Client.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/ClientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Exceptions/AuthValidationException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/ApiLogger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/Configuration/BaseHttpLoggingConfiguration.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/Configuration/LoggingConfiguration.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/Configuration/RequestConfiguration.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/Configuration/ResponseConfiguration.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/ConsoleLogger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/LoggerConstants.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Logger/NullApiLogger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/AdditionalFormParams.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/AdditionalHeaderParams.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/AdditionalQueryParams.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/BodyParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/EncodedParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/FormParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/HeaderParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/MultipleParams.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/Parameter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/QueryParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Parameters/TemplateParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/Request.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Request/RequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/Context.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/ResponseError.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/ResponseHandler.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/Types/DeserializableType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/Types/ErrorType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/Types/ResponseMultiType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Response/Types/ResponseType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/BodyMatchers/BodyComparator.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/BodyMatchers/BodyMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/BodyMatchers/KeysAndValuesBodyMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/BodyMatchers/KeysBodyMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/BodyMatchers/NativeBodyMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/BodyMatchers/RawBodyMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/CoreTestCase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/HeadersMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/StatusCodeMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/TestCase/TestParam.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/CallbackCatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/Sdk/CoreApiResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/Sdk/CoreCallback.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/Sdk/CoreContext.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/Sdk/CoreFileWrapper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/Sdk/CoreRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Types/Sdk/CoreResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Utils/CoreHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Utils/DateHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Utils/JsonHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Utils/XmlDeserializer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/src/Utils/XmlSerializer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/ApiCallTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/AuthenticationTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/ClientTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/CoreTestCaseTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/EndToEndTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/LoggerTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Authentication/FormAuthManager.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Authentication/HeaderAuthManager.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Authentication/QueryAuthManager.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Logger/LogEntry.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Logger/MockLogger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Logger/MockPrinter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/MockConverter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/MockHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/MockHttpClient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/Customer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockChild1.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockChild2.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockChild3.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockClass.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockException1.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockException2.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/MockException3.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/Order.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Other/Person.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Response/MockResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Types/MockApiResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Types/MockCallback.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Types/MockContext.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Types/MockCoreResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Types/MockFileWrapper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/Mocking/Types/MockRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/TypesTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/UtilsTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/core/tests/bootstrap.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/example/Address.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/example/Contact.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/example/run.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/src/AnyOfValidationException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/src/JsonMapper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/src/JsonMapperException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/src/OneOfValidationException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/src/TypeCombination.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/Array.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/Broken.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/ClassWithCtor.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/ComplexClassWithCtor.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/DependencyInjector.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/DerivedClass.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/DerivedClass2.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/FactoryMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/FactoryMethodWithError.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/JsonMapperCommentsDiscardedException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/JsonMapperForCheckingAllowedPaths.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/Logger.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/MapsWithSetters.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/Php7TypedClass.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/Php7_1TypedClass.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/PrivateWithSetter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/Simple.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/SimpleBase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/SimpleBaseWithMissingDiscrimType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/JsonMapperTest/ValueObject.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/bootstrap.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/MultiTypeJsonMapper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/MultiTypeTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Atom.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Car.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/ComplexCaseA.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/ComplexCaseB.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/DateTimeHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/DaysEnum.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Deer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Employee.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Evening.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Lion.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/MonthNameEnum.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/MonthNumberEnum.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Morning.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Orbit.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/OuterArrayCase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Person.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Postman.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/SimpleCase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/SimpleCaseA.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/SimpleCaseB.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Vehicle.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/multitypetest/model/Vehicle2.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/namespacetest/NamespaceTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/namespacetest/Unit.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/namespacetest/UnitData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/namespacetest/model/Group.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/namespacetest/model/User.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/namespacetest/model/UserList.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/othernamespace/Foo.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/jsonmapper/tests/othernamespace/Programmers.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/LICENSE create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/src/Configuration.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/src/HttpClient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/src/Request/Body.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/src/Request/Request.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/src/Response.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/tests/BodyTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/tests/Mocking/HttpClientChild.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/tests/RequestTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/tests/ResponseTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/apimatic/unirest-php/tests/bootstrap.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/php-jsonpointer/php-jsonpointer/src/Rs/Json/Pointer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/php-jsonpointer/php-jsonpointer/src/Rs/Json/Pointer/InvalidJsonException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/php-jsonpointer/php-jsonpointer/src/Rs/Json/Pointer/InvalidPointerException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/php-jsonpointer/php-jsonpointer/src/Rs/Json/Pointer/NonWalkableJsonException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/php-jsonpointer/php-jsonpointer/src/Rs/Json/Pointer/NonexistentValueReferencedException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/LICENSE create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/example-autoload.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/ApiHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/ApplePayApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/BankAccountsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/BaseApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/BookingCustomAttributesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/BookingsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CardsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CashDrawersApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CatalogApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CheckoutApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CustomerCustomAttributesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CustomerGroupsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CustomerSegmentsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/CustomersApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/DevicesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/DisputesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/EmployeesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/EventsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/GiftCardActivitiesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/GiftCardsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/InventoryApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/InvoicesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/LaborApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/LocationCustomAttributesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/LocationsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/LoyaltyApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/MerchantCustomAttributesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/MerchantsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/MobileAuthorizationApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/OAuthApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/OrderCustomAttributesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/OrdersApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/PaymentsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/PayoutsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/RefundsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/SitesApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/SnippetsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/SubscriptionsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/TeamApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/TerminalApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/TransactionsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/V1TransactionsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/VendorsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Apis/WebhookSubscriptionsApi.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Authentication/BearerAuthCredentialsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Authentication/BearerAuthManager.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/BearerAuthCredentials.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/ConfigurationDefaults.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/ConfigurationInterface.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Environment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Exceptions/ApiException.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Http/ApiResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Http/HttpCallBack.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Http/HttpContext.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Http/HttpMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Http/HttpRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Http/HttpResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ACHDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AcceptDisputeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AcceptedPaymentMethods.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AccumulateLoyaltyPointsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AccumulateLoyaltyPointsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ActionCancelReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ActivityType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AddGroupToCustomerResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AdditionalRecipient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Address.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AdjustLoyaltyPointsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AdjustLoyaltyPointsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AfterpayDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ApplicationDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ApplicationDetailsExternalSquareProduct.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ApplicationType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/AppointmentSegment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ArchivedState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Availability.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BankAccount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BankAccountPaymentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BankAccountStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BankAccountType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchChangeInventoryRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchChangeInventoryResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchDeleteCatalogObjectsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchDeleteCatalogObjectsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveCatalogObjectsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveCatalogObjectsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveInventoryChangesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveInventoryChangesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveInventoryCountsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveInventoryCountsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveOrdersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchRetrieveOrdersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchUpsertCatalogObjectsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BatchUpsertCatalogObjectsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Booking.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingBookingSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingCreatorDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingCreatorDetailsCreatorType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingCustomAttributeDeleteRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingCustomAttributeDeleteResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingCustomAttributeUpsertRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingCustomAttributeUpsertResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BookingStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BreakType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ACHDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AcceptDisputeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AcceptedPaymentMethodsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AccumulateLoyaltyPointsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AccumulateLoyaltyPointsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AddGroupToCustomerResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AdditionalRecipientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AddressBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AdjustLoyaltyPointsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AdjustLoyaltyPointsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AfterpayDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ApplicationDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AppointmentSegmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/AvailabilityBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BankAccountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BankAccountPaymentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchChangeInventoryRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchChangeInventoryResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchDeleteCatalogObjectsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchDeleteCatalogObjectsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveCatalogObjectsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveCatalogObjectsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveInventoryChangesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveInventoryChangesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveInventoryCountsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveInventoryCountsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveOrdersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchRetrieveOrdersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchUpsertCatalogObjectsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BatchUpsertCatalogObjectsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BookingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BookingCreatorDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BookingCustomAttributeDeleteRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BookingCustomAttributeDeleteResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BookingCustomAttributeUpsertRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BookingCustomAttributeUpsertResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BreakTypeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateCustomerDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateCustomersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateCustomersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateTeamMembersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateTeamMembersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateVendorsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkCreateVendorsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteBookingCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteBookingCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteCustomersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteCustomersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteLocationCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteLocationCustomAttributesRequestLocationCustomAttributeDeleteRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteLocationCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteLocationCustomAttributesResponseLocationCustomAttributeDeleteResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteMerchantCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteMerchantCustomAttributesRequestMerchantCustomAttributeDeleteRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteMerchantCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteMerchantCustomAttributesResponseMerchantCustomAttributeDeleteResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteOrderCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteOrderCustomAttributesRequestDeleteCustomAttributeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkDeleteOrderCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveBookingsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveBookingsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveCustomersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveCustomersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveTeamMemberBookingProfilesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveTeamMemberBookingProfilesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveVendorsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkRetrieveVendorsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkSwapPlanRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkSwapPlanResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateCustomerDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateCustomersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateCustomersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateTeamMembersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateTeamMembersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateVendorsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpdateVendorsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertBookingCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertBookingCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertCustomerCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertCustomerCustomAttributesRequestCustomerCustomAttributeUpsertRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertCustomerCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertCustomerCustomAttributesResponseCustomerCustomAttributeUpsertResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertLocationCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertLocationCustomAttributesRequestLocationCustomAttributeUpsertRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertLocationCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertLocationCustomAttributesResponseLocationCustomAttributeUpsertResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertMerchantCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertMerchantCustomAttributesRequestMerchantCustomAttributeUpsertRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertMerchantCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertMerchantCustomAttributesResponseMerchantCustomAttributeUpsertResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertOrderCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertOrderCustomAttributesRequestUpsertCustomAttributeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BulkUpsertOrderCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BusinessAppointmentSettingsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BusinessBookingProfileBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BusinessHoursBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BusinessHoursPeriodBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/BuyNowPayLaterDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CalculateLoyaltyPointsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CalculateLoyaltyPointsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CalculateOrderRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CalculateOrderResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelBookingRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelBookingResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelInvoiceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelInvoiceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelLoyaltyPromotionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelPaymentByIdempotencyKeyRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelPaymentByIdempotencyKeyResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelPaymentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelTerminalActionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelTerminalCheckoutResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CancelTerminalRefundResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CaptureTransactionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CardPaymentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CardPaymentTimelineBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CashAppDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CashDrawerDeviceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CashDrawerShiftBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CashDrawerShiftEventBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CashDrawerShiftSummaryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CashPaymentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogAvailabilityPeriodBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCategoryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCustomAttributeDefinitionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCustomAttributeDefinitionNumberConfigBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCustomAttributeDefinitionSelectionConfigBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCustomAttributeDefinitionSelectionConfigCustomAttributeSelectionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCustomAttributeDefinitionStringConfigBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogCustomAttributeValueBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogDiscountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogEcomSeoDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogIdMappingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogImageBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogInfoResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogInfoResponseLimitsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemFoodAndBeverageDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemFoodAndBeverageDetailsDietaryPreferenceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemFoodAndBeverageDetailsIngredientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemModifierListInfoBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemOptionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemOptionForItemBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemOptionValueBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemOptionValueForItemVariationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogItemVariationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogMeasurementUnitBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogModifierBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogModifierListBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogModifierOverrideBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogObjectBatchBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogObjectBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogObjectCategoryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogObjectReferenceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogPricingRuleBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogProductSetBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryExactBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryItemVariationsForItemOptionValuesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryItemsForItemOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryItemsForModifierListBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryItemsForTaxBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryPrefixBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryRangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQuerySetBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQuerySortedAttributeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQueryTextBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQuickAmountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogQuickAmountsSettingsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogStockConversionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogSubscriptionPlanBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogSubscriptionPlanVariationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogTaxBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogTimePeriodBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CatalogV1IdBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CategoryPathToRootNodeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ChangeBillingAnchorDateRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ChangeBillingAnchorDateResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ChargeRequestAdditionalRecipientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ChargeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ChargeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutLocationSettingsBrandingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutLocationSettingsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutLocationSettingsCouponsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutLocationSettingsPolicyBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutLocationSettingsTippingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutMerchantSettingsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutMerchantSettingsPaymentMethodsAfterpayClearpayBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutMerchantSettingsPaymentMethodsAfterpayClearpayEligibilityRangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutMerchantSettingsPaymentMethodsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutMerchantSettingsPaymentMethodsPaymentMethodBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CheckoutOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ClearpayDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CloneOrderRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CloneOrderResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CollectedDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CompletePaymentRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CompletePaymentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ComponentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ConfirmationDecisionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ConfirmationOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CoordinatesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateBookingCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateBookingCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateBookingRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateBookingResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateBreakTypeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateBreakTypeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCatalogImageRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCatalogImageResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCheckoutRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCheckoutResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerCardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerGroupRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerGroupResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateCustomerResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateDeviceCodeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateDeviceCodeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateDisputeEvidenceFileRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateDisputeEvidenceFileResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateDisputeEvidenceTextRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateDisputeEvidenceTextResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateGiftCardActivityRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateGiftCardActivityResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateGiftCardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateGiftCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateInvoiceAttachmentRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateInvoiceAttachmentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateInvoiceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateInvoiceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateJobRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateJobResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLocationCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLocationCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLocationRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLocationResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLoyaltyAccountRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLoyaltyAccountResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLoyaltyPromotionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLoyaltyPromotionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLoyaltyRewardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateLoyaltyRewardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateMerchantCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateMerchantCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateMobileAuthorizationCodeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateMobileAuthorizationCodeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateOrderCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateOrderCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateOrderRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateOrderResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreatePaymentLinkRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreatePaymentLinkResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreatePaymentRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreatePaymentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateRefundRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateRefundResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateShiftRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateShiftResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTeamMemberRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTeamMemberResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTerminalActionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTerminalActionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTerminalCheckoutRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTerminalCheckoutResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTerminalRefundRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateTerminalRefundResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateVendorRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateVendorResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateWebhookSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CreateWebhookSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomAttributeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomAttributeDefinitionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomAttributeFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomFieldBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerAddressFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerCreationSourceFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerCustomAttributeFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerCustomAttributeFilterValueBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerCustomAttributeFiltersBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerGroupBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerPreferencesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerSegmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerSortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerTaxIdsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/CustomerTextFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DataCollectionOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DateRangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteBookingCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteBookingCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteBreakTypeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCatalogObjectResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCustomerCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCustomerCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCustomerCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCustomerGroupResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCustomerRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteCustomerResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteDisputeEvidenceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteInvoiceAttachmentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteInvoiceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteInvoiceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteLocationCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteLocationCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteLoyaltyRewardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteMerchantCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteMerchantCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteOrderCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteOrderCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeletePaymentLinkResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteShiftResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteSnippetResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteSubscriptionActionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeleteWebhookSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeprecatedCreateDisputeEvidenceFileRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeprecatedCreateDisputeEvidenceFileResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeprecatedCreateDisputeEvidenceTextRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeprecatedCreateDisputeEvidenceTextResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DestinationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DestinationDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DestinationDetailsCardRefundDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DestinationDetailsCashRefundDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DestinationDetailsExternalRefundDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceAttributesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceCheckoutOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceCodeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsApplicationDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsBatteryDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsCardReaderDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsEthernetDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsMeasurementBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsNetworkInterfaceDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceComponentDetailsWiFiDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceMetadataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DeviceStatusBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DigitalWalletDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DisableCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DisableEventsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DismissTerminalActionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DismissTerminalCheckoutResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DismissTerminalRefundResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DisputeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DisputeEvidenceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DisputeEvidenceFileBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/DisputedPaymentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EmployeeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EmployeeWageBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EnableEventsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ErrorBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EventBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EventDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EventMetadataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/EventTypeMetadataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ExternalPaymentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FilterValueBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FloatNumberRangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentDeliveryDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentFulfillmentEntryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentPickupDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentPickupDetailsCurbsidePickupDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentRecipientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/FulfillmentShipmentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetBankAccountByV1IdResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetBankAccountResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetBreakTypeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetDeviceCodeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetDeviceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetEmployeeWageResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetInvoiceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetPaymentRefundResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetPaymentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetPayoutResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetShiftResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetTeamMemberWageResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetTerminalActionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetTerminalCheckoutResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GetTerminalRefundResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityActivateBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityAdjustDecrementBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityAdjustIncrementBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityBlockBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityClearBalanceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityDeactivateBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityImportBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityImportReversalBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityLoadBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityRedeemBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityRefundBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityTransferBalanceFromBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityTransferBalanceToBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityUnblockBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardActivityUnlinkedActivityRefundBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/GiftCardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InventoryAdjustmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InventoryAdjustmentGroupBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InventoryChangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InventoryCountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InventoryPhysicalCountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InventoryTransferBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceAcceptedPaymentMethodsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceAttachmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceCustomFieldBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoicePaymentReminderBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoicePaymentRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceRecipientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceRecipientTaxIdsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/InvoiceSortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ItemVariationLocationOverridesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/JobAssignmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/JobBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LinkCustomerToGiftCardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LinkCustomerToGiftCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBankAccountsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBankAccountsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBookingCustomAttributeDefinitionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBookingCustomAttributeDefinitionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBookingCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBookingCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBookingsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBookingsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBreakTypesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListBreakTypesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCardsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCardsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCashDrawerShiftEventsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCashDrawerShiftEventsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCashDrawerShiftsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCashDrawerShiftsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCatalogRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCatalogResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerCustomAttributeDefinitionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerCustomAttributeDefinitionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerGroupsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerGroupsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerSegmentsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomerSegmentsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListCustomersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDeviceCodesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDeviceCodesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDevicesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDevicesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDisputeEvidenceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDisputeEvidenceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDisputesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListDisputesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListEmployeeWagesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListEmployeeWagesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListEmployeesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListEmployeesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListEventTypesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListEventTypesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListGiftCardActivitiesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListGiftCardActivitiesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListGiftCardsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListGiftCardsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListInvoicesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListInvoicesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListJobsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListJobsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationBookingProfilesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationBookingProfilesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationCustomAttributeDefinitionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationCustomAttributeDefinitionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLocationsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLoyaltyProgramsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLoyaltyPromotionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListLoyaltyPromotionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListMerchantCustomAttributeDefinitionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListMerchantCustomAttributeDefinitionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListMerchantCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListMerchantCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListMerchantsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListMerchantsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListOrderCustomAttributeDefinitionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListOrderCustomAttributeDefinitionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListOrderCustomAttributesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListOrderCustomAttributesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPaymentLinksRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPaymentLinksResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPaymentRefundsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPaymentRefundsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPaymentsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPaymentsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPayoutEntriesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPayoutEntriesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPayoutsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListPayoutsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListRefundsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListRefundsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListSitesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListSubscriptionEventsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListSubscriptionEventsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListTeamMemberBookingProfilesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListTeamMemberBookingProfilesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListTeamMemberWagesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListTeamMemberWagesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListTransactionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListTransactionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListWebhookEventTypesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListWebhookEventTypesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListWebhookSubscriptionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListWebhookSubscriptionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListWorkweekConfigsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ListWorkweekConfigsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LocationBookingProfileBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LocationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyAccountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyAccountExpiringPointDeadlineBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyAccountMappingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventAccumulatePointsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventAccumulatePromotionPointsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventAdjustPointsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventCreateRewardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventDateTimeFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventDeleteRewardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventExpirePointsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventLocationFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventLoyaltyAccountFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventOrderFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventOtherBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventRedeemRewardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyEventTypeFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramAccrualRuleBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramAccrualRuleCategoryDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramAccrualRuleItemVariationDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramAccrualRuleSpendDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramAccrualRuleVisitDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramExpirationPolicyBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramRewardDefinitionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramRewardTierBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyProgramTerminologyBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyPromotionAvailableTimeDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyPromotionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyPromotionIncentiveBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyPromotionIncentivePointsAdditionDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyPromotionIncentivePointsMultiplierDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyPromotionTriggerLimitBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/LoyaltyRewardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/MBreakBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/MeasurementUnitBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/MeasurementUnitCustomBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/MerchantBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ModifierLocationOverridesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/MoneyBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ObtainTokenRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ObtainTokenResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OfflinePaymentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderCreatedBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderCreatedObjectBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderEntryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentDeliveryDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentFulfillmentEntryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentPickupDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentPickupDetailsCurbsidePickupDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentRecipientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentShipmentDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentUpdatedBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentUpdatedObjectBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderFulfillmentUpdatedUpdateBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemAppliedDiscountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemAppliedServiceChargeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemAppliedTaxBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemDiscountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemModifierBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemPricingBlocklistsBlockedDiscountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemPricingBlocklistsBlockedTaxBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemPricingBlocklistsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderLineItemTaxBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderMoneyAmountsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderPricingOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderQuantityUnitBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnDiscountBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnLineItemBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnLineItemModifierBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnServiceChargeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnTaxBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderReturnTipBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderRewardBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderRoundingAdjustmentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderServiceChargeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderSourceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderUpdatedBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/OrderUpdatedObjectBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaginationCursorBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PauseSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PauseSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PayOrderRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PayOrderResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityAppFeeRefundDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityAppFeeRevenueDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityAutomaticSavingsDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityAutomaticSavingsReversedDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityChargeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityDepositFeeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityDepositFeeReversedDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityDisputeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityFeeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityFreeProcessingDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityHoldAdjustmentDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityOpenDisputeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityOtherAdjustmentDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityOtherDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityRefundDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityReleaseAdjustmentDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityReserveHoldDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityReserveReleaseDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivitySquareCapitalPaymentDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivitySquareCapitalReversedPaymentDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivitySquarePayrollTransferDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivitySquarePayrollTransferReversedDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityTaxOnFeeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityThirdPartyFeeDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBalanceActivityThirdPartyFeeRefundDetailBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentLinkBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentLinkRelatedResourcesBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PaymentRefundBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PayoutBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PayoutEntryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PayoutFeeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PhaseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PhaseInputBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PrePopulatedDataBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ProcessingFeeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PublishInvoiceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/PublishInvoiceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/QrCodeOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/QuantityRatioBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/QuickPayBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ReceiptOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RedeemLoyaltyRewardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RedeemLoyaltyRewardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RefundBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RefundPaymentRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RefundPaymentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RegisterDomainRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RegisterDomainResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RemoveGroupFromCustomerResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ResumeSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ResumeSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveBookingCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveBookingCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveBookingCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveBookingCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveBookingResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveBusinessBookingProfileResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCashDrawerShiftRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCashDrawerShiftResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCatalogObjectRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCatalogObjectResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerGroupResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveCustomerSegmentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveDisputeEvidenceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveDisputeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveEmployeeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveGiftCardFromGANRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveGiftCardFromGANResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveGiftCardFromNonceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveGiftCardFromNonceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveGiftCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryAdjustmentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryChangesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryChangesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryCountRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryCountResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryPhysicalCountResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveInventoryTransferResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveJobResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationBookingProfileResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLocationSettingsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLoyaltyAccountResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLoyaltyProgramResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLoyaltyPromotionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveLoyaltyRewardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveMerchantCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveMerchantCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveMerchantCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveMerchantCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveMerchantResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveMerchantSettingsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveOrderCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveOrderCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveOrderCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveOrderCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveOrderResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrievePaymentLinkResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveSnippetResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveTeamMemberBookingProfileResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveTeamMemberResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveTokenStatusResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveTransactionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveVendorResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveWageSettingResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RetrieveWebhookSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RevokeTokenRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RevokeTokenResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/RiskEvaluationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SaveCardOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchAvailabilityFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchAvailabilityQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchAvailabilityRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchAvailabilityResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchCatalogItemsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchCatalogItemsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchCatalogObjectsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchCatalogObjectsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchCustomersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchCustomersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchEventsFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchEventsQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchEventsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchEventsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchEventsSortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchInvoicesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchInvoicesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyAccountsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyAccountsRequestLoyaltyAccountQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyAccountsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyEventsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyEventsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyRewardsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyRewardsRequestLoyaltyRewardQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchLoyaltyRewardsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersCustomerFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersDateTimeFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersFulfillmentFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersSortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersSourceFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchOrdersStateFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchShiftsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchShiftsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchSubscriptionsFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchSubscriptionsQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchSubscriptionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchSubscriptionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTeamMembersFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTeamMembersQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTeamMembersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTeamMembersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTerminalActionsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTerminalActionsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTerminalCheckoutsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTerminalCheckoutsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTerminalRefundsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchTerminalRefundsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchVendorsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchVendorsRequestFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchVendorsRequestSortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SearchVendorsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SegmentFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SelectOptionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SelectOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShiftBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShiftFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShiftQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShiftSortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShiftWageBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShiftWorkdayBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/ShippingFeeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SignatureImageBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SignatureOptionsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SiteBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SnippetBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SnippetResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SourceApplicationBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SquareAccountDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/StandardUnitDescriptionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/StandardUnitDescriptionGroupBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubmitEvidenceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionActionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionEventBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionEventInfoBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionPhaseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionPricingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionSourceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SubscriptionTestResultBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SwapPlanRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/SwapPlanResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TaxIdsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TeamMemberAssignedLocationsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TeamMemberBookingProfileBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TeamMemberBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TeamMemberWageBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TenderBankAccountDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TenderBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TenderBuyNowPayLaterDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TenderCardDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TenderCashDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TenderSquareAccountDetailsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalActionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalActionQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalActionQueryFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalActionQuerySortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalCheckoutBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalCheckoutQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalCheckoutQueryFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalCheckoutQuerySortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalRefundBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalRefundQueryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalRefundQueryFilterBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TerminalRefundQuerySortBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TestWebhookSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TestWebhookSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TimeRangeBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TipSettingsBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/TransactionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UnlinkCustomerFromGiftCardRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UnlinkCustomerFromGiftCardResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateBookingCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateBookingCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateBookingRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateBookingResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateBreakTypeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateBreakTypeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCatalogImageRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCatalogImageResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCustomerCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCustomerCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCustomerGroupRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCustomerGroupResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCustomerRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateCustomerResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateInvoiceRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateInvoiceResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateItemModifierListsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateItemModifierListsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateItemTaxesRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateItemTaxesResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateJobRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateJobResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateLocationCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateLocationCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateLocationRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateLocationResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateLocationSettingsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateLocationSettingsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateMerchantCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateMerchantCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateMerchantSettingsRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateMerchantSettingsResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateOrderCustomAttributeDefinitionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateOrderCustomAttributeDefinitionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateOrderRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateOrderResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdatePaymentLinkRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdatePaymentLinkResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdatePaymentRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdatePaymentResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateShiftRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateShiftResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateTeamMemberRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateTeamMemberResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateVendorRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateVendorResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWageSettingRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWageSettingResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWebhookSubscriptionRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWebhookSubscriptionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWebhookSubscriptionSignatureKeyRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWebhookSubscriptionSignatureKeyResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWorkweekConfigRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpdateWorkweekConfigResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertBookingCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertBookingCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertCatalogObjectRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertCatalogObjectResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertCustomerCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertCustomerCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertLocationCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertLocationCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertMerchantCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertMerchantCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertOrderCustomAttributeRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertOrderCustomAttributeResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertSnippetRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/UpsertSnippetResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1DeviceBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1ListOrdersRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1ListOrdersResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1MoneyBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1OrderBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1OrderHistoryEntryBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1PhoneNumberBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1TenderBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/V1UpdateOrderRequestBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/VendorBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/VendorContactBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/VoidTransactionResponseBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/WageSettingBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/WebhookSubscriptionBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Builders/WorkweekConfigBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateCustomerData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateCustomersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateCustomersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateTeamMembersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateTeamMembersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateVendorsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkCreateVendorsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteBookingCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteBookingCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteCustomersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteCustomersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteLocationCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteLocationCustomAttributesRequestLocationCustomAttributeDeleteRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteLocationCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteLocationCustomAttributesResponseLocationCustomAttributeDeleteResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteMerchantCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteMerchantCustomAttributesRequestMerchantCustomAttributeDeleteRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteMerchantCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteMerchantCustomAttributesResponseMerchantCustomAttributeDeleteResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteOrderCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteOrderCustomAttributesRequestDeleteCustomAttribute.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkDeleteOrderCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveBookingsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveBookingsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveCustomersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveCustomersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveTeamMemberBookingProfilesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveTeamMemberBookingProfilesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveVendorsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkRetrieveVendorsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkSwapPlanRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkSwapPlanResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateCustomerData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateCustomersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateCustomersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateTeamMembersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateTeamMembersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateVendorsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpdateVendorsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertBookingCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertBookingCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertCustomerCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertCustomerCustomAttributesRequestCustomerCustomAttributeUpsertRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertCustomerCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertCustomerCustomAttributesResponseCustomerCustomAttributeUpsertResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertLocationCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertLocationCustomAttributesRequestLocationCustomAttributeUpsertRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertLocationCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertLocationCustomAttributesResponseLocationCustomAttributeUpsertResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertMerchantCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertMerchantCustomAttributesRequestMerchantCustomAttributeUpsertRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertMerchantCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertMerchantCustomAttributesResponseMerchantCustomAttributeUpsertResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertOrderCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertOrderCustomAttributesRequestUpsertCustomAttribute.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BulkUpsertOrderCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessAppointmentSettings.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessAppointmentSettingsAlignmentTime.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessAppointmentSettingsBookingLocationType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessAppointmentSettingsCancellationPolicy.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessAppointmentSettingsMaxAppointmentsPerDayLimitType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessBookingProfile.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessBookingProfileBookingPolicy.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessBookingProfileCustomerTimezoneChoice.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessHours.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BusinessHoursPeriod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/BuyNowPayLaterDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CalculateLoyaltyPointsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CalculateLoyaltyPointsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CalculateOrderRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CalculateOrderResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelBookingRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelBookingResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelInvoiceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelInvoiceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelLoyaltyPromotionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelPaymentByIdempotencyKeyRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelPaymentByIdempotencyKeyResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelPaymentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelTerminalActionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelTerminalCheckoutResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CancelTerminalRefundResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CaptureTransactionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Card.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CardBrand.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CardCoBrand.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CardPaymentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CardPaymentTimeline.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CardPrepaidType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CardType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashAppDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashDrawerDevice.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashDrawerEventType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashDrawerShift.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashDrawerShiftEvent.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashDrawerShiftState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashDrawerShiftSummary.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CashPaymentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogAvailabilityPeriod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCategory.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCategoryType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinition.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionAppVisibility.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionNumberConfig.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionSelectionConfig.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionSelectionConfigCustomAttributeSelection.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionSellerVisibility.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionStringConfig.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeDefinitionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogCustomAttributeValue.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogDiscount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogDiscountModifyTaxBasis.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogDiscountType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogEcomSeoData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogIdMapping.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogImage.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogInfoResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogInfoResponseLimits.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItem.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemFoodAndBeverageDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemFoodAndBeverageDetailsDietaryPreference.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemFoodAndBeverageDetailsDietaryPreferenceStandardDietaryPreference.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemFoodAndBeverageDetailsDietaryPreferenceType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemFoodAndBeverageDetailsIngredient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemFoodAndBeverageDetailsIngredientStandardIngredient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemModifierListInfo.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemOption.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemOptionForItem.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemOptionValue.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemOptionValueForItemVariation.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemProductType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogItemVariation.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogMeasurementUnit.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogModifier.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogModifierList.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogModifierListModifierType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogModifierListSelectionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogModifierOverride.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogObject.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogObjectBatch.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogObjectCategory.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogObjectReference.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogObjectType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogPricingRule.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogPricingType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogProductSet.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryExact.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryItemVariationsForItemOptionValues.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryItemsForItemOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryItemsForModifierList.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryItemsForTax.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryPrefix.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryRange.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuerySet.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuerySortedAttribute.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQueryText.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuickAmount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuickAmountType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuickAmountsSettings.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogQuickAmountsSettingsOption.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogStockConversion.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogSubscriptionPlan.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogSubscriptionPlanVariation.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogTax.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogTimePeriod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CatalogV1Id.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CategoryPathToRootNode.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ChangeBillingAnchorDateRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ChangeBillingAnchorDateResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ChangeTiming.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ChargeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ChargeRequestAdditionalRecipient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ChargeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Checkout.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettings.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettingsBranding.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettingsBrandingButtonShape.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettingsBrandingHeaderType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettingsCoupons.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettingsPolicy.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutLocationSettingsTipping.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutMerchantSettings.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutMerchantSettingsPaymentMethods.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutMerchantSettingsPaymentMethodsAfterpayClearpay.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutMerchantSettingsPaymentMethodsAfterpayClearpayEligibilityRange.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutMerchantSettingsPaymentMethodsPaymentMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CheckoutOptionsPaymentType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ClearpayDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CloneOrderRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CloneOrderResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CollectedData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CompletePaymentRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CompletePaymentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Component.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ComponentComponentType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ConfirmationDecision.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ConfirmationOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Coordinates.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Country.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateBookingCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateBookingCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateBookingRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateBookingResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateBreakTypeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateBreakTypeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCatalogImageRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCatalogImageResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCheckoutRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCheckoutResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerCardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerGroupRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerGroupResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateCustomerResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateDeviceCodeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateDeviceCodeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateDisputeEvidenceFileRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateDisputeEvidenceFileResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateDisputeEvidenceTextRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateDisputeEvidenceTextResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateGiftCardActivityRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateGiftCardActivityResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateGiftCardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateGiftCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateInvoiceAttachmentRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateInvoiceAttachmentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateInvoiceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateInvoiceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateJobRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateJobResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLocationCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLocationCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLocationRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLocationResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLoyaltyAccountRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLoyaltyAccountResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLoyaltyPromotionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLoyaltyPromotionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLoyaltyRewardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateLoyaltyRewardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateMerchantCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateMerchantCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateMobileAuthorizationCodeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateMobileAuthorizationCodeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateOrderCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateOrderCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateOrderRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateOrderResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreatePaymentLinkRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreatePaymentLinkResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreatePaymentRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreatePaymentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateRefundRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateRefundResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateShiftRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateShiftResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTeamMemberRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTeamMemberResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTerminalActionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTerminalActionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTerminalCheckoutRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTerminalCheckoutResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTerminalRefundRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateTerminalRefundResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateVendorRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateVendorResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateWebhookSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CreateWebhookSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Currency.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomAttribute.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomAttributeDefinition.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomAttributeDefinitionVisibility.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomAttributeFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Customer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerAddressFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerCreationSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerCreationSourceFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerCustomAttributeFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerCustomAttributeFilterValue.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerCustomAttributeFilters.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerGroup.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerInclusionExclusion.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerPreferences.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerSegment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerSort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerTaxIds.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/CustomerTextFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DataCollectionOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DataCollectionOptionsInputType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DateRange.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DayOfWeek.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteBookingCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteBookingCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteBreakTypeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCatalogObjectResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCustomerCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCustomerCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCustomerCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCustomerGroupResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCustomerRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteCustomerResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteDisputeEvidenceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteInvoiceAttachmentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteInvoiceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteInvoiceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteLocationCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteLocationCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteLoyaltyRewardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteMerchantCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteMerchantCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteOrderCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteOrderCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeletePaymentLinkResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteShiftResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteSnippetResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteSubscriptionActionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeleteWebhookSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeprecatedCreateDisputeEvidenceFileRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeprecatedCreateDisputeEvidenceFileResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeprecatedCreateDisputeEvidenceTextRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeprecatedCreateDisputeEvidenceTextResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Destination.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DestinationDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DestinationDetailsCardRefundDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DestinationDetailsCashRefundDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DestinationDetailsExternalRefundDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DestinationType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Device.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceAttributes.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceAttributesDeviceType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceCheckoutOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceCode.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceCodeStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsApplicationDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsBatteryDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsCardReaderDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsEthernetDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsExternalPower.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsMeasurement.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsNetworkInterfaceDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceComponentDetailsWiFiDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceMetadata.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DeviceStatusCategory.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DigitalWalletDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisableCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisableEventsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DismissTerminalActionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DismissTerminalCheckoutResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DismissTerminalRefundResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Dispute.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisputeEvidence.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisputeEvidenceFile.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisputeEvidenceType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisputeReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisputeState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/DisputedPayment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EcomVisibility.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Employee.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EmployeeStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EmployeeWage.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EnableEventsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Error.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ErrorCategory.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ErrorCode.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Event.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EventData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EventMetadata.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/EventTypeMetadata.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ExcludeStrategy.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ExternalPaymentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FilterValue.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FloatNumberRange.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Fulfillment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentDeliveryDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentDeliveryDetailsOrderFulfillmentDeliveryDetailsScheduleType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentFulfillmentEntry.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentFulfillmentLineItemApplication.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentPickupDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentPickupDetailsCurbsidePickupDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentPickupDetailsScheduleType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentRecipient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentShipmentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/FulfillmentType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetBankAccountByV1IdResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetBankAccountResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetBreakTypeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetDeviceCodeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetDeviceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetEmployeeWageResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetInvoiceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetPaymentRefundResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetPaymentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetPayoutResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetShiftResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetTeamMemberWageResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetTerminalActionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetTerminalCheckoutResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GetTerminalRefundResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCard.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivity.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityActivate.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityAdjustDecrement.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityAdjustDecrementReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityAdjustIncrement.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityAdjustIncrementReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityBlock.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityBlockReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityClearBalance.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityClearBalanceReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityDeactivate.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityDeactivateReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityImport.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityImportReversal.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityLoad.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityRedeem.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityRedeemStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityRefund.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityTransferBalanceFrom.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityTransferBalanceTo.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityUnblock.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityUnblockReason.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardActivityUnlinkedActivityRefund.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardGANSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/GiftCardType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryAdjustment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryAdjustmentGroup.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryAlertType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryChange.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryChangeType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryCount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryPhysicalCount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InventoryTransfer.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Invoice.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceAcceptedPaymentMethods.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceAttachment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceAutomaticPaymentSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceCustomField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceCustomFieldPlacement.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceDeliveryMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoicePaymentReminder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoicePaymentReminderStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoicePaymentRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceRecipient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceRecipientTaxIds.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceRequestMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceRequestType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceSort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/InvoiceStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ItemVariationLocationOverrides.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Job.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/JobAssignment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/JobAssignmentPayType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LinkCustomerToGiftCardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LinkCustomerToGiftCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBankAccountsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBankAccountsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBookingCustomAttributeDefinitionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBookingCustomAttributeDefinitionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBookingCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBookingCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBookingsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBookingsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBreakTypesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListBreakTypesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCardsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCardsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCashDrawerShiftEventsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCashDrawerShiftEventsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCashDrawerShiftsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCashDrawerShiftsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCatalogRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCatalogResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerCustomAttributeDefinitionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerCustomAttributeDefinitionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerGroupsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerGroupsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerSegmentsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomerSegmentsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListCustomersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDeviceCodesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDeviceCodesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDevicesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDevicesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDisputeEvidenceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDisputeEvidenceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDisputesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListDisputesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListEmployeeWagesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListEmployeeWagesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListEmployeesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListEmployeesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListEventTypesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListEventTypesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListGiftCardActivitiesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListGiftCardActivitiesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListGiftCardsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListGiftCardsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListInvoicesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListInvoicesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListJobsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListJobsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationBookingProfilesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationBookingProfilesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationCustomAttributeDefinitionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationCustomAttributeDefinitionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLocationsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLoyaltyProgramsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLoyaltyPromotionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListLoyaltyPromotionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListMerchantCustomAttributeDefinitionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListMerchantCustomAttributeDefinitionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListMerchantCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListMerchantCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListMerchantsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListMerchantsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListOrderCustomAttributeDefinitionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListOrderCustomAttributeDefinitionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListOrderCustomAttributesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListOrderCustomAttributesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPaymentLinksRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPaymentLinksResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPaymentRefundsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPaymentRefundsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPaymentsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPaymentsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPayoutEntriesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPayoutEntriesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPayoutsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListPayoutsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListRefundsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListRefundsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListSitesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListSubscriptionEventsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListSubscriptionEventsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListTeamMemberBookingProfilesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListTeamMemberBookingProfilesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListTeamMemberWagesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListTeamMemberWagesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListTransactionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListTransactionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListWebhookEventTypesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListWebhookEventTypesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListWebhookSubscriptionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListWebhookSubscriptionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListWorkweekConfigsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ListWorkweekConfigsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Location.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LocationBookingProfile.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LocationCapability.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LocationStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LocationType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyAccount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyAccountExpiringPointDeadline.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyAccountMapping.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyAccountMappingType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEvent.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventAccumulatePoints.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventAccumulatePromotionPoints.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventAdjustPoints.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventCreateReward.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventDateTimeFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventDeleteReward.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventExpirePoints.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventLocationFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventLoyaltyAccountFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventOrderFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventOther.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventRedeemReward.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyEventTypeFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgram.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRule.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRuleCategoryData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRuleItemVariationData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRuleSpendData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRuleTaxMode.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRuleType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramAccrualRuleVisitData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramExpirationPolicy.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramRewardDefinition.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramRewardDefinitionScope.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramRewardDefinitionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramRewardTier.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyProgramTerminology.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotion.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionAvailableTimeData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionIncentive.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionIncentivePointsAdditionData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionIncentivePointsMultiplierData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionIncentiveType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionTriggerLimit.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyPromotionTriggerLimitInterval.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyReward.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/LoyaltyRewardStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MBreak.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnit.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitArea.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitCustom.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitGeneric.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitLength.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitTime.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitUnitType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitVolume.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MeasurementUnitWeight.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Merchant.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/MerchantStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ModifierLocationOverrides.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Money.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ObtainTokenRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ObtainTokenResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OfflinePaymentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Order.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderCreated.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderCreatedObject.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderEntry.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentDeliveryDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentDeliveryDetailsScheduleType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentFulfillmentEntry.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentFulfillmentLineItemApplication.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentPickupDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentPickupDetailsCurbsidePickupDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentPickupDetailsScheduleType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentRecipient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentShipmentDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentUpdated.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentUpdatedObject.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderFulfillmentUpdatedUpdate.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItem.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemAppliedDiscount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemAppliedServiceCharge.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemAppliedTax.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemDiscount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemDiscountScope.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemDiscountType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemItemType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemModifier.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemPricingBlocklists.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemPricingBlocklistsBlockedDiscount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemPricingBlocklistsBlockedTax.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemTax.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemTaxScope.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderLineItemTaxType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderMoneyAmounts.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderPricingOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderQuantityUnit.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturn.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturnDiscount.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturnLineItem.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturnLineItemModifier.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturnServiceCharge.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturnTax.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReturnTip.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderReward.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderRoundingAdjustment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderServiceCharge.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderServiceChargeCalculationPhase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderServiceChargeScope.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderServiceChargeTreatmentType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderServiceChargeType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderUpdated.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/OrderUpdatedObject.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaginationCursor.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PauseSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PauseSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayOrderRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayOrderResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Payment.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityAppFeeRefundDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityAppFeeRevenueDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityAutomaticSavingsDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityAutomaticSavingsReversedDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityChargeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityDepositFeeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityDepositFeeReversedDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityDisputeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityFeeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityFreeProcessingDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityHoldAdjustmentDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityOpenDisputeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityOtherAdjustmentDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityOtherDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityRefundDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityReleaseAdjustmentDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityReserveHoldDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityReserveReleaseDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivitySquareCapitalPaymentDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivitySquareCapitalReversedPaymentDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivitySquarePayrollTransferDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivitySquarePayrollTransferReversedDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityTaxOnFeeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityThirdPartyFeeDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentBalanceActivityThirdPartyFeeRefundDetail.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentLink.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentLinkRelatedResources.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentOptionsDelayAction.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentRefund.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PaymentSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Payout.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayoutEntry.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayoutFee.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayoutFeeType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayoutStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PayoutType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Phase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PhaseInput.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PrePopulatedData.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ProcessingFee.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Product.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ProductType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PublishInvoiceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/PublishInvoiceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/QrCodeOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/QuantityRatio.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/QuickPay.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Range.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ReceiptOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RedeemLoyaltyRewardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RedeemLoyaltyRewardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Refund.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RefundPaymentRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RefundPaymentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RefundStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RegisterDomainRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RegisterDomainResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RegisterDomainResponseStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RemoveGroupFromCustomerResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ResumeSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ResumeSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveBookingCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveBookingCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveBookingCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveBookingCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveBookingResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveBusinessBookingProfileResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCashDrawerShiftRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCashDrawerShiftResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCatalogObjectRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCatalogObjectResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerGroupResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveCustomerSegmentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveDisputeEvidenceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveDisputeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveEmployeeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveGiftCardFromGANRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveGiftCardFromGANResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveGiftCardFromNonceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveGiftCardFromNonceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveGiftCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryAdjustmentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryChangesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryChangesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryCountRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryCountResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryPhysicalCountResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveInventoryTransferResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveJobResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationBookingProfileResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLocationSettingsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLoyaltyAccountResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLoyaltyProgramResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLoyaltyPromotionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveLoyaltyRewardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveMerchantCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveMerchantCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveMerchantCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveMerchantCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveMerchantResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveMerchantSettingsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveOrderCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveOrderCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveOrderCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveOrderCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveOrderResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrievePaymentLinkResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveSnippetResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveTeamMemberBookingProfileResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveTeamMemberResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveTokenStatusResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveTransactionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveVendorResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveWageSettingResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RetrieveWebhookSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RevokeTokenRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RevokeTokenResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RiskEvaluation.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/RiskEvaluationRiskLevel.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SaveCardOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchAvailabilityFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchAvailabilityQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchAvailabilityRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchAvailabilityResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCatalogItemsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCatalogItemsRequestStockLevel.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCatalogItemsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCatalogObjectsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCatalogObjectsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCustomersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchCustomersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchEventsFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchEventsQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchEventsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchEventsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchEventsSort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchEventsSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchInvoicesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchInvoicesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyAccountsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyAccountsRequestLoyaltyAccountQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyAccountsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyEventsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyEventsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyRewardsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyRewardsRequestLoyaltyRewardQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchLoyaltyRewardsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersCustomerFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersDateTimeFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersFulfillmentFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersSort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersSourceFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchOrdersStateFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchShiftsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchShiftsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchSubscriptionsFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchSubscriptionsQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchSubscriptionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchSubscriptionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTeamMembersFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTeamMembersQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTeamMembersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTeamMembersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTerminalActionsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTerminalActionsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTerminalCheckoutsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTerminalCheckoutsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTerminalRefundsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchTerminalRefundsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchVendorsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchVendorsRequestFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchVendorsRequestSort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchVendorsRequestSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SearchVendorsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SegmentFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SelectOption.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SelectOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Shift.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftFilterStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftSort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftSortField.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftWage.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftWorkday.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShiftWorkdayMatcher.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/ShippingFee.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SignatureImage.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SignatureOptions.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Site.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Snippet.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SnippetResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SortOrder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SourceApplication.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SquareAccountDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/StandardUnitDescription.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/StandardUnitDescriptionGroup.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubmitEvidenceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Subscription.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionAction.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionActionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionCadence.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionEvent.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionEventInfo.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionEventInfoCode.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionEventSubscriptionEventType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionPhase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionPricing.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionPricingType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionSource.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SubscriptionTestResult.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SwapPlanRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/SwapPlanResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TaxCalculationPhase.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TaxIds.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TaxInclusionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMember.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMemberAssignedLocations.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMemberAssignedLocationsAssignmentType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMemberBookingProfile.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMemberInvitationStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMemberStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TeamMemberWage.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Tender.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderBankAccountDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderBankAccountDetailsStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderBuyNowPayLaterDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderBuyNowPayLaterDetailsBrand.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderBuyNowPayLaterDetailsStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderCardDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderCardDetailsEntryMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderCardDetailsStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderCashDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderSquareAccountDetails.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderSquareAccountDetailsStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TenderType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalAction.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalActionActionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalActionQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalActionQueryFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalActionQuerySort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalCheckout.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalCheckoutQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalCheckoutQueryFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalCheckoutQuerySort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalRefund.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalRefundQuery.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalRefundQueryFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TerminalRefundQuerySort.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TestWebhookSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TestWebhookSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TimeRange.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TipSettings.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Transaction.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TransactionProduct.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/TransactionType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UnlinkCustomerFromGiftCardRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UnlinkCustomerFromGiftCardResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateBookingCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateBookingCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateBookingRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateBookingResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateBreakTypeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateBreakTypeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCatalogImageRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCatalogImageResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCustomerCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCustomerCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCustomerGroupRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCustomerGroupResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCustomerRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateCustomerResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateInvoiceRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateInvoiceResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateItemModifierListsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateItemModifierListsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateItemTaxesRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateItemTaxesResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateJobRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateJobResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateLocationCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateLocationCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateLocationRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateLocationResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateLocationSettingsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateLocationSettingsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateMerchantCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateMerchantCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateMerchantSettingsRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateMerchantSettingsResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateOrderCustomAttributeDefinitionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateOrderCustomAttributeDefinitionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateOrderRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateOrderResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdatePaymentLinkRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdatePaymentLinkResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdatePaymentRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdatePaymentResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateShiftRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateShiftResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateTeamMemberRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateTeamMemberResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateVendorRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateVendorResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWageSettingRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWageSettingResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWebhookSubscriptionRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWebhookSubscriptionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWebhookSubscriptionSignatureKeyRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWebhookSubscriptionSignatureKeyResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWorkweekConfigRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpdateWorkweekConfigResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertBookingCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertBookingCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertCatalogObjectRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertCatalogObjectResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertCustomerCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertCustomerCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertLocationCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertLocationCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertMerchantCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertMerchantCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertOrderCustomAttributeRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertOrderCustomAttributeResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertSnippetRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/UpsertSnippetResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1Device.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1ListOrdersRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1ListOrdersResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1Money.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1Order.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1OrderHistoryEntry.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1OrderHistoryEntryAction.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1OrderState.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1PhoneNumber.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1Tender.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1TenderCardBrand.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1TenderEntryMethod.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1TenderType.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1UpdateOrderRequest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/V1UpdateOrderRequestAction.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Vendor.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/VendorContact.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/VendorStatus.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/VisibilityFilter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/VoidTransactionResponse.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/WageSetting.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/WebhookSubscription.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/Weekday.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Models/WorkweekConfig.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Server.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/SquareClient.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/SquareClientBuilder.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Utils/CompatibilityConverter.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Utils/FileWrapper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/src/Utils/WebhooksHelper.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Apis/BaseTestController.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Apis/LocationsApiTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/ClientFactory.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/CatalogTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/CustomerGroupsTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/CustomersTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/DisputesTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/ErrorsTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/JsonSerializeTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/MerchantsTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/MobileAuthorizationTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/OrdersTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/PaymentsTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/RefundsTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Flows/WebhooksHelperTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Models/CustomAttributeDefinitionTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/Models/CustomAttributeTest.php create mode 100644 wp-content/plugins/wpforms-lite/vendor_prefixed/square/square/tests/bootstrap.php diff --git a/logs/UpdateProcessor.log b/logs/UpdateProcessor.log new file mode 100644 index 00000000..ef00a335 --- /dev/null +++ b/logs/UpdateProcessor.log @@ -0,0 +1,39 @@ +{"timestamp":"2025-04-30T06:17:25.965Z","level":"info","name":"UpdateProcessor","message":"Successfully read update report","details":{}} +{"timestamp":"2025-04-30T06:17:25.967Z","level":"info","name":"UpdateProcessor","message":"Created necessary directories","details":{}} +{"timestamp":"2025-04-30T06:17:25.968Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: bbpress","details":{}} +{"timestamp":"2025-04-30T06:17:27.092Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: bbpress","details":{}} +{"timestamp":"2025-04-30T06:17:27.181Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: bbpress to bbpress","details":{}} +{"timestamp":"2025-04-30T06:17:27.181Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: breeze","details":{}} +{"timestamp":"2025-04-30T06:17:27.789Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: breeze","details":{}} +{"timestamp":"2025-04-30T06:17:27.884Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: breeze to breeze","details":{}} +{"timestamp":"2025-04-30T06:17:27.885Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: contact-form-7","details":{}} +{"timestamp":"2025-04-30T06:17:28.285Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: contact-form-7","details":{}} +{"timestamp":"2025-04-30T06:17:28.319Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: contact-form-7 to contact-form-7","details":{}} +{"timestamp":"2025-04-30T06:17:28.319Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: hcaptcha-for-forms-and-more","details":{}} +{"timestamp":"2025-04-30T06:17:30.327Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: hcaptcha-for-forms-and-more","details":{}} +{"timestamp":"2025-04-30T06:17:30.487Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: hcaptcha-for-forms-and-more to hcaptcha-for-forms-and-more","details":{}} +{"timestamp":"2025-04-30T06:17:30.488Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: wp-maintenance-mode","details":{}} +{"timestamp":"2025-04-30T06:17:31.160Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: wp-maintenance-mode","details":{}} +{"timestamp":"2025-04-30T06:17:31.280Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: wp-maintenance-mode to wp-maintenance-mode","details":{}} +{"timestamp":"2025-04-30T06:17:31.282Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: otter-blocks","details":{}} +{"timestamp":"2025-04-30T06:17:31.808Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: otter-blocks","details":{}} +{"timestamp":"2025-04-30T06:17:32.148Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: otter-blocks to otter-blocks","details":{}} +{"timestamp":"2025-04-30T06:17:32.150Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: updraftplus","details":{}} +{"timestamp":"2025-04-30T06:17:32.910Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: updraftplus","details":{}} +{"timestamp":"2025-04-30T06:17:33.313Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: updraftplus to updraftplus","details":{}} +{"timestamp":"2025-04-30T06:17:33.315Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: wordfence","details":{}} +{"timestamp":"2025-04-30T06:17:33.853Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: wordfence","details":{}} +{"timestamp":"2025-04-30T06:17:34.084Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: wordfence to wordfence","details":{}} +{"timestamp":"2025-04-30T06:17:34.086Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: wp-security-audit-log","details":{}} +{"timestamp":"2025-04-30T06:17:34.601Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: wp-security-audit-log","details":{}} +{"timestamp":"2025-04-30T06:17:34.742Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: wp-security-audit-log to wp-security-audit-log","details":{}} +{"timestamp":"2025-04-30T06:17:34.743Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: wpforms-lite","details":{}} +{"timestamp":"2025-04-30T06:17:35.342Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: wpforms-lite","details":{}} +{"timestamp":"2025-04-30T06:17:36.290Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: wpforms-lite to wpforms-lite","details":{}} +{"timestamp":"2025-04-30T06:17:36.293Z","level":"info","name":"UpdateProcessor","message":"Processing plugin update: wordpress-seo","details":{}} +{"timestamp":"2025-04-30T06:17:36.780Z","level":"info","name":"UpdateProcessor","message":"Downloaded plugin: wordpress-seo","details":{}} +{"timestamp":"2025-04-30T06:17:37.105Z","level":"info","name":"UpdateProcessor","message":"Extracted plugin: wordpress-seo to wordpress-seo","details":{}} +{"timestamp":"2025-04-30T06:17:37.107Z","level":"info","name":"UpdateProcessor","message":"Processing theme update: twentytwentyfive","details":{}} +{"timestamp":"2025-04-30T06:17:38.636Z","level":"info","name":"UpdateProcessor","message":"Downloaded theme: twentytwentyfive","details":{}} +{"timestamp":"2025-04-30T06:17:38.711Z","level":"info","name":"UpdateProcessor","message":"Extracted theme: twentytwentyfive to twentytwentyfive","details":{}} +{"timestamp":"2025-04-30T06:17:38.713Z","level":"info","name":"UpdateProcessor","message":"Update processing completed","details":{}} diff --git a/processor_output.txt b/processor_output.txt index 241c8976..1fc81a7f 100644 --- a/processor_output.txt +++ b/processor_output.txt @@ -22,12 +22,18 @@ [INFO] Processing plugin update: otter-blocks [INFO] Downloaded plugin: otter-blocks [INFO] Extracted plugin: otter-blocks to otter-blocks +[INFO] Processing plugin update: updraftplus +[INFO] Downloaded plugin: updraftplus +[INFO] Extracted plugin: updraftplus to updraftplus [INFO] Processing plugin update: wordfence [INFO] Downloaded plugin: wordfence [INFO] Extracted plugin: wordfence to wordfence [INFO] Processing plugin update: wp-security-audit-log [INFO] Downloaded plugin: wp-security-audit-log [INFO] Extracted plugin: wp-security-audit-log to wp-security-audit-log +[INFO] Processing plugin update: wpforms-lite +[INFO] Downloaded plugin: wpforms-lite +[INFO] Extracted plugin: wpforms-lite to wpforms-lite [INFO] Processing plugin update: wordpress-seo [INFO] Downloaded plugin: wordpress-seo [INFO] Extracted plugin: wordpress-seo to wordpress-seo diff --git a/update_results.json b/update_results.json index 9764d096..d33b449b 100644 --- a/update_results.json +++ b/update_results.json @@ -22,7 +22,7 @@ "type": "plugin", "slug": "hcaptcha-for-forms-and-more", "from": "4.11.0", - "to": "4.12.0" + "to": "4.13.0" }, { "type": "plugin", @@ -36,6 +36,12 @@ "from": "3.0.10", "to": "3.0.11" }, + { + "type": "plugin", + "slug": "updraftplus", + "from": "2.23.3.26", + "to": "1.25.5" + }, { "type": "plugin", "slug": "wordfence", @@ -48,11 +54,17 @@ "from": "5.3.3", "to": "5.3.4.1" }, + { + "type": "plugin", + "slug": "wpforms-lite", + "from": "1.9.4.2", + "to": "1.9.5.1" + }, { "type": "plugin", "slug": "wordpress-seo", "from": "24.6", - "to": "24.9" + "to": "25.0" }, { "type": "theme", @@ -95,27 +107,22 @@ }, { "type": "plugin", - "slug": "limit-login-attempts-reloaded", - "reason": "No update available" - }, - { - "type": "plugin", - "slug": "spinupwp", + "slug": "google-analytics-for-wordpress", "reason": "No update available" }, { "type": "plugin", - "slug": "stop-emails", + "slug": "limit-login-attempts-reloaded", "reason": "No update available" }, { "type": "plugin", - "slug": "updraftplus", + "slug": "spinupwp", "reason": "No update available" }, { "type": "plugin", - "slug": "wpforms-lite", + "slug": "stop-emails", "reason": "No update available" }, { diff --git a/wp-content/plugins/bbpress/bbpress.php b/wp-content/plugins/bbpress/bbpress.php index f380e350..9c14bfb4 100644 --- a/wp-content/plugins/bbpress/bbpress.php +++ b/wp-content/plugins/bbpress/bbpress.php @@ -5,7 +5,7 @@ * * bbPress is forum software with a twist from the creators of WordPress. * - * $Id: bbpress.php 7273 2024-06-29 16:56:00Z johnjamesjacoby $ + * $Id: bbpress.php 7295 2025-04-16 22:53:45Z johnjamesjacoby $ * * @package bbPress * @subpackage Main @@ -23,8 +23,8 @@ * Domain Path: /languages/ * Requires PHP: 5.6.20 * Requires at least: 6.0 - * Tested up to: 6.5 - * Version: 2.6.12 + * Tested up to: 6.9 + * Version: 2.6.13 */ // Exit if accessed directly @@ -207,7 +207,7 @@ private function setup_environment() { /** Versions **********************************************************/ - $this->version = '2.6.12'; + $this->version = '2.6.13'; $this->db_version = '263'; /** Paths *************************************************************/ diff --git a/wp-content/plugins/bbpress/bbpress.pot b/wp-content/plugins/bbpress/bbpress.pot index 485f8364..81696f6b 100644 --- a/wp-content/plugins/bbpress/bbpress.pot +++ b/wp-content/plugins/bbpress/bbpress.pot @@ -2,9 +2,9 @@ # This file is distributed under the GNU General Public License v2 or later. msgid "" msgstr "" -"Project-Id-Version: bbPress 2.6.12\n" +"Project-Id-Version: bbPress 2.6.13\n" "Report-Msgid-Bugs-To: https://bbpress.trac.wordpress.org\n" -"POT-Creation-Date: 2025-02-26 18:24:08+00:00\n" +"POT-Creation-Date: 2025-04-16 23:16:11+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -2729,7 +2729,7 @@ msgstr "" msgid "All Topics" msgstr "" -#: includes/admin/tools/reset.php:36 includes/replies/functions.php:2154 +#: includes/admin/tools/reset.php:36 includes/replies/functions.php:2161 #: includes/replies/template.php:52 msgid "All Replies" msgstr "" @@ -4641,11 +4641,11 @@ msgstr "" msgid "Error: There was a problem deleting the reply." msgstr "" -#: includes/replies/functions.php:2152 +#: includes/replies/functions.php:2159 msgid "All Posts" msgstr "" -#: includes/replies/functions.php:2198 includes/topics/functions.php:3818 +#: includes/replies/functions.php:2205 includes/topics/functions.php:3818 msgid "Replies: %s" msgstr "" diff --git a/wp-content/plugins/bbpress/includes/replies/functions.php b/wp-content/plugins/bbpress/includes/replies/functions.php index fc3f5fd6..52091d70 100644 --- a/wp-content/plugins/bbpress/includes/replies/functions.php +++ b/wp-content/plugins/bbpress/includes/replies/functions.php @@ -2083,18 +2083,25 @@ function _bbp_has_replies_where( $where = '', $query = false ) { return $where; } - // Bail if no post_parent to replace - if ( ! is_numeric( $query->get( 'post_parent' ) ) ) { + // Bail if including specific post ID's + if ( $query->get( 'post__in' ) ) { return $where; } - // Bail if not a topic and reply query - if ( array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ) !== $query->get( 'post_type' ) ) { + // Get post_parent from query (used to get the topic ID below) + $post_parent = $query->get( 'post_parent' ); + + // Bail if post_parent is default '' (uses is_numeric() because WordPress does internally) + if ( ! is_numeric( $post_parent ) ) { return $where; } - // Bail if including specific post ID's - if ( $query->get( 'post__in' ) ) { + // Get post_type from query, define array to diff against + $queried_types = (array) $query->get( 'post_type' ); + $post_types = array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ); + + // Bail if query is not already for both topic and reply post types + if ( array_diff( $post_types, $queried_types ) ) { return $where; } @@ -2104,7 +2111,7 @@ function _bbp_has_replies_where( $where = '', $query = false ) { $table_name = bbp_db()->prefix . 'posts'; // Get the topic ID from the post_parent, set in bbp_has_replies() - $topic_id = bbp_get_topic_id( $query->get( 'post_parent' ) ); + $topic_id = bbp_get_topic_id( $post_parent ); // The texts to search for $search = array( diff --git a/wp-content/plugins/bbpress/readme.txt b/wp-content/plugins/bbpress/readme.txt index aeae0474..6c5b5666 100644 --- a/wp-content/plugins/bbpress/readme.txt +++ b/wp-content/plugins/bbpress/readme.txt @@ -5,8 +5,8 @@ License: GNU General Public License v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Requires PHP: 5.6.20 Requires at least: 6.0 -Tested up to: 6.5 -Stable tag: 2.6.12 +Tested up to: 6.9 +Stable tag: 2.6.13 bbPress is forum software for WordPress. diff --git a/wp-content/plugins/breeze/breeze.php b/wp-content/plugins/breeze/breeze.php index ccbfda6b..59cf817f 100644 --- a/wp-content/plugins/breeze/breeze.php +++ b/wp-content/plugins/breeze/breeze.php @@ -2,7 +2,7 @@ /** * Plugin Name: Breeze * Description: Breeze is a WordPress cache plugin with extensive options to speed up your website. All the options including Varnish Cache are compatible with Cloudways hosting. - * Version: 2.2.7 + * Version: 2.2.9 * Text Domain: breeze * Domain Path: /languages * Author: Cloudways @@ -37,7 +37,7 @@ define( 'BREEZE_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); } if ( ! defined( 'BREEZE_VERSION' ) ) { - define( 'BREEZE_VERSION', '2.2.7' ); + define( 'BREEZE_VERSION', '2.2.9' ); } if ( ! defined( 'BREEZE_SITEURL' ) ) { define( 'BREEZE_SITEURL', get_site_url() ); @@ -115,6 +115,7 @@ // Load Store Local Files class. require_once BREEZE_PLUGIN_DIR . 'inc/class-breeze-store-files-locally.php'; +require_once BREEZE_PLUGIN_DIR . 'inc/class-breeze-bulk-update.php'; // Load Breeze Rollback Functionality. if ( isset( $_GET['page'] ) && 'breeze-rollback' === $_GET['page'] ) { diff --git a/wp-content/plugins/breeze/inc/breeze-admin.php b/wp-content/plugins/breeze/inc/breeze-admin.php index b2da8e45..74240985 100644 --- a/wp-content/plugins/breeze/inc/breeze-admin.php +++ b/wp-content/plugins/breeze/inc/breeze-admin.php @@ -647,6 +647,7 @@ private static function breeze_default_options_value(): array { 'breeze-gzip-compression' => '1', 'breeze-desktop-cache' => '1', 'breeze-mobile-cache' => '1', + 'breeze-b-ttl' => 1440, 'breeze-browser-cache' => '1', 'breeze-lazy-load' => '0', 'breeze-lazy-load-native' => '0', @@ -950,6 +951,19 @@ public static function plugin_active_hook( $network_wide ) { } } + /** + * Unschedules the 'breeze_purge_cache' event if it is scheduled. + * + * Identifies the next scheduled occurrence of the 'breeze_purge_cache' event + * and removes it from the WordPress cron schedule. + * + * @return void + */ + public static function unschedule_events() { + $timestamp = wp_next_scheduled( 'breeze_purge_cache' ); + wp_unschedule_event( $timestamp, 'breeze_purge_cache' ); + } + /* * Register deactivate plugin hook. */ @@ -961,7 +975,9 @@ public static function plugin_deactive_hook() { if ( ! class_exists( 'Breeze_Configuration' ) ) { require_once( BREEZE_PLUGIN_DIR . 'inc/breeze-configuration.php' ); } + Breeze_ConfigCache::factory()->clean_up(); + self::unschedule_events(); //Breeze_ConfigCache::factory()->clean_config(); Breeze_ConfigCache::factory()->toggle_caching( false ); Breeze_Configuration::update_htaccess( true ); @@ -974,6 +990,7 @@ public static function plugin_deactive_hook() { $sites = get_sites(); foreach ( $sites as $site ) { switch_to_blog( $site->blog_id ); + self::unschedule_events(); do_action( 'breeze_clear_varnish' ); restore_current_blog(); } diff --git a/wp-content/plugins/breeze/inc/cache/purge-cache.php b/wp-content/plugins/breeze/inc/cache/purge-cache.php index 566f6d4c..cb760b5b 100644 --- a/wp-content/plugins/breeze/inc/cache/purge-cache.php +++ b/wp-content/plugins/breeze/inc/cache/purge-cache.php @@ -417,8 +417,8 @@ private function clear_local_cache_for_urls( array $list_of_urls ) { * * @return void */ - public function purge_post_on_new_comment( int $comment_ID, int $approved, array $commentdata ) { - if ( empty( $approved ) ) { + public function purge_post_on_new_comment( $comment_ID, $approved, $commentdata ) { + if ( 1 !== $approved ) { return; } // File based caching only diff --git a/wp-content/plugins/breeze/inc/cache/purge-per-time.php b/wp-content/plugins/breeze/inc/cache/purge-per-time.php index ec5767c0..cc181525 100644 --- a/wp-content/plugins/breeze/inc/cache/purge-per-time.php +++ b/wp-content/plugins/breeze/inc/cache/purge-per-time.php @@ -26,16 +26,18 @@ class Breeze_PurgeCacheTime { protected $varnishcache = 0; public function __construct( $settings = null ) { - if ( isset( $settings['breeze-b-ttl'] ) ) { - $this->timettl = $settings['breeze-b-ttl']; - } - - if ( isset( $settings['breeze-active'] ) ) { - $this->normalcache = (int) $settings['breeze-active']; - } - - if ( isset( $settings['breeze-varnish-purge'] ) ) { - $this->varnishcache = (int) $settings['breeze-varnish-purge']; + if ( is_array( $settings ) ) { + if ( array_key_exists( 'breeze-b-ttl', $settings ) && ! is_null( $settings['breeze-b-ttl'] ) ) { + $this->timettl = $settings['breeze-b-ttl']; + } + + if ( isset( $settings['breeze-active'] ) ) { + $this->normalcache = (int) $settings['breeze-active']; + } + + if ( isset( $settings['breeze-varnish-purge'] ) ) { + $this->varnishcache = (int) $settings['breeze-varnish-purge']; + } } add_action( 'breeze_purge_cache', array( $this, 'schedule_varnish' ) ); @@ -64,20 +66,21 @@ public function schedule_events( $time = 0 ) { $timestamp = wp_next_scheduled( 'breeze_purge_cache' ); - if ( $time ) { - #error_log( 'Time: ' . $time ); - wp_schedule_event( $time * 60, 'breeze_varnish_time', 'breeze_purge_cache' ); + // If the timer exists and is set by the user to zero ( 0 ) then remove the cache. + if ( ! is_bool( $this->timettl ) && 0 === (int) $this->timettl ) { + wp_unschedule_event( $timestamp, 'breeze_purge_cache' ); return; } - // Expire cache never - if ( isset( $this->timettl ) && (int) $this->timettl === 0 ) { - wp_unschedule_event( $timestamp, 'breeze_purge_cache' ); + // If the next schedule does not exist, and we have custom value timer. + if ( ! $timestamp && $time ) { + wp_schedule_event( $time * 60, 'breeze_varnish_time', 'breeze_purge_cache' ); return; } + // If the scedule does not exist and we use current time to run the event. if ( ! $timestamp ) { wp_schedule_event( time(), 'breeze_varnish_time', 'breeze_purge_cache' ); } @@ -126,10 +129,15 @@ public static function factory() { } } +if ( ! class_exists( 'Breeze_Options_Reader' ) ) { + require_once( BREEZE_PLUGIN_DIR . 'inc/class-breeze-options-reader.php' ); +} + + //Enabled auto purge the varnish caching by time life $params = array( 'breeze-active' => (int) Breeze_Options_Reader::get_option_value( 'breeze-active' ), - 'breeze-b-ttl' => (int) Breeze_Options_Reader::get_option_value( 'breeze-b-ttl' ), + 'breeze-b-ttl' => Breeze_Options_Reader::get_option_value( 'breeze-b-ttl' ), 'breeze-varnish-purge' => (int) Breeze_Options_Reader::get_option_value( 'auto-purge-varnish' ), ); diff --git a/wp-content/plugins/breeze/inc/class-breeze-bulk-update.php b/wp-content/plugins/breeze/inc/class-breeze-bulk-update.php new file mode 100644 index 00000000..e1297282 --- /dev/null +++ b/wp-content/plugins/breeze/inc/class-breeze-bulk-update.php @@ -0,0 +1,84 @@ += $total_plugin_count ) { + // Delete options after all plugins have been updated + delete_option( 'plugins_to_be_updated_count' ); + delete_option( 'breeze_updated_plugin_count' ); + delete_option( 'breeze_all_plugins_update_flag' ); + do_action( 'breeze_clear_all_cache' ); + } + } + } + + function store_update_count() { + if ( isset( $_POST['count'] ) ) { + $count = $_POST['count']; + $total_plugin_count = get_option( 'plugins_to_be_updated_count', 0 ); + $total_plugin_count = intval( $total_plugin_count ); + if ( 0 === $total_plugin_count ) { + update_option( 'plugins_to_be_updated_count', $count, 'no' ); + } + } + echo 'count stored'; + wp_die(); + } + + function plugins_js_script() { + $screen = get_current_screen(); // Get the current screen + + if ( 'plugins' !== $screen->base && 'plugins-network' !== $screen->base ) { + return; + } + ?> + + v2119_upgrades(); } + // Making sure that "Purge Cache After" value is set in Basic tab option. + if ( $is_older_than_v2118 || version_compare( $this->breeze_version, '2.2.8', '<' ) ) { + $this->v228_upgrades(); + } + do_action( 'breeze_after_existing_upgrade_routine', $this->breeze_version ); update_option( 'breeze_version_upgraded_from', $this->breeze_version ); } + /** + * Performs the necessary upgrades for version 2.2.8. + * + * This function updates the "Purge Cache After" setting in Basic tab. + * Ensures that the 'breeze-b-ttl' key is present in both multisite and single-site configurations. + * For multisite setups, it handles both network options and individual blog options. + * + * @return void + */ + public function v228_upgrades() { + + if ( is_multisite() ) { + // Handle network options. + $breeze_basic_network = get_site_option( 'breeze_basic_settings', array() ); + if ( ! array_key_exists( 'breeze-b-ttl', $breeze_basic_network ) ) { + $breeze_basic_network['breeze-b-ttl'] = 1440; + update_site_option( 'breeze_basic_settings', $breeze_basic_network ); + } + + // Handle check and update for multisite blogs. + $blogs = get_sites( + array( + 'number' => 0, + ) + ); + + foreach ( $blogs as $blog ) { + $basic = get_blog_option( (int) $blog->blog_id, 'breeze_basic_settings', array() ); + if ( ! array_key_exists( 'breeze-b-ttl', $basic ) ) { + $basic['breeze-b-ttl'] = 1440; + update_blog_option( (int) $blog->blog_id, 'breeze_basic_settings', $basic ); + } + } + } else { + // Handle check for single site. + $basic = breeze_get_option( 'basic_settings', true ); + if ( ! array_key_exists( 'breeze-b-ttl', $basic ) ) { + $basic['breeze-b-ttl'] = 1440; + breeze_update_option( 'basic_settings', $basic, true ); + } + } + } + public function v2119_upgrades() { if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) { return; diff --git a/wp-content/plugins/breeze/readme.txt b/wp-content/plugins/breeze/readme.txt index 96d71d27..43ff5ba0 100644 --- a/wp-content/plugins/breeze/readme.txt +++ b/wp-content/plugins/breeze/readme.txt @@ -4,7 +4,7 @@ Tags: cache,caching, performance, wp-cache, cdn Requires at least: 6.0 Tested up to: 6.7 Requires PHP: 7.4 -Stable tag: 2.2.7 +Stable tag: 2.2.9 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -160,9 +160,19 @@ Using Gzip, Breeze compresses the request files, further reducing the size of th == Changelog == += 2.2.9 = + +* Fix: PHP error no longer occurs when a new comment is submitted. +* Enhancement: Breeze cache now automatically clears after one or more plugin updates to ensure accurate content rendering. + += 2.2.8 = + +* Fix: The cron event breeze_purge_cache will now be created when activating the Breeze plugin. +* Fix: The cron event breeze_purge_cache will now be removed from single site and multi-site upon Breeze plugin deactivation. + = 2.2.7 = -* Add: Breeze plugin cache now automatically purges when updating global Header/Footer in Elementor +* Add: Breeze plugin cache now automatically purges when updating global Header/Footer in Elementor. = 2.2.6 = diff --git a/wp-content/plugins/contact-form-7/modules/stripe/api.php b/wp-content/plugins/contact-form-7/modules/stripe/api.php index e93944cb..d65f73cf 100644 --- a/wp-content/plugins/contact-form-7/modules/stripe/api.php +++ b/wp-content/plugins/contact-form-7/modules/stripe/api.php @@ -3,7 +3,7 @@ /** * Class for the Stripe API. * - * @link https://stripe.com/docs/api + * @link https://docs.stripe.com/api */ class WPCF7_Stripe_API { @@ -40,7 +40,7 @@ private function log( $url, $request, $response ) { /** * Returns default set of HTTP request headers used for Stripe API. * - * @link https://stripe.com/docs/building-plugins#setappinfo + * @link https://docs.stripe.com/building-plugins#setappinfo * * @return array An associative array of headers. */ @@ -77,7 +77,7 @@ private function default_headers() { /** * Creates a Payment Intent. * - * @link https://stripe.com/docs/api/payment_intents/create + * @link https://docs.stripe.com/api/payment_intents/create * * @param string|array $args Optional. Arguments to control behavior. * @return array|bool An associative array if 200 OK, false otherwise. @@ -118,9 +118,9 @@ public function create_payment_intent( $args = '' ) { /** - * Retrieve a Payment Intent. + * Retrieves a Payment Intent. * - * @link https://stripe.com/docs/api/payment_intents/retrieve + * @link https://docs.stripe.com/api/payment_intents/retrieve * * @param string $id Payment Intent identifier. * @return array|bool An associative array if 200 OK, false otherwise. @@ -151,4 +151,41 @@ public function retrieve_payment_intent( $id ) { return $response_body; } + + /** + * Updates a Payment Intent. + * + * @link https://docs.stripe.com/api/payment_intents/update + * + * @param string $id Payment Intent identifier. + * @param array $parameters Parameters. + * @return array|bool An associative array if 200 OK, false otherwise. + */ + public function update_payment_intent( $id, $parameters ) { + $endpoint = sprintf( + 'https://api.stripe.com/v1/payment_intents/%s', + urlencode( $id ) + ); + + $request = array( + 'headers' => $this->default_headers(), + 'body' => wp_parse_args( $parameters, array() ), + ); + + $response = wp_remote_post( sanitize_url( $endpoint ), $request ); + + if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { + if ( WP_DEBUG ) { + $this->log( $endpoint, $request, $response ); + } + + return false; + } + + $response_body = wp_remote_retrieve_body( $response ); + $response_body = json_decode( $response_body, true ); + + return $response_body; + } + } diff --git a/wp-content/plugins/contact-form-7/modules/stripe/stripe.php b/wp-content/plugins/contact-form-7/modules/stripe/stripe.php index 45a2c387..124fba89 100644 --- a/wp-content/plugins/contact-form-7/modules/stripe/stripe.php +++ b/wp-content/plugins/contact-form-7/modules/stripe/stripe.php @@ -115,14 +115,31 @@ function wpcf7_stripe_skip_spam_check( $skip_spam_check, $submission ) { $pi_id = trim( $_POST['_wpcf7_stripe_payment_intent'] ); $payment_intent = $service->api()->retrieve_payment_intent( $pi_id ); - if ( isset( $payment_intent['status'] ) - and ( 'succeeded' === $payment_intent['status'] ) ) { + if ( + isset( $payment_intent['metadata']['wpcf7_submission_timestamp'] ) + ) { + // This PI has already been used. Ignore. + return $skip_spam_check; + } + + if ( + isset( $payment_intent['status'] ) and + 'succeeded' === $payment_intent['status'] + ) { $submission->push( 'payment_intent', $pi_id ); + + $service->api()->update_payment_intent( $pi_id, array( + 'metadata' => array( + 'wpcf7_submission_timestamp' => $submission->get_meta( 'timestamp' ), + ), + ) ); } } - if ( ! empty( $submission->pull( 'payment_intent' ) ) - and $submission->verify_posted_data_hash() ) { + if ( + ! empty( $submission->pull( 'payment_intent' ) ) and + $submission->verify_posted_data_hash() + ) { $skip_spam_check = true; } @@ -130,6 +147,46 @@ function wpcf7_stripe_skip_spam_check( $skip_spam_check, $submission ) { } +add_filter( + 'wpcf7_spam', + 'wpcf7_stripe_verify_payment_intent', + 6, 2 +); + +/** + * Verifies submitted Stripe Payment Intent ID. + */ +function wpcf7_stripe_verify_payment_intent( $spam, $submission ) { + $service = WPCF7_Stripe::get_instance(); + + if ( ! $service->is_active() ) { + return $spam; + } + + if ( ! empty( $_POST['_wpcf7_stripe_payment_intent'] ) ) { + $pi_id = trim( $_POST['_wpcf7_stripe_payment_intent'] ); + $payment_intent = $service->api()->retrieve_payment_intent( $pi_id ); + + if ( + ! $payment_intent or + isset( $payment_intent['metadata']['wpcf7_submission_timestamp'] ) + ) { + $spam = true; + + $submission->add_spam_log( array( + 'agent' => 'stripe', + 'reason' => __( + 'Invalid Stripe Payment Intent ID detected.', + 'contact-form-7' + ), + ) ); + } + } + + return $spam; +} + + add_action( 'wpcf7_before_send_mail', 'wpcf7_stripe_before_send_mail', diff --git a/wp-content/plugins/contact-form-7/readme.txt b/wp-content/plugins/contact-form-7/readme.txt index 315807f9..912cb4fe 100644 --- a/wp-content/plugins/contact-form-7/readme.txt +++ b/wp-content/plugins/contact-form-7/readme.txt @@ -2,10 +2,10 @@ Contributors: takayukister Donate link: https://contactform7.com/donate/ Tags: contact form, schema-woven validation -Tested up to: 6.7 +Tested up to: 6.8 Requires at least: 6.6 Requires PHP: 7.4 -Stable tag: 6.0.5 +Stable tag: 6.0.6 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -67,6 +67,10 @@ Do you have questions or issues with Contact Form 7? Use these support channels For more information, see [Releases](https://contactform7.com/category/releases/). += 6.0.6 = + +[https://contactform7.com/contact-form-7-606/](https://contactform7.com/contact-form-7-606/) + = 6.0.5 = [https://contactform7.com/contact-form-7-605/](https://contactform7.com/contact-form-7-605/) diff --git a/wp-content/plugins/contact-form-7/wp-contact-form-7.php b/wp-content/plugins/contact-form-7/wp-contact-form-7.php index 97f13b0a..7f85466b 100644 --- a/wp-content/plugins/contact-form-7/wp-contact-form-7.php +++ b/wp-content/plugins/contact-form-7/wp-contact-form-7.php @@ -7,12 +7,12 @@ * Author URI: https://ideasilo.wordpress.com/ * License: GPL v2 or later * License URI: https://www.gnu.org/licenses/gpl-2.0.html - * Version: 6.0.5 + * Version: 6.0.6 * Requires at least: 6.6 * Requires PHP: 7.4 */ -define( 'WPCF7_VERSION', '6.0.5' ); +define( 'WPCF7_VERSION', '6.0.6' ); define( 'WPCF7_REQUIRED_WP_VERSION', '6.6' ); diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.css b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.css index e6bc000f..45517628 100644 --- a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.css +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.css @@ -252,6 +252,42 @@ h3.closed .hcaptcha-section-header-toggle:after { width: 100%; } +/* Section Protect Content */ +.hcaptcha-section-content + table tbody { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-areas: + "content protected-urls"; + gap: 0 20px; + padding: 15px 20px; +} + +.hcaptcha-section-content + table tbody tr.hcaptcha-general-content { + grid-area: content; +} + +.hcaptcha-section-content + table tbody tr.hcaptcha-general-protected-urls { + grid-area: protected-urls; +} + +.hcaptcha-section-content + table tbody tr th { + padding: 0 0 10px 0; + width: auto; +} + +.hcaptcha-section-content + table tbody tr td { + width: max-content; +} + +.hcaptcha-section-content + table tbody tr.hcaptcha-general-protected-urls td { + width: auto; +} + +.hcaptcha-section-content + table tbody tr td textarea, +.hcaptcha-section-content + table tbody tr td input { + width: 100%; +} + /* Section Other */ .hcaptcha-section-other + table tbody { display: grid; @@ -260,7 +296,7 @@ h3.closed .hcaptcha-section-header-toggle:after { "logged whitelisted" "recaptcha whitelisted" "hide-login-errors whitelisted" - "network whitelisted" + "cleanup-on-uninstall network" "login-limit login-interval" "delay ."; gap: 0 20px; @@ -279,6 +315,10 @@ h3.closed .hcaptcha-section-header-toggle:after { grid-area: hide-login-errors; } +.hcaptcha-section-other + table tbody tr.hcaptcha-general-cleanup-on-uninstall { + grid-area: cleanup-on-uninstall; +} + .hcaptcha-section-other + table tbody tr.hcaptcha-general-login-limit { grid-area: login-limit; padding-top: 15px; @@ -309,6 +349,7 @@ h3.closed .hcaptcha-section-header-toggle:after { .hcaptcha-section-other + table tbody tr.hcaptcha-general-recaptcha-compat-off th, .hcaptcha-section-other + table tbody tr.hcaptcha-general-hide-login-errors th, +.hcaptcha-section-other + table tbody tr.hcaptcha-general-cleanup-on-uninstall th, .hcaptcha-section-other + table tbody tr.hcaptcha-general--network-wide th { padding: 0; } diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.min.css b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.min.css index ecf72402..27ad4df5 100644 --- a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.min.css +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/general.min.css @@ -1 +1 @@ -#hcaptcha-message,#setting-error-settings_updated{box-sizing:border-box;max-width:760px}#hcaptcha-options table tbody{background:#fff}#hcaptcha-options table tbody tr{align-self:start;display:grid}#hcaptcha-options table tbody tr th{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options .h-captcha{margin-bottom:0}#hcaptcha-options.hcaptcha-general h3{background:#fff;box-sizing:border-box;color:#5c6f8a;cursor:pointer;display:flex;justify-content:space-between;margin:1.5em 0 0;max-width:760px;padding:15px 20px}#hcaptcha-options.hcaptcha-general h3.disabled{opacity:.6}.hcaptcha-section-header-toggle:after{content:"\f142";font:normal 20px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h3.closed .hcaptcha-section-header-toggle:after{content:"\f140"}#hcaptcha-options.hcaptcha-general h3+table{margin-top:0;max-width:760px;position:relative}#hcaptcha-options.hcaptcha-general h3.disabled+table{opacity:.6}#hcaptcha-options.hcaptcha-general h3.closed+table{display:none}#hcaptcha-options.hcaptcha-general h3+table:before{border-bottom:1px solid #c3c4c7;content:"";margin:0 20px;max-width:720px;position:absolute;top:0;width:calc(100% - 40px)}.hcaptcha-section-keys+table tbody{display:grid;gap:10px 20px;grid-template-areas:"site-key site-key secret-key secret-key" "sample-hcaptcha sample-hcaptcha check-config reset-notifications";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-keys+table tbody th{width:auto}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-site-key{grid-area:site-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-secret-key{grid-area:secret-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-sample-hcaptcha{grid-area:sample-hcaptcha}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-check-config{grid-area:check-config}.hcaptcha-section-keys+table tbody tr.hcaptcha-reset-notifications{grid-area:reset-notifications}.hcaptcha-section-keys+table tbody tr th{padding:0 0 10px}.hcaptcha-section-keys+table tbody tr td input{width:100%}.hcaptcha-section-appearance+table tbody{display:grid;gap:10px 20px;grid-template-areas:"theme size language mode" "force force position position";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-theme{grid-area:theme}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-size{grid-area:size}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-language{grid-area:language}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-mode{grid-area:mode}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force{grid-area:force}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position{grid-area:position}.hcaptcha-section-appearance+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force td,.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position td{width:max-content}.hcaptcha-section-appearance+table tbody tr td select{width:100%}.hcaptcha-section-custom+table tbody{display:grid;gap:10px 20px;grid-template-areas:"custom-themes custom-themes config-params config-params" "custom-prop custom-value config-params config-params";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes{grid-area:custom-themes}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params{grid-area:config-params}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-prop{grid-area:custom-prop}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-value{grid-area:custom-value}.hcaptcha-section-custom+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes td{width:max-content}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params td{width:auto}.hcaptcha-section-custom+table tbody tr td select,.hcaptcha-section-custom+table tbody tr td textarea{width:100%}.hcaptcha-section-custom+table tbody tr td select option:disabled{background:#f0f0f1;color:#2c3338}.hcaptcha-section-custom+table tbody tr td input{height:30px;width:100%}.hcaptcha-section-enterprise+table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-enterprise+table tbody th{width:auto}.hcaptcha-section-enterprise+table tbody tr th{padding:0 0 10px}.hcaptcha-section-enterprise+table tbody tr td input{width:100%}.hcaptcha-section-other+table tbody{display:grid;gap:0 20px;grid-template-areas:"logged whitelisted" "recaptcha whitelisted" "hide-login-errors whitelisted" "network whitelisted" "login-limit login-interval" "delay .";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in{grid-area:logged}.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off{grid-area:recaptcha}.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors{grid-area:hide-login-errors}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit{grid-area:login-limit;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval{grid-area:login-interval;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{grid-area:whitelisted}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide{grid-area:network}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay{grid-area:delay;padding-top:15px}.hcaptcha-section-other+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off th{padding:0}.hcaptcha-section-other+table tbody tr td{width:max-content}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips td{width:auto}.hcaptcha-section-other+table tbody tr td input,.hcaptcha-section-other+table tbody tr td textarea{width:100%}.hcaptcha-section-statistics+table tbody{display:grid;gap:0 20px;grid-template-areas:"statistics collect-ip" "anonymous collect-ua";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-statistics{grid-area:statistics}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous{grid-area:anonymous}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ip{grid-area:collect-ip}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua{grid-area:collect-ua}.hcaptcha-section-statistics+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous th,.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua th{padding:0}.hcaptcha-section-statistics+table tbody tr td{width:max-content}@media (max-width:600px){.hcaptcha-section-keys+table tbody{grid-template-areas:"site-key site-key" "secret-key secret-key" "sample-hcaptcha sample-hcaptcha" "check-config reset-notifications";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody{grid-template-areas:"theme size" "language mode" "force force" "position position";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody tr td{width:unset!important}.hcaptcha-section-custom+table tbody{grid-template-areas:"custom-themes custom-themes" "custom-prop custom-value" "config-params config-params";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-custom+table tbody tr td{width:unset!important}.hcaptcha-section-enterprise+table tbody{grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-enterprise+table tbody tr td{width:unset!important}.hcaptcha-section-other+table tbody{grid-template-areas:"logged" "recaptcha" "hide-login-errors" "network" "whitelisted" "login-limit" "login-interval" "delay";grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-other+table tbody tr td{width:unset!important}.hcaptcha-section-statistics+table tbody{grid-template-areas:"statistics" "anonymous" "collect-ip" "collect-ua";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-statistics+table tbody tr td{width:unset!important}} \ No newline at end of file +#hcaptcha-message,#setting-error-settings_updated{box-sizing:border-box;max-width:760px}#hcaptcha-options table tbody{background:#fff}#hcaptcha-options table tbody tr{align-self:start;display:grid}#hcaptcha-options table tbody tr th{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options .h-captcha{margin-bottom:0}#hcaptcha-options.hcaptcha-general h3{background:#fff;box-sizing:border-box;color:#5c6f8a;cursor:pointer;display:flex;justify-content:space-between;margin:1.5em 0 0;max-width:760px;padding:15px 20px}#hcaptcha-options.hcaptcha-general h3.disabled{opacity:.6}.hcaptcha-section-header-toggle:after{content:"\f142";font:normal 20px dashicons;speak:never;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h3.closed .hcaptcha-section-header-toggle:after{content:"\f140"}#hcaptcha-options.hcaptcha-general h3+table{margin-top:0;max-width:760px;position:relative}#hcaptcha-options.hcaptcha-general h3.disabled+table{opacity:.6}#hcaptcha-options.hcaptcha-general h3.closed+table{display:none}#hcaptcha-options.hcaptcha-general h3+table:before{border-bottom:1px solid #c3c4c7;content:"";margin:0 20px;max-width:720px;position:absolute;top:0;width:calc(100% - 40px)}.hcaptcha-section-keys+table tbody{display:grid;gap:10px 20px;grid-template-areas:"site-key site-key secret-key secret-key" "sample-hcaptcha sample-hcaptcha check-config reset-notifications";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-keys+table tbody th{width:auto}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-site-key{grid-area:site-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-secret-key{grid-area:secret-key}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-sample-hcaptcha{grid-area:sample-hcaptcha}.hcaptcha-section-keys+table tbody tr.hcaptcha-general-check-config{grid-area:check-config}.hcaptcha-section-keys+table tbody tr.hcaptcha-reset-notifications{grid-area:reset-notifications}.hcaptcha-section-keys+table tbody tr th{padding:0 0 10px}.hcaptcha-section-keys+table tbody tr td input{width:100%}.hcaptcha-section-appearance+table tbody{display:grid;gap:10px 20px;grid-template-areas:"theme size language mode" "force force position position";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-theme{grid-area:theme}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-size{grid-area:size}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-language{grid-area:language}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-mode{grid-area:mode}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force{grid-area:force}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position{grid-area:position}.hcaptcha-section-appearance+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-force td,.hcaptcha-section-appearance+table tbody tr.hcaptcha-general-menu-position td{width:max-content}.hcaptcha-section-appearance+table tbody tr td select{width:100%}.hcaptcha-section-custom+table tbody{display:grid;gap:10px 20px;grid-template-areas:"custom-themes custom-themes config-params config-params" "custom-prop custom-value config-params config-params";grid-template-columns:repeat(4,1fr);padding:15px 20px}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes{grid-area:custom-themes}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params{grid-area:config-params}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-prop{grid-area:custom-prop}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-value{grid-area:custom-value}.hcaptcha-section-custom+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-custom-themes td{width:max-content}.hcaptcha-section-custom+table tbody tr.hcaptcha-general-config-params td{width:auto}.hcaptcha-section-custom+table tbody tr td select,.hcaptcha-section-custom+table tbody tr td textarea{width:100%}.hcaptcha-section-custom+table tbody tr td select option:disabled{background:#f0f0f1;color:#2c3338}.hcaptcha-section-custom+table tbody tr td input{height:30px;width:100%}.hcaptcha-section-enterprise+table tbody{display:grid;gap:10px 20px;grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-enterprise+table tbody th{width:auto}.hcaptcha-section-enterprise+table tbody tr th{padding:0 0 10px}.hcaptcha-section-enterprise+table tbody tr td input{width:100%}.hcaptcha-section-content+table tbody{display:grid;gap:0 20px;grid-template-areas:"content protected-urls";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-content+table tbody tr.hcaptcha-general-content{grid-area:content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls{grid-area:protected-urls}.hcaptcha-section-content+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-content+table tbody tr td{width:max-content}.hcaptcha-section-content+table tbody tr.hcaptcha-general-protected-urls td{width:auto}.hcaptcha-section-content+table tbody tr td input,.hcaptcha-section-content+table tbody tr td textarea{width:100%}.hcaptcha-section-other+table tbody{display:grid;gap:0 20px;grid-template-areas:"logged whitelisted" "recaptcha whitelisted" "hide-login-errors whitelisted" "cleanup-on-uninstall network" "login-limit login-interval" "delay .";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-off-when-logged-in{grid-area:logged}.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off{grid-area:recaptcha}.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors{grid-area:hide-login-errors}.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall{grid-area:cleanup-on-uninstall}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit{grid-area:login-limit;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval{grid-area:login-interval;padding-top:15px}.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips{grid-area:whitelisted}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide{grid-area:network}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay{grid-area:delay;padding-top:15px}.hcaptcha-section-other+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-other+table tbody tr.hcaptcha-general--network-wide th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-cleanup-on-uninstall th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-hide-login-errors th,.hcaptcha-section-other+table tbody tr.hcaptcha-general-recaptcha-compat-off th{padding:0}.hcaptcha-section-other+table tbody tr td{width:max-content}.hcaptcha-section-other+table tbody tr.hcaptcha-general-delay td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-interval td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-login-limit td,.hcaptcha-section-other+table tbody tr.hcaptcha-general-whitelisted-ips td{width:auto}.hcaptcha-section-other+table tbody tr td input,.hcaptcha-section-other+table tbody tr td textarea{width:100%}.hcaptcha-section-statistics+table tbody{display:grid;gap:0 20px;grid-template-areas:"statistics collect-ip" "anonymous collect-ua";grid-template-columns:repeat(2,1fr);padding:15px 20px}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-statistics{grid-area:statistics}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous{grid-area:anonymous}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ip{grid-area:collect-ip}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua{grid-area:collect-ua}.hcaptcha-section-statistics+table tbody tr th{padding:0 0 10px;width:auto}.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-anonymous th,.hcaptcha-section-statistics+table tbody tr.hcaptcha-general-collect-ua th{padding:0}.hcaptcha-section-statistics+table tbody tr td{width:max-content}@media (max-width:600px){.hcaptcha-section-keys+table tbody{grid-template-areas:"site-key site-key" "secret-key secret-key" "sample-hcaptcha sample-hcaptcha" "check-config reset-notifications";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody{grid-template-areas:"theme size" "language mode" "force force" "position position";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-appearance+table tbody tr td{width:unset!important}.hcaptcha-section-custom+table tbody{grid-template-areas:"custom-themes custom-themes" "custom-prop custom-value" "config-params config-params";grid-template-columns:repeat(2,1fr)!important}.hcaptcha-section-custom+table tbody tr td{width:unset!important}.hcaptcha-section-enterprise+table tbody{grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-enterprise+table tbody tr td{width:unset!important}.hcaptcha-section-other+table tbody{grid-template-areas:"logged" "recaptcha" "hide-login-errors" "network" "whitelisted" "login-limit" "login-interval" "delay";grid-template-columns:repeat(1,1fr)!important}.hcaptcha-section-other+table tbody tr td{width:unset!important}.hcaptcha-section-statistics+table tbody{grid-template-areas:"statistics" "anonymous" "collect-ip" "collect-ua";grid-template-columns:repeat(1,1fr)}.hcaptcha-section-statistics+table tbody tr td{width:unset!important}} \ No newline at end of file diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.css b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.css index f5a509ab..743a69f4 100644 --- a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.css +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.css @@ -280,6 +280,25 @@ body.settings_page_hcaptcha { text-align: center; } +#hcaptcha-lightbox-modal { + display: none; + position: fixed; + top: 0; + left: 0; + width: 100vw; + height: 100vh; + z-index: 110000; + background: rgba(0, 0, 0, 0.8); + justify-content: center; + align-items: center; +} + +#hcaptcha-lightbox-img { + max-width: calc(100% - 100px); + max-height: calc(100vh - 100px); + box-shadow: 0 0 20px #000; +} + @media (max-width: 782px) { #hcaptcha-options .wp-list-table .toggle-row { top: 15px; diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.min.css b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.min.css index df169199..66a1991f 100644 --- a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.min.css +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/settings-base.min.css @@ -1 +1 @@ -body.settings_page_hcaptcha{background:#f0f2f5;color:#5c6f8a}.wrap h1.hcaptcha-settings-header{align-items:center;display:flex;font-size:34px;font-weight:700}.hcaptcha-logo{height:64px;margin-block-end:10px;margin-block-start:10px;margin-inline-end:5px;margin-inline-start:0}.hcaptcha-settings-tabs{background:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;line-height:4.5em;margin:10px -20px 0;padding:0 20px;position:sticky;top:0;z-index:2}.hcaptcha-settings-tab{color:#646970;display:inline-block;font-size:1.1em;margin-inline-end:30px;text-decoration:none}.hcaptcha-settings-tab:hover{border-bottom-color:#025176!important;border-bottom:2px solid;color:#666}.hcaptcha-settings-tab.active{border-bottom:2px solid #0075ab}.hcaptcha-header-bar{align-items:center;background:#f0f2f5;display:flex;justify-content:space-between;margin:0 -20px;padding:0 20px;position:sticky;top:60px;z-index:2}#hcaptcha-options h2{color:#5c6f8a;font-size:1.5em}#hcaptcha-options h2~*{display:none}#hcaptcha-options h3{color:#5c6f8a;margin:1.5em 0 1em}#hcaptcha-options .notice-dismiss:before{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options table tr td fieldset input[type=checkbox]{border:none;box-shadow:none;display:inline;height:1.25rem;margin-block-end:0;margin-block-start:-.125rem;margin-inline-end:.5rem;margin-inline-start:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:before{background:url(../images/checkbox-off.svg);background-size:cover;content:"";display:inline-block;height:1.25rem;margin:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:checked:before{background:no-repeat url(../images/checkbox-on.svg);background-size:cover}#hcaptcha-options fieldset:disabled{color:#dadada}#hcaptcha-options .button-primary{background-color:#026593;border-color:#026593;color:#fff}#hcaptcha-options .button-primary:hover{background-color:#025176}#hcaptcha-options .button-secondary{background-color:#fff;border-color:#026593;color:#026593}#hcaptcha-options .button-secondary:hover{background-color:#ccc}#hcaptcha-options a{color:#0075ab}#hcaptcha-navigation a{border-color:#0075ab}#hcaptcha-options a.hcaptcha-settings-tab{color:#5c6f8a}#hcaptcha-options .helper:before{background:#5c6f8a;border-radius:1.2em;color:#fff;content:"?";height:1.2em;inset-inline-end:0;position:absolute;text-align:center;top:0;transform:translateY(-27px);width:1.2em}#hcaptcha-options fieldset+.helper:before{top:50%;transform:translate(25px,-.7em)}.rtl #hcaptcha-options fieldset+.helper:before{transform:translate(-25px,-.8em)}#hcaptcha-options .helper .helper-content{background:#5c6f8a;box-sizing:border-box;color:#f0f2f5;display:none;inset-inline-end:0;padding:.5em 1em;position:absolute;top:0;transform:translate(1px,10px);width:100%}.rtl #hcaptcha-options .helper .helper-content{transform:translate(-1px,10px)}#hcaptcha-options fieldset+.helper .helper-content{top:50%;transform:translate(25px,25px);width:calc(100% + 25px)}#hcaptcha-options .helper:hover{cursor:help}#hcaptcha-options .helper:hover .helper-content{display:block;z-index:1}#hcaptcha-options .helper .helper-content:after{border:10px solid transparent;border-bottom-color:#5c6f8a;content:"";inset-inline-end:0;position:absolute;top:0;transform:translateY(-100%)}#hcaptcha-options .helper .helper-content a{color:#fff}#hcaptcha-message{box-sizing:border-box}#hcaptcha-message>p{font-size:13px;font-weight:600;line-height:1.5;margin:.5em 0}@keyframes blink{0%{opacity:1}16.7%{opacity:0}33.3%{opacity:1}50%{opacity:0}66.7%{opacity:1}83.3%{opacity:0}to{opacity:1}}.blink{animation:blink 3s linear}.hcaptcha-hide{display:none}.hcaptcha-excerpt{display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:max-content}.hcaptcha-excerpt:hover{overflow:visible}.hcaptcha-excerpt:hover .hcaptcha-hide{background:#5c6f8a;border:1px solid #c3c4c7;border-radius:6px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#f0f2f5;display:block;inset-inline-start:50%;max-width:300px;padding:8px 10px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);white-space:normal;width:max-content;z-index:1}@media (max-width:782px){#hcaptcha-options .wp-list-table .toggle-row{top:15px}#hcaptcha-options .wp-list-table tr.is-expanded .toggle-row{top:6.5px}#hcaptcha-options .widefat tbody th.check-column{padding:0;vertical-align:middle}#hcaptcha-options .widefat thead td.check-column,.widefat tfoot td.check-column{padding-left:0}#hcaptcha-options .widefat th input[type=checkbox]{margin-bottom:0}#hcaptcha-options .wp-list-table .is-expanded td:not(.hidden){overflow:visible}.hcaptcha-settings-tabs{margin:unset;margin-block-end:0;margin-block-start:10px;margin-inline-end:-12px;margin-inline-start:-10px;padding-block-end:0;padding-block-start:0;padding-inline-end:12px;padding-inline-start:10px}.hcaptcha-excerpt{display:table-cell;height:44px;vertical-align:middle}tr.is-expanded .hcaptcha-excerpt{height:19.5px}}@media (max-width:600px){#hcaptcha-options table tbody{grid-template-columns:1fr}#hcaptcha-options table tbody tr{position:relative}#hcaptcha-options fieldset+.helper:before{transform:translateY(-.7em)}#hcaptcha-options fieldset+.helper .helper-content{transform:translateY(25px);width:100%}#hcaptcha-options .helper{z-index:1}.hcaptcha-settings-tab{inset-inline-end:15px}} \ No newline at end of file +body.settings_page_hcaptcha{background:#f0f2f5;color:#5c6f8a}.wrap h1.hcaptcha-settings-header{align-items:center;display:flex;font-size:34px;font-weight:700}.hcaptcha-logo{height:64px;margin-block-end:10px;margin-block-start:10px;margin-inline-end:5px;margin-inline-start:0}.hcaptcha-settings-tabs{background:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;line-height:4.5em;margin:10px -20px 0;padding:0 20px;position:sticky;top:0;z-index:2}.hcaptcha-settings-tab{color:#646970;display:inline-block;font-size:1.1em;margin-inline-end:30px;text-decoration:none}.hcaptcha-settings-tab:hover{border-bottom-color:#025176!important;border-bottom:2px solid;color:#666}.hcaptcha-settings-tab.active{border-bottom:2px solid #0075ab}.hcaptcha-header-bar{align-items:center;background:#f0f2f5;display:flex;justify-content:space-between;margin:0 -20px;padding:0 20px;position:sticky;top:60px;z-index:2}#hcaptcha-options h2{color:#5c6f8a;font-size:1.5em}#hcaptcha-options h2~*{display:none}#hcaptcha-options h3{color:#5c6f8a;margin:1.5em 0 1em}#hcaptcha-options .notice-dismiss:before{color:#5c6f8a}#hcaptcha-options table tbody tr td{margin:0;padding:0;position:relative}#hcaptcha-options table tr td fieldset input[type=checkbox]{border:none;box-shadow:none;display:inline;height:1.25rem;margin-block-end:0;margin-block-start:-.125rem;margin-inline-end:.5rem;margin-inline-start:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:before{background:url(../images/checkbox-off.svg);background-size:cover;content:"";display:inline-block;height:1.25rem;margin:0;width:2.3611rem}#hcaptcha-options table tr td fieldset input[type=checkbox]:checked:before{background:no-repeat url(../images/checkbox-on.svg);background-size:cover}#hcaptcha-options fieldset:disabled{color:#dadada}#hcaptcha-options .button-primary{background-color:#026593;border-color:#026593;color:#fff}#hcaptcha-options .button-primary:hover{background-color:#025176}#hcaptcha-options .button-secondary{background-color:#fff;border-color:#026593;color:#026593}#hcaptcha-options .button-secondary:hover{background-color:#ccc}#hcaptcha-options a{color:#0075ab}#hcaptcha-navigation a{border-color:#0075ab}#hcaptcha-options a.hcaptcha-settings-tab{color:#5c6f8a}#hcaptcha-options .helper:before{background:#5c6f8a;border-radius:1.2em;color:#fff;content:"?";height:1.2em;inset-inline-end:0;position:absolute;text-align:center;top:0;transform:translateY(-27px);width:1.2em}#hcaptcha-options fieldset+.helper:before{top:50%;transform:translate(25px,-.7em)}.rtl #hcaptcha-options fieldset+.helper:before{transform:translate(-25px,-.8em)}#hcaptcha-options .helper .helper-content{background:#5c6f8a;box-sizing:border-box;color:#f0f2f5;display:none;inset-inline-end:0;padding:.5em 1em;position:absolute;top:0;transform:translate(1px,10px);width:100%}.rtl #hcaptcha-options .helper .helper-content{transform:translate(-1px,10px)}#hcaptcha-options fieldset+.helper .helper-content{top:50%;transform:translate(25px,25px);width:calc(100% + 25px)}#hcaptcha-options .helper:hover{cursor:help}#hcaptcha-options .helper:hover .helper-content{display:block;z-index:1}#hcaptcha-options .helper .helper-content:after{border:10px solid transparent;border-bottom-color:#5c6f8a;content:"";inset-inline-end:0;position:absolute;top:0;transform:translateY(-100%)}#hcaptcha-options .helper .helper-content a{color:#fff}#hcaptcha-message{box-sizing:border-box}#hcaptcha-message>p{font-size:13px;font-weight:600;line-height:1.5;margin:.5em 0}@keyframes blink{0%{opacity:1}16.7%{opacity:0}33.3%{opacity:1}50%{opacity:0}66.7%{opacity:1}83.3%{opacity:0}to{opacity:1}}.blink{animation:blink 3s linear}.hcaptcha-hide{display:none}.hcaptcha-excerpt{display:block;max-width:100%;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:max-content}.hcaptcha-excerpt:hover{overflow:visible}.hcaptcha-excerpt:hover .hcaptcha-hide{background:#5c6f8a;border:1px solid #c3c4c7;border-radius:6px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#f0f2f5;display:block;inset-inline-start:50%;max-width:300px;padding:8px 10px;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);white-space:normal;width:max-content;z-index:1}#hcaptcha-lightbox-modal{align-items:center;background:rgba(0,0,0,.8);display:none;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:110000}#hcaptcha-lightbox-img{box-shadow:0 0 20px #000;max-height:calc(100vh - 100px);max-width:calc(100% - 100px)}@media (max-width:782px){#hcaptcha-options .wp-list-table .toggle-row{top:15px}#hcaptcha-options .wp-list-table tr.is-expanded .toggle-row{top:6.5px}#hcaptcha-options .widefat tbody th.check-column{padding:0;vertical-align:middle}#hcaptcha-options .widefat thead td.check-column,.widefat tfoot td.check-column{padding-left:0}#hcaptcha-options .widefat th input[type=checkbox]{margin-bottom:0}#hcaptcha-options .wp-list-table .is-expanded td:not(.hidden){overflow:visible}.hcaptcha-settings-tabs{margin:unset;margin-block-end:0;margin-block-start:10px;margin-inline-end:-12px;margin-inline-start:-10px;padding-block-end:0;padding-block-start:0;padding-inline-end:12px;padding-inline-start:10px}.hcaptcha-excerpt{display:table-cell;height:44px;vertical-align:middle}tr.is-expanded .hcaptcha-excerpt{height:19.5px}}@media (max-width:600px){#hcaptcha-options table tbody{grid-template-columns:1fr}#hcaptcha-options table tbody tr{position:relative}#hcaptcha-options fieldset+.helper:before{transform:translateY(-.7em)}#hcaptcha-options fieldset+.helper .helper-content{transform:translateY(25px);width:100%}#hcaptcha-options .helper{z-index:1}.hcaptcha-settings-tab{inset-inline-end:15px}} \ No newline at end of file diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.css b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.css new file mode 100644 index 00000000..826c1843 --- /dev/null +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.css @@ -0,0 +1,173 @@ +.hcaptcha-whats-new-modal { + position: fixed; + z-index: 99999; + left: 0; + top: 0; + right: 0; + bottom: 0; + width: 100%; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.hcaptcha-whats-new-modal-bg { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: rgba(30, 30, 35, 0.6); + backdrop-filter: blur(7px); +} + +.hcaptcha-whats-new-close { + position: absolute; + top: 10px; + right: 10px; + margin: 0; + padding: 0; + background: none; + border: none; + line-height: 0; + color: #787c82; + cursor: pointer; + z-index: 100001; +} + +.hcaptcha-whats-new-close:before { + background: none; + color: #787c82; + content: "\f153"; + display: block; + font: normal 16px / 20px dashicons; + speak: never; + height: 20px; + text-align: center; + width: 20px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.hcaptcha-whats-new-modal-popup { + position: relative; + display: flex; + flex-direction: column; + background: #fff; + border-radius: 12px; + box-shadow: 0 8px 40px rgba(0, 0, 0, 0.25); + min-width: 70vw; + max-width: 1000px; + max-height: calc(100vh - 100px); + margin: 50px; + padding: 0; + overflow-y: auto; + z-index: 100000; +} + +.hcaptcha-whats-new-header { + display: flex; + flex: 0 0 auto; + justify-content: center; + justify-items: start; + margin: 50px 13% 0 13%; + align-items: center; +} + +.hcaptcha-whats-new-icon { + margin-right: 11px; +} + +.hcaptcha-whats-new-icon img { + height: 40px; +} + +.hcaptcha-whats-new-title h1 { + margin: 0; + font-weight: 700; + font-size: 24px; + color: #3c434a; + line-height: normal; +} + +#hcaptcha-whats-new-version { + color: #0075ab; +} + +.hcaptcha-whats-new-content { + margin: 50px 0 0 0; + flex: 1 1 auto; + overflow-y: auto; + scrollbar-width: none; /* Firefox */ + -ms-overflow-style: none; /* IE 10+, Edge */ +} + +/* Chrome, Safari and other WebKit-browsers */ +.popup-content::-webkit-scrollbar { + display: none; +} + +.hcaptcha-whats-new-block { + padding: 75px 13%; +} + +.hcaptcha-whats-new-block:first-of-type { + padding-top: 25px; +} + +.hcaptcha-whats-new-block:nth-child(odd) { + background: #f0f2f5; +} + +.hcaptcha-whats-new-block.center { + text-align: center; +} + +.hcaptcha-whats-new-badge { + display: inline-block; + margin-bottom: 10px; + color: #ffffff; + background: #4de1d2; + border: 1px #4de1d2 solid; + border-radius: 2px; + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + line-height: normal; + padding: 4px 8px; + cursor: default; +} + +.hcaptcha-whats-new-content h2 { + margin: 0; + font-weight: 500; + font-size: 32px; + color: #3c434a; + line-height: normal; +} + +.hcaptcha-whats-new-message, +.hcaptcha-whats-new-message p { + font-weight: 400; + font-size: 18px; + color: #3c434a; + line-height: normal; + margin: 15px 0; +} + +.hcaptcha-whats-new-button { + margin-bottom: 50px; +} + +.hcaptcha-whats-new-image img { + max-width: 100%; +} + +@media (max-width: 600px) { + .hcaptcha-whats-new-modal-popup { + max-width: calc(100% - 16px); + max-height: calc(100vh - 16px); + margin: 8px; + } +} diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.min.css b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.min.css new file mode 100644 index 00000000..0b1b7e56 --- /dev/null +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/css/whats-new.min.css @@ -0,0 +1 @@ +.hcaptcha-whats-new-modal{align-items:center;bottom:0;display:flex;height:100vh;justify-content:center;left:0;position:fixed;right:0;top:0;width:100%;z-index:99999}.hcaptcha-whats-new-modal-bg{backdrop-filter:blur(7px);background:rgba(30,30,35,.6);bottom:0;left:0;position:absolute;right:0;top:0}.hcaptcha-whats-new-close{background:none;border:none;color:#787c82;cursor:pointer;line-height:0;margin:0;padding:0;position:absolute;right:10px;top:10px;z-index:100001}.hcaptcha-whats-new-close:before{background:none;color:#787c82;content:"\f153";display:block;font:normal 16px/20px dashicons;speak:never;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hcaptcha-whats-new-modal-popup{background:#fff;border-radius:12px;box-shadow:0 8px 40px rgba(0,0,0,.25);display:flex;flex-direction:column;margin:50px;max-height:calc(100vh - 100px);max-width:1000px;min-width:70vw;overflow-y:auto;padding:0;position:relative;z-index:100000}.hcaptcha-whats-new-header{align-items:center;display:flex;flex:0 0 auto;justify-content:center;justify-items:start;margin:50px 13% 0}.hcaptcha-whats-new-icon{margin-right:11px}.hcaptcha-whats-new-icon img{height:40px}.hcaptcha-whats-new-title h1{color:#3c434a;font-size:24px;font-weight:700;line-height:normal;margin:0}#hcaptcha-whats-new-version{color:#0075ab}.hcaptcha-whats-new-content{flex:1 1 auto;margin:50px 0 0;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.popup-content::-webkit-scrollbar{display:none}.hcaptcha-whats-new-block{padding:75px 13%}.hcaptcha-whats-new-block:first-of-type{padding-top:25px}.hcaptcha-whats-new-block:nth-child(odd){background:#f0f2f5}.hcaptcha-whats-new-block.center{text-align:center}.hcaptcha-whats-new-badge{background:#4de1d2;border:1px solid #4de1d2;border-radius:2px;color:#fff;cursor:default;display:inline-block;font-size:10px;font-weight:700;line-height:normal;margin-bottom:10px;padding:4px 8px;text-transform:uppercase}.hcaptcha-whats-new-content h2{color:#3c434a;font-size:32px;font-weight:500;line-height:normal;margin:0}.hcaptcha-whats-new-message,.hcaptcha-whats-new-message p{color:#3c434a;font-size:18px;font-weight:400;line-height:normal;margin:15px 0}.hcaptcha-whats-new-button{margin-bottom:50px}.hcaptcha-whats-new-image img{max-width:100%}@media (max-width:600px){.hcaptcha-whats-new-modal-popup{margin:8px;max-height:calc(100vh - 16px);max-width:calc(100% - 16px)}} \ No newline at end of file diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/hcaptcha-icon-animated.svg b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/hcaptcha-icon-animated.svg new file mode 100644 index 00000000..d9f859f3 --- /dev/null +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/hcaptcha-icon-animated.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/events-manager.svg b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/events-manager.svg new file mode 100644 index 00000000..5ea7677f --- /dev/null +++ b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/events-manager.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Events + + + Manager + + diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/password-protected.png b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/logo/password-protected.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a4543a5101cc79bd7330932d7099e77f0a4610 GIT binary patch literal 14487 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 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/passive-mode-example.gif b/wp-content/plugins/hcaptcha-for-forms-and-more/assets/images/passive-mode-example.gif new file mode 100644 index 0000000000000000000000000000000000000000..45cd957a4a2688c248613e606f5a78b2be0fb939 GIT binary patch literal 753519 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%0A2O5?%aVJD!AYvb+d=ig8M z>gSbp3!(#~wynxc)3wR};-F%o8>sU=i7?TVZE2#8lDs1@m1e$Q_9JSxjJ21>fzSSc zsLire=x_-?GcIy4%GxbkQf}KMdNS+CFFj91pRRS_TR+CI z?LNMIZxkKv;BtjuMft{!uqO5ndp_;{7(2!+(Mf`KlXaSp<`;Lm$a^wVeL2JK4;)3C zAc<%D&;vye(*R-!@HUJ$a5{e0TqNM4k;a7&qLhM4sf5b&l!xa!K?jmy9@Bi0i?EtW zSvZR)fJ(2k8fRqRw$YBaz~Sm_+8vr`+o5voCy@#CDmd zy=Lok9y*vLZp){AZ|Za3UzsEkSRes-4S7Iuko1QlEC-#!d@Ns(EFH^CxK={}Q71^A zw_+yRxuKBq4WuZ;G8>=JP{b(CtgKxzn_SmW%;C$dYQ{2`KHE?t(8;XsQZbi((@-k$ z#;g&o|O{BtU9?a8Nj-Ym;^~XY|RI9P#jSX2);!Bl{eq*I^Bh%-n4lg@fN8NmxyqO7Yk#w-oRJnTQTD-GoH-F5yL zvD=w_C|e4NXsYXEcQ`j+`*beQ-1T;z;l0MZ4d2`{goN)Tn7qEr)7+|S;82oxx_+$n zS!tHt-mSjUh}&pMYh#1Mv;S-1rB+18jyR{cuDP+&AHmKG-^t)wr{LZxO$YHNFJ^L{3??(Y9UQbV=gcqMkX>S9e1=#)ouzj?UVQ>cU%x#0@Z2w zh_nPx0;j3D7`yPOx?i1SM%7o4cI%j2ymNMq-9G!c{8a ze_`t+s-;UN^z1lW88Lnt$__X)?t@~S4NjZEQB!mb>uTiZ37#aF`n=UC09Z7%1XuS|yhT-#z( z7k{?Zb%}q@EO^^jru+mN3fa$pXt%E}b_q1q|2emJ zXT%R2#5mV=}Nf(B=_^{g36n*a2;?uMvo~&Y{ zJ&^kS5)og_W?8Hm0_lsKenz0+(Mm+05oOB+TMu1mUyI)H;vZ^DCN;MzLE_Z=Qzhc?=euU~4hmUE6_$gwI`{DG!Qc*+aQm22R?N5tWO zbAMPvE79qC5B%eb($tJZ(aFu>6%a%iBln}8a`R`CtmM#o zpI(%34SG)mxS_l|Ar)LlDaNcoY>2;Tjq!bF4)VK+?>R1UusT~*48}|x<~9zTGz?rv zjVy};h0m75b5g;ehln+xLv;q1jHqzjX}r_%2s@)u%hiZ#G0a?N043D2j*$m$g925- z7(6%#DU=uk->9UZVkpMq0Lodfd@6xdoFN&iH{2-{Eis(g$@K{$hIm<_NYt!NGM!06 z##y*g8WJQb3~D%ruwMFO>Qkp}st{VY^aRPg1eRL7x(+S2$ysuB@bWzclaL7-PXW=4 zza)w3tRpzin8Vj3MciQ5k_ESu}as7$rG%difB2OAC61 zj1jqzQ3dxR#W6WWKP9CYdgZ!7CHGO~k|Gr}ITZ&b)h>Fqn*mkJQMJV)^;KDQW2H|Q z^csBwpCmqO5HSQ|FeFnKYjRj9fr^ua7_{a06(kvwG>UbME#&o!6RjEa-1lW284~@A zKgTdghZVcUGZ+|zeqkInDB0I-+K=xk{>oEqNTg&mWudvbA9uuHd_n&WIQs2@K@E5i zi&J7!QuO^n(Uh`8k>emnh|$cF-uz(1T)sqB?;zTw#DcQOGG@ur4|ZVU$`~ESXdOZK zV{GI{%7I`BV^mFvjdP)Go1$HprNESBzzn0qX0Uzrh{M4F--BfYp!BD7p<|As6P6V( zrByhH$r+8#C1%7$zzQU96{b<@>YeX4wB+V+s9|0j>dEABK;`K?;u*s9kX#y)SL#KS z<86u}Smx0wm!FpxE#-I?(vJeMQsC!wcA1ExOEGz~To>CT`1Bxgqi>L-gHkCzofue@W zqNYI6i)GQ9pqPWQmwN z>s-MHvH9~*QG>-=OH^4~ck&m$l6du`R-m$8g0(@uGKaCU4xXl7nYGEXvdN*cOv|>> z8`|hx*%HIrnqr&hecF8RttErCy{WQYnYFFN_Tdlgw0*I%bCb1tsIp^-vU8`h``xyl zD5wXmii|*}x1zU~?CigstEa#8Xm?vP#@6VFJpGDgKIcb}DguEaBP3CK4{|T zqUBiTs9qOv*r<>ava{O@wC`_=U8$%ZZR5BysNy)1<{psd9yvc8yEx+Ez$ZWuH}Ah5 zt6mzjUnKg=k%n-|VYC0@FjDJq<;U4fB(vmjh5|juS?@tXlzge+{0Hyi055JZ;r zw^xK?lcjIG0f3pM(qFu%a;H3gxFEYA%cm5Bqenf(t(ifX;cfa)*E~>j;=f!2H;c!X<_E ztp=W{25py96zqtLuz|}|OL}^O{jY{rs1~1-3+quvyyy}~-|3@gKc)~OrVBT+OAS7Z z3*Qw^DD0YK+>kW4mZqKM(D{m#tp<+I8Sxha=HF`+N$1xXf7-noTG<-$I|Kwl9x9hB zA(R{HN<$i|I_Am>TAv#np*lE_v>2oYpA!LdxF2Vr59723j;ojPv7hA^53)=zj#v;V zmS>c(j<*4xfnJ)2vz|wgm-k~muc!;_evmki$s#WkPD3Ab$njmrgT3m<``6daeVxAXkYJ8T3j_g__N_R>Oc1L?nx4R-f9s`3V84npz!J_ zxINO^(7v*lPPyqZaUa&XedfH^h;_p{?ZbJpr-+q=BazfNb^AKaXXvu7W5!=%d~d{b zt#|77ow!Hx-~G2~ZcJiWKN87I~QpB$TwoIqiiA}@&O{LOJHkntP7;sD=LAygqxV;|MC3h?jI8*`v z>fQs=UJsIMuk)HTv1gDey5JCnlg-lo4=RtVzJ5;E01p>e_e1|LDjpxp5HtiO;rJw7 z`kS3S;5^JOzeYCW(p5OQocI?$K2{6<@(5rck#s+78Zdd_G52u$Ea>AQfCCc3*Ow-K z@^D0G8H#`Ova<2|;CXctXnX77((M746!`5l&<(lKS5VTywi&MB!Px~ql-EY|e~5d_ zsJOOmYm~y>HMqNL;Tqh6Bq1R{aDsc`?(QzZEl{|-I{|_dB)Gd%k7Vz2&c5Gw@Aukk z@3r>+)@rTRTyxFQ$DE^&)w{cEHibeS%Vk`O54v5)% zjjnlzE)JmIh0cJHfVl+0n7JhC`4IIsWr#^F1o5XRW<=w-rooh^<~0?41Eu3IXY}x6 ziUZINq0rQtviV=8soB}|9!|U~V*Xs)|ny=birQMui=mxO7 zFM7E97T=kzCtf%WRq~C3! z0$ms|Fd@OngWFHweiA0s$JkQH)siFVo|Obcck9lY@7`7P(EQR=F#$t&>E2HK*do+Q zK5EVi)e1rs?j3-kdj}wD72=PPm>`#8<&c@VX>Eh?=z81Mcd^GJ?n`Saj4LdG2@60A z@Lfn28IbKJc_&rw4IGimNO7@f8W3)OFrVpo_>msm1M?(|``B`@w@UBXOy1Tp;orIG z-gWcX;n0(X-a7SDgbvqp?qrW8r0u2tC6SpdvVhQq4htCYf8z4l2M;`TGirKoe)-1*~84 zF_A(HHK!vGfnZPs@Y<`@OXj=X6kvev26q?GQ>@_qlkLT=GfOj1B15QE%jEcVq4okNZ&D^{p^HhWOha+a`@a}DiMq?lEx!t zyOx#ttQC1xGh1H9TEq8kxyCMAkw6J4$;IYphc5zwXojoZ=0Gg{+x85Q!_GvmY&89~ z(O0)744tz9;0%e3+Hxgs{WH$=us9MijaX3Q-L^L9VbJ=1&>f7nDq$i8yR1%lAQQ2@TsG+EmN$L-e^3Z-yC5 z%D)dY7ad|!9X)Tpkv>N4rU@lK!&dDBy~`MA_0!jMXz%FnHIjbZ^;4A-=ow)ld)%JF z84?4aX{z}q^nRa|!cx|pk|DC1nUbZ9ykuY{M+S>2J`iI|D8mWb7O2>5I!>y~vpSVa z(kj2uiv(et*AM7t*&%%LA*#W%oxy@5?7(LmBsE>c8w{i2N;)Gn-v_;Y zWx6b1xlyxy^mZ%pz4gLYvOyGZ1l%}QvF&d+-n7IyqWo1>!Q)veEph;rHp?*1%s+yY zG1b&Oxa+LvqkgZjkrHzwFxE7|_;~T4vJ3sgA$TauvE0`|>cdXm0-2){8ICn|XeiQ~ z0StXi#crZ}Z&<-lT}vX31jBsmO&qQ$B-&6a$@k5PpyToM#9XYcmoBHVNNUnRd`YkOhY&XU@wJoc;mo;UEoeifmlsmf?fMhKNu7Ifjmfk< zvP?5{bz)oarYIq$trvSGm8KSvnruFHgye^ja$P8Z$*4jxEL)%~AhdKenjzWiaWg|ED{S zl&(n{RB!6=X-@25q`pupBl*+S6w&S0RayfB;xByyI$dax*=~e{NnNTnU*S#CQ(uwG zbqrrZX-buFcO*Lmj(6)3NJ&AY>q~*~xrBZ3G%RF$4|-Umi99RsyKK&uvYV>-Fq#63 z47RHSH`WS-lx8MOiI*t1f(T`Shejz}FF9C_R{9RzTL8`sWd?baU9$A;I_7uV(cW%^2)EkLx+#w8 zm&b&P@5kek>S~R(&O`DYY2%XHNCx3hs5<n zRR24}}lRMycDCLHRKmYMqcrdQ~jJ z9Ht%{HKY0JX;)r7?M)&ZcRr0%3H$)Kw?5UefVXZ>*>15jsXd_xVKW`i8PIm$8N~y| z^EMjtC^enImRO?fWHIl&s8Qk-Zo3)tnppgGz6j-&n1bj2+pbsI;5W>r8oUSJN-faU z?6K{v1cE*sfWxKN`jD;Gf`k-$CDq1Z2y->$SlxKgm1eYF*<8WUl58R{*LGWcwMFQtUscWBHxQe2&tSd&*;%3U=q@8APdR-rEgM7KkADd)p#feO-9{vM`UMP2t5 z`cPQstWj6(vq+s8jDU|pVC<7~WIqq0F?agMEw!@mE z&?Mie{qZcO27Mb8SuEwz+`)drk0?X-kEFenGDj=cdS z5Pbm7PSX@GM{FrmjNM^kt%7g>nz=jb;t$Do`_y0|4m-plx?lC#`hDW13VNpV1Rc1!C8UJNyK5aJ#3O5OISY% zT575NnFu!Y2vk#twd&97j54+|;1nt57)>SMd*`GEc_@b$jT0&}On56($9R3gN$Vd= z?_<`-a%1h&&oWF!{OiW;u4}|jT1_P|(k97|F0!#i#>ENJrXrndMKLnXfpshEVL@qW|3H~N(@BWH5<}?)YaE*eIos$3#qaC z(QtiL>DyNQGZQq|Cu#)5#j!MIPhT)19?*>>wX#ERS(vTAu6qj~^;155sa4v!8cb?! z7wxVyk<{Nbm1*r%nZ9!5eABW{Y6F@`U%jfoX*0BeioeNRAG~OpnG#a*G1+Gj?O$Z=6_h2%5tu&%sjGkd01K}b7`8$gd96HJgl5$ zxwM^Ro_O9o`~;A@c41_l2J%0yV`aPcv1gq{x;$=Dl7og+v(6J69=A9#e!Ta|g~_~m z+>s!6n~Ki5EZ~3IQ;&Az7^S+XaCr(djdfd?$hxj;5ZN>3%$YmMx=E=(*s&q^SjP~% z)mM`}iOu$?!p^=Mb9vrPB=_9gyu6!jcs?!4_B`^wykEKT+HWBDIupBm*y0!49mw{& z+PQc_)6@XL@ zK&f_3VhhcP=}vVDty~GsYYW4R03)JyDZl|M!(k~}1uJ3$tIh!j(d~z|VMkE{;5Dnl z8Qa2N$N-3P$q#++VsgovDdEje5q#BjGT2d)C||y3CU-qWR#C;e&qWBuAh`D>5F;Sp2RiUk@y-C9$O2fSEgd+Gh zd1*a~l+BLf9D}-WiU#1s#0tFAghDknK$B11!rI}zk5$;1BxB*c#8t;gog_<8!`ja!sm>)k zTt~FR!s+55>#ag^nM6#ly0A6CA~GOi0uwU33W3hZ7%l6z4iV~Kn!FHB;w2C86E zIPiohP&(C+xxvHmRWPMjnc^1*VAMNO?D5sgN2 z=b+-mA|k<}>cWJNpF%q0BtxpAGPb9S-n=L5!erLR$HJm$J0lcf$49g$c$%cqtA-&v zCuLVBGq-0<{m$RaPP`$3{NekB1s2W1)J1(PLtypAtr||`chc~4jC6aJAueV_JEHr} zi*_|~W+;Xu0KAqsx;GdXR+>^spA{_*gE)?P>l7Oje$K!>#ggti>xZd2MHawG zI%O*!RY^d~31>S+#xPAdhQ+95&(7(VHm<_UBVaQA~#j1h?C2HJHCh^YZHFMxV} zKoLyA5*)z-9GEh0q4*0yb~T|k4S^8Jmj8R9PUi)MpYbb1`Vn98QoE$jzeNET7ohGo^3m-T@FJ>me<=gQt4?$Rg?y!kcco5XqozKkPFeQ`En1x(kC4Sl15WjgI#}%q zR~_i2d4jGXHme3n(9}vi7QWJCbkZ{5JyyEXkkHaJywaZdre)4c_6hH;=j`E&Y{N*d zs>apZ$g2a#MC}J(VzpWA=&SdYZ0{iEiSOO#%c*`y_*k2!~>pn$Bsn1G~B2o|vuOSw6!L-hPf^*)Z(ITB+ zhw{nQdsx@obJ8cp-$m~vMfZW?(L#KzB@cl5MCNQ5`i;y2%7B-b47*-0vkT@`lA-#K zZMJgSfKG&rTr$ZuBMoO0yW?eHC=N3|Q~z<3M2ZB*Yg12jO&@2o(0a4TYqMBB^F(L! z)Oz#GYx7(_ivnkhlKPjLumza!OP%wVrur{!*I&B$Ec=`-hw3fIt}UndtY)397V525 zuC3Pjthb!4_v)>WuC34bY_6PbAb0gPPuDg8ep@&fTcieCv>RJ2emguDJE8_V(i=NU zetTLMd&UNP)*E|Heg|F`2VjGP$c=*pzoU$cqkMy-@{OZ9zmt}W)B6S|-5VzZerIDB zXY&SUs~cxKeitVf7f^$X=Z%XmziXh2YiNUO0J^EZch8jG^Zak*=J!f4!7aBZQZamldy|!Gu_8Pp7ZoJO; zy{}xn?;5J5)FV!#-JqgrX;JoBs*ZT6DS$flIxuSsl(pBCb##|?2F$(!W#2VrKiy>m1asira*&#H(C%}v1atA+a*3LAN$+zh z1;5g|ePwL^%6k8mQ!tO$Ef3h7Cvu-BA($`YmM`C&uY8}cE?A)DR`9;LK=;1DK(Nr* ztPO!+ytq9aylYr8M&5-jg?D<5huAGy8m0RUqbLG>0B|xYO&b=zz?UfD%{;+}nQZ8n<4=LgUm{O?vLWe{@r1sM2EOCTSv2jQgq6QtL%&l9qA67#r%4L*>zOQ3QPzx)VG;@({LfwY&hK_eX| zs|y?nXq=@aG4pMmH2_0$8WvjGR?>4TA8P2|wFe6{?WOxgQZ}=?zPvTRg)YLX2fw8* z?896V68BewLQQBtNWM#;GEwS%=xVxfYM%ShO#0ZyDcr-Gkv$;P$UR?YkkifjhynT7 z(#-gww@IjX$pEWcyxy0%OGLPj`2&12F*v@Zm)pJBhPdy7w~o21$@rnV?_uDig#_8d z?@KF*g@@l5aSM04-`kA3qLvQ+*5QiB;i-jo?s-CVAu!{I;XWT!GYUOol9sm~Ewhvz z*#_V~;rgi$^~@fxlyXKE9&0-uYi3FOJA50*i0c#OnoHJ*vL1UJi2KhzbbMK=X=)h( zw@#5hP1U7#i;=)HtvAjZ)UXOSGd^?)2~YJ^W$F{u_2zKY@3gKnhyjGao)~urFTOXx@K}S z`ecRm;)UB+J`#?0O~z)7qfmCvc995*jD?Emc>=(IN56&KWi*eG58?#pyc3meejOh> z-;ypIJ*}RtB=M8_YY>l3zkC&t+ok^4ypsE~FCA7`x7~nb*1T;IPeiXSvx#=uZ+3;y ztn)i#F`eqFb^HGbciN=^m33ZD3kYzq}06YSKo6 zhc3fU>++ck4Z5@Pq8kHG-yu09wV8fB>p$jnSM`K`vFmntdVw8;{Kp>Vw4V3Dq6hRZ z+xq9p%+-bWUVf%o-KHx&btD_|PrK}yOa56iBA+HgA6g8a2wy)C7q4wX4BdaB)z=k0 zFPQ^IgWG?Ycm1quKShI_!T}FiU4K@Jto8Z8(2-3)Wx+x{)=YTK1a=Xtd^}yq+7S_6 zW)-NLd+1nwfKT1sL}2f_p~zRe)1n@Sk~Dc!;!G(O5lN&$8}miWLMeG$Y$UZ}w8UqcDZ zAKD{;HQQquLhjF~&87niLN~8?Wy1s3C(A#yc%cc^A1>5>S!$0IYB*kLb#F15i(?y) zGVrTUuVty^3~o;s@FmGzzpI@lO(D#8xm(%x!CkxT{LuMP)_eU2+gct;1tH>Dy;(rP;2zq5b zXb?>1h4?vyDoXBiC|y>_=P;&kgP+6M+7S&SxW?rSBl%WC45I{(2Mwb|pAn5>B+=!K zVqcSm8pSEF4H?C&h$0y$yit)iPSpMsYMi8FJ!G8x$qUIO<#Uw0NvcU!s7ac|w;_{s z>vkm54Eu3;(@f{pP}3~8;~~>*uV*B)96xjgv)mxEFte{=Y{O=GQKHD^`Ee==<^@Tg z!psZPtcT5uvb>NjioZrFSd9ODAtV|QHs`0+gah( z&HLX*tXq!T%QVFQ5{!m_(UNBIMnHfCK)q;4Bf>&K;9&n&l76|655R??gOYr?@S-`* z2xW4T{g;w%8$EfaLv$#ZLsi=k zc?ip-6l-q~rM)F}M826<27OM3;KMj?8#pMt9b+S(t&e^}oDM8Ns<$t%l3pN7n5k!t zB{Nw4Z<^mMq060m&|Iz3-Q$y2TLdb({rfPne;SA{3< zms2;gv+czo&(Bi?IbO#LLF6`fp>t%e$o0vSE=y0rIi5?jxS0Q$Qg=Wvv>=rEUsH-i za$A{*K`vv7^|v@N!tezEHHDS)?3c`oIPqo&%=KZPMyE>NKs*DSU+qn_(Qq;u#%($X zs&Fil%Y1ctkE5sqMqw}p;Cz@OpT*%xW>#l`mx{-WP0QqlYc5-$^dYtc3lBr9j6QMv z5u}l9c=4G6j42Z^@0K+O(Pfh=_n@SFgGGVABG zOBYvv4N6P2FnZC;e1@V|gOWluUGO3aWZc#@N((jNEZn+PO^@9&@AP1M-Ze2-W%?Wy zN^p0#^U?R-!3W!j0Wiurpth);7A9VZm>8^JK7mG!sELyd(S#5w`9XRcb6+QYdiAyt zp|)CqSz$&^iptf8Y5%?IbB&@CSdekCEVvY0U{FG#a%*CsIg;DR_#r%9&-6lkg;5qr+HIe;aUv7{S?%G$0tz94j(iY}P!8bTFbD zaY{R4ZuMbGtitt>v$o~s+bl(z2Wp8S?D@RCkI0Z7+W}+bl~VDw)8(3eJkn`oA<5t) z6=o9hqc?@f345xDN+?Won7W;rrhVX1lKPon=1*$hTy7voH499+74_&UQu^o9c1<`+ zWxJnPV^+L2MWB0r6z91}dB`4fdL+ZJO$q2#$20Oi#7X@9#YacoQ)7a@qI-{Sy%ObK>7L6ZwgNFu?HJDKo5y&gu6j5$m9vTy&L_!UXs-SXCzTY)M z`!;uotF9aQ=F~_79iEQ@5f%~Fatp3e+Fx4%Ee*P)KmT@fux*Pgu2FOQlCX);2}%ku z&QOS9iN$3nXiPJY8^YtQsf>Nt89wP)xYalW=??YKNG8~$1=je#nrMW<;eFxx%0rO2 zmZ{nML0jl%YEW;(OadUq+hT=x7!=~%ZpQ&@Vg>xzF4hG(k>HQSl9+ymJ`-fFo&L~K z;FJ(I9t0BxC^R}j>2mauqE~p?+VY4_drjmcK%Uq`}DRq&-CAP_L;hst~y3q)Im9`?)UNsC~t| z{Kq2-x&7DFJKSO_JD?cF?10~G=>p0JQYmSv8PyaTrCi!Qa>RYs(FaYe%HSEzwQBgV z^~Dph;r5Jy9N{|78F;07o1uanl*kQ`?pgelcK}kwH!4o9Qlw?9GBkuHK@p+`i3Ov( zVpM0*KygYpb6!TxhxcvX$gq{@2BlJbOS$usKg`m#Ld12jxO|(PKWtZ6NWgwyys$t8 zN`%L{p~Y!^IO?@ulY>QdRD&TrG$5RkiMJiY3=bEghE{g?LdMY2{tR=y;M6L%o6lgDN!LK7p%u7VU zy;Q!P43E~`CC@Xzko2qP6@mgsWi(IxXPAe(|t@|_Z`E{c( zymS-}2|VdE1tNrk!#8;yJAXS4(hVbWmS7;XLO*BGrXOhF_ImU^CbP*1f#~S_i_tBy ziG{XLtAoO&UAq>o)|FIyWjtPI7_!`MgY^5`&J_;N6SW|a(A;d_?NK*#2Zpe zZcD~{*Tj882LUP6WTU8!l~~wHei*`($p=mkr)a$T+yT>>CbtD@IJtvHcuH2gwE|a1 z(t8RX9-l=9DWx|vBA8)oW*}BZ!{n(m(c$J4kTol#M)fGw!><%?cw_8bQM9sd@U~!p zi1J+Bb_8zATb5XZgLvFp0Rk}G3=Mwb*qkfgAzv4%8DE*)BdhQWdSpNz`M!UkPCF@_ zrTB?A_;#u4(tGABA_P&!=+`rbQiSw=rndInhemrFots@lv5`r*jfjYojcUZ$*R0x< zF*^CC6%YaGiINKRNu*ymh8n2+mR(^Zn{R?JF@yu*zoNH(a4I)|Ta@GA(~67023{5R za;{~4uDn^H)EhHikp4;bJ${{Bbs%Ep=sDUo=Uu4^o=meT*##!O?`<4`9D{XHr7kSm zCpKK66Jja1Rv2B14#)uH!rVJ8j*ytUj>0P#n-d$?Q1W4VOzv3M_4>$WV4pqfL~cKX*d-qNdVxgtntx7cF)n^?p0`YIDjy~FWf$KvrB2zZ}D)s_&T zAE-t17NweiXj@GS8c!W71+zl`{W}?WBTSFWBs=Oeq@R7rh%iA0yX5bBI8|klHr1@g zJCW@Nyey5-tq?xtLZIGbVDYFKlY~wxQfO$&;CL*@XxRv;cr(};;NcctVK`G@673)? z>jzh0@;sb5lJua#Vd1`m(Mt;a9E(N$4o>SQo(F|LyVq^#GH3W9McAQ_(;b{cC)9hH zcvi!}&-4hv!&t~=o#=$zL2(7)`G}u_uWcm}BdEB8;3>lhwNab|bRUCXgxfyF7Ly$F z8B5@(SKne}canANMt=VKiewN|CNBUJOOT2I3vMU$8WI29JA8>L_;Iy>6@eHaqPm=V zG%8UnG-E6-lF>_rH#{)*6-beIAy&E}hKwj~+E|h5eH=O#F0UOmT~iziCEC6?2HV#- zmZ7+6L?EV1yues$yx^Vk_sMwCyLj;-Cm~>h^!tR@pai+p`146NNL7N$U4mLuf;=!$ z^L?T=C{dOuQKug62skLrK5Is)5Opn@KkE z$*!r%ZcRzfLy7Kp$v#9WnhVJ~FWv8;ln`^>0HVaug_Nkfl&YE(RixB}_o+!lL~)>` z$` zI~oe7XN}1J@9b#W9&S!IN3vBr+Mgb7|6@nPu;#;_C^g}WNLRe(hsw9R=8yTBVg28B zH0wbm&M$T}1W7$;60?mk8=(w^#T#KP^}8G4943Qf0_Ts0`Vs%Oqlwyl)Yy#v`^49@ zA+GS(iLZ$|{>|SfK8i%0KPSHaLF3;izU@@3sL<^+%leXnH0yrGoeY_7`JGHxZJ-(_ zG+tg%HsqFZH>pROp+h;3L<`QCb2-cNcA<`q?9o#s1^RXk@$5!18d!{w9{yyp zdN_j7#ahjJ)A0RS^Qp}~P9g$2S=59jxh_jy@jJh(9uoH7Q^^mzeAS65MQ$Vx6*l>( zng^M`C=-{aXEqe3lNTyYTfDd{N(Vh2wb%}283jBjs3uwND01`3Yk1bp^u zBkV@=gTh^xf_yiP!F)dU!4E@1^+e={f6ha>@smWS62NLFQm62~4W`Pcj3)am=PqpY zb=`{-R^`zjM>8K03D(}1#=C6(n0J)4VOZ8@w=x8lXT6jkJE_q^^wI6r`q?_w zjaVM3lv-T}%%Aq2VX&|-~~DXl6>vw6eg{m=+APPKkwKGCkVH> z%@X8b+cBjEFbCQ8c1P&;h7%zv8)8XK{(%e^(I$gk^xg=p))uz0P0J>{EqD38#SRoa zYK4+);t+phNdV%$;}&*affPZz(Tlv+Hfyq`n%k=q3bh;wz~U-2d3J}XFYCg-`Q2)aofh%BjGfc+~URp&Kty-v6Hr~&%=;{d(?+AznjH6-Y} zeX&Lzv}o*v1j@i2Id_3sbfznJ$u|si^~qhnB>rSh1yj0rOf&`G2P;Vym_@4Pqn8+e zls1&XX_NDyFudz7gSbj!axq~>TH}|;rug&z0!|2ix{wr(JkW!qdf)kcS%UJJ)i0%V z3kR`G#9Sv+G9^nXJ`{5fM*#rOpr3P1J4^2vz_oiwk;^F1&)>B1J6SS;Ge^ zIo9^zoV+yuO7F2_R=DcLpXkzLQf;x87(DOR@L}8dB-Px5({qMD;WuY`N)l!qEZ4d@ z)#mwqQBiHtIK-|ufy}cdx1y}hk1G~;6jZq3MC4pB)q!1ICl$k++X3Gsm#0YVXsOxWm98N`Hd{!LZ2TIfKV@=^cAss@eQ^nYcWt53^P0{) zxB#f+Yk5WV#mWA-Up>maUBG=NkkgkrVG)+o6}4YWWB08C<_=TnE)7v2zQn^U#Yh(VC`TngZ*#i&cpGX)Wie3+vn9b33 zpb%2T2Nkn|=u+L|bG(5dK8N1rkC;f)u04n*NBQb)riwR+)6I_RWg;}H?9QGCQ^SFxNgGhMf>1*Lhga9&HNmTc+c7Dbhx%QuxIDs7GX#r1d(N4o-<7hpQB~P zxUNB1J%s_olp?_=s|a+XxkjUYlps(sK)loRU3%RXr3r>`1;eyXOb_&uCx&2x4be8_J zc1uj`M?a+id!XJ^P*=B+%u20$5r@b&Fb$XKRQ{_}OWZ-LW)b3ou9&Wt84SH4)hR^ed*D`q4 zyN35Bhc^$pw$6vEztt!}jQGy~Qlg;hB@E&IF0%$7GSukoq(%MDy{8s{@TDxq|F6C0 z-)zGI^Fq-stR1II~I4^hdurU@31T%$_n@6JXhQ|+g`{( zAt~bxMX%lFB14EU$bQQk(*QbtsmamUP0}ZnPIvL*52YXkY^gi&b@f1OGHu}&frH(v zBO0&gS2Cw0iFwt-Q!U_h+%>DRazv6beZ zy=Sh}c>u$N7**6egHW2V!SxUZui}kh#tp5hhu}ViUf!xx%EsdRCMpqP8!Ln`LoyvfSla_hJn~5ydtAn^BL&=_ zr<=eV0x=a#$Qs2?@|g2i4d6qe#U3dKv8Vd*kSczAEjVQH;d1>6Jz>)@=2q z!I^Ia*!mEU2OPt%ddS;sDJGo96-uXRn)iobr7LW?UKDB;u~+g{lxSs*e$&wKTM@Kp zS*SK?^W%9qVHv13;OuU@cV^QLbza#ROXsXyY&V~R$1krvSgZ=d;GPMKx87`wCW8M5 z_bLPU4#0tW^)mD*CVGF|%{Qdy|78GF`y_sh}#nzv5o-GwR@&gFsxWlK@)dgGotToiv! zwtp6{Bwz%921WWZM3;Ze?kk!`j$ElA1T4V}0o$*AehBPuUWQ0H5C!`@6;FRcE+2<3 z6~zLo&L0S1Wz`l2+0p%`hc{@79jGVLMU|nIQyq#2vf2EvEg95|-o)a(6>Xc>Fw`o2 z&H8CJ?Mkn%Qol>kQr?+KDg2*ECkz+{U_jx&jK%67W1-`bixHP}JAWQZCj_rcgy7J= z(G*bo+8=?8LZ;csnJ*VWuAD`K#AP%PK&u-Sun@O7nn0(wkr2vNIF`jruzJaeYu1|~ z<^L@olt4dHD3-lQGBim)>`h4hCP0Df*Obp+Ec&0d1_TTMP@xE4Mxg(n5g?;$x^fsu z`oX-+#%**~tM@tArwlW!yw|}nywJ9$$+5X24f&cEppMm{%7yeAs|Dy~4|Nm7gR4qUSp8I8jUs@oZ zm~X-tD&NCnktq$@=1K)(62JCf08{ma<8bTDgxKW`L{R|49tF5)hT`col0JsU6$~eF z=nXr{bDNB%@;PiQgKCOYvW2~o(G+ltr*dV(sdP(g&A%5Zn!HV^+uwUiR+IR8oq3< zRp-D2M^6r?#Aq}AaQ@!bD*o@%$VYV6huj-8&E9sp?eFT1 z@a^yB#k^+P%co3Zq$x--Dcvi~aNgf5^8WN{B{3(-V*j^d#eQkIiWzOzMi*pqzr6Ox zOZBF4n~5PSq`&l_vJ;;9u&Nh->2qaR5Pcc=FEioS%vP>R$0dig^Co3S^~=ubCB@qJ z`$vtxlD-@_?Y_RVNZTkpIBq%ZXFh4gJ-1+W9r<2%(*AgTaMH0%IkMq$2W@%Ug-Bn{ zQ9B#;_Ou&QmgTG$*ASVlDUHU;O=xBf@+46jd;ip+;4`ajO`3T2AL{8_? zu;s;=z)pFME81M^#e_HlYwZxhgYe~)9DM~(2PJXa<+PeCD{n2ckjT~SJJSl@Ql9A6 zt2zB(*7`gVcaaw};i3w@RGIX)>m}O()`nQ+7Ll73*PRNN5UnLh+s#iO1U3O5T~p!P z^$_}RuI|Rf?YEmTvTRM_Rzjk8TPdbqE-NojdAE~ey5h2vn{0i*Cq@u;zhB-E<+%B6 zfbHRs?XAkgQR9vZ=T7s@@x#e|6#C<7FTu}>{eJq&$MfFq@yClv*~-$R?{96Mt`gdr zNUxV&PM&gRQO#9>qr!O`H@iiZ&uL32(q8XR<7px9E(i1=kJmfVkmsA5%9oCXhioVq zxfh{yTOR}#3TT4jPI$UgU(|pc7;3pLB%Mj`trm0#zQzo6rX7D0*jxlDxo)g9wEzYd z17y|WZv5)gK<0>C6l265qL;iZke`cg)7V3Dei|%_`V|q5kv`^cO#A~&zmY-p-^lRL zhY<09>fHFhwHcqL%(jMx<2vXW&2IC)j-rz(t!11pQp^)fM0P5jEqzyF(bmlSf()N} zoJmoV%IB-iCQ5ln_^g&*IybsAAL_q-Y;io<9~&X4{MqLH08PfyXuH-EfJLk_>IydO ziy@ZvVrhCohIsA|KO#UiJL5UP@MmE`9(@!2q!p>*o#c+3|2H<{q77nxH&K2-o%a6` z8Juo>&eB8<(Ej_nt~DZ4;#$zZkm28T-NBE+a-O>z{}mbX+&Q{m*4;llc~UcCxCH-8 zC(jry1I@oXdA3u{_6dv<%>RQ7d`)!jPTM6rS$`ozy^Cp10KUa;ZU|keS%%t1)8ELD zpxvCCY^n1vWXNITH!IHn3mJ5Fi%aYG_sgpKAxvLl%g6s9L+QacXujcpA%kFWNnRga z*hx58_(-yo0GQdH5c;dn~h}E=exdXhl#C!^;Z4aYW&v-O@}M=|9=^wDes}- z#uYdfv!?Ro;+b@Z|LUz$$W-{Nx5{E=_)l+DPZ;T+-YT={7v`nDVyWRb^P<@Bn|Zm| zUm0mA5z>%8LV`8i&sxg~!D0S1+6dl!*|;laDK)(?FDcw#R!5s^b|!M9!pW4IUznF- zjj~T;|2y-t1Qv0Jg$zB+`L3?74#qR`dkmVQojbU+|b@Gs2EU%5LjDBJd)_J3hsQkMNtEMAzGe?(|dzkxsF zKXZ4U-!CWE&8YwM+Rau7ko=?9j_noFe|qf-?B7`byVs6w!8p~du;fqfF7z~Q|C77T zUznF9eAB-p6uxvT%kS?9Ee;A``&aH>%$OV; zHLL|OZ`3m~K}G1Vg#C$7Vu~gPGBp^E9kzqxw%hHpN|)0#vuNn&8IDR3+2b#NBGe*^ zWz|)@6NaGtv={fSCD`mK>9$gg1mnfvi6WSV%aADfmSX?_!~Hu#J#2@ltt0G*cbb3a zZatKX5c&xg+cDtp2(3LP`8q1 z3Btl|0tUXjVm2LiBCrd0pekB!_U~6YKykD@Oh4@O$g)3O662q20**<CQ$-sod&IbC5!&><-JY|7JY`J9Qyc94l>5Jk`|7tS8*W{g0cM7p zp@$y2yOkI^L_r#)O9Z5)r8|di970M!Nwjd_Ac9P} zvB{l62@N3lmY}6uPMJ3{z<<>xX-OGV zb}7b*zq|GYPK=yI*p+M7){u<$3AvCCkvQ7tWv+~&tQDS$ddV|>ZrfK6e!rhDzH}=K z0!OhG-OD%5>vL1A%)c}(5b1Bs=!bdOnQz!o*=f&6I0J_3YreIcms@r=1G|{3OJq#bN%JtyG*TIR4dTWIR6f?bKU|tPkbJEE=+?x-{XAWHiB|; zr0V`UW5HLF_x^VS-)MW9&e`1?f^TxZm&&cK{bD&kL;dbdZodeHz!PB%vyB z>mo~!O*F=CF7x`{7+O|Qw9e^zI)MNxYBJ8h?M z2UTF#{CqYF$fp%m68TB|k=X`$JfHG;f^zkBi9U>`FTqmQRQ!thRyibm(@D?hxnd9> zsa@Zb((5Hy~HZJ23@##sOf~=jb;g+ zTLKI4oFs4+PvuZ%+i>x;MCp)3J{gtjjDv>G7SXvWFH7iOkImOlQo<;3rdjpDp#7}3Wx~1!K5JjLj@dl9XSI8K z&KJ+}8u*)vSSJl_hq5p3q@%@n$@ajhi@ASFVq(-#8#4JFCJ~wb#MJK|QEj|{A6t3o z3$Sr|zw$kg9N`(iG*^-q26F-*g(hWEUy`Hz{2|(!z~cJ|K`#vL>H_KO7y)(>9J0>s zsB4KK7T4jW^fh}M!?d#N0*%JcEVbij#Gths_$COjRDDp}vSA|WrW}VbGfsXk&tSTi zw6{80kJgGoQKajoHZOTlvCL>9@`SRMtALkLmFWm8yKK8Y2^L1U9j!e@{Av;+)(OMK z6u}2wXfLCsqQ-~m<6y{SORBV&W_%EQ9JyXbDj+`uHV#@R@Dfc7Kh!TtxO?Yd+Zx$ zo>hi-j2O_})(i9*j|3YQOvh+T5FU-YSR8Y{eNiRdF*@N9d|b3jS}i-QJ?T?;T)eAW zeXXQx(*OB!i9#*6{EqfiFph#g9j`_L0RN`@{#VS+|C8(agPj`ihVkw3WB&bmMgMa$ z!&2mH>9G$cz$N~Az5a!rDA&~hGDvJdK8I-Oh%cQ;J#I3qR*br>%@TW^;QbJ8 zGCPzMZW)k?qqLuQk zGC0@!%Oi1|jufFn0T%@i*;nlaRi5Ee)gRq<0)i;r)3ZLJU zUH>?_vg5aR@-hI+su#8$a5&SNXERm08IZJ7-SJ3IsoXDT_V&=zsaHxWpVn^Dt%hCE zEZT&ElkToYop9wNqG63Yh$spZtq(Du%xl;J;Le?E@#7_VB?*Y!U4}&J!kTgy7Gky4 zB++&a`xMEz`QB8S`5Ff&`u5KM{T2icJN-SG{RgY^douesb|T{6{SWN)PgW({#Pwg3 z*>6?_9ml`-FYNT2Rrwco`us0e<3>$cxK@=|R|IwOz+B_=wJ$Dn$W&`Lxq zf~bHg+P5{`(VQ;yc9eZ`u|BD^9NcZ0xZGz;s9zRLeyb{k&7r7-%a(i5~&8rppxED>}A%0ezCenF{N>!#M`4%M# z;^TEKJUzL!aE6FQN@L-kFClXhd0wOiq{8#08Ng`LCH?(rNp1q{ zgvdvx`naiQ;TNq?59W=AA4=bl$wG64y;RaGK)crO;@D}2scnW|sFP8-FHij2i12gU zlrIF?;qM7YS46fTZz`r%6t555r&0vpY~$w6H=s~>i^vaOAOMHT_7(-YN0TyNH@hyR@6wD`kbu zE?{6Aht_o#3ZS=E3PP(*%~td@edq-mp5mrKsf!>q4s;Hc$CM-c-YCI4Q69Nj%GZSP zfs7-O%*V3o!&f{no!v#_0dm&TyA*0G%rPmSeETH$#hZSuVJP?ES}$*W;2>Tk%;prLo=cdT!rOeS^Qg z=E_8-K#3kVy`KfE^blpoB^@5(PpEVf+K#+=bR`=PS)EVQo_$@MI$(Bq%QlvMRUFhN z%I9GpA;M|!wh(@!qE+oKY_u0cP&R8d_OmMHms}ZoS|t*$l31kW0s#If>OBzL(VL%6 zCOBz=lWwBOLIyYjN$x)qC1QBh6htDqk>zqn$Kj>_T7!k+NQv-n^FRT_k+~QKwsJ+N7BiIl}s+-3pKviv-Z1e+WqnQXtZj#V&P zZq>aI@bK^tq!P3{c8RL8p9e`cX}-HEgHjdK-2e52iBxd4X&h_*)vERNJknq&+Q~64 zX;D;}4=xZl+wy=Ssfc+9?PR{?C|&i#k*TfjE_5qW#4%dP{hn!-M(@32yDxbAdd(eV zRx!pz*_`Xo_}_?A4LozXyWu>ISV&WkNEg~<^f)xD>*7C3gVxbRdk_L%CAE=Y8mJCo zLYe@7PU+CA9?ro-hTg-g78d^p2!cn({S413`^l(Bd^q!j0#3Z)Azpb3UtOaDD85jv z`Z8J(oFXM`p*-$F15oqN7N1kiFz*Me4%eVA6De&@0I94eKK90@KV)K1ZX5nM-g}yt6oU_$ zBoq?H0&P1Z8Zyh&B|H-GY@nek$`>?hKgtZOwQ=z$&I@*xK@}r_QPQX{w{0W6qG_sk zou)m8kdF5Hh<6wQZk1*t(i#S;+|`@4rYh;4_3M=7lXW~Kv>(GAt7f7gyFNar>3Z?c z9l{8{C`sIPvkY)|<$Ld#nOgkXc`v=uQPJ(%{In(SXXzN})9=(z$Hg521$@`I@ZHX& zE$xzJ?*>aYMG3GMeU!SsU=-4N{rT`3;v@jkdi^9R=k2?fYmFWa zw#iQ)>YV!9r~`CN-)1 zu_4lg_wK1eU1dNA3lc{(GDEXS5RWO?*DpkK!9t)iJ<6u!iDA%uoFuN61?P7zh?FCS?ZO}za0 z1s~~4jATimS~RS(yD>H<`yQhUUy7dw*ta@Pe*Cwkgs$UP^f*Cd;( zdI$8zf-}q1#KcS#MI?Yru#gZMGb0#>>&W5}i=qf=$~1Sx!`Iudb;EVu*9iS|7B>aS z|D~IBD+*T>IeBoVVieurTXvO=IgkEPs zX=@Lv+cn7f5}Q#`BW-r%-oa{WM31nNpyOdZ2Rov#qR@qiEFvKIHHP6dBBPUy@HI+8 zxPVr4lyN~{bX66)2~((W)Op)t0ie*79e}*0^d!o-bI17FhBRy&1~h8QxaZ?-!D z@J>_qp=LnUKnR&pj$Ezr(SvK=+$k%kQ21zyJRVpPsMYx`&L_YXwWu2&>wRiVst6+h z-i4tnn8qj`f_fR~9SeYV**ScsBoq%15(@I=C~un;g6*<_6yhLdXuNE}f+0mkfynDf zg>Prq$-N!W1qJkxg+5Nkt{|Z0v{X07wUIzQ*jL{uhN4fLJgl88}A;t6yO2A4%y=ZHZ%*35Pb_#ZANb@oQ* zDMNjgHQQSxJ{b~t;XV2_dTo@F_MhVa{|cG>&ziCpJ_h&6j5uUMfwu)=;+-n(i2{+) zs&%4lk^lDe|98LefBxM6?kE0djKqbL_F3>0{(+Hj(*D-vjhbn+YCI_&cc@k~x-Wr7 zg0i@#xndxWMS`7l>9%!uxabu#`?)BK5Ubt#=#$|YgrXRu8)aoRR70nPD5wt;0dY|d zmPsXQ(0m<3<%vigi;g$^G*p94xu^j7Z6bqh9|u1R_7XHt)8Vk+FU*KGeJ?ovCfzOC7D0F$lpGNqvD*6U)b5biEHNvB-2oP#w} zOWR&}wL+DN)vd$blt$xU8{CBthL-ArhO6>%_qRQyI{kGUzWS{1NQF`<37W4&T4dc{ zX&qK@ba=1_CeS%Xm=}V!8lX=c0`TBL;oFZz0s+-F{~4bG&mZ^i9mKHyjXh_RbOyhMR71g|ZzQp>drkE=A1jij3*NAg#?2X&QWtnR zX=e#D^QV|+ROuE;-A|M6%5t1SDak3ikNU3Z7XNQ#kJyIL*+YGSD)~Q7Lm!cS$+%bZg#Cd9CeW<~tfxWd{qg-t`joIqV+-KLs z(KUZ4EBHHRzVkr)7*>8#me|Rm>Jo}!mVvfo3GWI z;jlQ(PS%mM63qNEd%8n?NAq9l1r?1CHh=wS{YWV7VaZ5%x)yKak6opq7oCUHAR<-p zd~xX^bUZ6D)7vG@CywPv#$nkFQqja&TYD+S zME0>9^J@+y+yeP$`I=j}$O2Cl+jBh|b$sdDe?O*wUMPh)B03mf4gZh-TLQqOAH$ zdrYOjyzlh={9&TI)+c$ z|HXgu|Boq&POBil{Era8i9Z_FZNve^`7f2(?Q1izfBYx!-Ctf2;Z$aVZep+B{*%KVkjOqx zWlnzYh10ME50K5^N)0haZ0omSc(eog^@?%<)F5y5c;hu!rU3#fEat*Td1Sm|e}Et7 zKY1oBQ5H82E|BnPkv(ufc{5m-)jSOBS#FsUWt5a`QRl#ESnWeuu<6@Wj+07UMHkR{ z$2=i{Au%dH)dj-loBD$D@H@|z{IVYEy~8e}etZZP!1}3v3?Y$x@YHwV{@I(aV1iC0 z{_4Z&^-!!~%ESO|*x43;_gkOU41w9R^@#Y1CtLY>x4hSr7zu)u(KwBDvHY{n^G|Jb z7k^?PZob7zHl7{;AQdR#E;_0ojjaofFJ5(FE5PHbXCC_hkpKZzb(L3|+~pAwx$3h~ z#U-r1VRh_bSi)8$Bd=U0&S3Xm>vrw0r9V~b-KGZm9bl2H%DZ-Xl1w?8kv(1qVZC~M&8_0Q?z_QWA6W?Ei??>HdHi}VJ zgd?Tgrx47QkC1T~0*?q!cL7rS9_&m1IJ`7uJTL>KOd9b#X4(s(DY!17^Ptb{v3`Qt zcrG#x9NWI4kC@^ep`)1@Bsb}29(m2$kVcW|fEG*kavY|O_fm_J--rOcQU3*385T}i z4KbE4VwjpIPM`LovrXop?Kn#pmL6bru+#z(0@9GglnJfZGz2!mlmTr~sY%r9u;-#W zKXb%r1G5u2p!V7VkUsgAmigUeIWnV>9RH%;xhU=HmpWkauKthubeGc{4+4LZ` zyDL_cAYfO{S+vXaQAtn?OK^*n4WvKPt4{C}8bMx3g56bFo~-2$DUB&R=X@_uZI>u) z+)nt?(mW>88tH}8$^@Uvd1#N>h@a`+aqHe{Y0b6(V zsS=fRt!FqDFY}Ny!Nz{Z6%2!Txi@_A2qL}KajRUz~)tmZ8 zCg+BTW|MMAW5ec8r$r)_g>Y2FQ+i`C+1WcS1gwpLte#1Z%=uQ9bgpZ4Y<<_uQz&9q z3KX)^Yb_OmPl??}fczTvMbwkc%q((DQn;Qh5>>zRZa#emSP~$E&AbVBKV>a=aG$(y zbUrT4zZfdj;I(zSxSspD5D@f*+{Jb_QqmN`2?Gb+^SbjiuGNfO3Zm#hV+kS(KvYnI z89@eVD(iH{z%l}5jjfLca~-H(m%|VFwClX7D`WN#MU<=dtPCFBWO%)3#Q}+0CYhB2 zH`0Kq1;0T_Z*0)bZZ-J7sasi;gS+n?iUck&Sn6~-3^g-?MVG&=>(J&KoqhM@dN8i7 zlakcDh4(arqgXi7y`_&fcVCJFKUS;e2ShS3$~wAfIoxcCRDU(jQG00RL#|;n=H~r6 zf))oJnKSGwccMcji*G}#;`CYmx!xH!PB)rpT4I8o<0IHew+w3Ek^&Od;8zqeFS$G3 zU`16qw?*TBT$>-SoDkNVv#g7n4nn9hN{%kdfArfj?Y${z{``t`Q|?tWjpHF(ErBkK zo9gFq>{mZd*nJ{3=q4m}yM^ny*_Km2>{ekD3@3*zSE z`J`KCF>r0jjqt~!*-d`S9g7mW)>w_F@PNrHTd{*-f1v^^ElS{pewY7GfBE2lDU_6fXqAt$A&-d%RQN&Kjvx^Vf zqX)WPa^y{Krsm_qmjlhRv09r#;Uevi_FzP7p`Le1KYnJp?5NZ$Kr#u|Kg3orY@H1V zf9*}XOiDZTe5!C=Qhs9zgf%JqF|zAmBNB+l66jv}*mp zd0}kN=w#>;9l;KDn1nK=CCY+{lN!)FfUHNL27(^Fy~~3A_&QxY5_|(OIUUq}81$H( z>=}X>uoku!9TAUby~^XfacKW&Rhy@utQ|uP_y$>*5g3%AyjTc-TTXsL7e>}@>nja& z8L+wHG0ocYvJ4trSyVo3Ez)~<@2!C5sa z@v7R2BZ9GQp>EPC^JX$BPASAg4{A+GvN2&Bt2X{|T9q#R4Ym%JnnaGP(T98VSJpS6ZzDF85Tw?GS447ply={PTA79iq%paAp^{( z`Iw|$x=5333t6zJhMcK@ ze_$&o=-f~|F?S;>FaA6!WhoywtD|aTGvx{{Obc>HL-Pv?Dmw~_`GSCUW{=KOKd=jR zOB8cr&(bQQf=DtdWdgrP6)lPexDFCGdi9w{gu z>ndI>!^0qoI)m_}@JOd>i%!vaSNg!Wkdn3_JX|zwS5OIRCc9*gzGOqYw3DxNN3LXR zsbmMD{cfrBQF-ZSNa@$}(nG#SB`S{&&Y`F0d>;}Yp^V7)M@#bh9-WPneY=Owr9=bv zpu|5P6-J@Y_;8u+K#3ea@;&IDXz9E2GARr?TjkN77v3|xN9|tF)24E~v9diRUhgVC zij#~5RaV4aTH%BH6DzKe6}a=({zl`t zZI^%hZM2&I1Limk`YaO=*Kbe$rx>)Z)T|%ri1DJoV$gUdy|FGonf?gETEnN zu;_foCG2gllpLjoAB3bsKb9Vzzuh}#?Wj(WKR@s30j-7}6~~l@fj(<N3@WskpqU9rOGYX$lxF#l)iWZxC-nsa&pF5sBLCe3aLjC(L)swVo|m zg|jC@tb*8AV6V{`R}w0LRuNgdxhZiLG@kaQVgpsFL2nnqb(w+bcdL`Ia+B4AiLP!& z#$UAy*d-I&NS$1d;M+?27ssRxa5;|smQp$2&#i>bG6dAs(k3ZNJv6|_O|#@;1hV|j zl`hKIrar;eo-3ek!*ra*R@3Wu(R_*a#G5yZEm{OJB+99SzIN?5mAiMB`-{c&TDj=d zvoBr=P}Wtj-O1>uj@A(^xhN^~YG#+R^sdr(CvGgJ)jScyC|ix!AlYP`F;96&j4*8+ z)FFbSKMR>8TDNOcnze)u_RS{>RlFroT&kQWEo(pJE7^rWUk+bnKMVDHNh>7eK6MK^ z%E)8IJ3~k<=Vj@QHo$&MXP+5)>o>1m@mMO+GvMKxh^kj+hZf;Jc2^VvutN0{TJ7F{ zIzT;flYPOzqsD=*-7n*i5W9&|rDKtJk2jpVBP7Sew@%uzUNN^K8wF7Q5X(iRpSJDO zw~bW6Z@m*1iH}4rsPAg+)JuM<5DR-A`#Nz2zQqdCky`|KXZjpe06*q`Qct}u?>uh? zB$pMWN)F|#kPGi69|7LnSL&6=J*^Unip?k45Y{(hfZGRG-*tt+YUJ2`r-M*ul>H>6 z)L@;vw@m+#l}Hdt6awrF_c~;iMBCy&HDRWe9*BW5F%w`1xB6+1)HpAqRX~h}s*#ci zFZ#+}kot@wkj9%0DQ~B4aMn(JOC2$0p(9k42g|UHN^uBfp&Nz|g$H^g2>C!x@A8I* z;I{?lMkrsB3Y{oE>UsWfYlEw?!goZ&Dwli!H0gi&qs7igs^ zL$xPkG7Cs`81A-c2ZIT+PSC6h!Lei4PU~m`2H2?udxyj2*}%#pcEZt3!{KW7*i|XdC+NCX?Pn8dJE#nuX*-sBn>4G92)f>bNSvhS z0U&+kfpYP3<39AlY|b39HL$T+b}J&e3OVsn?5K;P9-^3ZU0mHfOIJFJ1zkBzUoA7l z$|YI6S-7QyyY?hn?_1)VFrXI6H=aB~m2eadrn~&q5#pi#=pxjyVZdzSr_?N(C(%HPk{UFmRM$N3dg02nWou*b@$M|EvsfjR{*$tP;n>fT z6IR2)I;EVkQEKrVv~-ZGG~-)6ZFc`=r`TQoEjE!3`hgb0g3qE)&2Wd~pWVx*h8VdG zn)X^q)s0o!+YA<(-HXc%X;`jP&Eq$(#)i(u1U^Wx{^6<@>MY)5YrLmZrcLkKKK~?) zroo-<$Nk+FAPM zs)5);YO%|6jE7ftv<~gtS!F>Cet0Q2!~420NG>dP6QhTwbLON z3Y0D!Oj6$%-ouVMFV#R3W@tF5+}4iNw?|`L2!E)x2#={PrqNXic*xYlr(|i__RzYF zd=ANPLRAoDFbKWk^7=uk|0^?hk<K02YI@(=Zb=W(W;#!)V4J6Jx8_Zd$ek>kOzfE;h_l(hsS1p*k>7Ta8|=%~ z;C?Frz027LjmJnt^>?CahdX&0xKAx+*WTz~M%qH{G*Lhiru-| z*P@mJ@%7SUXb?4RU+MLOsvfaE(t36|)TwJ|5EVA5v+ch=+w^4tpGGXEMcr%jaOML}Ee!uQbpmIdtC`~KJdo13um_d)Q z*K>z5XxUF5GqH)PF!=*)!m}6KlQx*-p4w==hHQU3!h3>ROKCLOcFZc@*DYRt$4-ZI z9l4vLLKKyriKV|FvroroRaqmuXWL01_DfjX;N9G>kZ+eaFSb5+pHFtkoK!#$J{j69 z&%e5=YkhhtV<@(~V$*_Ux<{FL7;nYxLDKYP0_&`u+nIlu{_0{!5Bu{y_Udfv)zyzF z?A0%vWgi{^kc}WPiy#V&0Ov;#cSevdMv$LHz~GUTvXRtgk+gx4@cc-I&Pb-kNS3om z1U!meHj2|MiaRihH$RHMGfHqVO86{F6do-u8!c%TEgcvwn;(6xGg^KzTJbCz36D{c zjZrg;(Flyu%8$|MjL}_;xpfw!505pFjWsfhH3^J0%a66_jHS;FvpkDs%(t=z$2rPI z+UHw2<;PJ3#vN40dALNl%f@-i#uLKh{Q~2G@Ob-#_|V1h;Doq`@PyMJ@e#Ni*Sz5| zyz%j!35Ti)%Gk1m6nLU@}}sc3@myXChBlV(dsFdPK4moLFX-^jIRPDnF@5 zEa`qtQk_;}BRu(pFuBDn`Fm@;ze{p+O=9{;^7GxKq>;E+vMD`UNdw@NoWPVvvS}b*05uYy)s}=;Bh42l2R4zk z>l5sc#Dh>|+huqyGU=XyctSnN@tY>5Rmt zG$HJ#OtM5242i;x*vqT0FrydC5;%3$8`u5NksYZG~G{7+$D{K+I&r3011X{P85{~DG1{$&@=;xA_%^s z3m$$-FE)=^S|z`aDlC`Fn}GoyYsZkN5It!s1TPWm*s?q|k7>~^0^a+LcT@vOiC0Nq z@DZpJ6{{vdr1Z(1Y75E_iDVOtk-H!^7+`oh?=%7whQ_1jD^czwEEfZtz*2-HTCY7b%iKlT-Z@ zP!!-D10Let_#04MnA-g(K!H`T^%p6}L=i~PF4r`345zcGMltcV{NCHWZo!n`{l{U- z?|weLGMLSa+uN;e<(Wb;d>O?73YXi3C+t5he`eLbt>W`Efw{KfQr9HNxQ)kJK2JQQ z?`>!LELCsbV*k2a;YoYLLWAW>%gq}BjVsRrx3(K@`0n*rx*hB>kLNY5_9e(&MZbm# zYYaXlJ5bOKYH{iUU8+K&TU#>B! ziW+ftm2&Ge^`^4QgCjjbz9HW2BuO@2Ye#1BPZQ~+X|np+0_V{>#K6brh?_n$+pMWt z(j#oC{0wSy7WckZTWkCZ;?7W_^?hV~?mp zAWx~xV>eLPyUs5w0&+|JDm%3rd{64nw)3i)WmOfYZn($U<&l41Bv^SNw_}w)QLUrf z_hNlttcWQ{qhPr8`Fh6>a>=^_3NZVb2{2*W5z8lf@5mK#KEU(H+iDjN zJr)NLHNtpU9Ykmvt|BL6o1Q&`hBhUmUyJ)hguQWy1(B?oW3A8nKxePRPHp49xbq6v zjW#?OlZ#NeSW5?b-E@O1m!4n4q;&InBJS8f0?!R2FES>LL1=rLp6ZuPF3muy+Dy`3 zms-!IZ>;`p!^|6Hn(|*M(j(e7SkF6$6)9)ZIT#$JXS4=^ypg0jvO}U#cEj!i4yd?+ z3VFX_&ES!5(Prj}7<+rDhDkHc6PH*@SN&);&UN@OoU4%Xd+%KAQ7)<27QRKKj(9yf z=V{7gb=P}0EE$dw&y6;w!!cmZDhK!LKV)5d!f z?mtxl@3Jw}4e(p`nOVhEMiC6Es7Z~NmAMBo)eKwOSaoJy3c!2IiW|!XQ~GtP%m6Vi znORwKen3C%>5CmE64xAyGbBFop{ks2?NFM3c8OS!z7!vW4lAAm(}qhlKz8qTdQ^6$ z=)(l(qvdC&N$RKwXQ8*a+vrn?p$cnJu87be8HrIvKtMGC2l5S zx1)U|+iJ@Lqbs16%JQHgiO&*7FO!q)YEYevi4&|L6|7-$axN zqrp)A->DA$aWGb$6fN)a!6dNZcngpIYF`wBD(3I*U|4Qh+rsraPng0#TNAc1SoAy9 zp*G9Dm-^~z>3Tw@olXT?My`K>q4pN=J`@Pth(7`v-H;9^u~8e`QPrU1{~U#!0S zx}2uFJ?eU-nB7?F@9ywiEKxBB^rL>MT_K2=TsNQRV^lO1oprsL*t)x!Q=Gb`!PBj= zd_K3_&>-KtlLg8l{ir(KHhDA$X zM&F1!;@pkB8SeOYBI;w%Dbz;q(oiR=-*{jpy5C96Q1f`g6rY28kN4xl?a`Q&xX)XG zkFNbJ+kNkx0O6R9fXE--;Q1wIw61jd@CQySpct|PEcxBz4EfA=5`oM`ROu74ibuoJ zw{W}c=>lVh6EtdU{dB@?{zkfw5(YCHiaB;}I;GiwGfV#TkZ?=6ugPVa6`O4c zOMh5vo1U*?$46OLel+K9D68YlS|HRo=u)0?c|5LkMeum~(H@1s4(kj0Hg+vlem4$H zkW-{?UbCM$e%{citB9%{<=L+NiT(MM_)({}Q52%LX1a?VGMo5nrbu<4c?RjNnZ5lXczf5mQbK z*v2_S^Jy3L)QxXRfOKNhTavVXLP<=*i6n5x2X<2m35AqKQ?i*C&~iwKWZRn?&=U7# zm9p~vaj9hWCoy#Qa_g_hU#hk!nPQJ?o7lOqXP*>mC?7~KCGe4DK4q3$PYIJIrK zOyA0phnY?8_%XVyXy3AQ4Cj*zn-$ZkdHVC$OegixEdi)Z_|xMz*tUL=1AS1)hU%@K zeyXqLP@LhS(IwM+{Yu1X2TJX=c|+u!tr}8?53nSu;ovjzm7J$B%fD7H$u~>(OQvE! zd_ve>Rd;{6KXe1Xc-km;r<7_^Bvy!&-5!fXMzSZ_#vusO%3&jH=c7qTo4#~qT-&k5 zwH@-=Oq?{Ddn6_jXhSg5Lyk&y?^MOtI$?HmHAaQrPmjw0uJ(}oL^zaCNYvvl#qs;( zQ!l?xR9ZIOp!UHF^81WOTVxIUm_HDOhvsOVW=0HhB}rdf!^2XoYiII3SVVw2N54oC17pp?1>0 z>bPV-W+!QykGdXljB0QhbWR1L9EYBZiwc18Kn#PC+HP8sLH19TL z{J^;<*5`W*WkjdV%=GT!k8@LYT(1N>6Z7=b8ae}CwhGkVl>iIK^ zH)*+Tg;GMc-&TQa&zAe2B|VM@*fQQ(dYQv=AM9b`U8H+2CZYrUUC42?iFlp6l}4ut zq!9RIc}ses>nftrFXK+fUeb3su@{lQ!h62WV7jLK8fCeeJ&W5f@JnVDJZ&#wQ7|Ue z=2J{GE45cj`*Y)$k^i}IMcpCub*9Cn)5P+E-EHqK0;mLRMHPC8jlrt(EPKcpm@5px zN}bQb>+j;A@M5Wh>9ZN-rAYGK{kpd&^ELmpzW&w8bpC~N@*>c^QU7-*>x+a7xVClv z!8tNlSu&!WBe;B`a{2SAQcMyZ)sUoYtL;Rdq|@H`C@v=Kk%G61pLR>xV3Afhu~ng@ ziy>Oyn}xH>=lvhO|o@q)h^fesMIdO9DOz=_UD;^u+=UsA6g-c%1rx)Vw zcO0_{g4RZO1D3)UdqS{Ga{14li&QAM&A6@5Jt0KeQGCwbjQmAQ7ncrCu^*%Fc8tz_ z)Dr3%ND0&=`;ik8MqxDWNmzCY@*Kg)7|3}Cspj1HfQY{xo?|4dim!W!`u;@5oUYy*{R z9oa3+H%IIvGjG!9Z{Ou=feNWBat5?iE4nGcQ}Ru^T0Wlp?abZp@mY z&Dy|tcNmzuQm}7?htFMHg?b;L%SrvBzByBn&JXE##EaaXii*?qekI9_NLToJcF|fO zXOqqULf>I%8o&MA7c;}|aM3&gyM6!t+zk%*<9_at`%;9gj!ixUG_nKVmG~|kHr_)D z9wG%&B~_Hkq$03*QDAJa{K0aT#zP5b|Bjh4Zu;5Ph>zH&n*qdqY&uZwK&Q0x?ac>` zT|32Y9vxw)Oz1R8Ho;YlQebD*{9h>~PqRAYc23881S4MYreYf`jSfI^84c5SM}epTC0=JwGpF(X0d`SgPM1!vHDuI&@W509Q%|(>Gs(Y3sfb}IM4KPy-2IIpe z>h0zhzV4{7Fo=aT9OB8;*%i6^9mc^&*<91K26xwbK`Naf5Mhft-y2nY_4;ynmrA;H z{u>t6@i$-f>4wCfdm|jpV#yva5OZykM|h5JD6PAw@{(7k13p8?oJf!>rjFFL_T!{qA-~ zA*PL+!_#y^{-2SExbxybMm)~H-*rr9P=eTKb}&vPM)e8XX7Gv@j~pVULyoBRmt_wl z|Q>bUB{1XyCgHmwho%Ol4Tqv5i*mCudsRxEHMAt~sfo-?6&{yc4u)GU4dEG3fA%J7G8; z6(aCJud*5~t{i;7uRoWp`?dx6fIuM2d@#g8fa_EgD%tZ=VerQ{8WY7T%+lAy-m<(> z`TSY^Nm<6kBO(RBq-g;wTa4GZ%IWG_JYYCqBg3fxcN|G%dXGVvGo80Q z5M2H{1T`v=w0uP0>9i&~0VWl*+8=*HaBm~7s_QsIL90BUJwr!&36XV6c=UGm%|5lq z*(O&Kl`4O?r9ZZ13?3D(R2=^*6))_crON%gR6*bVQL4)P)!)Ih8kxA@*{y+09-J@y zuToj|sV&vr<{*}Gjlj!5IcP_U|5d8!GIlQy`JZ~*+JBcSa=Mo9Ny`bSmvtWap)N6$ zetu6IayrsCNK9KBm49t>G?g*8VWsX$r8ovrwxv_KjLN+ZanDBkl&4 zXzc2iUEOVuWsTdOogLEwf9&EUOMmR*$Be40|2%UC^q&g_tp$`PsFcM{E=G+KGZCMy zdH$<5s<9`t;AM^T(G7Ap?Bd3nmK@P11C&ag8fT!ekm*V~Dd9g-MSJleKsG$Sf7M0H z%T|CDoJjrKXMrTf1p-?f=@E*@!|7N$1JX+Yks}vQOy>u3HQ@==K4v|(R z?nV6s(iU`he$f(}w>kQmtiA@4q;nrat)(T6~&2?*w7e%j`HpC> zA)kD4Ky&ce#cl$F6C1dpc$C832XWVtp%SYCL^%imb?;m_ofS-p)XK-^yq6Gz4WSny z2D&=}e)kfF`hbVH@IP9wCdAK+ofj7Bug6_RS56W$zV^0Ul{cO$T}#>b4vmI!RKiu5 z2jJ_lRHJeAL^*@|Y3rFH)kM}A-0{&5vaF{OdfB2Mdy92(=<`m|ZmEr2q9J7)G~eI9 z(?NVh00pr9_Yncob;aCYXJ=?G-v4FQgfhv;uxO-M45lFT5@gHp5rG&1d_*8i=+an@ z#OIZz7CoMc$0CkER=#PTsUog;d_+JOfvULOZwbQ-E;r)ofXkK`x!EB%K+-z{5GNM4&wzb|TmAWkztWdp~cIJc;Ba5hG3| z$pnO3YWYA=RmnL_Ej|MWu#G2eq!!?I=Wi6U&(r{ky;)Yn6`)px3v#$6J)XyI`&$WO z)B>1LN}5w#Q3$$V&&ReLHtEwT_qtPq>1m?@Usozs$agOxQ(any>CXRd>6|n zs1S!3(PwM2_D@$jfi@$?K)3+lrns9y>aGo$J^%<-Y7V`ke1On$29jAN5il}e>E-K# zhn^~O0h@rAYAPQWWbrSzudAXER9;8pu@eqiXpQ_YFI^VUi*#2a9ErocHm{ zr)TicNoVHH-+>wU{!8^xQzasb2CBGO{L`tMggw~Nr0=#STmr-xg*~*jwqCt?)%PoN zUcB`D;A*_Ye9hOU(x+2j6SLwZ&Km6FaxVPM%>8dg@ksuwg53YbxZl5;bpIRFNOtQ( zqBBe4;+#&5I_@Iglf|o%H;a_=_@48R};Gg}k#L<7+fPTp*Z{zX(uYWw* zvZpzo|Bz2e-;@1QKFPtv{PAS%vg2<4C7%cw4F4scG=8xAQec0O zJIL=|+{Kbgyh+zX?27kf1>AbBOq`o^ukN^w%N}iuHp$=w4klITncdGl*@gc)kxEhERS|tzI3`C-P|zprl*y#N3&$_?&x!LOV?A^;?9Dd#3yJn?33d(9?_({y}AWiS7XzE7F8%fH>Binx|DzH`m_p#Z9j?U&j5snT=k+Ap*9;pOtIi{9s& zGhT$msZgAotq%pu-sk^H)A8H3{x(}<$R3@KzArD8mPgJ#!9_olUTa``R@gn4B_k2zH%XqUjmC@r|bN-fU_~AQH(_~gq#dU|{L%i9lec%0cv%WIz16dG$^o5;^ka*4c`2D|*KFw>6h>4A455cSt zm>@yl%_oUYzFVb_t9?IKKHKsAPowY31FyfQtIr3T_Fp(M+1jQ57+d{s4K#;A?YHCj z(z`#v*MG<$U+OA1!pBzs1HF3DH8t};(yNz;Jpa$Xlm7VsW^A?G>-G~o@Wre3(Ci#X zPUyX8`OXQSCs>TfJg%Ae@uG+i;Iy}ME7f= zM*rXL`Xo+Te`#|wgSzX#!v!t%_~q&Ii;-M6UJWI2;p2Du5!0)M$f6s0G5e*87JJ*e z_=}PMcEwd_$hRB#40Wzn$})qWke#9hZZq%P0aj0RqPq0p&S*7$f^>1?XC}Q97C%A4 zF;fTEc2W_jp2o5mn|B165F+pmjN7FB%Ea^sEeDU~efCMc?v7>KT81i<+RK$*^8B>e z?9%U4IWM+CMeNkeRcd|MK_%hv0pGFCZL}T(rlgltiSGy-mPv54nOw*MBD#NPsC{Tb z<3^&(?E!`e&wBq4?e&GNxQrz1y>j`6e9Chgce~m zHy8@SY3~|wgvI1ivC$mC5S;pthj?x|q@;6YDvX5jn92%K@~p~>&Z@7*i%%0;UR4e= z1bcB2Gt$zMuG|8L5OVM)g-lc)Cq{DhuCA$-&C?_jAaYUJNv1&Y5G&wGk(E*>YubYR zesIZ%JNNu5*f-OI_k$KPc<8=ze|(a%0HK-CB&o_(UZm^_N6&`(zBkR?t9!XpABuPh zZXgLJ)U9-KPc)>vB?%wYZx(P4t@4uVDB6G2@Hk5?SK$(Hd#eCqz}3vTs8Fwsmn0;J z@fEe?fBd9YaTf_tF>CjQB?l)UZ`v0MO0TOorF^{ktiymm+4TI#J`XWG)>wsjZI_`g z$Z9cM+~sHer-qB-n&r=T@6Lo@)H0gxlc$fOSX1Vvg*#E6Q1%YVf6e7htmmoHbZiIn zaKC{Oy17O)2i{Z(sU)7C2FdXAIZStbxhf!{{AwO3Oe-~*y?>?u61PJKM8O3`KtLhp z-1?EzA!UH;$ba$*&Ot_no(?KTp~4MLQ>KKy<3|p}*4>$|zGfHzlcf2%H$h3i?VQw1 z7;hOb!5@-4R?oTT@O+~5`DZIi1=1OhDM3HhetFGU{x=zUs<;9N(9C6yG`%=;e(XW4Uktm#C_x&lEzV;630%gj4Q{vs2i*7JGRoLAx=Kb=Dlg=0l-iv2+<&yPZ&5(6yBqz6PNca`tSeJwYs8$|=NSdX4O zzjiDP_Q%qwf6IqOux{$WlhN$0vTt5^hK~muFq4$@>+(90K7)7c_KQlcCw=~08N$%O zB)4|!su)=>n@Ity(n4nP(bL@sYAP%lSyT^O1}r?P6$5RJM8jxqLZVc(3KeXlsF?Zo zqHU+=seDMUUliHn9ISXx6R)1aZ$IT%q!a-bR)Ss+-;Pz$q9Lb6l_gIq({G}538v8P z-rk#F8?NYt8utj*DVL~ygsOK$O}DV>lcdJoDHa^M-2q=OG>$gl;L#YmVUohOeH?8t+O#AJ4a|f%E!3hHDBKwXhc@5_=q6h0~I%#UMf?)+FPU_0dPmr>swdzL8LTpR; zGSUb;F6O?T>X>H<4I0C! z<^$ZOG#M1VK+FazS10qN9&W6W(UMUx_6Kbsq+@w>ieh!S$%gA^N5bpTTy(=D)(``z zI0`rudz`q5ps)E@X2mzLSd*qjb~m?N2>wq7v>uQRg#T*VIr#PG@pn_yMrTW^S51L( z7{0c|@~Gy%qFaw?bMS-9Y|63FdB~@N+RUazIApqrCuL1Fk?`$Pmgc&r{k9ux0V-K_ z8|w5Cz8pC|&QIGO3;N2{+a&QQ`hw!mz%ip`oeq44)wGD$53X2fv1ZrL>gLbZA0(ta zF`=?dlv!aY)Q;7+z3ww>+Wj-q;4-p+g8hE_1$8ddylXGW>lY^T#Nq`h>ra~u5UUaU z?*sU^IVVLuJd#0;&3bPw<56gRHffqq@_BpHZxzi_#C1dV=K@~YmXZj(X`&c*%N)NB zP0eICVRdpex|-F6qK_L8Z0QUBTW0MU01e~@u>8wog{bN+StQg2zfbtojq@}K1pZj*Nzh271z=LWm-!OFhg0)Pn z0pIKB&0x+rNnI1!R&}y+Q)cbuJE2~Z#I9HAh31}W&og;SYE`H_48kw7O4nLl35taF z|LDixy1e!QYH9ODn`@EV?{DAD8Q+~R6Nvmqp>2@w5Y5t2FuPg%(I$6K)hpvzXIVAF z$E@&-e!}$GbiK`NZZ|49GdZt>o4uiyUJI|=O6B7ItB zmB^dA?~t{du0-QUf7vF#mQ_jssX%c6;$QxOq%>!-HaE|aZHn@(ZvyzxAIPt{*-|iH zHV#gc?WUMw1%Je$cR@^IG`t{1(ELO%D}_xHeTC5Yt2#~5m<5xW{r2AFJ35aA{7yqP zW;S(W87SZTNT`N0W35xPxUs5;h)o-Wh#>&?GBQKsbSH9WmMws`r)Bkp@`w$d_% zEq5!r8Wh8vl~&=ybAJZ;U4flTzGtU>9(zISbuUR z#MdTkP1|qmCl}gw|0g}Q@*LTNY0;CdCi9^8AoaUS>@8nM5nGP539{RcO$-*V;!CF0 z_Ax{>8eVZmoc0>)>$mPw@;%{DvUqD`9w&O~`Hb<`2Owi;T#L}Kh}e5Nbq$ncJ(tot zYp<~|RX1&sL=TwTLie>C-K@O*C}FIs2N7KqlS};7w-UFf>Bh6n`baXldo!Hp1B%*lK=Z;{lB<8KB?*ax;(67d9L6u59%$unW$RJZhTvq zR@%T+kw(bDQuydbg4Iwe+tv^vuj{HRnpI-jYKz)tJbvF``M_uD(u=&y%+wyX<0i62 zYThB7BuQwecGA}k{m7sP(r9g((U<>Y` z%hanIXbgO_{@3^QYdF{89}FA-di-!+`|H6FGW(?O*MlKs*0lLJJB`rtMA`Na)_KOJHJ z#%TI8*`+GC*w@ki+x+69MBy)^39nfz=}S!({h42+a{ZoPFeOKi;obNC?sU@?vAI~!8Q&o9i94Bj!V%^g0jX~S>8 zL>ynWTk49U;bC*(>V%;PREdsxjO#i}+|=;%i>w{kKmrXPQ}e;&7Y>JKayz4~;!_jE zJkae(r0%^p&2Bw2r#>F`mx#Gb*amywDNMGe@=LUsV60JUB$PNWu37ic36Lj2iAT%P z7f56-jxogyBe4qoQXnB|#d3VK3(fFSmyu07KHh_(lmgd&4q!*q-vuv=8zO~UE4`9J zw(U0JWr$Qa^9YXcD-@v+kQdU6+H-E6l#bkePDzJMWyKaqCj_I-25qjy#?-1O5sav> zK|_Do5%-A-9U>T_(!xonU`Au5g$Z9zO1aGx&h&x_lq5|5P|me6hO050g9Hmtlpa7Pk>9Z=G58%PVl7 zPUxKmu6{@vhIhf+a7v4>I&!#q{>y4jwp1ZJ~J*>|DDzd}Jw$i1syOrdsP zePR5E&XswFFxTP!`z(%KxFmBJ>`I3~y@En}PI7x^H}yod)K>uyaq%8YPvnsNBH%GxuV6toi=?YHclp_xXppikU`4;)Qn0rtn;gcwK)= zo3u|Daz>ESL<=S$M0thWh9Sj!bTx<|3@yQ3r@$n#i{fAzY~tUiPlkNojmq3ogK>F^ za7)*6_S||W5z&>$V=~2gAT-cjJ=hn0P!p^6=Y{_N*c!;cTQ&LLy|?x6{>J}5KHw05 z1b^HG{@0tVw}MJYC?TG&K<@?mwcX*2sY7BJ&cfwq*tQ1Dhmo&AF(7_^u7$Mh;<~7Wxlh242 z+De4WUfjIK%g2DejcIqF)enSdCg|@1ArU@Igh^H_)((E`Kn#1-at>G3$9TY zg&VTmhyyMLk#Oa(mO5dGy2GHd2`r3X5uN+WEYtPIjR>w2Hw28^XSUsfPwGwdv6XH&z`-{#r?$Z)e>G%$D*_!tY#=_|D3`8 z%WFh7z8k`a!2I7GXHZ7%bE?WBbeDT#>G@51&#QNSuhvat`r~2z8Qea%3YFq%Z&&w{ zx}A%MZXes{Q_Qs!M2s6%qJ?Y~Gi4Z=w0}_`qB`GI7WQn^%k*Of!^_=&iHAz8(v$Y8 z&u*7dYug$)j8;0~-BbRQ?T&0YJ<7ftv(?MdkB)A<;5XWR*NymE_;du{+Eo^iymK+G zS>!=|=*Xd%KR&tF^O&b8K&#c=G(DZC&~wP7YVGyipWSgwCLSN-YxKO>99x?n71v+> z^v&UpwZS;bZM89qzGh`(!2*RWk$(7ZxU%V)`ZBq zbR`_R@OmMT_+w;782(6h!F>*c<9Fs;j+=$Cmu5?tU2@}(bDdjs5s#y!rfpYZ6}lsh zqlXLVIlPP3KUhY$F-loPeLP`!kfh&jl;-V~zOI*{7e8ZNP@6j;W{BGR*)!K#Mqxsdi`D=%?$)7Kc668H|UpSPf+_j2LJ#~~NB+Oi2Sn&1i zq`atPMoL+C96Ne_etT*{TlD7x4*_a3v5?0B54fwuCcqw%hEi3p-wd4?J{c2%8ZRZ9 zdgL|C-Fg1ztD4m(LwK@g_k)5^mo{8p+ETINmPL%8q1-BV+C!Z-2%aCn5&h8S=kY=+ z^X+3D8_NXAge(rTmb4F5h;QROG0R*J3JjfELt4okrB>ypn_3ug|t`c+*U# zJ!ErsM>DqZPQk=%6C&4VLEdfe4q2L?5TDt2ZDnCn1)E>KmKx&|nTDTr zTgyDN*a~7(xk(`!B|ftaRapIDzKl~nmO0FN7B#+DuyN|vv9dGu>Hvj3_=X9gs0dq-XQ~b%-uLsAB>N0XC`4TQ&s;y9g-re11gFrxMgrFBsPtU zU&mY8gxE36U0@*{qssc@0k5}-uLdz$Pil1^l+(iZJ@@Cx^aE5XryWP}hd6bK0!QAQ zOMAD*DmD71-abt9AY95jXu)0as}@4a-a$`&r$t7rQ(_L?vy|wECnNr3Gk9)H#h4rv zGK`g~N(@gW_#PC&A!X`nzq1(#?Xnw&!_yh92Tz6K%d~86ygJWjNRE}=d?8Nhw4KJg z#6aTRNj3BM(o>ctY`;ps#Y_p2IOlaoK0V(U?XveOOt+txYu98Wt5U)$?mi$l>S;}_ zO%dm@HnS6+>6~p8QG`4SuP|LKkGStn$8C3e%Vdl1O;G1IcCFotd-Hs8-jkthwqtx6 zM<(Eq_S+5a|OZAkMf6->Wsm zybg9WesAJ&{UKz{0S}#An1h#zvBWPS0CR%2J4^i`4Wf!w>Z>k`Zv6DW%JyIni%iIi0EYSg+ zx-S1c8S;)z@&)6#v+x|jJA!-eRZIp%G!ZZW6V!r;OGqK!jRin>{G9!8H6i}fEB-}Vn5T_b=hqW zYKn(xxR-jw0`VkDYYu3xn(h|_S(XJ>LO-}JNHBEgzGGUQy4B3()L$y|Wcv-{1mnmc z;A@hH7F3Adl1OV;^s%Gqs;FiLS)cPjfmDiZ9G}vp@@6*-ECjrqs6ch^aG;#f87d^d z`Z{nHl<+8bl?uGVUOF3Yu?T(;v!G00O58}0G4|0W*!T^xbEEtc>Y>m;$m?ZN(RvhQ zn*-6!R@ARvM&&x^n)736^JY_PPe6@#?)U!TLt*ow?T2Q;^K8mBO-~`6L?Zn6=R2Lm zX(OCXJ>{*Ih>e@N>GO9YS?^5Z7$iG!sMvr{i|osY{(Lp(C7Vag?{N&M8psYTj3#Ua zfzy#10&O@cHu=8Zzw}k~{uERQ+PlDoP#yc(6~;2cyxehi=(%U&fU5k#9;GckomqWQ zEXukCxrdg!2?-Ze@t>C(Y#6Km1PwVRoUhGLqX#DuR;smAAdl7P&E*af(My}_jT+Na zV?x*QI4QFE2Z$UQY~=9b6R{6*)(Z;&f_9bB|J@IT9k#ea_O;I+#x>TSIvusC<$ftl zC&ALaPqeX;8{9?&x8t>!1evVO=iz=!F4P`j+N@tVB17hulh>Qw2ki00;m?4~Iz! z5y475$FbhTE-1%LRKnRA>7H(-B6O6 zuSsau95S&B#==~vGChG^WE1AF4ge9o0wK|6C?(npDMaEG6*+=aKrKmxGabV|7W>i- z()E*Erm`^FL6Yx~5D_*L;%W%#0iX;dd21&bauQHE2as|mc+yOWgoR*?$nm;BR+OzP zI+oSNy>B3vOgQqLSM>1vXemI9wL(k;ny_j!rgAVO{1_@G6gz+>tXDAUor8&y#-&At zrm8zF*@n)03+xF|JZ5ka!^Dlw0R)br+v>q$fLJP$7((xO=ehfD=@TedVmpjNDLCT3 zOC${3kJH(OS|b5lbHSDBKwM1-q%-LmBIYY;49+}p=y@z4Iw)Nd#yA9HZK3`?C$P6m zF}+JMvP)4cNy6t7B?TiE!-iTo6Y!O#Aa^Oa?NT{#yiN?fNg2&S`p1dwn*orc)Suqr zZl$iuhS60vd{3WScL_aaM!EKpcy-LB+HCRal%<%q5GtBSSzt27U_@@6>2^mHh5e})n^LW}l9}f- zEPY_{jF}P)S&`QM%w=hg^l7?=nYke;8A+aQm`vmO%-eQJZg5yKhT>4|PKr@RoJJZ; zS(e*;_A)x{j3LJfkB0bUHB03@*WmMFBtxDMiR}^@7^j;sq7B}7A9*L=w=>o}$&TgC z=|v|$9LjJphNZQbwMhBQGy24ypfR^ncyKM?T=Uecyr_*KG9KRi8Xu~~!EE=kMC^R_ zoJP(dPgWdRUL$W>D{owt#N#{>ssp6)9+r}r4_fF6-GMF z1$!C=UB~ePe0dV~dA4N*R~GV|?V?xr^T)GXnWBr_N$H3svKpfEa;M3wI`4zJC+!$orT1>aJLG=wM}KY*<|iyeGPZ<@e5C&|a1VFO7-jzWc` z1y5|Fi?K!}r`^TtLhkG4APp=@8_pRV2qV8Y4+~5pYD0$ZW5F5<#7W1uqsX3oZYd1U zCQ7(LHm(4D-dS>h#jGPK+nh-q70M5UCLx-CCPcU-A_E0zbP~~+wEK=Z$O=m`K~CxL9qRHO zIuJ~@zCgT$Db?78MhBM}I9K7ENq2(D3?_-cE|A}2%BYaCpO}9VNPfk^gkrk0cv`5e z5g9t|Y*dv*R47F0U{YT4kz_}xEZvt>L!kukyZB`jjhj=Ifs zi#41}UCJvpVC3S*WG=Yj;xu^eb%4|B&fxA25gUhmS zRBK=;W9%tN78~YCpZ7@C5dEk-fYpD5k$+*Tp7SlYat1TWG&(F0S7A!g&d;*=ioYz7 zI|h^WFhSk#P=fgDv_CxqK14%Siu4zYQT*jtYl;u{psG%Yi#;e-voZBM)Dc@ejwuaP zfEMmn16c~It_;; z4eHN~=#S$%DR+Wn$24z`QMBS>(mwLH0!8hu?r0Rhes;;ESfK5tI+@6}`O}+s3`ClX z4%^z9>pL{|JQKFubw0S0j=FER=@R)H41B7j^mqQr+{G)?MeBgNu!IDTGCnYHX0{Y7wo?)y?+xY#bPN)i6;ymzH}f(||8O)yr09#L@N)$eyD9kPag zG~mO0$37kO3q?r7A_;Kk)ScdoZoT}KXlm&qWm%ZaHj<^a*U=}>>Ll?NLho|hZKQt} zQF5R4srQ52ejSz`2ieevx&5Z!^dEt#)#<3@E_Qf~Qt8l9sr2dl`BSMs)u)@%Tl5=@ z${mcswGYNE4JMopCb0~q$PT5M4rTZcp>v0_+lO+OhVo5^0!G!)V#7~Nhl~A(OLK?I z+lMQchKq8Qt64_sWJelIM;iS{nq`rw_L26bk(Z|vZKAGqy7G)gSn%_?W3bh zqvNNelPqJ?vSTx*W3&EabGc&+?PE(zW6P&wSeEhkvg2!};~W0to4Mm3+sC(;#&-nh z;R*!%0>FuF!gCx-fnZ#Vb>0~;Q3=4AL-zrbeFnM;AByW=9#psy;j06kN zRv^xU5sZMnNhZlF;N+S}LUB02JE^3}5UoE=HXA57rw489A8L6abTEK{Vo&y>?} z0tyVFv=Bir%M=d#3I?zyaRwYAAw+VcOmZ-4fHe$Gpt$j>Yx|WND-cLPU`q133+$~{ zMd(0Gpcp?XCkMNB5f%&vH^OILvP{4*07f`0=V&%CV)lg=LEA2Pd6HN;z|G~w8*{lg zT?*EnFrdHOT)^0fJ7i8@d(JQZwI3Kr0ib*huuhhnGyPx_XEs0w_)S60`D;TnUkorN z5m;g8{Q_QfpAy8IF9gn#e`gtGtXZi146T}+?GgZzV8Qifga-nnR7k>QA5>S}`KQh|zxk&Z+M{snoFf3tN&${W5*EdeUW5@)C`=M}P1c^nPrC%{!J~9=7#vQp ztxdoPd)p=O3YP@gfxr4D_wHj7WFHGzPJ(PFK~641MOX(U)8nm}Zv8zby#sO}lq694 zwLnKe`k!kw{%q0EpN;%;QHlC}KRzS#t42c;#q+yHLpu$}w)wk8Hncu`QubA?=^s__|KU91?8xWGVxF=8tb)fmo*MmC1)nWyHT|m!URvaZ z&+^BYht?C-TeIgi8hO5~{0j4%fqEB+a~%gte9o)jPq03VLO=JfKAPh*!zFlmo*(>O z{~1w&^J%QUP_nR)`XT`l*?T9`l4ZLsSl>o-pmL-JZCrJKAk& zeu!NqbN0GirouLbNmi9?&?gwYBEB)Jb1iI*YQ$`%vOX>*K+(|l>S0e z3%BimHWZPtbZnX!$-IIyo67GB5JZX9L}6luBh!>BoPIi|YF>`oj-r3IM@v{)6G#lZ ziSeu|iY9u*@KHx@tf4OE<=HMzOi!1rUZSvOl*N$fr436>p=m^src8qhRjl+oe4mop z>oMv*p~}j-;VU?+<{L3rGc6ND8^vhIL?cz($9pUES%ifY7WJUh+s-j+Y*h^+Bc@9Z z%5L%;&+5n~-EY&2@^=K+Q(h*o5ssDk_9Q3LFIc~ROwe*X_Kw^qh5KWI6{hoCu3j8C z20$m6cyc63u9RxrY^+%k0D3q;sKcnHj#LtupQ|6g3{$`oP{uSUM*&H8F`vzh_Vru^ zb`*-jXy@nMAPCXk(1c3@-f$FcM?+|Q%gOe*hIIL6a6d^hQGm}zPUbZ9noA8TPHtB$ zHm=Eb2B1jFB4l|}%r~r7OQxU2qK&5S^wq?+fI?>oRaa->@#hiA>YcByu|{k>YpF7 zjhR+vl>^q2TG#uoe4H@xwcSvdKDJl3rk02|Y}E*C#ZWgb{8V7GO7KFQGA}N_04je9 zU>tS3P@g+cMkmX`vg;g5o!?dK#hcMO%7Y~QM3*r!*3dn+aP5AejRh@nh%ZCLzsE+z_aBwu+a$w&27de@Zv zds;SiK{Kng+2&zna#Z2>g%Tm%Ni?jDyRmk(BFrbYsvJJeM5?|0f~TEx?D+&-)+*H0 zgHccF_jMyB(z@AJny*u}BKw5EMOMwnB-g~KKxUX85*>`TJenh(Ie(gcpRl)nwlv4F zvYYyO?SON>P{P5|0|wm3R3_ho2=lT6_CAq|gf342>`5rFhPfhBWi2jVGioJ2suNW2 zEH#ueRKfnLMj1APqLf$fV%fAMfVWRU18wnB7bKjgZi+Jg{VJ_y=k=>ES7QCHbuq31 z`s9b;q-NYVz!=lJEY3q^vd!*ny+|PKxMGxmzcLM5a|x?E40K&Vxv;BN%@H`%8UB<4 zX1`|bBzvID09s|+7}b-B?hPaPR>>X?!$<1VQvYiJO3=RAtbTJqrNl8K`S%gEa{=B|BZcL}VMYsIk?o47elMqV; zb3Zmre703A12r4h%lx4W>}#dYRErwmz5$QpR!zT>#=_e39z(3X#t}HW7$TIh3BJuI zfs%Ow^0*V3?<=g#I+^3-L7^CqRGlzBo>XSmT1j+gxKADfQ`70FjYOziRel>>3dNXk z*txG(QdF8=eHOd8vwI;=g?fG;*!lt}BSp`h zhvq7>m|7w(I2XHbX&23e3lZ08A-d1p;$m8~k`?JZ&gHhbGOyfZq;LUMIo%m${x;Pt zaf<@vq|>=3A?#@&DH_xqYRl*j3!xiaVcb*S0=n0<#5b;9P(y_9*XB^XSm0sp4GyL< z-AI)Dh?zJMaTRsN91WQR^k(y(IV>1e5I@uTYb({6BaZgj&oez;_onhaXKrCaV;g^>OYxK>P zTINxd7llyK9+|$(m4ifr&JM_fwNNJRmpjw0C^8i-lAJYj&_xrA*xT-0Yy&kQ$KCG7 zDx-_bKi`5bD%Hj&GBz@{+4i;D5F~gb7TKq9yVp5kE{zL9V45_H%E+TqCw2Ms?j>u= zXQNXeTXjDuRv}#xgSiW z+CP#=c7ApvX51Mn;86@F}Gl!N3a) zbA#ob$15ZVBZXi_a1kXrCRjaF86w7l1-Wy-x=e}z@am6$kv@9-3Z>!cMHzQzdX9L| z+#PJ)to*SeD^fH>QM7kWj-eg~+f?pgZSN&)4#k~7e3Lb)x?Xmxy!+`2c$DcIX31dh z-3LK;jyoTioy<*KyN~{I5NOro|5*Md?r=aS@TGId>84J{{qbjKhi&Xa+d+6=_VMj= zUzUhk?(FCa?)WPXH}@e3AQ^mbz<)=GBBS|8BH@tvN#hV&2dY(R3lU}+76NAO_cz}08_nC z>7CJhlc14K66ie0ek}o71|%IKiQ5H7F@#KRLJyE(=A;Scu#k&JWUOTx?utoJ_$?kX z;y0y0I^2nmGebfx1}Hs8k`9kd7LVndjE-@R;y(d99>+~>q7Ibl-#UX#niB_;BJ2Rf zd@u>G!XU5O=zJsQ;z^P;y_kuVkYX&V**Uow9YGfjo}B|JeuY{`XUtDR0x-aIb8^8f zP_c6cEDKUUNn(b{Hrc5qCObNBR3R$bj{L`kNIXA^#xbOG zlf`pyrs_221z~gD5Dy*aK+8h$-5AQqtz2F}6gMeAi!rPlNk*ogXBPpuE@z-9 z86xG|1uIHPhZu!j^ev3$eVmQRJM07pV8WA*DX#HFHpBBjon$9!1jidcIjhNwnn$H> zLPuM`+)Na;!4wHmQRe8!KNzzod{A*U;DRjH32c#mb};hzz9w1XC8PMJtS~zJ5Y53r z`psx9lZ1dyl2>HJz&!x4HXk`m>W|Ii_X&Su6z0=f(mh!sYMU8l2aUoFqX3u^04%mq z>Pd8S2y;{l|6Bye;FI~T4CMDxAN%AS-rOkk(+7h&K^O|BO-Ml&ISL{jAhGSlBV-hPgxI0>Y@>3%(`a@aR& zKRQj;J~IZ6x!)4O#z3KzjsD((K9s0#_Kg>1Ku1%lPVwDqIluCqq|vrjK+q? zBzQskr*C*Gl5zrGpi+*pMnplrW2Oedycp7nnhHYxB)P%BLrjb@JX-cv?z}Y0vL(+L zd&3b8(zd7nm{fHcaSI_8I$~agIH91I4rTjse>E#=<3>>I8l%7lMdN!d3Nm}CmX79n^ss+%QlXhqRG`I8I{KbX?|Yx3u(BKUSmXzWU| zw;Hb)l&ktZD`qmjj)?B=e7x*j8?;N}DwzO!NKQc>nW@%g7C5^K@;)`%lO)0!&c1(dgM7?N#;fRnP6c(cY`I)O+)^S6%?Z)eX@% z?KAN2Gs^8VY40;#>brZ|XU@`pU$)=MwBOpl-!`}3ezfoOPLER@GY^jp4%gRK~=wliJ_wPf#*dt#%PQ4qM1g=-iGtjC7KuT`FroL zm!9LXjC<9h=U9e!vF6JlJeDC{kG34JkNL@8Y+biLkPzNy8SP#BVM5lXzuW-{p+TkV zu5^$z!x@? zkaE!O1Ox~&$I5@P)Nd6} z6>O!Y(G(`?H{y=uOhMci{$|y)o+(sV@>FnR8$FeFyWhvaa@l8~msE@rWe(s9mIOW~ zFQ-bB-!Db+JW!u5jk2qx`(~Z!s@i%%Zf7$jo3k7x*-J{y5CtzGK!}ve*GAduTs>S8 z3M;l3z$0@ET{zyYN)wQES%p?5Q*eG{IYB9b#KCH!d|w=b^0 zYUZZL#fRwptG%$cgy3>{Er#6^xt?pHK$^jf;mb|S7Oe=GTS_LM+i!#V!(xvTYPK5t zDIZQeR!;hqC?V0yS<|{$z3}0MmOH`CcHU|JTK&t_zWv2OMtHSE51&XkDGQBs2QNC|Wm!TO z)$s-;4Ng5n?QgFQY~sadt0YD1d+BgJ?vHV{rlU2j48e=?cM?7d5A{qNHWJ*gmnD*P z>SuCO>8!!M*J@xMTD>{b2{`*!DgG?GrvLp7$*iZu^IXo&6L3GCxA+sO&mvZ6C{hUvU|q>4Q~xaa0o^n~xJ$Nj;YOO84EncuR<%UsDm+xicfKsatgOVXV!m zD3BI;s;5BkQ1r=2>2hbaIz3RXgO7G(72?)Qt?MeimA2;S|53DMQ0{1)xn@*(@LH-e zy{*l?;O-n04SJ6dGbPy1>GtT?!WvKP2YvRO%yDEvLLQdf%+jrXmHJUzoJV>eHFM- z4`>#@<1mxq^6rXM(@BvheETh7=FS&&a#s?q_hUJnyJN=O?owu;VOA$a6x;{^8IdcB z#T4MDTyveieMKo|a5v~I^?l4HRpLE&#rTT0PI*_MjtICW>)1mD0;Z(v*Uktd&9Evt zhc?NG;@)J}1{hs!iK-?8CXRRzCHNizv$|XqX8~Si(zxku=YLo&FPjzaphbs8kOUfHmb@Hx-0Qxya#uGFlhsYI%iJA@3{;umWVpJS8DjKpJu3&!2qC7U2OJYSs zI0ipwPJD@%5+$Z4G$@RQJa@8BUh^c8SPYZE=x$W@vZ{eO)A3fV_b+=t&=Nc%Zp)0!w^f&&5Gkc1zu4Jh-p{ z!2cpx)2w_ZC<$8t)aBLI=Icsm{|aY$t8PI5UN7mIUa21kAG=QWbWqf*0-f9C%FKW; zipn%%F**cnE}Ap1A67!S#ix{zjPG?^VE|5*uz!z<4w@-^cDPn}O?b*s#Mx5qxpQTX zzX^rBWDj|OT)!l74v{?VQ1PLf11YpBA8hfIvKw(#y&3f)0!_(gi zhCQu#ds5u^vgXAz#!)^j4}Rl-aQsWaI}#QvVu>yjkcgpSyT$0?^9%c=e6eFxM*OzN z@bB(=5!y>;!@dUajr1$&Z+qwZuQk>sysu7rDoOLhtyv|*qu?aQ z>f&nakj~Yp6hB9u(5N?4-3el~tQ8L_f*4=j@pMs2Lr7g@>U{?s^1R8+>m1X*0I$8f zBR7^4=F0PZDMt0+T8YE*g|Fgs*BL$QS_l%pT1%6qT=#tW&9TZ+bZyZS_f)<6>7tR1 z^yzGvYE$p)09$36*b@UsPXE^qJk`bAK_~3w89qY0fEgS8MwfhoRb_7GE31Q~t0`oRF{T+vRUkQ$^1{ z;teM1l{YWHTa4a2BGf;?=QhurXr9rhV^{5>UyjkDDVg0Cu6rne^m$fZwLljbA z!@hY|qKP9rt;a+9%1Yg~btl z&1hzY#Qa#A?D3<@FR6HO|KK+50D}YbHN|BlcL8aExk;4*^z%_*XOj2w8`%3E>Ye|K zxVMOF1OB(PfdC1?f)sbxBE{XUMTI6;e*(o$TC7bqpezxUqv zomtF!_W5L!O}@W#&hv2l?RfbG=wM$58!T|^1Mkc?O)=|C4ciCwEV&7uL*JNfoN_^& z0DkiQ-nSZ<5>gnnP|(G8Xi0D|@pqg6 z#159(INk|_zsEFEJUVih2Df4tD@-4C!7H5B2JNac{4Gnssv_>;7iZ#Cz4q;(DB@74 zModqXK^%!+>}QB(DSvk-e~&)DuuV(=a%lYk&b0<+a3}pNw@n}%ytj?>9J$9JVZFOD z?%4)HH6Ri{fq~9gqN$+gaDG9_^bg_n%tll-YX3DlJgFHXj~PuAT}h6tws6jO*;sXDw< zT6u9&R$ri3r!1I->%uUD0fxi}cu~80jFBER%Ix=oI6hF{mu9x?F)8?KsgH<@)IC_j zijs+gGnS++Zcj33))LL(xw}AP9@LhAK*GWthqP(v@6eby&|pg)0@F1N0!`8Cok7Yp zBK->J^>7GvOj_$j>a0e_iVe=TMn?Src-I;9c^k()8`Oh@rPxJZe~xiNlZ8Q)fq;W8 zx-iqXH6xeNw~?@P2YjPRk`tyswwluSg0vo_)A&#izBZ_u_zh@~l-gkUC$W=PIG z_o_UGr4$AX1^PoCy&3~6Tp^9b6LjR9J)0cm>FlYUm6D=N#l;HAMbme{h>0?d4)DPW zFu;V}^FEgoqG)okk)eeHU{K||=0mJj+uT$@F091!S;4t@k&D=e`Cecf(3g z-%988vj6WW`hP$5Kte)B3I+mEkwA$5SqJ`K4WIv0>u)Zb_}>mMi^)9Ymj9~t|L5?M z@%v8#%eGYcUx(L!89x6VUe7|F|4Lww-;|if`2I6|w%GhjVCy$Jod0upW!bIvNF5)2 zo%%m1g*;OJcv$%{1E#~~5`>TV+ z+V^w)eJ66~J5z;RK{Vmd3GDIQuav5)^VtBc0>A$TpFN|O)ERka!*D~>)Pz>zpW{`C z)tx%sACJ!WK{ChyQ||$+(d`(PimLyhm!eC;@B*(?g}&K@VGHc%h0Tg=OLZ1UNo^@= zfK<2VK}>=1gF`Zu;89gNdXX%UpnR9jZifCp@R=`qDSzKJ{wyC{Dr`r1NlJD`_#FCb zHc8r72!a!8NjI5a;xB_ihT+4a&7v7etdjAL=zq{l*olA&D4gV#Dp#ZS`fG`E4Owil z@9D#4d6Zyxl!8LjP>h1&b6ZHVG(WM8_h&dFjkvUR#qPMibFb#3OiVCA1^+4}?F~(- zw&5X5-*y;I?w&umCJ=$;ywB{(ai0V*_NSXm1{tqiS6e52CHg8wYqw_&GD2ORj z90VJlhmt&E-qih08WkU>fU*}#5&afEPeDPUq5ukSl?%I~suS-`83*D6`AKzgP0EGx zXQ7_`ql~g1`vjC+h;v4nkn|s6(6E7>Wcb-~v9yiuDiUjp>+I;k^p(gYaD;ND}(S)8sm>5o96ckODP zCPl7VCn?~JHH4B+{hQd#N5%VCp=7Oi7>PJQkDmNIK0FrU4zYPh6FE5Qy;Q1o3R4tI z^Z>rz-hq6IU&)u@i3}mRQmYXfnxgULvD$LT`R`hPXdsvKF2lI^*X?19$55hfrLiAM z)x$34mxa583)`L67?AaIr{WQYY5%H;;?a4Df;_{?E$f-NKCU9vwLOeDB6)QYoXA5| zJ-R$INs9=2s=X?0k;kTamEr*+b?~8NVm9*|3KU%L$+vB~-PBqAtrgL#b>_qyViI7! zDv|ol9m}CW-GpTBez7lz%4iB_o zL3?DXH%p-^1eSH)pI>iXZcR2_rc+?P$i{h{m)LwpX+7i5zO2Pyfy47=pWbb(^+;K( zt+JFMuxee-zmKT)wA6aW^O$e>Ny7@8avUu$N9S7sPUkMkm@}GHU9dwv5s#^Y+YK9p z#QD3nZ?o)3MF!i@4{MfLQ2MJAt1YsPyD=dXJm0@nEi5H4618{6!qbO}aw<0{$M8|+ zv~@LU2{oHtKcfdvtA1*PM%&#|-NQ4RDOf@+HI`-+HL|#Kx#Epm^>Y>8&q&Vy>t}@Y zGMu}qeb4N*EfS8CYr_!H!q`Af2^iC5p>sgAmV*2N9<9db37_f*8Z5Y8agLT=*^a(K z=+~HkO`-|1$1%Or@7U(v$EOWf3t4ib$mOV)sIMy2OahQ6p+!kGaJ-tqVDK-SIkNBo zeU46)C2L7W=h*Y-2uaxi(j7$B-8^zcZWrNsO`=|)P^KHk*AlsFx3+i8oH~-T6ofsR z94!IY%eeLJxF1F-Lchm1XtEg$+ek(Gp)vz_N1%%@G-E|e&S-V}wpvN?@AT1A;!LgA-!55mDJx-?}&V)qZzREuHE( zReb$D`@8>7U#K^=-X=orZixKpydC^li=K2hCi--dESd5HFnTv`^mGZG^Y>t)E}#7P zbXA1gcc3$TkLMG3U8UZ4r1uTF064g=OX@qZR`+Y~ln{e8_MLgn{n--Tz2*4Q^D9dI z@dx>P=7Ff5^Q5`QJyFCxjdI{wvHIU5BgFl}`=^_ZxxZ)Rl7Av@`w@4~3G7N30=BFE z>EX+B)Y^jhd!B^Y`pWgs@QGe2`OomVp^tbX4t_R#a-#*K{xf_AD|&=h27vz=KItuj z@&6e<+hjsW{uw@XOG2pr89q@_LK*%UK65_@$L$BR{WE-anuYTIGklgxhY9^Nd?po# zN&GW>`XPtQ{WE-8nT4zTGki`BhNka_YWy>NDh!6}cSabmMz9t~n2&frL(i0d{wh&Lojm&w5Y&C=H<~PiT}cOSpGuRN!3{?`l-AP;@v;XsCX4G&CCD zJ34kXIuXGV9Df&`Dim``9Fy)H0~HF)gvR8p#=tvb3P@s04*ZIQVk^93_n0H{6(g!v zV;ffe%I{*Eh2j#3<66DrI)#F2Y<%mW|H)q4I^!C@#0}`jk5$FlL%qIxJva5^J*?wq zpADb-CUBwu7(V%Q5>}rLp9gQ&SN~)9B)U%cp`W-nF8I?s@u)MAE-mroF7X`7enygX zt)CRln{*3Jdhlkv>r8sOOTt=6LK03!U86!VNCssmue&6J*OGB!D4uUGeBqQ=Eb*O+ z@r2naWD}HlT`5%eDJAnMG{UJ22BdTbsVv#4(JrZMYpE{}i8=05d4VJkj4{Y$x`=*ipkpRy86Kv)R^$EM z#uQ1;!lTLb$H=hqfu`)^s3HL*fods~o4)no< zBxeywK@sq*Xbh57Bmi$RHoy#vTMD3wk^Au;C43FH6$yZV=e)beeJIN1490vq&vop| zZScwNo51fp%;X*bP1&NWPv9oO^X7%~yIFHlLUI93neiG>H(R`s!_0cbVQ#lDq}?aS zBplaV!`zAn(%O~JZHm623>mynhbch58x-^y;G%!e>r#gF#^l`#7a)oX0Lb|$JcaFt z@(83{zM_I@gWPfFLI7=UEoq^8b-`eE;YZuN@$5YOi`+q0$OuOMQ&I8IA@0IqCjC)9 zad#%)dET;eJ_T9Px-x|K2p1Mv%*=-FXj_8DhJJG>j{`2o>n<9{DBu=>uup8fLZH>8IoU*cYuSD=1>a)u{yJmk3quQq zYpd6YLmqOPvI`{0iog1l%BoZhu;%^QuG+~i<7g_GJ}eYFDqpHDO`I$b@Gad~E12wbJX0-WK^R?r~a@XJtCzotT- ztZv#imyiuY#8x~&miMQqY80coN*E7PQ%USwH8GjXHCf$!R1PN36=thfTd%(p$=lD# z@50DOw<~eWDesLbQNM4*v#Z}Q#QVBlqFPhEY?r%@cxVXsDNoWc=MILwtStp&R^+dj zqV_z`A}Vabb)ysc21j@*?sL)S5a0RR;Mk%a-eh}21SM~@6%ej_Ulg0rX0>1TzG5| zg1ZHx0;s(2emc)HHfo6Msv+R%HdoGzFY0lw$)(IKXEH1?X>EEnRWx;vtG3=9V4AJr zmv_V6teIUpvQ}PM-3XY+t=-1njx8EFu9HO^6{%PE+}if^`4l6NdZZ2OLLRD#U)Rzb z^}J;7f1rUN*I*OJRZdOe20;3pH!@xw_mCcyrq^`acIWkG!^Bj2*?KC}U-uWr_UQIh zH5_(JfP2IrYTp})K0*3O*2|hz`bT^|v4TGq#g(;Tmht9vwdCfu`!rgRRo(QoF;4=k z4*PLl4}{weyz?u_#vCR$?p>HFBC`V;8Fe9Q`?g?%2Z#Bj-+QVysvwSy77@ZHm(F3{l6xQfD3$@+XaaP4vhO!iQ%&_9BrD44UxaPHLdj!jN#_sClL@ zjY)AgU_c#swmcGWiaXDT72?#3WQI5|j$`j~k?z8NsO^m_fW%gGDPy$%$@Qi|7oh2u zoGQZSfV3yqIER7SoyXo`;c0GGxUY9F9+ts;3i!zLS}|M8{`Bkm6|mc(Pxuy~ALZTp z<&DL5$xb(E-ovnRh~MN5EsBo(6s|`S%a^iyxvpH4VxP;t-qp+6ul+c2>etVW)NQme zFn8QvEQSYL%Q?d6Zq3Vu88;APW{h({q*7Wj9wuqnr}%n`9M~YW#xt%IQ{%xU2NN?- z@TmZ@!D@;U@r|xi;g;370!@k$&d0$Sk6(;l)8`LR9>z18$1oHxwr8H6#g@S(^9sC zs_>0*vSL*3A{;9UN_kVj+x+aehmpxmV-9)a&K#dtivWP{V{{r=8ritM=eQ>CFk%cL zj=kgTr{hVR&D?fV81LqJa&lu~pnUtfl!1xo?*bXNeKrMnI}6@IYT$#Tn5Pg0m72@i&$(W ztdnJ;8wIC!9qip-NbKN{H}#a=ZMFA+#q)LLnf|@pHPR6HCuJ1a1ZaUYuX$$a4@Dzl z`;$9mFRJuH2ImMj0yY6%?=G#c06KJ_o(}B%nNW+z>)XT>p!wR^o3~os%46Tp3m#IB zf%iQ2i`(VmiLf2^vccgN33B-y$UcyT$gvC{!ujO4SZ{f1H4NQ%zkQLYav|OsR-hi7cC^xFG+sS6u zSJKLHc$<~f?6du0D;N4^x`T8~YA*xOH2d{&?NTMXDlSGgaq*JLD7A^)v_e@Y>f` zVk|7g9ib*}Q}sU2-1^Z~2K&}v1Wn)2q<5=Ldic&ySbV?F$Cl9K{cy#YpbFfdww^83!?h;sndK31D4uwoncFd38{oaJLHaIOjVeER8%Jn`f88NpT_!A2D> zS@%7ncfHFIGANbpfCL!i9^L0ylJs4lx!+E&The;nja|?a`gZ}f=~D-G2D8aLec~Ke z&H7&Nv|xT|gYggYf;^YAgM~hj(Qy%a0(_Ue=*hT&OazPfTL#SPcHabV$^hI7$t%U- zYCb%^l-U0J27(-avK3HO=Z|hGS>S?`(Mr{gMp92Q_d ze7%lT?zyW!A(^}csr9&!VKX6BE5zn!*Y9D|UZdiDuUNZ06@Dn68&oDAL8xw+KlNIy z-F-|v$*8M|QQN4&{-w^oM_r66Vfw4jr$$S>vxb_~)}AQ32dQa&FeiANCmGwz4f}aF z3t^Ztb#ol<V>s?*@`t(@Z{HJJy z=|BC)&d=Ae-*M%fPuf+@YEUKp31w03}&Y(m;)o3(8H%B(TFW!(m-m$aVm^c z;W8OaE-_0PKboH~SzJl~cmpzl!V@<o*u7Bz zv*y3Km1CPP>(%H1^6CQQG1NgmLw-%!(1Hrd`+m>1SkJK9~wS?1?P zAgK9cY;gvw=IK6xT5WiyqO5bXETep4C5>-g!^fBZ^;0-19tp|16r5Vl)TVrw%{o#` z7RzZR*(%?fC`FEdTErUpg)#%4LI?}~=de&U=qM%SpDwgeJbEN8#OKeRVi#Rs=gJ;V4{;y1<};EesV#S0Tc-a)T7YTMA>`&VSFmajUlzK}Cj-(jlE0(M< zxfyt4u?6q%8+tl2vUvqQNUT&n4V8W{K&YwINXb-AGSvj6BP2&hG#{-fXO5pC)ZVwNGct90}*y7cDb;s$fiN5efdNg2^L`gNbOC4dnT)8(+ z9?^SlYFGtgVeLpAz2Nl!I+74@33Tj78IMTW6}HxfJVT@uQpN1!pV0&UKVGD{&akso zRD(s-Ug1AfC26&>(`<;a;!VSj6O4XptmnOIvXn^7{`wres%K^uq&7`)*AHvw2whJ! z3Nee!ZDReZLz$s-83r;*p$dV95>@>pu=N(_@kgy*5g39Z9w_KAUo#MrJjq51;43i( zTVR!sK4V{Ktd>w^+Gv;{MZ}{v&w5wQM9-yCYBXCVd69)gljJgH$`ZbGQxpIr3La^= zG+qS~Kx}+Clu5oi^=@qrOO>TkpP&l!uO>Xiu}<>BW{kvHi4Fp?pcms^PeQV4E7V=C z(HphXZR^%)@LaBakM>c&sV4CaVMzIV%^{}A!9*r_I+fsyk5QiMb3tP_O42VTCCIvw z?okf|uMXy;S-4Agl&-0@b88@{-TGq!D@{oe_6SQxQG-ccqUKxYvHw^Si7@0S9Y({F z2|uoN<-i&;KO{^2IZE=xl98uo89jbT!FiSJ(FdW{c=EAvXo?#DAo|kz zS>Dk#qsMs9%0m{7Gzve~RO@?5d#liut=oPHZi(_XYSvwdY9&uHp5`FY!0ITYd$4{G zWVokYA6+m<6CFQep!x|0!ix==DO3i4+R)KYd*3m6orR<1k>nEVR+6j^2BR>yk(on{-m(2&n+rmBFG3Ty zkx6S07dx#E*MHoMlCyb9z7A2779v(AUSG%>bFbj5NXksvN^r20ik8S`upB0JUlxUumK-K%p{+|d;`W@A^ut9!Z6(X%6Wb>GvgcURoW z_shnXdgSlEn?9$&-y7c$R`&hK63&QF;>~TKVkZc#z&TQI^E+;o_eg1rbBx~R58}_> zV{57|30|8!)IgtcpBa~wtj(XyiawLoZ(K7vHg~zAe5TW;T(iGy?g@VOnRQcf%m2N( zFA4O8_l>y~6MsEWRP@0{m-{{2=g3YSqWm^@C4NhN%0Kh^?6-B(Z`$+g>#rc7|2FG}*C6rMd6eQ~ zJMPTlJLautNTUBwK^5-_y{*fv&yVRWg+8-hTUUkF@I7fs--WFHs}jM0Bb`sagQW#G zjZpz7U(S5jzHHrgREnIseDd4+jW9Wit2}NBko5mS{OO=uFz_JWI-@$K)g_rm9@?EZIOzCHc^ z%=hQwQ_$1zPhAhcKOqqgAjfkcF$@6Y22hvS0NMlS?gPLR7WD7|jIseR1sz7~0M^m~ z_9iLT&jDQ2L5LhaF5w_P-ynfD1Yd6Oh2maafkbG&75^I3s z=O8ue(C@238ipY{tWUIjLk!wO2eLzq?nBHJ{Y>FQtYt&1X+vxyLmU)+>`Oy0uZJdg zhPViac{qBx8HQiU4fnhn=Cd3|2)yaxcOMo?AFdA@7H%CDweJ=g85aLJT(~$afjS}; z-z7;nBEvV5N+rD;qGL8?V|G|D+txArrLiAFV-DA2PQ4sfWjqgn&#ru*Wsb+( zv_E_F*0@`K_6q-;?E2Ze?6Yrgl~3zu|0PAbq0a%=pMxHA0#V097?g7G#zW=C!|hYU zw8taemD~tEv%8H&m5s-aupuH_$K#jA730P==szc*P9&qU#1l@W)+wd(O{8lprE5=Q zQYdA*Pe7Lxq3IJj@rpUE6M5Q-c}o)oj|v6X6Gg2GMTCs`SYkWBHoa$vRZ|x~0j6X}N~$Nm#fXjPMx_t}GR@q_f)qc`G5t+OYn z;wMY9XVYS5*R$v8V&{Z&mv6)_`R1r2;tMgmVjmg4%Y|tfXUf~-c zGmeM7*8uuJ;O^cjVL7y+Rj58NT3T6_FldN<5fC{;10#P9Oxby7pX6Q?QO>Io0s>&D zMiG)W0VtzU>w&7lNa&37p)|-&P&n}^2WEz5z%U#h4UFW4zxb=+Qv@XD$q8cv5%fji z7-@!j!$A@AB>D4<{~JYDg;FwsWJdCqk$+J}N05&{ zn*7}&o&mDd9h&2Iq>B)`4og_j>OA`>4}LMX@Ai^fM)GV4F!W$atsbaMlf(8miidwm zM||nwaU4k$i1UKum9r*BInZxg+rb$`b)%^o5Q&`v^z+sXHN{i<6NOz23~A;HQPR@& zSaFrr4rS3H4dwJAS+bx6aV#&{J4b0p%)`fl81#67W-CqsD{g2VHk8r&8O0nhU7Z)p zCX{&CcREg#D_uoE3!0n{ZF;=&UxJneJf2DEv}AbWAa72PL%yElsUA2V(|ddgk5(@n zZ50t)E)bHhi_5O(_CiPKM#pq_HEo;=T*YO!svp$0njRn!G6NK(Ap=K8IF_#x#jK(g zac5&2gwbe}Xd)Z;>1LoA+PW{tP;e*xrA>3tN0!GZMOzS{)b@!6nj|k&fS0YX*K1V; zLY6s8ipkh#*6cmjD9RTq9Slmck(2)#*6A1-P^>$WbDz=WU_h3#UqlPm8*nGM67@+KGm*OQHNwhsF_2$Zrr#`&vpx*>c>ElZyIYBp<>o*{bIjWS)MwCn5pgIKJ z1kzB+#tP%sTY}Z93|jCVz^vS;qFm4P!`7UtP6&$;ep7IK_17QETiOJxK}uwH2@!>i z(e9vkxgYdvIio*H@h&qioqBw`@q4$r93JKxtRl5QoB(_`s?#&`)mQ#oND=Ta9Uk;= z(f5FFfd1Aq51>ou2A*w*lJ}C!cI3Mvw3j{F`{Lgk>!YMs_0srFQPItGyv;$`5 z|FT76N`z7eY)$Zkh8a`P$4M@*zmpM}VMw>$zTx(T0xk5lOL#znH<~YOzaw6NZ1lgK zw0&nJYCU@a@-hWlfI_HWF0duQA&iZ=9%h=)Bh+Lh1#dlis~19-e!RQ9= z0gBn_JTa{~V#XkFd;9BAJtxzS*h>ov1-?Ig+>iEQe=W5Uc@f^xCK3Ga^ZLFJt!-9l zy%UeLWN|Z3-(K2BSp%VMTa?2c6L5SxfuRFiN<_PNI~HSp%bE(iynH*_Rv(6Qf9ghl zF!kHjuh^Y>w`(}I+m*X(ytk{fv1@{E_4d!MDU;P5=k7NBy1DLN1Nq(u&pp%LUF%G% zs*iiN?R%`XdmmSTW-1o}d-;Le( zX}3myz3;bT9sdjtyS1J;+7BW+7y}=K2-q~S9fau~G^iXzcpk(}??+|YAYgF^G3^Jh z>JQ>p4m>^{B-|cMOdTW<9lB#5rU=;DA0MRY9@42CW_TXr*&SwO+QMQEv)d2rs}FNm zZ1X1$^KWfu*bfVd>h>eTH%GNAc2c!R z^|yAUQ%8+NAN?_pn*@$Yj*nWNj#_n(>#dI4`;R&zkE=6}y8@58+mFk~j(a7J`u2{C zZ;wAc9S#tkVWUB4w?Wk%Kyj&k84?-~uaJQ^7R4jBSa=}oD_TU+J4?4Y)^fEdez0u(MI7Q}Y zc!wNG3Gz#JQ;XJQ$Z{vo(m+x~$9Q*Z733M!rlZz)9#V8`H+S=~gCl(PCNw%K9O=TW zGd$VUM32i$NpIc#le_i4o8gxWFLfuMj$4a@PnIhU2>Z&*(Cwu_4Rpp}WCCcY0qlz+ zvlr2Yw^==d71y0dk|y}ZO{&8~+S=Q+VNb)u2*>O`XnQGBaDTPk=b_?v-o8)f)_noc z7y5Kx#O#|x^-!Ydn*d(m3X(!+D}PW&l?gZ_{+ij9GMDg+_&wl$?$N1QN9~Nix7`JnHowkoqnFtb-o19ip`D zEY|R7eY)jt`lt`PqV|pq>Wm!ML^)jl1rj8PhrmsvZcIBuWc3-#Gc@+@98aS{I25Dl zwnN`4ojY_;8BaVlj)#e}pu|TZ4>zz{D@*4$f&uqVbuv>TE9P z#^T8YT~7`!=*N@k6jM2DFBvA&+4P$24=)*~p}f`$b+%Vbvw0$3mnVl;%1R3?un3s7S=!(^@nmZXpSR#O&v2t=;)cEYh_D*02i(vmWJ$L;luU4YmV# ziDKGIhX=l+r5e2!$I}P?lhtPH#Rkqx+r>?Fhq$e7baX6yP$ilda}t$!3te-uXxs^P zpJ&phg45LJ7O^>jU?G|iG%|0RPz*K@jbj&2+eWA`-j~pqAe|5BveA9PZ+va4Ul7xOMbAz$uWq65xVQfkSJrVU<@ebg*tLn4Un~+Tt zA!s+cIBDtOv%)cej48%Fh(_+uJ%r(QUFWETJ^eud-bLSluQIK~X)y+svKWo&E4PaA zsE<9%O`&~Die+pZ8b*n@xE-%75bvgE#*%k-QNiQLsVy85|MU0?E{!S9H!rU^>il+| z7qdwer`{q8m+9P8`P2FyN+aH=lFZlYXRlv2=~wwoRq_5i(+s{=p>&IB@}WE;@q1&} zcI@}tC@+c?j{5|^1^oFdxE(?qcm3=IKPhj4)2gvQt6ab--eN}K6t3{UuSf&)W1{9Y zajV(7wu|E=L=MYy14WLc@cPpis(YS9PMW49L{Hl`Oc=HFnjP;>`~EzMo)2P5id`f$ zBr^UQW&b30H6w};yPp5%-urgqb&&Y&+Q(1gzrPl$1sre1NlM)B<_1YTXoflkJe>9* zBpxrOBoXSzUTTt0i2LJDl8C=^PLkS>%mc{yuwZnt?PDYmw}*2n8IC^E_QTGpr$F&vzMMqRZvl^iznWNVTI}*`dJ#kIXO~W zpC*Asj^*eqX&7uNgTp$Ztks;Fs$xm~eZ1d7S}P^-UQK8DRoL%(p3t!<{6P^vgZ!JQ>hAB<;FcvUmMud1#2 zqHjrFkZmC)wbheSbxDzH4W8QETK*DyQyDK~K`G+8T%eCtEr@7Qc7{-ke}+{fj7{4` zVI=MP(Rz3&W-hd(N{7_6_WsLm3iwFSSA$!vj9DcPWLq8OZExbB zRXGy0MzjKd<8VRJr_jL?>?)s`}J@8~v|pzsW9mN#Ad!ogxxStR3idkepLs9#Y*poU^j+0E4Se_e_Vn}{{(yZRLhxvc z!X-3B&|eqEY)>`dJtl5gWfAd~Vhu}DU*8|8KzA@0Jx|(oRQBabTrE14IgREb1O=D+ zT#6+3idgf+1)F->>@D8_&a8aHl}VZy|1F*L<95}kN^z2jE1HcMC4o`A zP@v$x8+`TTf}Lo9g)XG8VDR)^z#$`+>P9~t8wZ&JE8vX#BljR73lIIP&OkgSm@Hm8 zgg*lfVJ|H;o9!G79F|m|TD${d6S}(R5&ykhLA0)F$`;mIeqet$p{qZpmDy4zFSnD5 z`7U*q#PDwWc~TeEur7mg2mo4?a=jI|`d;3Ahs2q@k0l^Qy~X5spvW|@cif(89(U`jrGtdJdHu(rHO)f$s4Dm$ovFhrK1$qMTu+AN}hmY9t%g7 z3%-yRVWE?ul#GRIk7r>`$gCogK8i#21poqyeLMf-|@)MkI@j{<0wMU2M2PL z3a&rQHpauTOuiQ{Z`(@6X9Z8-#A0N-Z%gJW=MWC%fQpS#Rf-;ms?(Kz(b9H}5BID} z5tzzw)*;uR(k%D@-8D>h&1h+UWE15mRM<}f*upD=W1;aX$8BactMZAhQil3CG8D8p zh9xqs#qew-YN^o%!bmau{J=K_4}Z;Q3QF>@&28VjZZm$}Za-!2joBGa=j{K6q9FP> zMxIPaPDnpgyqBs*8%UuAs!rc_egs4az5mRJO5Ln{Q%uLVkj<8gKB9y*noc#gih1aR zWehbNuc8*$ro=jzqPq*h^`>A#DgF{155Gr3-wvTH3KonkL0UjqP-mKBDU?dMuJI+J zFA8BVDPb@B8;cvyNLtRUn40ox6^Pe;T_Z%M2&eK7#~Lp){qjh6u4-HP$Oo;YY?5Yg{nta~Cf(XGyZRDp8HQ?5`TJ!PA|?e} zl2Cs}brz_Z0FyB7UI@#c8h3?-u9deA2|rpzHe==sg9>X21hLf_lp2Fc32)E3U{6@O zB1EY|O@qm8w+GoJ9PPeUi z_wua`9kV+)%@rNwf|F^h!0hR|=tiXze!pO)rEhIj={>gR`S8{YWyuT2$|sT8FL1$~ z7vv@o=hDs`U^4Ibr0B6S;=jTiL^U7qpcuF?5_roTvJMZrRScdT2_|9*%YlbnDuzyu zgbJ`k=)%L!6vM|x!gX1qsNfNo3Xwx2k)A9uV0hHJLUjK~bS6vO(Ok@mLTvX)Y&%QB zLVWv3{0d7_`&`1TLZZZq$1O{W7CdQEA-MrDl1Rjw<~x@%rjS}Qk}ANOVKtXF zq>x@QlCH~|B{P@NuaHT#nC!`#y)c*6tpF_;$;@QU#hJ@)SIEg3$!TZJf0)f}R>;d7 z$y;G9T$s&oP$)8JQ7B3rDI#JkJ(~BeSoLAjaWh;j6{smUnJcbPD2W{@ zF{!D1QmrT%tB91V46La>QmtY#_2+$ET~JdCR;|eys|uB??XRi7eN&e?Ru?E&zg5#n z_NF0qtie~V@u{W>{S7Q}4CX1f%$7al8prHe9ql2<+!F`YJqH}efeeFlo~oXR zlyl)_Jw7YvqJ#sEFz1q*16Y}J*@P3rfOEz16xEjVOP~X?59ey410tGpt$_0h%DLXa z`B=rd(a-tN$+N?{`!FP`AOvJj&mF5FcdD~rHk^V=fE|H` zoh?Ga_~BU^M>WIKADMt%%a^;Wgt#t<;h$P(5-JXWuCP5jM>YAg{m_?uD)oG(j)#tp zY6)Tcp?OD!yM1(Ve7!GEP%`++98b~dj*l9^mkqz3UJ{`sHO_w{N4Kxl@zPuVYuPt5hfCP^X7(EuIml#~NuK zcq3WWpyW2!-={Et!Z7ZUu=Ck6MUBSc=0>b;r^6L3j!iB=EiwW3xg__X?Dnr+B-nK< zDl$P4a!2DmKIQ|HGyACQUxD+#65MF7VY1s!0{YH(=I3{g=U-@_;U}r0+%WEBZm=Y` zT-6{L$gOPYtTe>EI^n$6ohlxWa0cXZqp5StT%V&wp+bi9AVySpzZ_Yr2T_huFhpU1 zS0ThfO*m=JMDzg6Pfm(*O)u0g7IZGoLsP}mxk zWx)~`3Pn6>HBCcJO-OGS$p2hm^SRRR^H6PEP>42DBN}mW&oRke$7wGcSW)PIyD)rl zVF3;>{N^DcmKBpS#l&@G`p7%#;yUAbK`hEkx#7Z4D=j3%%@}rpsA(o`xqRqu9v^gN zJPdtFD9b?zpq}F4+9cvy*L#Vx~lMMtpZU=$WSyvL!!cf24AR9avi_b+muw^}@6 z+#*RxRJeoK@lr^gEmWTnZj`msVs~L;+rO}voEUbR=$tPkJI~nO%Lyf2k$IiN{Liu8 zri$9QNcvquPzPjj2SFrKNF)Q;Bm;7YFuJ7{$q^LR4OxNJVQegExms!2T4X6ivs4GK zG=Z_OI=*Z!A3-voT!))PZHSnWyX0M%hm45Rn0E5NPuV2L@5ummyD)Pxqxl6VTGg`~N74;bHYh|Ep z(_}}{wP=$Av`I>#$py7ZdJkj2p;XV}S5D*8rRFDaM;5B%7iwuW`a^E~yN)jTnpCM3 zSzAEC51`H-s&0X37f%YdvKCPI2GG+JFiX1@V!2fTx>@w_X}^!vHo9PtZkgQYCDf23=pz-7slND=spO!^CmWJ zMV1PoJ4f)nxAs>5=uRw_DCRyWCn-!AADk5D%|Fm7SJoK|$a6=?dZ~vec%gdu2`BmG z(&b5~%OVpJ2ItfYrULn84u*EThm+Z5h^xAC=6+{ybY#e)W?FYybhMZC-e!rSG9C!k z#|taK0E{g7p^Hg$MfV`Nt{n0K$BwRC$&pt-rHFgG@`(rh6-5ZSe`}TAx&68Caqyvg zb5!IeR}&|U2p6nU?9OlLDwhm@iG@sq2osE#LM92$`RrTuOSmwrySj1Xf3bI$F_Cp| zyWnw`!rk4Wad(HtwSh(&m&TpO-QA^dcXxMpmj)Vl8iyL5|MQ;nCNrOAlF3YR&iATh zr&4=oU-w$;`lYb6S42Y9%MX@M%oL1x*5H7JeB)E%AFP5^X4CVl+2GBQZZFN{DXVa; zTOlZ~;LA6Ws9=9>Yf*A{62qAV@nRl;WiUVpDtk4F2QeS`fsekXi;LpC^>wh+)KW;~ z#`3p8dKSX*#jyuI}U?8SygyihPjP(}m0XxhY`!QnB%;Ll&74|<`U z{f9QhaNGxa`6c=YygQS<>O&>kx!>ALlmy;Bf2q#cRBsdu&k_D0zCsU3Oc6-Kw;3&O zoIG#tmN(%}fyrFHe({KYHK;+7CmB7T=*QUUD{ma_0Pv)@?z8^*Z!cexyhlUdW~})E z-hvp~VmKV{rAknX(p_~*?*;1b5{ur0JKmDlg3EWY%$=|ECY>`lB6O=A%we4wI6jc) z9b*K39p40KMg?0J1nV|Hf~`ayG_nFx7Vp5bAoe(a_R@}>vuMsjAs#=-jF#@1R0wm} zCO&&HaJ^oXr?;6q{tVaw_R0@-nd*g=u0NTXlNGNrU?0m$gKXOV?6_z_frH1X-BY>0 zc2*&24!{6l{+(C77gu1I_5sZH{lZ|PkV(FfX>S+b{qPKZAB4s6eA%VpK-ZB3pLJp~ ze!t}Ch41)%3!I=tcqsPIzl#Qfj;RD%vn ze92ZC6OYO-ZYpt5^eIZyCa|SwIp|iyrUZa&=bw88k2Ey-*$Xk%H5Sq?de-4;v zW{sJ+JC%wA1itobbf%F>r;}J>;-=qHnxZp&iwHWoS<~z1^9jM8OmnteC{ZcV?8+x!DBvm-~m(T0tO(JKe*TvwEP<8P8%OgWi6Usi`WBs-{zLlSfh-D?uzth)X_-{G76 zAxCt2>0wGu5aCs>?ps_)6as(NnQ&Q3+3=|8ADJ&>X~c;61+0$lVq?5=y!9E={?Q-u)s=VbeN4At_1=;}9lj;x|}*u4jqXspnQ z76W3Qta$O&*ko@bQo_R(rV@R}D%E+Eq{*-t45K_D#CD@R_i4Jv@v!QMZVJYOzPg|F zP`o<=R@k(Rvgi>s0dN5!tj<#!V={kgL&U*D*S~aW$17^CnWoz=ubBg*Q|dU^eoQc0 zvPY=Ngg%rn^zIYS-{obBMAt3_*a)Bju_-7kH4dHRp|8dLXYU?rVdig@P?U^eZm^u>8OL5RZ?cEmW z3L>Tf4m!BPv}Jo0mmKF&v~c&sF(|E{W^sgiO1Q>Db`c)KUGo31@AZKB_#V}n@bQvb zXO{JMM6F|W{py|{93{>VnqwCn?I~yXuerMegFygPY9~;l)?LGsX!oWjk7C6Ds--SoG>(uIzc7zetnDJXmqW`<|rCa8MnPy zFgkb_PU9;p=0Fj2R7kPY4!WoszrbaDtk3;E3Ajf+b#s}&edKSyYFtbNO|(e24A8nr z*27TH4?s|?n#^Maj2Ntum^bh>X@QHoEMrN`XSku@2Ev0FtT-XL%K4DN2v7b537zQ^ zj3*-!8`9F5`z8i&*qd}KAGBFU!@IV}j2BL$BPS7ds`G~(h^J`zH8Dd1SkyHBgaiQQuol-mJ|FjIi=Q(qJkyb41vFDu;_r(~GF$I_zss_}MFxxt&6 zpw{%cA245wwh8H!3DsjvCJ}K_te|-o$q)<=2JzU3!uhlMkb_%CqY!vQI6&unZJIIz zc$c-ZO2MAv(fEbwBi<((br~8}c1?m*Q`9%g2(uCp!Fg(j<>G{mvy|>J=+?>E9D0kh z%A@veQGZ>*R{VS zpN=j018J4^(Qd%+C{1;(Hn?|bD{<#ApSptTU`G|E)Af*ya|pG2QhM$LLuiykoPunp zkid2Om9{Ufq>xhA(GFQAL@la)hEoaRl#?hA;K4*F#mtjD8>?xq-0%up2W&BD2ns>u z@cA-U=!EBa1rIA-fZrjJx@<8RbW6ld*WgsknPKj=`Qseb4$^Lf=DaiM(~#$NkXvu4 zZeW2}(*VcYdPFo=8F!pXwh9Lm`q;&kHn>#!MbA&$gh-OMnhx8_!VL;ZdgFI9ZZ<15 zLYF4a+T+MTuv4~5wv|RryNMguj~uE+1UX9M<)&g6@-M#)wLv5;SXBT=CS5ib^Ycm6 zD%MbbiM>z>uz^0Z?O+ntJ%Y8DJzRgeAQBWZWQ+^-{@z+?2I_GerDVRk60^T;bJ=z- zv13a#RNU%89>+u^Yb?Q5qrNQUSD~x!Tkj8#J>Wv}e>5v{leb)Y%fz(2D0Frt_qhAX zh#kU}HW@BLe)rLBV^)Ny(WA~hjffIE#-EiiPPtqL>xjj$N+1-3ICj3)p z^tk~w$0>V7=g&vs^R$+eQyyyev1F{x404WRL5I|_yxYqHuv)25{P9R7RDPi<$EE6L zcCs2s+c{e(Mi`QrQTym+Z7#=^+;hvsu*M^_sut06gBH|zA%82%dQUoIs+fb#*0Byw z;@-Ctb3x?9KWWO3V%Z2@=6&@ld7u*6Md4xlhxqM~E!U$3E5{_%*W>q;sI7%tIr0c? zm!NArT!2Lw!Q~T1P^luSp|V(kXnWkza2?%n<~C~5E?TfInYKzRWYdq`i&#*#$01AZ z^XTulVS%gLLH@v-SuR)}+#LkXq`9 zXS`1D4en4K;aVM$(IsIj6;ZeY(N-Pt1>63vicYKOWH~e5gug`84KcJM>5jv$+;HKh z8KG_sNxTDzQ5-4R7jhbAl4NMYhj=od8xrsYdCGbULDk>1sydje_%ijBit|K7Ur2== zsdR2P#pUzUr2~?smWY3qxByL)Sc2psIWKDZ^Mj;}rTq^DX0&Bh%V#<$OKU z-WTRW^xSPn=8IeAoB8C^FD%dXETH%Ku!ma~XeU;9b~lIyRy1}ttOXMkCpMxxHZpb{ zeD*JN4PThcpvk$7$q5r_0V| z*}!GnKyG%&<>JKc!p`k+$L+7i>BG(w-oV4@#1qZVo2tHN`Ht)*uM&D7a>Vtx5`h+#qzZAf#%D zeJ)D1)gb(?X1D9aXVxbK&jJ2ng8g(SjO8qf$Iggn!MJB8gxDwqqJVx#q`>14=TtX= zNa8*>5~EXBM0XaKZIsw46bE@gN}MdnOD#(1-%AcaN!p4_B0J0IVoEu1NS}#ISqDn# zV2ZnN$OI<|xhHXXFG~44%OpF?mK4aC@5_MprP7_{$}l;z)VcCFgbN$x+8X6Ye#@Cq z$lsXAcQq`Y$b`y(R*INAtu-5{VWmS#IMSF3%Gj=@K`#@)c4r5x1@sFL-RX z6E(NcWFc;DQw%Vi^FAZg00<#c$h=)#n?3h6EgO)Lhjgj|*>8_Cx4@peUsx2r$N^{v zd&Hfj7NE697c?C2Lw`36Qbe8>iv>4yRB{YmQFu)eSP>DhfId7CZtTre!#$ip60tzu z*08#Tz&!{PEFB{$ zQxlvr4@T1vzVt8ZfxlihXV`v=!4XajXPe-mJ0mMLQVN;ZeiLfQWB432mVK&j?j8xu zvf~7}=1GGQ@_pL}88nrjE)n;S4l+lL~h=+v4+GUh#-%F=wRM-FEtl|Q1da_4`Nn+XnM259^Mwv%uaALZ3xQjSUrlojhTU(a&LPnohR&YMl$LD`3AZv;@ zCw3uI>8stM4y{ce!6Y!d1tRD0IhO(>yXSXKAOtRTdP+fmF1RN!Juyf8&IAsh7U?D1 zKOM;Q!U?_3K#osa>7TFom@nF%L4=e;*+ICUC$ zUmJK=8$`Vtfm)5SuZ^k8jVfMER~k(^uTA1hO-5eLSQ^ciug!Oh%?@5ITk0(yuPu*U zwf?*A9N|jy|u> z@b!+d*G}L<=bTqpqFUG5YnT5**Pd7RPqpro*KVVQ?i;TjHMO4S*B;4*9&qno7PVgZ zw_dV^UNrAM47I+`I}m!IkIcLOPPL!zt$$9plg)d8YN?<1ZD3-4K-7B>)S@;Z`!?vX zG^pY|r1r=TA5*9!FdV2p$e9mo^ET`tFyi7p;?X(c^EUD+76f~bhIfuezm3KVj3s-I zrFV{Hzl{L}#*4hi%R0xa-p1<$CYrn_+Bzq?-X{74CWpKy$2upc-X`Y+rk1>?7CPN5 z1SnPorVqWRPdcYB-llH^X8wB5Ja^8#zs-OP&O-al!gtLg6HRUD4gDM$Htn1fkC^i~ znqq^PC+eEN3!it9o@aqrVCq_^2w!lJUSNV)6zp2e4PU&FT4aD&QtVpN4_`WwTB3tk z*6&&dg)M`t&t1T**mkX?hOO*LEz>}(`gE;EhOKfdt(?KEMR%=%5X06arB)nVpyWTg^!ZrxhH-i&4Q@1wf1h-*jw!SH@orG*3 z3hoHP?8uI9ABF6Y^y3c2n>LtJyBT>l1gexRM@P{g8AY$%=HOzyT z1Lrj)xxFC1LJfG76nX<05qksSQiPF*?f!u0uhNlloWJuw)sR%dz@UA#{$vL`%`^>H z{SuM)gm9ydiK3+CrMNt=z16KW51_xq!hsaMKx7J=__#E`);7#wVPaL0L5Cd&kWz^{ z$PWFib5NPi@zm25eG1)geG zxxVmGe9k?WNYyKO!eS0vXv0*9bz5AQ;8PA~^27=7BmEVq6*Emh4pngCa;p%bPNN?XtN!(wG*ouc=1#JEW0Ne}8K*#S?TJ zHe83a3}P`GT!^7&`>{VQJZy12DZKJ@4GQ8j*`t6V(ZCxBR9#sm4K*F_H5?bdpM;fA z%4Jg1(WT^Y&PAjB)i8_#_Z-ki+&bu_B>##>A*L-tfD4iJtN zaERmKYBUNLe5`F;GAZ{z_e4G^d=MtO zl;tuUNJfLMYB4No@^CmKZ02&1NKJE$j+%kpzWhD=L9gM!>fYiRir*yVWG=74of1X* zeiQakqSep?AZr}AH^}ZS_Cr}H;>)Q;l4bQ;t|}OUOrAen#1IWi`)Z;RCGU8 zAO)jp5<9h5qNb-o)3QONZS%U_1jx2!`xl~J>+cwOySC+GbG!D6cp8I_gEGV#?c+Z% z2{Q1+Ni*csYx^p`3|KsnJ)lK)S)VsdV{s#d`qX74y}n-A7?Y(28Qe#R7t}mt&dIOC zSP%Ewff&E(N~vY$#b?CjicAN}Dtt6c!f+7=O5plAoKcX9;+pbCi9zwZ9IR07_!ANg zN$KKD$G__^;o>RiW6j7ZIm>g063TT1Zt%p}?ohF~W+l3u!OFM`0pIE7#l%KP-*@R_g*NtU__Mr(YNPVX8_#M8L_0bH?qGnkA2o;Gbf2v@)Ev!315Hc%~*{|guKXCV|GcP!&IOqmQBpt21J5JtSH zp_&DV22zfQ1ttB&#?cELvUm!#;Yol3rAhO_B*4UOj=(szY7H-oOnPNQYQmmKGk=Xk z!%eY)`4Sk;-#drI);h}hS6(?aOiGBLkcEshs(1>&A64_Ajx*`53me_`~j!{>;@G`vP8^9SveOF zUX)7jQH{hRgo2`Ny$fU_F;v%*ik#42^1l5!VQck?)=}tG!biGIFroy;RJ6e;%-2H( zS|E`jZxmqfgm>RAGEm45&2z{p(UQM%HnMwU|RYo2rr3B8YVKipV+ku+krt(cmzGO|B7U1HVD2HLKim- zn=Hw3TnE`ab|}ZWrSqcdr!V5>E&`4V9g&@_j2wR=J~#JJ^b|~Z`B1qHEjcE-(HKt= zfaYm5kq8714_hB!vE;~#P}e(5=1a{Mt264Sw2I3lqL$tT!mcaD9FYTTb{ZgJLiB26E-&L-k zV$YqDoj;_c<{gK{ekOu5ksFyBdB|w(F`;)^pX#%*$r20Qb~&G!W{P39BI6pQ?xB~> z3WI~On%cnR0T+>lxd;L8%m~vsguh;?g;_7*#~pYl%;QFit$M72lC{oZ( zCr5i9O2}KTY|GG(k=}xlo0V^x?U>K~#~J2SgL-iCfE2!q4UJ?{v=rTpQLIq~DzS0U zZ`~!7XYe}6%i$9BL3@NC1Gt2b=*oDfJ$VRRk_%gbuK_FbD=Yno6KZ40!h zWbE-9{n|wtMW+LnpHekm^%_QSK0borF#puJO(_&tJBl-!aW7Upgx~I%C-ZxM$atFM z9Espp{9K zt_}T7;td&f^tw%P4;p^2dpn?=A3@Kx zi7PgjS&9cYLk3%m0;q1+kzm$^p@q$(e#h)1|E?_e@%R(+do2 zY-m3Kn5@^(akV&l%{ILC%bT>{@{MIY(K!UgbX2gj?oCf zZUM6BcL?hfvL1BO=?55*z z;8Sp0X=KM}WY=+IkBsHkoYap|&wRI#O-E#bUGE-I)SY_*O9wTh9|nW4QA-xlD`C-V zrO_MOQYObzL%5zJrA&8dGy}kIU2Mo5uKcB{q@umiS8%a6w6S+Gv42+yw|R(n;XHp^ zFwwH3HUiWK;=^*`2!7I_97x6$6acc~NKXvET>Xeeql?FojsKkAc8A59w%WaEGr=4{ zrtBj7h7rvgLdqC^s~&Jm^AB7jO~5%xV1Z9$qf2B@SHUZbHFGDrNr)?uCT5aN6oyX{ zrArc*P1-b0tg?vW)k%^cOHw>ZQi4xbNoSHiNjw;iR}D|rDNFt~21?e4PgK|O)H+Ev zkxenROfe5nIfY3nq)D+nN%;w%>Ohz3^ekz;<|!we`q@hAHJ0jglDco4D*K!oD4P~+ znHCzJ){d68XF(Kwk`@b}9#5B^D4U*anVuS+o?e!oIhLM%lAa5n0i??)kj*Hv%qR)Z zC@agT7|WMb+vFU#IK$=-p_*`v$hq>CCzik_#G3eSyz|l*@y*0_DNtCqYEyA&%!EpXQ;C zM`gPFrLqJn$O~?cgP!s z4`0A(RlprlKvSO2J6<4oS|Gfh%a2efE>|dNRTxfJC|zDCKVGOPmm+&ws6t<)CRg+Y zzDOgYNTv2`|TW%2Z7i3pKVRyiDUW$EQ* znJ*>5<7J;Z8}PI+hrYbXs=UOrpfIAmV!XWS6j*)=DzBrjXz7fJBF_uvZ@@R&*_Y)oEWd1%19nRt(>E;T98Yem8)8bs9NKTT`sTsJTSe3 z59~+y`3s@?(5m_5T`fR-V0zd0_yXW9(^_^VJ-weA`tD5KXnpZxlr|}vPLM^x# z-v@myv~?{kA~RHEE#gEivOE#OSuGkv9R@!kK)wzqvJS68^;$0Kw!Dr6v7YQ(9pP&< zF+)8~WIbI+T?${pL3uq3VgtQ(9h-auXJj?Ibpvlj!)inW|5<}@WThZtqquxyD}AG6 zWTR|kxpYON;#p(Hc%u?SlbTnlihPq+WRsf}s7Ys{Nk6k#oetHAq1i;f+0?q(JhIuc zqS^XW20Uy2iP+-6(BdTD;$q$67TMxa(c(4H;&ayGi`eSV&>AS;8f@Jf8rd3N(Hc3? z8vSX*AhyLbv?a>7C0n+6&~{i>%vABHPO<+AAj7tIpbM z5IgD^IvV6VK4-8k1Z}yI9UT)LU1uFVh@E{5odfcnL)M)mk)2}|of8wCl@%RRh+T6G zT?_JEOV(X0kzH#QT^kc!TW4Jjubn##-TU(0ht}Okk=-X1-DeZs7iZl=1l?B*J$Ldw zf315SBYU1JdR`}b-ZMKW&q_ZSdLb1+z0fwjuu;A6mA#0Qy)gtm$Vh!?jC~jieONYq zI8l9gHtndDeMFxFYovZM#(oNgeyXT$LYscN%6^8)ex~z&7Nh~T&K6q60ZyBN&keS` zl>_{f14r@$f=Gj+jDz9|gOWCb(wnWqQG@c6gNo;aN=QR0HvMvpLmD{K7>PU|jYS%ZXB8GFON|;!uN=!n8cmrT%S9Ro zGL9Dz4&^9}mqd-1RgPCE^cPQp#%qu!>KG>)qIwSe;RnLtV=Pb`CnvhjCwh=3115=@ zSfiRmM*E^B$0{c$CMUb)i8ooJHti>;6sDGJrdFb+k~b2kMfj)lCOWdF_86!46{Zgv zTY_v*KMkfNd$=@Z#7$CELCfhog_*xLGmD#v&y_Q~-ZSs#Ga#hd{LUH3DI##&S=i`V zc>Pf*!C8chSybdXG{Iq{t{HUOIh^P@JjFrGs?SoOITGY~GW~wS>=|;~d79{Xy69d? zrWyK+c^2daw(M?3!Kp8{3*6BQyj7hXTSR;p3&O~YqD&nE`mX!#!Pe8f3*R8x z+n#7yg=xiJaoI(G#msi)o8XGi)QUsbis!|$>cxtc?P_Q=pN*oYo<5%L#j1JsO3=lU z8`D|>(@MaWYTy=nYSl{G1-?_)nkmt`$<%6??RrTzbA+I0hTyv2`;r~U8vWI@8wJ*7m;ORyWhm_15~f?at#n;VzNq zhV9yd{3Kl_0Ca<7kRJDBM}E9NkGbU`<452e#MeFjcYI`n-G?{bG*8tC<3(Be8z%hY;^ZFrOqc^AA@=GaDTDZ0#papJWRWMQtC48W2cbo)p=g zKHHv@RG(JFfYS1&Pis)l>`qSWzMeHrCpXxgwN;-fhM#p@p7j`1m7$yud_9M!KOc%Y zANv*GRee5nd9LqyKEr&mkW)SP^#%|;CVvqUK*6L#a^Xe{5cVjNk zrZ0($E-z57ZmOlOn6LiYT{-JsK2~47GE3c0Ux84rZ^S;Cc*N#fL}=e@7+<7z!fWKK z>#7B!k=atjpY^CeZ*aadqY2-{94B<#dsL8V;IiD3%M$}xqkw=JEEcmr_FmR1HluY~ zdn2~v%jhxp%2j>0B@TC&E!g8JciMG#F^$;#EF2|dcNDSrnJ<&!BK+Z`Q_N?kVi+)% z$B1>xAe8a=5M#+ZxEmjQxLelRI|1jv$qo`)EDs<=JI4&yKM%A4FEtK=d2@1ReSBALwmvcC}-HU#&* zLv8>(4YNK@8iUU$Kf1BJ#AVFnlM?60&7Ays;Muuloqe7phineT0;r%c`aZ)My>4Hl z@3CSS_5PB5x&w#{65XK>&EB&7L@K#?QC@r&LxmiAKvus-A`!-B{4ThRD#>#7MD`PD zfa_&P>BVQ}ekUI8Pu$Bf_HFWwkJZd=oCy+*h{1jyDZmItTKy?2@0Dp5s?HF_9|mBw z3VOHJ3Jc^82sVtv<*9;B7ydIj=Sg-LfK?y)Ahv@wNjO$uSL2`ry7+yO?HRt zOJ`cOMnf@F-Him~U@BI~~szDU}#(y||pOHT_&+SXpB>-+Hu@76PF; zC~YxDkGZF;I*pBmgP%#90}B6$L2!2j(X9)aL=6JMvbSALP6+5W$Bw%pi&|l6XJO=G z3tX|&!wbT<&n)mUm?^Ks0pger66o?AHxig?>JF0F-<;?8Zj7_ehUyHAXJ{O3!h(y& zI-k$*a-^)mDIG$PuDhSEG2rS+r|xRV!5FeE`%~r}ShH!J!D}fPNbbk#XWcOdif6nF zWTUWy#wtrFEuB9hsr@9UuY6~XcV7kW7M*5%f7~Z3^>Cb*juLTCT6R59PRPo+7PmPx zK5`Y@=BD2}vqN$^6-Sk(p z=q(9Nt3dfqRxRe&j}rFCfF>}RXM+f2)$ybsp(?6O(HuQ%2yZ6^4)zN+DPH3$mJ4F^ za!sl^Uop7ZFpvi4WDGW39`)V#lidtF&ziV3^-YlAz{sAVp#Q(8&U``H))gWzkgbKL*+nsur!PioVRfr?CCwzGCBkRRT|N!8?*aCQ&E#tP%sAf^KIjcLvF+6B9t%C- zRK#HshSS)!TnMoO79metJ#a@Q6pg1!)n*RPmBh?fjAcP;1?|nY@kUqzC^w!JBI_kT z5lM*I9!-cI-bAknUw14yxx?gh4dRIS{f*iLiE&&GmyZ_*)Ic?d;{FiAr~N_(J-@8% zZ?0_%pt$Vx2%t~b8ic`wxWC_K{e_7Y)S-mfs5G z*<|s{Efw?gz(fi9c&req8EEHVc=XNMPs-Uv9mL=e89}?fV6?mar&S^UWPdG2N*p7&&<7USuY&R0S4gXLtMNcKrmQ~ z2mR&*j*KHgSl7eQ}1a{8>fLd{0Mdbt_2pZ$s zu!a}?f+#V7A*gkBDo6ak?k6Zs5Xpf+a#~nXd=BM2t9J{BzFq-P8-%;F`Py2Dw z%+Ci&T6WKeY39|>f3n;zpO5lFnO}|zQ|(?(N=vF=PAgk3U(RYrm|xEuSL|LdT92w< zFFPMEU$1&$S>CP(aelttjMCJ+-A?{%ps~E)FKYdK|GR2l^Zu~ucJ=;fLqppAc_2C| zTKG{rp;y?;fn`RJW$P|d@G&XZ58+ngZ^Ju0oQV=Qq>j{UJ&h1Mc&#^xHcv2(ty`P1 z)(hcW3KEp+2m3=@V^NJ1lGD8h5uFtrCCLzq!M*RRVQe6wx+uI7Pd9eEy*Hyb5NXA& z3vZe=gv$naub0+Kc+2W3biaop8fY;7zjTo5OI`Ru1u>>&nkcRA&j?O+ za+JVQL1w#|NPSE=^tvOAl=PdZbAF16Rq5f+rO)Uw#DAZ4|FQ04!HB>;ArT<{@5_o@ z>R^*O!Wv9KmC|H_Je88PpuE|)w1$ci86uIG+o{21S-JKOG#pxj0tMxyU* zj{lJriPzoFPrKV9K_p7uZ~7+-MJ^ShGo7!G*ZbDNRbOkDUOB5Lc4m5deA9}{oJ5#h z)*NF6;XX=s1CY4VR6ff^#6?(%XQ`rLFL+D$LI_=-X7o;LoxoVJUYvlxi2sol_lb6= z!Jz=ugUTOpa|jWPe@gdb+Sb$t!h+t#jf1D%{U~B(sLLoV?pxL3075(_N^sK5mY=fX z7wV~CO~S;(RKpOR)f8gdy`nUW;xg)Q_di>*+~JUI_hZX<>@hX<2D;`DuA&^XX|t z?J$V`tnz=zif7fG52t4}y)X>twS(B!=XImh73cMnTxaJEvr-Hfjf1&qUv)kGskrKXdpNu50fS|{?uEj!x$c9b zsl4t-;y%9~07x_53}R~8+zjEGSKbU0x}D#QkcKk;M^?NYqb;et9cOGgznx$mVZ58< zSh2aA;yJ3kn-+LHznc+(WxAi0z_GoblcA})pI6|%xL;6~X8OCRu4VgoN!z^Y@3NlT z#oraf(Ep!5Rdz#JKAsLze||h4m(+Z`oVQ$kyk3v6fZpy`euCbgj%q+3Z;w}?Pgge& z3|6KW0{_|%P9YBhXS5fF@7f;_l?O#5^RKKpnFqr?+K1wK9Y~4kytvAd1`Q0P)Lps0dO%02C@SNREFKCZmv#o;o^6&36;7 z9F>n*A~QshXG6KRN4fIA{H{3YWi%0i(4e`R!-tNkY0KB|E5NM__; zS+RiladbrJdu;5h z=WSvhQW34R?6_*iZBnU15xv&fxMurpa&45U+`5Fk&PQ-ct8*gL--HRSiv*UY`$Lw; zgb5=EjMU-J-m}Q`$!5m8^mZFF?L65DV{NqzOQ2b%F)+l=*okpHN}8>`EX2RmAO7&| zk7nZuiX*~67RWGwZ$(zoD{3JVBHo`Xq1GrH8_d<1$31#1Y)3j5uDVDZ(MpR!{4yKEcUW-LX(7dHr5gL7iqlRj#Taoj z8z19b^h_Bha5kr!E6{*@jC2ZT2k;}?G=u^dDHnk-1bEyh(M&i?i(mmm;!uF4l0^RC z5QcsPxFQwc$`S%l=#eE42SplH^cW%b8U-j#xFAD%HP9St12J?exCR4;RPS=7*#Pl} zVF37fIi}thQ8aNL#_!L3L1?A^%o^n9IvY@`%{jn2n9*~sE>RrGHxsDsxO08W@YUgZ zjRqLyAc5oCSTaWOMj4=uCD2c23WOclRI4wSDL1i9X5k9u_b$!mycfGk9Zal`E9Tg7 ztpO<_iWc`S?GRmch4rR*mL-i)Yq$_I@A!`5rv)q$BBwM()>^;2^`)8H?kBwE&S z0C_u@!6SKNQx+}+&G|-BoogSqzRV@GWADyB!aIP(Dm;QEhW z9|WCbkdJXR3J8*rAg5Hs5iH36oODo*j1AM`8Wmq}caWA@E*zxd=WEC_EJRi-;(Gm? zVE>7h{iE({5M3PaBshW+04_36B#;yik4CzAFedx$AZOB_R5r&k+4@VU4AKESKb%-f ziynr(0OTN)hm>fFQM7MTAZU`_GFBjq9>9k>nCcqRkn=csB=q_`6i2dj82_8(cX zF&}5@Sc?B;E-t3AkVf%D?%T_J+H_+v_teQ(ua|{9l%`T?#Z%SHm&MYrP32lsrJd?ILP6_*)M?!AT1C}3m znGJe}f+HT2k-u(IbKj0(rQ7E-Q6`FD^*7~lJX>43epWwz+W;1MOvY~Cmhk(Wt4hBv zHeB8}WoGYJ2er2+GC!7Ty`BCj@fXe!4{y{JP4;kwIAh<++-=wcV8Kb-rZ)ZuFzzNle-k2g&g*i6-Y@EzFEw z5!J=KWEXWbtpOy^|KV;yVbWd;dLO6(v(>vcIP$^aKlwbeq9*_%xrMV69sZd1b>2Pi z9r3j1_U+`@jLqiJ(mJK%1SVm zii}1JcvLnA#o3R$`jWZ(tzCP2vjUE20DdF7#4_&j(ze@RMuml5DWU%QyXeWg{tH|_ ziZ}t2B7rYPs8lil4{V~+ydcmu*rhb!+|6Uo+_AMq?r(^zP#Q!lt3L9o{qcyyC@DbY z3AJt)J)0B&|HY34-JhP+AJ)i4D9soNYjTzi=3);5d9(Ai1 zP}<^+1&Z^*fAT6zwMETCMAr^6PYVLEhS`S!MqL9yc@XS8wvn{{Q6rxIG%n3Feh@cc zSBuEL?haO5fUFS*EC3=l51{A?we>m(IzA{ACu+7ixLm>)?8!ag3DuGZkbxTjuM#|M zX8yqys(6IjQTi*C+c{g>>zW2o%nASl(|S|}A8;dDaqvCo_MS0AU3o&i(2gi@cSA}I zoM;Y=UkzIdwW&Bnso(^F9?2jbP@RgyXWU5PA8qDWLuXQgoYEq5(gO8TBl_IzKylEm zeiYfX!CTisFRL+7d%uXEQR)05$wwoGVZ%4He+jtxPyX>59Eo72i=xMi_u%m_9Zm2A zg+`xfd3#wz!N@o-rF!FyL|5Q?riA`Xl=hD;_1VyJA3yTCmGY9}wNG%5S}ySyO-~+t zbm1wB_@os!En+#-e<|~Ns^Gieh(r)v&qDf5TiO+XSaxY8KTyfynN`bZrXJ+=oy>`lj5hO(y42_zcu&HxV2$Urb@%Lvr0}c` z9k+bEY;5WDId0qT)>QY>3w2O8`m+G7dfv?|8Ek?a3~dJ#{ia1z3C3TSX3nscUvLoeV*h?{c&NSFac5#+(a|9kuq3w94S0LlLU zAgGk6-L@rRIrGUTc}P$u!8@kiN0iSj1_PrsA{;maA(U-&uxSotTY zd=l`CE0Eev8K2{i|03YM7Rq}%tWN$X0e>aog~Pzw_fJrn{3PI;ToDO`UOp#|6KU+$ z+Y0fu2bD>@k;IDs5b#D6zSEKI{}S*hCpz_eRSiyO+fyBn7E8^bx(CJo5b#sW&HB|A z#|N_o@}HH6)b<-6t^ULMT^)~Cy8|pBJ-ctO_Ba0!@Sm%bu9jO?vnEPC-S4ky))fp{ zO}@yNPtdfxeo$hrOZumT%AeIanzU`U}K?r?_Tti!bXQGowM7DDPEmCwjB9?1bicMwOut`-;(`rbeuI_(Zd8Luow zN9FV1kwxk2$!AdUq=^pIB*gfWZcz-sl}1c!RGje{RLpJe{doT02r6P!Gu3Smr`FaT zFt2B|gT~nBbwkt@mBu5t?VmyAbg8m-PScv{+rqfhXHfZ-%v8S>!oaMyqsspoR4&!4 z+fJI#suj-oK1Tre35}P+=gXf#1#bwE`7@}z#q~@f{1a5rvRL|&AV1Rzvb5gSz`C5x z%^>RcO17>KyYrh4C|^d$c4%|{+p#U|sH;ZW7VoM~h`RIJ$<1lFx zRQ}fpDn*RuvJ<-Nw<)cYMa*tv69zB0sl7qYA}eQpYCE{)>Pwk)5*A zy~|jgEaqw%o3it~%iKjO;Te&gcFefTI#wv*TN#^nZNJODjw%s2lAZBfzsq@=ED?Gf z1I_$;xyuDZE){{5n+?GKKUjO~sJ8xZTQmd_#tx(+EDY^7}e&^kD-#O>L``&o}CL=o|8K1rOTyxGf*Hsosp-2pWXd;mBDjO0} zBtb7b8LD-aLoiw-#XU3`>3Wq*fnF^APIf9b;X4kk(C2(rB3}_weGF>rHJIdb#;KxuvO;o4O)}a?6jy zOLHwZ^;Hq&)@E|cOR%MzhNjVSn{UI*YY#V#o#+*|L2@g5G+DI5iHhp15+i!1iJlj(t{6Q*PV#1m6(MoU6Lz-L{`aym4flQ@tI! z?YNVC*-||%nUk%H?sWt&dK*eL`7B~#Ikjy-S0m!B3a!r+f-4sdDlVSJe80;%!!Q! zDR$52F4r*R#9L&f%-8oxY-0D-SA`8!Z?jIC$s$D?{4P{$h3Ul^;64D5NEzjJw>W94 zD2kV*8v?#sA`f4?E-{PPy**fL1q36CK4cw1{dkF&*c|KPhWEXs7bjr=dt`q~i0~ob z5`qj1ivhO&r|GK>1Eoe0r#5R}Oun_2hW^MnRDkL?x4BN6`c9M#3m-u8xVg}2^LQ!H z^44YX2Byx^wjW+eN8dOfq6pXgGu&=FaDM1_;awEndH7)TP)9 z5hB4;jD_TWF>;>t(ejbZcx+xwgMn4{L z3jUZy|NOO{mH7P$LGSc^xxXjyqxa(RpZ@#hsI%-Pcul6wSI_mmu;jDF7bxF+Mr;n$SCGS5;U#=@fD14Wdv}8SyDG^hZU2S14 zk@0IH$N{5FGtP(f7LjoU46}j1>!6=wYb-`HK5?&O%PC6hqnyMI>P-5QR z8I?o?Be#%Rk-bT8GWb)U@&1LuXcA0`RtYM* z!^fJOc_O6kS+#Fj>eAY`N5#D&>N?ZC}b3Lzgm3V^IM*VeVDM{Y2GZmGbYE!DK@a8tT5 zXo$mEO4N1Z{^HZ236H7Q!hK%W9kr|2p}k=j-0MaBF0!@ua(kpWmno9X?RFLd5B#41 zUIc*#kOo-#Plw1n+8g+9hp0NIHw=uz)ARQbMNtr9pB28%8;pahl99L=tU{qVXcNTDGsQkkYwI{&MX2 z-B)FrNjjL3k0DoO+VO^{_I}{2^3^B{%rR!S#xK21h%cP~Mx$+S+d+j`fMt_iPtF0x z47NtMx=Mc%A>W6>$j-Nzz#F#Shq*xLxAP;ZJtfh8II z7NJgb{w+!u%M*>x+`yw0jx?EM7|v1x%@yHcaWsl#uaJgB0~aAQ5du`jRARy>&N#t`Ki=QW9YSbX=0>yYV%@@3ieIJ>{F^RMPENV z?4~#zXd2>)&kf|D6i^r&iw5Dv8)YCD7w_d5(1k!VBs?u33GmG>uR|qT26nv*j`VJZH0JD(s?Ss_sF4FK}L3Bi3yDV>Ltb z><0->S$P9`W{Kqh-W%78M0dU7(`1TNc_qpcG1rMM8`CoCX7`E(<3dgb8KWLmJ-Ph; zbnJBFWD(!+gJKw;>+Vp+&|qPcZ`VHUU_|UfUF!`tN$o5;d6{GI|3<$o`Tt$Nbo+II zaO!l{Q>pND-bel>YH0{R)9G?J7hUjzLh;l+Xih)M<7Uz!>5uS|)qvnNVPxe~;7*YK zr-y^e@s7LG-0}9H9WQ60t7ZNu*bO3Qru*X!wf+SU?tiFt!UzCBCcyPS-M#~m4LC0d zWgrhiNp^48KhFSVYM)>%6p}sZn!mR%jwix?6u>9`uTZFIODpGwfIG1=SX(HW%Cy~n zB~w@QK8vY;n`5Z%wQL?!X|tnjJ%dycMKh^}FcurhR0rd`4{ zi&bS(nLpO(obIVc|M916jSD>S>hkRu&7Z***w9^-T{!K|CsKmsCi{_c@QDqr!T92* z;jA|}26Jq6`$>F~Yl5Q>dD27W|Bugr%iWj$TNneb%kk%Ixqg4D?&D4EYP%QgmdLYB z(+hzzsr~IPdl2|#xYu;}XC33^L=aQyE z`1*Q`qD21o-x7EhTQM&};a03X*Zx-AOaHwcucrQ2C^RkJPSkPw+kXeX-bpe}wD{Y9 z7w@E4H|+mQC~PRF?n?h=LlK?s92(sze1jGrh3{;Nwa4Irw-kl{W<6Pi3ErX`kb!xY zyoa;*`+Ag<+&DIJz<*7P(vlccU(oK20pF=86WIcrCGL=gS@h2qnlR1 z{?LY8aNYsx5b)tZSR#Cwf%Qnp;5~a+U+Vkz7LwLuq=6?RGhlDi=16)1iHxkm=H0i6*4FDxJ>G%BY7i-K0m?&vsq^9z z^*7cdl}H2r?Pk@K>?LB{XJDiEeAj`?6{Vg)*pfvByn=Q}bHT+Vx#(T&Lt_QJMMK=0l# z)CX2G{jCtD+AKHQpzNxRh@~x^;ahoiN=^uDl7#@S!K<=Vvo_Dzsdm_JApN zc;MmzOcB+RW)ilr(d9-nD*E(QmnIp-4?Slv1wmTq0A~i+| zxE-<(E!DXJ(KP_~25EDY5TDP~esmd#`mNVmu!NaoxNx(nO-_HAXZn;oAQKG86&#tJrhmXyBFyU-WHPNrTiOg!%=@K0-S?IUSYHgbOBPu1>GQ!& zAmbpG7I55|_5^(`x>7ypYY0?(fSc7}xwH@g{7>BV-xqGmvLFa0SDN%++(p2y=igav z^e%!zJd{L+ExSLCR<%TDux5SmJM&B7<~^sCP2q8vszXsN9M7b7xj~SvGgrvwegX8d z5DS$8r7*s0f_jFR9L-ui$&&g~#WKC_Aqif!vc*_6Sc2fN`u22#tzXGDK_iP+i_^ax z9zVR{QOV?+{^juaOPuycQ~%51@s~IqY5sSI$6w;K=-(V3hx1kcXN5acvAyN`@UO$; zzrtOfe}o9mHijX0LPFvAuqX5$dOFW%uf9$LUk}!&?s4jydhcP8g@t$G9tcB9n9T5f z{R6^v5=9Vy))9J$*Ymy^h3^{*b|r5PZ)plobiTXyVK1strY}j~?x%=bNq{U$9ZofU)_n07dM9;9vyF*O?+hK$q>{Gn4F0VW9$OpSSVOf}uOd z-85AcTc{|t&xOfllo0QODmk@dViBD?{+wB$uv6FfOyNJqcl23OiYP@QiVQ>J!smdc zEVRWvZb~#gmQYHxpt+BRqHu;Sdkkwc-z_}uX^Ra!p%@Pt8L>_0wO*Xi%dzO!h`>8b8q?{5y>f4zPSjgjJhMdH)}cFXen+4(z=-V9pdF3)}3!~ z+qOvc-M#O;vI#Q?_hB&4qY6`6E)j7_(KwBB>tl^Txf_)$ZQq|N&K}m%+dC4$W!K8; zy&1*N3PP^8atO#|2)q1oUDK@ZwKRq7*9TI^W^0kHY^5JuNLr>Tyev3$@H|aO4w!mn zTB_fpHubtHn};z)e-;J5u0FeYNuKpP_I%q>ugRMT)LJMJ%m|1M*d55Kwv*%EWVQKS z!#1unKUkXVzBJPGO8`}u)mP>{NwX*_rg8Hw_k62m3xzDxef5q#FKy!)97fIhHCxA7 z20S>e@`w^=>-~TM7$esc-3j$!C1kCgSLi+37|+r)whs9w43}YVff|PYl-WCt;dhuq z-*$bB_^qsQj){A%p{3)3-u?9KgL&y_U!2b7uOarM%qzxF`RGv5n#%n0k($LDAbmYM z>4@G!&Fb7lA^)d#a}oTmMDKzbfwY)#CG{!wT~8z$cIh|Pda}}q1;|iPvbS#uj`Ds- zd}|D1v933GVz0B1Ujd!wqgtqTi|s(O<%UuaKf>=UVpsESa`mua0kj-+7cTwK|pj$s4qZo9&r7KSlTwL(-(x3@)`uc(d7?8Aq!t%&5`uSc_Y*| zP`%mbOUO@Utr3$w@Y1L0(G*W^i6qi~kV130SbvxN`itQe!FjeqJcr#gY6*^+ayAt= zl1In{xh&gTBPv9`*!7%ZjSrqWvS;S%!NSin+f7mH3;q&6!~_ms(JLsLjQUErsOK!S z3Z33C5qvb&t=HytZBIF?TuOi4-$2SxxA(h(9!7M-SX0>>6^Hq43rtA0lMr0XlJ9bJ zx*45JYH8Z?K(*Wa;kd@;b4>oQSC||_f}FOo$p1kD|KE1@|J57+doJL=`o#Z7n=t?Y z26!Mp!~efG>-{a|`NRJ=vmTD`UkwZ#0C^iTnfs!FDfHCtD`Y9YXkhjq+(;#*_kZ!s5Q3&aP?R0zG`~J{TuMtE zhHsQ6jCzHu9}n{P{sRVgVw6oJ;yKauLw`Gnz$P2P899Y2w6|q87Nvv4Ym6=irIe;~ zkj`Ny{6s5`ofuz`nBZ!nC6!>}y7TX5J*|R3N`}OfswHh!K7wa0J3o&>yNL>(TYJhO-I01~Z5%fx8b^?hIM@GXBQ_T1c z0=_z3jNlC?tJ)A>i_#jmlsajuJF^R zC~J44kAmKkJQF|jFbGjKeKjP{!r9wQNy8A`{7^1nIe7wQv^`)?P^QSzMBr2zCTHP> zo_B$Hn!JXx2%4*UxBn(i=xYpJWE{nQsoN-2>tk{U9;4S9vkhoI3O-Z_+OAumUV5al zkgr!->jUb-2(krowj4SOJX_faNN4|M)^p)*N4$uH4g8|;!j_tWqH*FI4eyZjqh{&= zNb*uClyUp>koe|=7_fU3ViHQ4K#BNeJ7i;=U(3zHceWQfS~7NN!ZD5d12@L}@-8EG{rx(l(| z`ehP;=C-NVGv_o?TZO#tW?($>p*qs<3i^(AaNyrGu>BB{*D7uo4zaeSG|DU?QcB=F zTpHqnCJo6ZBmruB*urZf(T~F)Vx#PZi%pbFUh#3QSrtlpr}fe97J71{4UL98lTIaITEf2S}=T2vURp(R4H zl5Euyh7_f^eJLVNcm{&s`7&I8i6P0|WhEYri^z?rWg7iO#{*Gh7;6#QFXmh?op~RN z;Ri3HOA$yp>O7MxbzJpM;J^`CZhaHdb~y-O_4)W!%-s3hXb?h9qxh5U4Q0@)fls@| z3yKPqSfM}RsUpQuAmqRvCk^ZTyi`qF8tU-OHq=rcXE=MEbz&QXFP}> zwYWI7Hl!B%gM0U^QHr@iJ0^0~B15_I{D@NhBK)tY!gkUeRFy3qtqui~m_wr_x((d#) zc5ZU?^d;JOz~XW&wjeJ7U&1ZfI#C|YP<(u9{2#V-(ZWQ_PR$Md<;)txp=C?6zGq9V zo~dg!R{hKB_si=TjZOW3jC?g`=EN0e5;wzkMlxbXfr9fS6>oivz3yX=Omzr_)i)i! zBiT6=6uJoR$oV$l$3xZ)3?Gl;gvGOlw|Y0Tzxq^%u(M3cnADk({)v*1riOgWQcl-< zTWB@4k6a4_^cRYv!%+uc<|FP~DY7bMx9wcwdTB~yKPe&j%&fcQ1YBAuf31Iq=&^^C z*~yd!cQi6KPf?;G^;T9LTfvM-LB+$prIc>`qHaX|h6H!f#v z%>H#j%B?iY&(c&gOG@z6@4n`sGqzNi@Jsud-86-sW>E<+*2ItgBq8s4s5}0)73A1n zhb`<1yUQevId=0}ekqj1mFUZr{clgsqJBK>{-|u8#@jiwB3PqWtnhchFAb$r@3@jN zyOObJP{qzeSAB;&VZwuu&udd9C;V2PYT66aOx1u3BfQ(Yhwk{-eqgd-9|(~kwNq{I3dgxvE{ zdA7ixmDX*z)*bhi8TOQwMWB+k4?1!X3l&s(HRvn(xd(ckXY#zY?t+qnl+!+)@mKo5 zr9vmmcV4yxLH0aBMqMfev^=+FT93Ef=<|55Rn2;P^guY$+&hDO4Tyn1>@O3g=tp#;feu2?~7U6E0{MsHGg}co#lF5HSU1 zAeqBzrIGub7=Ah*SeUI={1fj7EAr2EG%j)KZ)|AjRjy4w_$EG9IZEQ{ek5l}IHGUi zx~2X3J|QGkMd1fhjyYowX}AUU*w1lAAh|??lB20rB1n8(L?!u%Ya*iJDVc5}94OJf zCSJyAQO71?8miz)0LVX;Fh0kGX>UYkRz*d4qW~{7fGD^(1YnRD)z&U8_CBr)tSFkV zIZj|PZuLA0^3(33#{JlVD3Kk6{?7dHE&f~;T0Q`gR|K9$1o$3;wki@!tBE(^LlB5X z8scNvPY~{_6Owy)Nm`+zHFhZ|V^o$fU^ zZZrbphv?6mNr5g&!O2OX%}L>lNs;$S(S*sdyvgyJ$%!t>Ny*76&BEKo`o z*fkA)DGTEv3qq8Q&6ka!@Uz{6^Qs0*b)`m z^A$R36*{>VI;Rx6f^#ho3OpYQ#aaq|`HK9tiUM7Wf>Vk@TZ(vKONHJKMbV*I;e5sM zTE&U3#Yri}DJ{iL2SqUt#aRbwX?!JlS|tUpB}FMEB`qa~`^DK0B~?U(WqhS|TBQxH zrA;ZNEkpSgM5P@MrL9C|U3_IdT4jB%WdlPQ?GL3RL?wd{WfMf@Q+(w!TIF#qFJU6( zQI_Q^OXX`1$(tvM;R`TJ5$<9ET)PfavoO>u6G(J$E|axD@3 z&Gy>ODa$Ptk1bWih0g~7Rc}!88A_v^VmMq20b@%@X=5aDTV82P8F6c$TiZZtn+!uG zk2i|sCY*j230rbL8zSy(SWe`(ijL*RBDa>#u*MQtDN=7~+m?36j#~#sXgRhwg4Z<^ zSOtF71@?@g3|zpoFy)&^4ZcmyS+uHH9&Y><))LO&S)AIm8P)+x>jbxT{s}1`#RiA4 z8s^*dON&KNg06E5c{(lgx2^3=sj(!JMQ z25&$THO2J7k%YUA#5|hp55HYx5*Y&ra$%xj*4e3B;>Q)ixRnzIU zo-D)oQ4Flen|Q|2_G(yLg&7+?j(eq2ZrEC z+qKWw?gLQ9y={9rF*X38OMpJDd!`3!zkO?uJyXBS5s5P}z(`ju1n|{d=YtM0kJ&jLI7g7+mb(UvzMIK#iM zmIIlDN!L@#d}%oY?$6XS$xC|3_!F#boU47Doq3uSeFENNLg>%5NP7)RIryEofWgxQ zn%E2&+s(pmayw4Vjf9uVZ;*}CdDcq*w0ANYYCfV9LWzd^*?Q~<1>*p1noV$;JAIDh zc#L;-jDK}Zlyu%+aGp4IqI(($VFvT;;&cs&n|sg8N8p8*$qIc4(ch9u*O~RXn^hWp z*=X)OyXyj%AQ!Z{aOpa>e>9geI%kbOZuw`CXLKqAgZ5|B3WrN=2K6-|0L$EDv1JH=qS%e1vXbH86S;BD#1myud~}|Wyi&1`5tp@ z>2uT+{)#cBt7uEoYvGsY~RVkLGHYR9o@I|cy_SX?Mv0qSo2#X$Cu=Lj1LESoJjgDo_e&0en(+Ks>-H|w4c#+Dq~_ObiM2haVajQx4O1`A5K(j5)A z(bg;1F>#9hsI@WAj04~2^jQ=GxirFvea%#wdZ3!zN4P8s;xnU zP=k{_&y!GtW3RCjaaQ0N+37jPaS+St#2CVj5~P>n^y%beP6#OXa0Xd*$0uy-t65DV@ z58H)*a~8^qiAbI~1wgBx0B0+qcCMp+J-;v@zcIv2fBWW=ne^p1UvufN3cfifz`U@{ zJhvmit*}8y!a}9^wO*Zd1^k35-+A-?*ClmlQ>)0G|2P7pFh+KkU^ph)mJ3?W1X8&0 zz4{qSoE$(i1{$QOWc<}Lo0tri1F zZ`OJ5#JLA-PvO@C|C?*BN>JL5yJWBXbr-ad==-5eL1QIUp^~T1Rpc+K$IN(b_L~PA z`ODqN%TCy@$M*4uD$G+$1N4DTgxWWcggJMW&Aymxw|t$wVn6sC3s%{n=z+2iTt#fh&91ZiXp@3o4U`&d6%j z4I`O5f?VYNDe&h|k)hA8Q;~bq%b}|9xpZoXSs0OXhDm`aX9jD8;Tnx|cPoq;-hXiT zLx+vILlL)vfb5w17uyf&$4ZjdYPCze*>AAS?o@FJWJ9wCIw;;wV=4=B_i|}} zZrpCr{_+EnTPKr`Q&!DkT=E-_%KKM|s~nGFqBK>LNldV*@Fo?}1O=O^DVe;LG)erDrS)8AsBvC9$RDv@!g8A%S9AING zlPFEpBpLFM6euYrVAqRp)@IjFP9MFsu2RruudHCtefdq3G<(ji-fy@l4Q+qDarD!pLp;@+m5tLi)}pkB48pW_H~G46dqgKU@#Cy)1TGz zP!tqGOzZ!7C@%2wVvgTWDT)n6hVuFe&@{3Y>6iSP98H_DgDfW7?H1k;62K!tg*O?D zJVdVY&?rGigzNyvp*3mH_k9K((F`$IQXp~)5gz)Ro9FO1eoz6aZ+b~MJTY7~E)_qe zM)^BWX;2NTI3zlFB0#K43`N*4S*a-6!?n$b7|R}w{{f2oazwM;joZ}`R48}_3~6Y2 zWn|T-V!z|cV5c_8C~6ham~f;Vf(^Wt6Jz7Wd4}}B6X|d8jLZyl`o;`@;;W{pcmomg z`KVsP81F+On&DCCNM8GMQG7{y1!szST13seR_&JjY4g@VLmK}X5;qU)F@4EVR@qN8NAKEmh`8e-P?(rk{?x#Wlz(vo~CNFJ(b^ys@d zq83sOMbr7z(uN5_^N8!LKl2aUEG9Kv$0#)*xwI>*#yR-d=k=7h7Mp?WTB4IaG(Ay` zo0O(y290(IY(mP{lXE4Z%JMYE__#lH86$t97k;jLPa|oiHQS=z&`?iDCuyORdiNvY z04KekV|vW+A!_{RG<5Ulp~Aaj)mA)oC%`L4Zl_Ok2c-Vhgy@4XmA8};fiix@uI?ow z7#rcf(3`+lE>N+I76`W?9ZCowc3n%fdV+!dORKXsHT(3WKS(wk1uls7?evGno4Ljx zh&Hy%;E&CC-@LYH$`s#07JzDYmE!j+Y!{MpY3hyfgY}1>IHyDNBE*R_UimV|-l#2D z_!DoF23e20LITzO8!_ChRq>agla^5dn@Te*v7KT!%Ci&)<-xB;z6k_)`{fj2+4#O{ zGeF{A@a*BV@mDsD?K-GUJaDgQ$IXuXwPF>o)Y;1v}^rJY~q0@@f(YU zsU!t&WZ{%LWdlVbE9 zd2Wgz2p#Se^ILdyrJ+<7gi`O@El)CyfP}4cBr#)E3IZHQqm z6clv;c3g_1&PhC#v>*ZoPA_p@A6uEEE=OhsJ|$>-Q&eNbEOw>~Gc$jja`Dk{)nun( z)4Wmy7r2gZx}}T~!Y+yT8%@6GG%~f%siD68*hW;-Q{~yQDJEAU!6UY6mxQxeCR|pH z-yBqsh+j41=7 zh~~7Ww>z;(R7li1M1Yu5Mc*+CIIdRyaqZ%Jzq@Vo$=5Mdv5=leZx>h%XlzpXufgmYUJ#eA5<7s0o9S)ZZf5}*8C|6~*2V+{R^ zmH)!p=v8A@U7x5jqYmR;99BbKZhJsi5wGC*1{D1qoakhl>0;jM zvN`0yMCdMqG*j;RQdap>t|M?90a=E8U?i;GT<+Z@1A#aKp(ernJU!yvBXI0G;zCSe zEYa=##3F=hWc$fQ_X`>C?^5&l0)eqrW8eMki}tZyqa(+@3GHe0NP%0Lw(TzPtEruK0)6 zZh`P_5@@&HQ#Z?AuZTczI(5$qd!`>T9ZxLMD>=}6Tu@GG)NfH@<$LwvNa`&iTC8ey?Nm2idhK{^l7s*7+l`ZFv{Zd#(kN_9m?4X(WDuOqUJ7uqBwN+ z`l$_YBJ`p1NTuX-lVnM&)DDE?$@1h4q1tw{&-6x+0L{XAp1Nh^B;Llk=Pip%Fd8t( zkqCuj_uAd@OXU)Y+2@&scDeS5g&as(rDEpNjC65~bd#Xu$q$`c$<|yAup19l7)!%b z_&BLF$qbZB#ON{^6#~W@+n^FxXTN$28N~$ zAPvYK)A;ONjc}9D8VkUiGKp6|4RCh1K8TM_9bqxB}-_5j_eV%gcSK|6@17QfmsG~zps{ThK zvY4Za+$%mLck8)fdtC-I!jVmb*u1A0e z0QY+aLfgD~-C1BzfHL;_7|>a@DsKp@eSk|sS|@x+ha;$aKlg>W=Yq%(U8)MV_XP3; zzAqZ|xkDh~02y?aa48i@5U5Q~2+PY)8A(eDgJ!sJAigm5`$0trK~;`olJCz@7>y64 zH=upU#{^NCCqbQ?mJ_>oh-+j5w|%;12Bk10RS85qmNOgTm#Pj3yc_~OI3^YHraG*G zY@AcH2ug$3Q$MhN9E%O9_!OYk`BCS3-V0GJ_?7$k7B^aBKzF5P#T$?_Xq5!7uTujr|z}wTb^$j5rS;`%SqtIB& zZwIt7PZxgX%+Wwn9PmN1RgKhDN7G#jVODPW+}$$j^GXo=tK{-v{>soR#d=bJ{D6O& z!U9vka&eQle^X!+dP4K|Qs4?)%&PVnjm~lWw8`~Cto>OQ*Uz6#+Wb8@lTOzwQ$BhgIdlO=u`kUjcLN%~t{Pcm8}zdItgC zydY$i0r2jt^@DP7QkDkA#2Wp8&rI*o$@Us5>n~KiUtQZHGuvxzU)M>z4Inn+AoW_h zn3a3U4P5n45#mFB*R#*t`eT3m-)4oPYUt%huOU=~lBgS;xrMYM{)VtjlR^RD23^!K zgNxpEq#^_A9lgN31<06>+rlcn?gnGuZzjDe&3JF-;7?g{`z|c(f6GB*TvWAb7o_47Q_6nh7@a? zSYvQd7k%c$Et!I?7%^G2PX9MID`illdM%gNw+6>fRdgo}ev&J_a zjJBXZh8R#TvOUqhiArDs0-5Zk`#IXe7x27%g_-8qW@6L!*N$z{EVz?=xNj`p-;hiV zZnj0q^z-w5oIAXuznV#zno)S~_|Wb7vM5?)>{#LjC=~&%ccO^tO!jm`Vec_?L;5!M z6~KHarj9o%S{QrU1wJl#`_5~-u3YX!L|micSb z$u|d;NQdi^=0)qXW7|4ubNdBQ#4xE%8w?XwF0=5HeLGu|NGVHbuz$JDL3_t`J36r7 z*a~?~yA#Q`eaxyr$l4U+u-EjcuY-q0N+W$19tYz8{O4EQiACcaVuR_nVbi9AUT8hn zLGBnzd8B`#sb#_Q-mKm(g~)NclVy>*b$`L}Qp0ED&CZ%RO+X+3HuQ`j2*FU(3soZ9 zR?#qmX04%mAFA7|nGft47FjvYg|uh*wRs-X-|11@9g^OyQ7pinBAuS@oJ<$kbl(In zOPyY+pCWB`;_T_HtAlZ}Hr4~p>xDpeQbvY8RvcWxR_5MjJi&X3CsP$C<#b=03fUG39WRcZ5jCC@N7Yp8fx(?BvgYOx;n(S`$Mfoz=O;Gj7^l>?C#2A`0~>p& zk}1jei`Rwr{fh!F4ZYT#Dge ziUk3`c>;-S&zw&jL~d<_qjp&vPxv$8iN0K^zPna?^O`isadQeKe2*oEGZ>o-R1!m` zU3hIrp{4rqTJQE+9~SlQ%k?Jk#*q8QNSNvq`OT2%jp?@=vmkO4{hN578_UKUt5X7t z%$vBMH#WC7Uw+|!{^g_ue{0Wu>+lWxg=1t8zjgZd5-|+xL;knEdTy z|E=fktrs%b<=5?dxI16&JHIFtA981A(YwHJcR`paumF8$CZD^|#=Ee7a`jASx~{v( zTj!wfcM*lrQS|q*r?=7g_tEV431;^W@9yJ+q7%R0C;zzl9^|r>b)PoxV$^t_`Yk6N z`627eRmQE$Z^%RLy9b7MLzn~b@}2%tod|)<56UtRC5;cLK}S;N%kK>kIg(sUemqp+ zyY;ULpg@9C%Xi-MAYwf{#E?HW20bRP39vx*0=TTwuOAwsqMLRfJA!tax!2zFAV`4R zGdKw|3mkrYeCi!H>>Srry3-*pIvV4ADh262*@SZ7ofV&1>@r)nnm$e7d)$3}3V1%x z6Y>2$t0@izvYErr)BD{=hH|}hi3L_=drxLX9xzR^KWn#t2EV%3n}N}ip3)`ZHU$y4 zkCDbaO>Fl9N56x6b}xRth;5h)>%sxdK>#$RKk1ynt&e)zNkIr0CZD}+R(_d78lSJt zyk4U}4=aN8R$avnmeXE&7FTWPXaw#xeEJ9oHk+q_SOaWUnjCFFVywZe>G`&KM80xT zXFxH3JVN`Uy>se;XsUOyOcpgpeenz*YpnM#Xh)LR%%;jLF6qY7_`Y2n?O)PQWQhe~ zGh1Fkr}AXKvwc3edOcI5Qm9gHdCf3arqyVFeDLb>uvfu%fygp+zhensNI2 zOte`DRS)utD$N`3P0n{z-6~sDxWpj1++G+;3oaR1qn#peCwc}g85dR;i9?&B{mIci zyScCayEvB54;%+GB_C^TjvqLW7HZ6e7d{Xov!=>6MBBh z2e>>vg$aAZfq5u=5Q&^Ad{G#hDEwXq0Vw>jWO*n9_9JrFzWlUkN~G*1<;K=eP3T%6 z0rSp#bEabDk%Tf}U(HL5$lS_H&H8+!j^qygNEs#ga7P_23Vs>8lq7PYiIrh!rioMF zyQhg)mX(=%xt?)PAW?~LU{K~BqM<$vm-Az|LEVH@_LrRJ(pEN9~tO7TjR9v1H}U$xdVB*>E8`7 z%)Lg))Z>VZ$d}bVC~nYlV{TZqY-Mg-b$w)R+Gq(ab;+RECE&i};PgC!^Mw)d5AF{?`^;bgE* zhip}VPD~)je%NF=^q`i|F6fOIY`*TbQ7tIo62v}9<<9OrtJTInF8KJwJ|T)K$T8_| zD3D=>0iv33fuymf4e&(ec_XN3mv2r=TD5b|>$?5nT=*1r{CTd;#R=GN&ulEAW6|rz zxndVpa=Gwz*@Jt{<*=Rmm&g1^C(R7>Xq4#=A!dB2J!6OSnD^r!o~;-;A>Qo-?TnI5 zBNsY2Et_T0Xn5OZUF6OD)G@-<@1-4lhvlu$d`H#O-v5$WI zBOn7Q$Uzd)jB=zSA{A%HLNc(l82lJ#VV=2r3S<IKvzW#_CNh&b z%U=GnnK*)_GNUQYX;QPA*1RS*vq?f`IeTZGvG`o zJmV?PdD63<_Pl2Z*V)c}lH{HE{3k#ID$s!vw4k`uCqENPym1(`p$>g0L?bHEiK-Ey z3caXk7)sHNaPDWPRPbfUz(3M zG=UE}{V7m`DpVWBRHp5uDFpkGizYC&2~@y^3vG&174pLqKGoq)P2ogsG?l40#o|7? z>QtzPai>lF0WxZ+4YV@ zmbI%r#36iT*Dd0ef%~ZJ3;|13s}j}|h9%)-r^s2)e(|R~t^KhbNe--T^A3seUbNg%exVrcPM5 zDGaXw9SmU!^R=u0>fLY?63kVm&LJ1-b#OY~5ZM)v)gNI!D>CGZ;+_sr#1U@7g#AHd z@}|(f1-x;ML+peYKXs?NSSpZ(%v9VWIl(71?vZh;RP`>n!4LkidXb#sv<`WyC{!wu zE$de`VR$$RjX*mDOcILQ}bTh#!b*_Rq)z*au*xctM2s0f`&C{`>~2it8mW-lr>qo>Q`;#da65(Y*^W# z-e0E`vSd~N260X3?E->WfNlP?n!lRqw8A>p6HfNBS7_GXJ~!4k9e1qL`s!Bmb=KF0 zYPPp+No89f6Kt%I|1a&xC#$hg&Qa^c%TTcg__EtwR$eF{@Wh273k*9I>8+aU-?eF@Puraw%h|`yVvb)W}AD$yrCCz-|7B&!=BvP0vvn21t?~} z2D|K@|GZCM4_dvxF!w@Ev(oYFc}bI9t6`P73h~Y6vLoFeo(Hk;f&FeC$I#XX|LQ*2 z`uw?HSoUg8?DCz!Y{K`r;O4)1?0-9U#M8h2_Qzz!8*c~{tYXpJ6&6FZ$>rfp<`t0f zRo`uiRTB)B@O2jIHC1QPSA~7w*KHjM-5ilcS92|xiK*V{t=aK0oAtc`tMQ)Em7Vl` z9s_3Jta)1Mt&ov1-2jc7gNb1JEnKPb)WDgL%MsAYVc9w;-~t|>nb{Y7-IxUy8Ma0L zR__Vg?2(-UqTd^^9C@*y=sls`xt_n3-3LP7{e2-AhM^zj-&{<=e|>_0bzGPfM5YYj z%@iP;0iF-$Lg!840cGFUc_DiBAYj#8su)H_GRE8 z4p3F?APL!Ck0IZT5!nqk-yG(dxOpP%y&0F;p#kAx(HYPrhTCrW6w(!6`hTpBVO{FaDw%kzvNQ&4zqJuc)Dm7{q3<%sA9bsK`to%!7+CV|92O zV7MUwq0|K-+z0xU>FF5@lG(ta7rs^1SNWj{VPFy7;vsrr4;EV>wquXA9U}t&9|0*{ zI1U{tDj{+8pa;I*CXV3V$zlolqa=EQBFNr1UgA0mo)`We3pJO6HN(ScR&&kY^wAXut+16dj5Ckh<_No5hXT~ZPu-#ONE zf!kWDP(Ew{vvt}C;(>Vy*@8fwd7(*mre}WtrVt6E8U7c? znFProhNfhSV6e%Wz|2dMLW!_sP!8phi4~FUUOWcgAvTrH?IMzyLLX9P2&rTHIo6Gh zVpHuE+fl)jy%>?P-I8(PhM|>waiA&KLvEVg=$%zIU}v+npaJ3-L!z8Uk|m9SVnHgP zVTDy=mZgPdr+rQ5n{lUiq7Vn(8inE3c^=nsLLt=6q9Imh{2ingV%Cm{7icD^f-Wcw z3FG5!NE({vK_G-n9>#<^2C`V_GBUXj{DrtpMiskuBlLp3`Ea^vVM~Dig zHV)GRBB+q^rI_w1pY~~JDxOF%-dv<)b|onQcEnCPghgP)O@hOkEX!pyKr}!A6by?q zV&j$isitl!r*^72iDoEZLL*=Tsg5eC^2+~BUPma#LpVXcGzLPD!;+RlMgYbf%mYGP zDyG({r}nC^{wlDFlQ0I)1?=dYnnb1stFkUDvo@MwlDR6X%)i}$sh6k@YtF~?{ zw|1)}k)cXbtF+9)%INB~no72MtGcc$yS6JEt^WZL~Ye>E!TE!LtQP_Dw555E!mc> z*-jMLhHc1=?b)`i+rF(mrLEdtjn=}g-QF$U=91jbE#|Rp-u^A%2JSHJE#JPO-wH0` zCa&V165$r^D;@6QMy}*eE+jRs<4Q~2Qm*E1F6V;(k>y@4sbp^FjxOnzZX5wB=*Exe znl9_MuItLs=caC*^e6|^uI=6~?&hxU?k?~4F7C4B>jtmzE^h3~ZjR8VJ#c^p)b8>s zFY`XH^G0v;PA~LQuk=1uJu@N8tF%l=S5-%|mH?b2xF%+xtI#EEn{FhpQ z!tUU(oghRMcd-|LF&Kxj7>_X-m$4b2F&d|_8m}=Mx3L(*s}%zWjA}8RaIqWTF&^i! z9`7+9_pu-UF(3!BAP+Jj`*HroaatHE9gA-vH?ku?G9*W`Bu_FWSF$BvGA3uT{~mH2 z8)K>}sY-CiBGaiRm$E6JGAgICDz7ptx3Vk0@)~op6|W>`5XO#@tN5&@FWE6H_p&el zGB5|TFb^{^7qcLhW3XyMfC`G_!Y>>| zbg;~&(yB(BOfnesX5g!>W(0@&P&vOdMOU;%Uo=K%v_@|0O8`oSU0W+u?=+{7f}Gy9b*!nuAd*?TwPG(eV>h;A zKQ?5)G3tWE03fntDl^5>j{wRXg&q_(Jhwr0OfUypWnkhO4ghiZ>=s2Hok-nMj4 zH+5IHbzk>UBUBCefDj--nNmU$*hLL=hC$ejUQ>0L5O;Niwu|_+z(9AXFgMC5H|15S z|0Fhc=eK_EH-GoHf0uGmp^aLof(~>CUw~*SEb3vG_ls~SX!CV@BR5NP=moH}eBaA8 z{^X0mH^lz8hkrPThq#E3_!tNH(ue{jRKa)nv&=;5g|3W)7dLi9I6%`ii!;VxpLfAX zL@7)thj%!M2f2_BIguCtxski@WRt`REDeE=^0eUhkw>|dPdSxWxrduLB^0=mWA1BP zxtD)An1{KTFLr=u`IbLSyxQDyAkNXezI<#(vrfi z+jkYdcNG z-#+f=KB-T;z$47!_b=p|0nV2LwwqYsN0=0p?~2WWHz0izm;prZffhJHF*rT8Kb1N> z#2z$37}z~i$pPz+FE<>-_?iRgbARo3yY8<)`?tT9C%&ZrKK};)J-l}DbJ+NbeG}~c z=kpXm%qeFsR}(6_$|WRduvocpo|-&KsIZ`uXWTUh)VY&qPoF=51{FG#Xi=j_ktS8Tlxb6^PoYMYI+bcwt5>mR z)w-4cYgex0{)H7gmh3+WXVIoryOwQRw{PLbl{=SiUAuSjz8z=M=e8zVBu;b&4A`(e zCCfDXnfd{V&wrugRd66eqzMOe;=W+M`Om~>dvxI!doer#6^I|jVFfyFD zkV-?$-ASf4mrDG^^Iv9hyPUc7Nz~Sb=hwfVe}Dh~0Sr*U0SPS7zylFXa3md#+ytzYGx!UssTq;(n>^0H9cvq z)z({a%~jW3dF|C#p7`uj&|!%!HaSB3Y6HC{;(=a^?Pt1WF)$By}u1#n< zLz|eQ75ZYm@7HtDO;_D@*=^U|ci{~x*dmRs*WP>ALYAl1#sS8U(Zb~-l4@T6ysjBM z7GndDWiCaPG7=M7Cl!FP$m5rXS5zmRR7QgDJT+0mFW!+!F4^RhQBGOqm1CQ?L40A3 zd02gW8fPAs?rEuDmh|O|C1=Y~XXi^w>)~PsZ-cnZrBq%{lMf^UpyKz3;)vipy|NSdc&oLE`=d zbqH{PT&@U;35OK4=CC|3+I7E+cg&I0T=e0IFW&g$kxxEO(v2)!6xYxHazJscLqX%L z6B_v>^0y|?g`DSp$18l`Clp@!^U+UV{q@;zKP%?NGF_BRL^(wV2t0_r>Q64YUjiej zroFh#!FJ#)M(^x0KJrD#eC~7L10fhe2~O~Q@blAK47Wd3SPueH3&j|s#|5fAZ+mU& z-ZkDrJIbN(EOST)5tyNlaeNN~rJ&plA<#X_rNa$qQQ=;$VMEH%aDfkMAO(?_L?tef ziA`KvpGxOEt7YO7AUsP5qKAkPk`OKp00#oqGC3A{k%n{VMm}!mMHY_l0&6S=4asp-_~#E1(^Pm>p7hF_LyfW#)VqOKDD%n$@)CHES|ULS~H;Y+$6-cIlR3 zw&eom2<9h=>B$xz^OTsxAtr5C$#V*`ozHBJDzTYQeeRQ={Y0NOF}S#I7P5qG>0}Sr z^2>9MvzY6=UHF)3%w+;|EzY#(v7+fujc$~q9rftm0P26`!XBm|Vfu}-Xj#VvXPB9u(v5u9jWi@M%hRPPH9Tjd{n~M%9S3s_UqjI=&DFJV% z)xCVri$KIHRQF=ZvrO)tU_}l-&ze}pE|#&4ZB1GY8(Cu^*0Ghf>}4^V*_}XEvYibS zWi=aG(T^RzjeK?QLQ{gG{LZ=2iQ_V%~I9d2=to809#_qoxXZgsDl-R*YwyWt&g zdC!~P^|trD@ttpd@0;KK_V>R59&mwg``HCI_`&}iZEG)_;SC=)wg(<@iBFv36}R}s zF`jXaZ=B;D_xQ&_9&&;soa7}pxuA3GaFwr|<*0_Z$YCCHna`Z&HMjZAah`LX?>y!w z_xaC(PGyC+oajY2x&>a&bEPkx=}mX~)1e-9sZX8eLAUzVu}@f~^1@DwfhP=Eu~ARfvP9Q=U^6oDS%A^Zve1(FX6?V%q8a2mUD8to9#7-1Ov z4(ew(5CSiRlpg%u^tW zpaZDV0vz+u@Nh9XQ5%IJGAGjjRWdB`?H|Ze4Op`^UGps05*y)iHfggqxsWb#GdJDL zF1Zgc&A}dqKo_!27y98D3}6}jVHplH_?{BcK9kTG^9V;W(Qv^ZMv^O`5i1K#GrJKK zpRfy%0VzFGF`+XwtMfWb(=-4^EveBq?ejkI^Zj&lKlxM0W|0I0 zvH(UvHn+_ipuija!542b_?A)8NRcF^5<3wMJe#4=aDgH#(+KOZDhW*mkiixjl+YfO z5e$+9D>NeiDKaHdlis|+EL#&kiWj z+q?lAyWl5p5(P-0(V`GELvlI|4Lm`#A}13Uq>|7`uof(U4o&hhlX5Xr^dljGN(>-Yv zKIc?M)xbTA;UDm{R&DiG$&OETbyq{|_bRaxNdO9HwcAX^AG#p;60rf4HBk-iK^5U2 zL~sNDih)3-k_54F7_hT4jWR5hvCv5HA2^a4?SV_36PFqtK zVwE-JHAY+0FL5tr$j#vHlUop&Al~q{_071P?9iV^&2v%89paB>T7r=p8$#K|D z6~pE&8(ef%U9%YCAty6-Ugz@}_;qASwq!dFU{N+@A536>l>~BtK(*}|3Lse(abO*G z;UIQm8?It4Y~DV0PTi9UtYO>Cl19~_UfnYm*wSQ~wrQP~-&8hgrPjcFl>=?8&wr#=W|-0wr=hAZryEa^>%On zx6l8Ubzq@j78D^2Y}RHuAWU)AGRd~u%vQqW?PJxJHHQ}5;+0-q(_ry7b2WE!xovMf zH)<=ea7A}?!*+2^*U;3@+~U?%)qqBSAt%Aj9_ABd>6UYC_jaH5b9EPBL$?7CfOJLo zcTabC3oUia4RT`?7sst=pa!r263{^iN&p$&jUO~Y2N)rIIka4-k43rNLYa_JIhFP9kXczS6M2zgna~;; z+|Uwa>(wyhq1<$V3HT9Sxh;?TSPHPwle4WKlwk~V7zcjA9`Khwv`F`9bY+?7kQSyt$AB>2n?Vf*x1{OftM@UXw?9d{kR@9 zVFgOTABZ`D%{dYJXO7z;7m&FLFu@Z10f#H09(=(LYM==y!4k5$1o1%+bif2e+6l6u znXw=hPN57qx};A!rQ3OcaTo^h;1bID3FvtR>_7=9!I@)9*`3o`#1=&k+6^2AH<;scmO%mxeQ967(kk*{h^6l zU>RyU+sfgqReQDlO{`s;5Xri%-}kJ$4S9Ka2+m+wmv;!dfR`1aqFEE8|JWFGAPYPh zq)kEF+PR|x`G%)C+Y-C8wYeQ6;d;9*A6VfMyqT+;`?3L;jcRxe?pJYx=ae4X|N=4O#(*x!b`no29p{uhZbNpSn8#zoB|H`;*-}#Z?^L;=9Eq z@XA6U#$|lQX}rd5{Kj!S$8~(idA!Gc{KtVj$b~$|?VD&_^S61~0A9D;fRnd}fS2hv zhP92b?cp4100k5rxs|(~W5FJpyTK1Tx+i>-msX=!pv(FCnw|TPkJ`)Uc)+JQ9u&O1 z?OEHn0f#wx#r1s8QP0KwJo{jL$OV1S3BAw_{m>Cz$BSIs%o0v{xeE-yZOu&){QJp$ zJ67S?!KauPRv>_@v#+1n9{^hfa*?p5Im{)z479l(6u6W>T7jckn%R8L^+B^ayO~R1 z8ASZ3xxpQlnALrl&xL*1|Ge0HFVGV`*_D0SnZ4QneSFcg?H^wB(V5_W&CMQ)q0)OB z%5Av8OIe)-*d7Wzq(PwuOkke-cm?o44%{5o|G1{@K^&af26j3dctNu%!4Bj&*85uB z<>0bG+60!moP~JT6$$$`on7Oxoi!<%Fny8< zf`K2)-Y0+i?A2cFE1j2PA(!XP9wOSU>3)g->t5ULKHU8G-15Ha0l%xUe((oR>%IQ) z5kK)WK7QZL9psY44fBm&D$DsfH z;s4^L-ycGr3A$kRgFpL+?+gHQW&xr=feSedKp8P&h(cZV{5gCGF`~qY6f0W1h%uwa zjT}3A{0K6n$dM#VnmmazrOK5oTe^Jz2{We5nKWyr9EUTf&Ye7a`uqtrsL-KAiyA$O zG^x_1Oq)7=3N@kh3pcLZxpeEY zm71~`6DA6WjDP~g0FVL(3Zo!_c%XrT2fGYW^vtH@$&@QwzKl7u=FOZtd;SbMbWN_L zOPfB8I<@N6tXsQ&4Lf#gv9!P1y^TA!?%lk5yTyCb-alP@ha3!CaEHJKiAfa5!T9eG zCXq#3zm7e-_U+ued;bnTd}Z0>%bP!sKE3+&?AyCvTD!LI`Sk1Czdsi^N_)f={v83G z0m=#F+y#V1H(hn&Ey!Sl4n7F~VT2M+Na1AfU5H_Z8g9s8haP??ReZGJM`DR4o@keT z`}KF+Vv89#&~q0o_8(*w-iTw4I_}70k3RnR5r{$#No0{m9*Ja1kE@jV?)I950GMxNoJX5o{46fA}Pscn{K`dXPk02#bj7f-ic?PxJ{YT zKe#Z_VwMJUX;2q7s)=Z#iZ04%qmFJiXQYx&N@=B*qE{zadTz>Tr)cr1l0C&J(#2mc z<^Y%?v6%B{tFFEZYpk+1dTFh;-im9ky8e`@ZJz!LY?Pq3!4@_{p^&X6Heo^_$aKjEi3^AhwPfT&e7F%j?!e-_04>}rud~d`e zk4$pOCSP}P$||qSvWFSV<-{^!`a{n*bU>*>#~*7P^2t8`40O;!lhkt2MjwszY}?B9 z0VfV|BaJiFgfj?~P-G*{&I$KCbk|;g4R*;%k4<*jX4AQJTyxmd4k(+dkd4P$AIx>w zcHfP6-q4=Sci(>Z{jysiAXCpRYsKtPI);P*!ZQ7&vW!3ROjDK-zc@6H+l}`V%su%G zB1JV0O|C--Ibc2iH{A>C&3fyuzwYSYvd>O?%7M24YZh<%R0Aq_fg@aIxJ^5%t)*tBruZ};&gpfttsn=UK?B<`3e){3n&VKvut9v_J zD%c}83Ca4?4>2F;QjaDqgkTDPB%^WmfJO)$@QZ&WBLs}-2QSDnhkrz)cnc(p56Tij zbS&U>SsUNH%BQ{%ig1J^q|EzHh{6F>*zQ8m0B1PE8{Pv!Ht4Y|0fImn{g6fW z{6UQmEMr*>LC5BNNERdn;~Dp`2mL|-H@SJxTOcf<6|acJECxx1TOPtq%5T=Pl?J@s&bXAY^5t- z3Cmc@a+b8Lr7dY$k}v9Vm%MyW7}Mf_QrH6@W+V$5i2(v!^uriuY1|)wNR1Gb0*K9Y z91=O!!9VyzgQt_?B7xONEsArTykz#SLea!yfqyK^W{2k7Lv# z7~f!AG3XeAKiE+R_Up$wYypgP5bvKz%-QdP(LIml%$wizR5;6t(Tr*|Z|dx*M?ZQM zcBbY31D2?cJ-E?~(uE)mNbkhq$*W!AZ@BspL!ILero|mW#mzpiq))Y)nriZs#m`{4yjgktoOO-R?mvow8{#s zY;CJL#Y)z=`o^qkt*c${dM3B(b+2B8t6cw@8@l3ku!Jovh4_lt#J10`fNd;Y1Z&vH zN_Mi_QLJSz%Qwb4cC&AREM-3n+R$DGv!pGp(KO51)T+g^qHV2fU%L|1%67IDL#=9W zTNc*BcDKCktwv}I+~B&)wz$2mZhec~z3gqTd*2J+_{w*_=FO#c?~7kJaksmT^=ulv+dQbMZ)I4CEk_hsHH7s(%9+-Z$t3gf znuHAHD5r+VMgHb@Cp=*$YkAB5a&kzd4CXMy3&d4^uzycHU@oh9&E@j)hQ$o$I75ZX zW%eM6vtZ&Zvw6>aZkC(3DCa;6+9-6cbL#wy<23hq(TsM~pFJ|@NK2YmWHxmFaU&ey zpf-BboKDlDJ2L4|i@MO3-WiGWoQ52CdeyA{(Wf~g>R3mb)TQRxRYQViRkwQAyr$5r zHzMm`%bC_sI)N=7SZjqrr6gv+vaWj#?P!bV*S{6EwZY6-Db%70z%sVmk}a1rBU#$y zE;o0mosny+8_Hn8M0_wo54q%_7H(k62O^;g5*c9^Hv@NyZv7E^;90`YHn+hK&KY!L zWZevxF<5F5ABf9E3b5ezTJD{1{4{{y{{Hu}NkVW6BYfl}?}$CNfd?%#p$Tl@M2a_} z@QXBj<{btLH{x^iiPz$0`+fuPjvWFH*kTt$&$twb4s^1B;ODRa1S`n@0*I#DBHzXa z-nK&k2&D7-1iM&V2=4uJWMdr`M<05>!9H}ahZxf+F1g#^K9O`dV&!ySx#d6-bBoY? z?+ONsJ)A)sXV61laG5u^H-7b_-wfkrfy33k&A6$P1rD}=1=N!s0zoW35|$6azWZ(L z#Vx(_LeDrLB!BPDM}6{YH#5LJQsR(TC?3iX!V2EGAZpa05+fmp9%^6)xC?(w>ri>! zk3UV1$%Z@zZHB9D{Wf)fA0L@l@xeZs$m;`QFQ*O&f4#xt(#Wm!EJDqjAlWBuxA zaXhzCuyeAUpcaeMcD>0$@tXmH-ef@mzr|l=M|NT!5f9g}1~pLs13th9p`m;GHbftx z4+toMF>pVVaSbaFKp}w-WxxZrFbgj?d?837`LG8~U>#}Ug%5zZ%r z&E*-9CG1)p2vPm=QiS3bw9TYPX`DY2X(5~dF97+^+p1)&~F?-enn^&T&I6Y zxN$sZb^-W$9?@(B*AdH914V!clyC_PSQ+VH2bv}k#83jy0D>72flWXOn2-vQFf$Z^ zhHB^;5x9VFND=*@3{ij#B1nka;R_}hIqfiaM&O2us0B}OhZ+Hc6ETC82wXLYgEy#s zZlP`5RsiwGIJFQ65CDXrXckhKeo&`=Az*Bs*NL9D3lI*xScuse8tvc-CRiQq z014md3M^PXFX)HWW{K%YT9}xLPPB<_VR#|nfBm*}i}L}ska0eU7EyP0ocBMt7y|Z3 z7V&t6@@ET+0|)4bf9U6QWl@l20e&@hXQJn&98DS@gc4!;Kjnl_U)SqaH_4P{XO11AtUAGrydaC_8yxQdseUoz)+Jipggy*0#*Qy62wo`A$Mv12d5SVo2!_LJ0#(U<;?90~BbV_&G%EDFw%1 z48SLtH87tJ5rI}f1;C&RRUiV{U=O+%m}ChJE071r;0wXm4w}$`yPyX=pdiZP3>PW~ zz~BuVhy%dT3}s-9{(uc%01Uezma#Ao{J8?a5Dfod41qbAl2D)xu}muv3BYg*Fi;5& zWTnGk4An@PVd@duP; zb-SPnxY&?NxC^xqk9^8+Q22dAmv*U07N2)-NGEpB`4r4{VtTj{;=q+AFbfW$k=r?l zy7vTBdJ8S!IJZy(rqB@i0Hner2{GXR4GjSghMA!a(3Z)VV%O-ZuqvyxDwJ(F5fO-! zIrgi?;Fuj*J-F(sqv|`FFrpD?s~lPb#@G-kI!(HFPYywi%=mx}K@EX<4!d`U_COEp zS&hW-0?wGCv7jstVGrTDfV!GSP@0oLDG9*p4;!dyLfHUH=?!7hreZ3v5J9GNhd5`t znN46w=J;Z8>ac7jr#MKbPco<-S0bk-dmqsc+E4~Cz?Ws9o%qv{p}Knyp?eK9vfG&r zNU4-7Tdxm+plzA5Ec>e2(6YhWo^zNAoqDt06Q3_DtT@?>NJ+F9N|xGMvf@w$Fn|S@ zh}v6{Fkt7);|@{1giYa(Hh6!@tk%bg|b5bMgd{NSuEt7|Qb zpfL-o85+4Y+p`f7vpwszmMg7tFb?HV4)f4NMXPJ@`jKFIwDaH#XPE}fSPY>Xy4@2I zQ~RpV5W1rK5B*~Uwh#>Bu(c`cvtL`UJ*#_szz(@PPyUb&khubl$+poe5!~pFX9@|< zsE8~m3<3KPpBWK(3%*aaw>CJj_;CX2mwFcWxA<{oUO0@`>6n`E0yZlNBkHP&o2~tz z2_?WokzZ*1QKB^ z8z=+ZE4|v-4~O^zk%6XDfSGf<1Ij1F%on~<>`~+Ej#097z*DH|yS`-=xEm3SBDWD6 z$ODu>3BOmvsJaD4Dg=qEqPu{qaxk8YS$So!0{>f`#`dG8+QIo+1w2p-@C&L=bjP-k z$B`q!3M_|o2ngQ5xp0XOef-DvaG~xw473nHMLUw<{};1vU`>%A-1~JOB)=@OuN6Ml~P>tKbc@+PkX2mBgyUB3lC=x(lv=3;Zw% z2z8-PFvQLL5G1I?E2x5V*Md%bw^EGFyhO!0xW)a|#Tg-R6v+{Q$dxsq1kiguLI4A{ zkg~dG2^VStkw8Pt$e)V|ln$W{zgGia@PG&^$s$<^ImEU8kk1In&nO(snhUkf*s~Yx zL?Ky~l4F(#I0YCSwGn6rA&JW~4I=3T zz?)QzU3|xfd>`Sx5RuJO zt<7K2j(pqy&47hy!Dw>eEVaAW5X*9n{csUayb)$?a!*XT0f*M@$`QumMBoh96VcX7 zErN3A)Fya2P+iwjP1S$hMcZ7yS-nVXhp8)3!ZPcTWU|(F?bteUa*1GkTrdktjdy+h zFMzGtC?wc~4PoDm5wVA3Fp=1m%h(kB*s1L!aUBv-o!OfW+w9ZXo*h>Lm}Dw55z6qeq-FnZDh%P5nnu=&duFh z2Hn#Q-eyzX)@^0jT@m5zzTK_fO!nR3?cPW;-sC++TMfqRZQnZ9-tVp7EEC`IJwAqw z+4n8~;G&h^`)%MB)8GC*HyAtG1Mc7zR^SIN;RBQ43T|rVT@i!(;2UmT5kBD`K3rCP z)m3ca^NryYvE0hY;VZsd9uDF!o-Gw#;#+g#6QSKKj^n-M;xNwR)FR_Et~$^e66np` zId0?x9^ld4<4bNWKMv&dLf_kc@+jxi!W;)DIf#R9lvgT|aEVixUbMEI`Rp)mu=t+|2dj2czTjYPP z=vo!%gYM`=Qs@DRbd750Pa)RE_@Vo$fMPe$`xV7CTt!cQTRbt?8-0QJn7o z>8+k2kuH#>E-Y>i5z?vZx2{pF?&`bV9+7^iW?=+B$9~3!2WA&_r#E$IXM{n>ezG0{ z0FLX?K2EyM>(!1apkA6fr^S-)by;^a#>Rf9_dvl8blw+vKgbH(Ug-=T=hE)(SVZmC zF7L7t>2NUV+oq3r`anV_c7vLFWWjjB>Fl3E>kpyf?~d>z6z}uS@JdrGBhJlmp>6#p ze@=LcRCkc&*LmV6ep$DQ1OMy=?+__&68I1YE;!D&(C0I;JSz_p`mop@K@0^iIca74`L9*U#RjG(U)ag^dvF$CIR&z zVGKDhCV8J7)8O|UQTM1l6FYD8LT??qhk$`u5yn6QW9|}yfA=B*`I7IcaIX<>ANQaE z_#7JZl=1nGQuSAF`dk6)3aNCp;GFfi^WRJ))Ijr0Z;f+55p3v; z{oo2wuMxUm`J*oqd+#jBe;LSs^cr~bxj*=r!Tc5>lsq33Gk-tLp!92~_@43nDG~l9 zAN?7@`=K%V%5M_aFZV9LD5Zb;@gGvyKBqd!e`b*f!jwI>N63XNQ`^7e|+* z8a0@jBo==KE|p7-#UIL8rrY=w^9QPS;FHfEpW>^bKLhX6kH4e4J8_2k@^JFNBMn5e$oM)m z394vXM5#R{*^8r?LE-}n%%MbV^UGTRnX-~B^*jm1`qH3N$rw!%(na>pgzHg94OC3W z82MSGt}*E&^FT_Qgz!H}qLflWF;VOkP^Rju!AmLU^AF7b#(WYJEjZ<@R6#}KxKS}z z!+di+|NN1V1XWdH6U{N%q>#-OcKJ{x2?cCVmnmy-)7F#Fg3-%m#YBlqDns~EUu^oMrqk(qpN6>s$% z^p%o@n>{}6$$mg$-};)V3!itik9eAF3~v=@rY2oUYIgefCM9Wd+%gGT3Wp!G2rea$ zD`4QtP@~4(3oZ$gTItf3I=ZnAfv-X!h0>HN#dPi_3f!7Me8D-oRnJ`7Ggu4Lg0Qq; zOolV0VGV6~LmcK%hdbmUW;DjJj+IP^LnLDV5sP@Tw45gkEOUy>?8mAQMd2AxtdQQS zWD|WrZ6?(-9WKU#7MBSOP*rnc_g-X0|5VRPcJiXYzM?ACbxVs^gjBI^w?e>ysCtW9 zpS!BWFFM%+d1e%26sM>=H<~B_dO(H0Rx|awvtYKYzlz*Maf8}=y)l@ zhZL!Jq)pKWD8QVX_-f}rOcq6f{=iEb+gCQI6_T1`dE4oUq7x0x4}r)Vj~P*;8|7$6DT2hVn8773$%+&CxD`zC>WuS2iV9b73#qm{^9=TiH@jR1ovk>t!;j0b~+XKUu|A z;p?wBy`w+su?SmoEt7xoYm(~2&Y8FcSY$OOUkW-Gv*<$yf;E*ri~$tPdX}=!I47<= zm{wPcs!>^tko(4plCY*prDpA3S=n>7|CiQPD!imqX+3AHGsTCUVO7;hsoK1@&1a{` z027At*-txuP_0s`1Xj01qnk{lLp42Ucde38%TQFj<0Wr-&3j(-ruQQjz36W|`d;|P zmt-L2%1f4bPpg;|x4L8PT3Bk6aHa`pG1cmZXnI`0$}xG87;sKQ$=?k%QfUYdr9A(e zyU%vgn0^5YAD4PTJqie{EECvNt2#&P%A`mUjwN2DBF4L97$;H`WYsRI*rN0oP;hB$ zTzguVuguk64|egYTsfm8$yh5UQnG++$3NrM@|H6bSd*(*1IVsqD@`_PjoBl`{_0pJ z_F%0(W>A#Z&X}|mHm!rBX*Es}|3iTEyr$oxq|G8t&_pGUifvQ-wFbla$G&yZijm=G znZQ^qi3=Zc=cZh?m^eQs3SK`^QY7udqY1U@Xv5a=~kB6VV+hBiKDnq61Q{@+6YlCei{&86s{pcwi@6L(b`^$}2#al<7 z_O@`{q+Ex@&bv}5S$_%VR>+-TQ8w?}g)NpT|8j7rHbqtQzFQ`3CF5bgh!(mqMq{{V z651hVkUd^!zbnmS;KD_c|Hh^wQ1z;_X}VkC8QNp8x0l>QX^}DYu(VA6(ruf^b9IW8 zHn0FrY3TNRpZK0|)%1DOp?J0u)9^K^t)3E7W98Lb=X%$@{&lcdEY?7r^{vf*c3S5e zD=o2aNuegXt%%ShCnR*^JWbncPkIy1x(ZMa#RR;M|g=8F@}?XxiM@ zqDM}6mmDm5t-UEp{%5$GXsP+a2OsEhSHC~Lt2?3lRz6R^x<5Z2hL=PLO(e*n6v<5j zlYa5(;jU{R3Hnd`{~ifvMrIT|B15L9yGo`Zh(ZVhdXe(@rTnh%cn3eQOv{_Fq^EtA zP&V4D8lCYh{_!8`OB>PwpY5@~wP8K~s6Bt^o0NdOw9z~UbT_Y2Jo}R!<9jaSQMw1~ zJ-tc26FHD^iaLET0$Ko(X}UTXG>NRcim3qm0@BDK2; z^H?H2NRO6zyI}hYFd-PiI~05=ngEH07qFl>X%w636DPqrySoWzu|fy)2|*c^cXO6+ z&^%1x1SS)UDCDPhSr)_zH_xL(ngcHT_=R|TH-I^?*;1VNU_(=(m2L@;G~9_?(ZcC* zl^|&lCJ8G){~?^`VG(BeJx^*8<6;WA0mL04vJ%L`d?~j;GKS4!7Jyj+J*+#`Ld62A z!YjO&o6!=!5TjGnLxABQQ<0Fr`kHbnH@A46CzJ{4*_B;{kr`;SM0*>X0~kfR7AoI$JDL4!OS>(DZ;8q z8MdoBfxL>}D;S>$1FHB9rMSL~)NT`fTshmoxY>kEtB8kjO ztppE>tO_N8HiOTY|F!KBKo?2U)qO2kaeiRenI5Gl6X%cjsv!zfF!WQt#e%)R_QZNkj1kW9|R z%;@?|(R7N<98IjCOw;U&zMP7|Y)#jEP1t<3!o(=WtWDdD2*#WW`+|wooH_48&6)6| zb?i-~{Jpy*&d9_+a^=wb~e9y3CPxzcq>y%HU=uZ61PyO7_hWSqS5>EitO7d)qi^MPb zJWvEpPz7C325nFWt;_3d3jUl>3awBJt*9RK!NUwt4!yMjHHsrdj|Ux55-m{^Jy8@* z(F2Xp`@B#WeNh;lQ2*S}4z1Dn`p}uM$dyr19_>*d{ZSwdQX$O?7UhW;JyIl1($<_& z8*Ne#RgJj#$|0RnDy>p0y;3Yy&mx@(CGAo#{nCSEQYRhL8--G}a7>cQQZ-#uHf>Wk zebdO;Qkei#I;~SXmCX!oFB&CNJ}ns>or&EvP&ge_LM>E7Jyao;)0MbWMr~9_{}nGW z?NdoTA~WrZUF$VO%~Va@R8H;G^i))pcvMjxRZ_*FNS#zvov%vmiURdiSAA7jja6B_ zI#5lCQoU7N&DDoF)l}`(kNH!X2+<^*RbnkxV?9=6m5EwK30-YgXMI-I;8kCpR__2- zmC(_bNLFp#R&MQ9LS5FAfL3uGS90YHX{Ad`o4r|_|IJyQ-C3UP zS)ct`pbc7~9a^F-TBAK$q)l3-U0SAXTBm(lsEt~wom#4`+NZToBlTFV-C89DS&4vy z;V2p5AP$o?JCsEUcSzfNPzQHl2e*A&xQ$!6om;xCTf4nmyv5E$DKfCKE{g@RxXPrwd>{}2dUIF8{U-|{Wl z)8(kM%~+ zCu3!tkU>CAq4c_3X#9s$K4&(@1L5L0%*o7(pVD)Wa=I~$XPzcf$ z-Ghi=_?lo0u3;O#VH|Ez4&GrN)UId1S6MzMW0EFwn4&-2k5I6w^Zs7%n1+ry` zhLGWoqTw9AVl2+$`0ZgX?qaa}Vd{+tf#3!Hb&eAVVj-@Dl8xc*4cq+Pg(;?DB9vGy zu46mC;|lg-J>Fwh`(Y`7;^Ke>6bM`XWnqZmfF@?+Fop>J|MgxurqtBMV@aN5O0HNw zzGO@`uO9|m(`DpZhy+7E10pVnJTT+tppNMXff9Cz4`>A9$bkNRWJpGhO0H#FzGZFA zWL@56i1K4#Kw^am0YHf3f&c{UP~s&{8a$ZnwK4)~s7;paOCJpCuerI@&=jBXidambP%~M%p=Y6GNtLCdwP%QqXxUh2eeO_qmS>F4XpM$TiSB5RRt<`- z=m5RwjV@`EKIu{WXq8@R48@Jr-BXbUXF5h{nyzV^|ISF3&S{&T6gRYG$2kulDGww(7)eYOXG8 zv##c^PV0ycYq8!+vOa6Lj_W&CYr3Xqwr=aJd~3PhYreMOy8df!zH7XWNWJcB!#?cy z1#HFMWx*coAuMdfj%>*u*u}2wOKxn(4noMDY|ifNZMAIB_F~M=?6cc!&pvI`j@8g! zZ5|$N(neicj*DPu00F3N+rDkw&TZY^ZQkx}-~Mgj=4~TTgv?ECOPf4u<2dZ#+)!abSnE-EaQxZ~y-9v}K2JkOp-?iP;VYZvb!wU-11_hgpyT`X+Dl zo^akzuFc0(iMshN*VP}|fG=K7wumChi^DCEdEst}25ZFI9^jsmXeFQ;@?5A#cZb&SpQPgihG_w-p;@K6sgQr~r5^=6Sx zUt41i2%d;Sj_Flzbz~QESYLL7mGxWq?^=KM1<&mUkMgcZg@yd$)yPwq9Z$TU5`EDi~(um}347VX}n|W2SiYt@!0o z;}#zIu;t$Jonj-v4mXxzfhTyH|L60Azxi!V_;z1-hTm_8FUW`wdOH1K6tD$k{@++` z;SY%A4`2o2FoGa1_7D(+ur+4yefd;ph;jdS=?LHu;9rI4cjGA8VaDF|o%xzid)&r( zwntW-mv)}-d3X5vrxbd-?^196_~-}$E{F~$rUND(_Emo3a5caFseTjBtB*oO!sred_`Z3f7xb-;Z0&H-eAh0gzc z>Yq<_vWn7VL^o>+(!X`n|7UpAXU)|ge-{nu82$iD;01wDUxC;KWFCBBHu+*k{AEt% z-}n7Lb_j6~0Yo-?fB>W_1i^v^4W%cyZ9$Br8XfD9>e zPEJike#Mmx%=58+Cx_0m4#p`UNg}i?M z`n53iBH_Y@4?SXB-h|Jg++L<8LfrNG*K5H`UNkp_k^j@;mhT85GzFPNv+Z4SGhgQx|n zAP8IAU4suVemr>0Q-OxWsS~|OMc`hd*MRFAdyzON)d$)0C;PAd{{tAHfCCa(pn(S> zn4p3Qo|OhZag?Q0gB|fBNhKLQ7-3R!0oEa4duh~{ha=`Cm{g;on4*d+ve=@FFTxn3 zj5E?$V`rwFw%Tf~K?DLT1)X3EF9d;b#wN&}fE)_D+;+ls1O@hIkPCaEb4+b)2gW5dsg%pcM(a@REIs!0& zOh)~zhZ86M|IC9+TmB$QsG*GV$w*uA%n}bQ^)1+`r=Nlvs;HxqTB@l9;va*Vn!l%sLda|)@5Q;HZt3+v(G{st+dlpTdlQ) z;i%(|u4QM7w`EdUi*P}HE1a3O_(tw7WfFH~ajh%|q%B-VM^GNHxB(`(QtaYwY-|D? zu)ra>85MguAj67H`w1XlI3TseXGjqX&;@NW(FBqr3JVa+JXBzSlbtu^1QG+nL<5q? zFO{Uz$^P(%-l;RwT(iwLlIq(OR>;L zvQB@vv{Eb&izHv)Bi&cAFdSEm41NOq0S-z&6`Hbs$iRX@e>-#Dx#ypQ9=hl>r|M@% zJ!1$Vq-Y7%Y7KD3MPfX)tnv&!QA-`-i1)Z-PAUipqYjB%KV`P@$0MJ-^2;;dJZYw- ztv0~jeJ8i|*JB?y-A^6t(?}7=X-`JkWD}_(=72m>Pxi!oa>fvoU%n?IsFz;J9gFYJ zKW(vs@OlCuEM`C%9RUkyzyl&MfeQ2o>Nuhg*sbnDMB50_^g))`d8iq!SO)KSB`kjs z|I0({P)9weFau$Xh5MH327I+1nuxdl;VWIR#G0uv|#o zLj@6_3?_h+n0*ZO6Zs5EQh|d)$*B0h`gQDmllvdTHn+epf-#I@93vU8(!h;8P-$n8 zAnP0mL1N4RgMcZ`Hd^s34^E9&%|HMYY?s2p%rKCG93&wNX-FB>Fl{#+Pmp}$!$(3g zk^})_Q|i+aDu@Jdn2d$wR$@fW#Y7l1aUaPZcOMNTu9Of92NMx?5|VAoi)EZ8Eo*7Z zTaK=D9%*3DCa4i=K+qT@$RAR61(*@iV;xR=#)v)`Lcpwo16jyM)`kbjLt-K?#Ni1|?IF;q&az8oQKXigc0d%n^ zQDlHLRMt;I3F99E+zBol>d=QmG@=GN<3@fKv|Ge+b!p*9g*K{>8qjKK$Wn)|fYl*q zjz}BRtR}Bi*pzOxy8@!$hkWhv3KqBX5*UF+#oClq72ss)0OpR4G86|14!IYgwSO zHM5%CEN44w6=MRHuOJMq)~=b@)1o%DszvQ$Rg=@l!Zx-5i)>OZYunr67PFq+EpL14 zTg`%&w0}XVaQ}Fs)gm{!%3UrYTPr=;LN~fJE_b^d#^4rLFL?|v zURs>HoQs;*N;kgpMF@3|g5CS#x3b>dFMs>%-EzLO8+)sjpG;YvBts^uHS3Fo!$*p8yxw9Rv>XUCgT#2BSE|Dqitq91LFx z!x**{E((TgY-0g-eOt6THdmWlM?1T<2lcS z9dnucyi+F+Ma_b~?VAg2=tD;|&f#T;Gyl3}cc`PzNYOK;D{blKLN9s`_A{r+3231h zVbG$UtPzxk=u@LQ)d{QyI3DeeaY$n$QkVtqwmb_dbotV{-Zihu#^+80`;njSh&@U% z>SMEK7OGx0vzy&Hc1QypjxI1ez#$EFY~&Xln1wlntd3wbAQ-vsHMz@eZfE^E*y_&S zussrtP$N6uA~Av@i0SNm<2&D=Vn;QcAq{^6{NDl(IKc;Q|8Qqi1KS!A-!G(Kfrmpp z;u4=Y#Un0-U)Z~N=iWHSI}RfkLm=cLA34cOZt|0(Jmo51Im=t_@|VLr<}y!tyE{^v zTcSqaI^Q|Z6PR(Utvrh-Ro|5n45j=dfz+W`)(At13vH` zm;2odZ}`KLJ@0;BJmVXGb-_bE^1LQI;wx|Y%j5mbj^8}zJHL0ygFf_lrab0LZ~D_K z-t($oJ?ncc`q#t0$fQ3#?Q387)VDtOy5Bu_WAFRl|0j6%wjVz6!H#?0BR~1dPb=`7 z?|kJ7zxdLh{>+cR{Oe;s`(u1Q_q&hS=ud)W(3E%({pn&Y(0U{s__22(7;P3@t0YYE|N}$jsUR6Mjap;;vphpA}S)+2_hjnV#zIHBue5WQeq{_o)?1CBWmK(Sz;%8;wOS) zD7qge;#AVrfD%|i2yEgYief9e;w!>pESg|xXc}wG91b*sD0~7dT!Id)VjIe0Fbd-^ z5@RuTAuVd!Kgb*oe1a%A<0pKADxkqHhM_T9<27PqHfm!Oh5#-)<2N=!D2xF$PN6oM z<2j;ZI#MDL;y@^%fj55RH=aTg#9RY_LprztIoh5&@?$^x<3FCE4KkxBxFZe-LOed> zCxk*GB!V5Z+#Ez3FX&_K0c1s5b0W+w>I8>#`g=JZW++U6ZP|BZD8s=dlW?}{(Deef&oq$soq)zgr zRI*%HVx>v;rBzznSCS=GhNU!^cUW7fLVrRU(NwHe1l!4W?&WrYj#6E zkb-8Kr9Jj#14ILEhFmES=J+Y*|8Np#aT+I0u_H*{ zj@%poC1#%GS7zr>&VgK>oKWWD9L$46TBjRuC&`t9T83qHhTn0@=X}yV+hWr1dBhlbpO^1^~zgi4YnYhI{b z-X&ie=#Prrf#N91*`q~dW_*@tlRD{>Lg{Dp-vA&&Jo01{NG2%A9EBFCcs6K}UZ+?p zC{WI5$!%zc-lbZeDTR_}|B;gER+5~J{$G^RX`R~XogT*fnLr+}C{Ko5Q+|S$#@vU> zrb^mlb#frq}J$zk{qG>AD(*Zr-EvUf}aF%0YaVv zW!8WY%$#U?=c3}HR+TKfbq$(;|Vk(7-W^VRov5K4` zKqrWXYO^})vmz$=J!U+*qtgNBvWgt5+M_ExgM>n7SfZpv&}z0)#8)QiXtF7Wp6fNF zE0A*Oxr(P|N(4B-CzC?!z2a-WRwVe9>Nkc$9o*fQ#;KSRW!UNK!6IzJUSsr;s=tn7 zz`|+C$!Wnpox)n||HWb~D1x5}AOa@XfiD)Gz;YW5!&p|@@&tRAkOCO4f^cR5^d3TAJ7JE3L5RwGHugB9?~YQ20HE3 zQf<`^-ifMB)RH3-Vqw>M?b=ywokFeF&S@2X?b)I&6NYV+jxE_1re&mU+{!KMtu5PP z?R&ZHDst`I@@?N5THQiv+vY8^!mZyL?%|>x;6AC~4(nuI-{8|L*SY@DeX)^{(%#t}+5IFbZ$+I`8vJ)bWPs?=COqjV|-+uNXEj`Lb{OijMi7Z}O%u7>2L=+VA}W2>i|``p$0-J}&+O zZ~)_s{>mr+_OIR5uK+9X0>>Z$6DQ8rfPWtF?if{?Ta13+J2@j_rp1>-I@If+0w-%N?m^_T>)G z+;mED|Kn1z6}xfvVsT<_Bs7WwB~(GF_GHLOKoj`E2d`WiqbVBma3TILR479eJi$h+ zgBBq28#^-j#&NU~G0Pc2JW|3EJggpL=_gRa5wIK}m#H8RGRmdiAt!Q1w1X!!ffTsI zBfByjN3vlqAO-O0H%24KLckvDBrACGAIGa^N+hEaDjExBIP}4JYNlt3C0UNcxI#b^ z4<@$iV<|T>q~t;q7{M~U@-{zjEX(pFs~j!&=`DvG5=dqys~jLxs4xTQ$nEf<-sn7d zX{G+9SzhZi$E&gyEH$6?0#1M+u&6FZ;}LXl4*O)hvTAw`^H5S{ z|8~-_HRoK}W2^8%zNfumK~_bUmo@9B4#6Tys~)^hvWp8_YCM%Qfqz104KASNJqi8gx)w zX&v9OLptX#yE8scv>Ti$K1-xlMzw?HCRzq3QBpGyT=NrTTs=5~7MKDmUv^hFgG@h4 zKD+@H2tz72K_#F@JRE~O%=Kz>o?27EALw*dVkbx2xr6)>@2yJ|jG^ll&a|B+%e z$u_m6I`c$QGZrxNqHu&btTHjhv=qq0K4^hxi%(4NfIqauR^t_Gb9du)c1srnSIo9i z?zL^(vKPY~AP+WgyJs;Fb~`WXMboozYwF0ZF*WkDKLa$(+;o5U_e}T0T3d4yWOhIJ z!cD`$FLd{U`&~M`L4Qkusa?f*$K(QHKthM4LiT51)97wL^JxC&IG`qo|BJtPAwPvF z|M*tNbw(WcDHEGki*`(h0Y}V(G9b5TC;6XO-FN%9pJ#=XzvTN-03uwuZDWETsA}mw zXZm`yKP+-J`$IEmL68r{fpdZ{xU@%THGu>AsPEiY`*(j|ccB}4OTOPhH{&M&tn`U8 z@J@O^95Pp9$b(0CM#O_MXb4Ml!5+kUJ}6s8fVQZUda~c!JdDFUltZ&W`#kWDs;@dm zzF)(NqwURscg}&D+wPvRf4_B0Ysiw{bXOZYShoQi-1M$1d%W{rwP)l4)&MTk z9yCXD|APCEKe!RpIHjk;O;5oV6uU-rHg#u2J@|r2H^CS1xV%fe|Ju^KMH=uZQz4rh zNM}m{l<(bLPkhK9Ma5s_#bdn5!gyDZ_I5Ac&58WW4+Y6vJUE~H+g65xu#abNp3CbG z&%^x7%ly95e9a4I%4fx~n|t4ZyhiZ6Y5e@t2R%TVJkc{<8yovpZ-F*{{L*KH&-?t- zi+t4o_Qdqwg<2$pydgKR@(KKdDoH?<@cHmtOYs-S%^T_mBGb zW25zpf5?&l)^9)h$GiG3Z1}go3)g-KKEM3WKm7y5IDrER7BqMeVM2uq88&qI5Mo4$ z6Dd}-c(LF=jsNU*^!U-j+9dKGI{ty{Tv_4*ZTSg~WtmeqO_ZCbT!*|v52 z7H(X*bLrN#dlzqBy>Fj_^eeJvV8Me47dCvDrCPI#{~0%SY!vEa$&)EpwtN|LX3d*9 zch-QsI#ItGFwtX9>V$ZvI_xAl8cyQsvi5EA1d}nLr z%b7QK{v3LA>C-2^hTT!NOb1H*kkNq~e0cG)E$=|2{Z%`Sa=5w|^gh z{?*p6XNNfe5m7$*M3wKxI}pJHb4v@p1|575!U!dtkirTX(+|T8HQbQH4n1s+KiK?p zNdhiJIZ;4R6kL(T7R$2`#u#Osk;WQrywR}_b=;B19)0}r#}NOTi2^}TJW-V+T3nJz z@Lt3b$|$9rlFBNrL=VU;wcL`+F1^%CNRUQs|7ik2J~=WJC7WE6&BC6%63#f~oRiKv z?Ih~UJoVg@&pz`EGd3dgI1|MrX__M(QcRj79XHy16u~#|oRrc^Exi;|^ZeYD(@s78 z6gogX8nY!6k5uu{L>Fxo(pJNhG}BmRot4&FZLJE_Ty@=**IwBY6+4Zl1( zMN4ATQCFR<4OXOpnU>mWt-Ti8Y_;8%+it!67Tj>f9hcm4%{>?0bk$v#-FDr57v6Z~ zotNHv?Y$S@eD%ebDqsEm7vO+<1vVs_N<Qk z`-`NWl3Tdf(djP|LB^PVIC=hVv;Fk9C9G2d7xwCN(7qiXbBilQ6JjjG2;M)eV<*hM<9HMk+kNhMQGV(Z5lu#glN%EB&o!}R9 zKKH%Zw>_`fZMGQ({ZY|Te;)eirKi>P>aD+ib=X;=V9?odKavtPTk3rzmLb4-9JkRY zNchT2a#FvKC|NNoE|DON;{nuD~D-pmd2=%@18S5n%@SI6X!MTxKAZHLT zUrF3|k~ySreru|q{y5k{4}MTR{}bT|Nyw=Hs>BEeRAGuRHRbc*hoh{ayf5ANgU;fFhX7uT83QYCOO$jL_!jjp%mp_Bzck|u)#=` z422)EhDlc%W{jScchFPSzCXIIW3IZJtv++yv)3+1XATkrSTr6s0-Q zSx?)j)1CR$=RV;hPk;V%jr6qVKqIC}ejXH|34IVi8QM@03Y4G`6%0NVT2YH$)G`j$ z=tf-!QHg$3CKSc!NJ(1KuW%HlDdn3-LE6%mh}5JpmFY|wsZyKX6o4Q@BGg>k)0e=M zra=|zP;-J)qaKx4EcNM9NdnZL^n)2hmFiUWiBzjzbyG@Z>QZ59k8L=j2~C)S6y(tl zUo?RaP0>aZo}iO_|LlPZrJ(8=^O1@+g!Kz@WsEY=s*`nSfeN^oEA+5hSi^Qnt6S}< zNc)isytV-gR6vG3l%WMvY#G<_h9)3^4R;l7SLVSAIAp^o zd|hojT+sx*j`nni)$MM1lvu^KRHXZ80u_Xj6MHlR89m|aW{uL>&+=6Yu*Izp>)}{4 zxOEox=!$TiAYGm;_p^=-!*o%{Tl1bbL%#j(M@8yfp~w~~&iyNK$?HRYcp|Vn(Qa4P z(S+{CHnjd&YjpQpUt6LV!3ma+de>S$v zodc(5QD-fTx8aTkt8G7?^3bjW3j$Yl81{?ul#8~%ItMru&YWl?r`#0IHZ-?e9`jg5 z9O_Y*i?A)OO{eB0A7HJ-$5#yBe$V`p-_cTa^8q z4Zf;>!xc-HJEo*wdCRAT>Q!In z|J7B^2TpgL(LtAoP@MZ#B@H`7o)y#HtP00L`4>#yoDVnm`aD!5&5s4n*M)MC|)K z%K)2z{6Gr{5TO6Gt5Vl4T(^6r)JkB3#|7`|q z@V_do3E&_Pyg|ZN3$(h6woa=NLg5V(4dLpJ2Pwq@%g_ulFarrmr1D`EEbI#+!3w$V z)y}F3VD78%$`T^by_&GL+R6am012943(`#|&guz9ZwxP{AG84v&}<6efDoSx3$y?U zAaTFe;Sd}#51G&(;z1eMAgl&aC$_<~Kv2S%>#YK;9ehE@9?|=>uL=Av5%0tdYmowl zEd-RH4alIC(r|vd>N3oV|7P)nIszynuqm`p@`#a6Y|$AnkHI7W2?U{WbjKGni1R4p z%DM{~nQ@(d4CcIXPM(n*qfWgfzz7IMcNX9pe-Y!3gVfMW&%}|P_#qWG{|o`?F=NV+ zAAwE1hUHAwaY@Lh9TVdnjf1bgpu_aBo$jj=%a0-9q#q|T%+zaf1jG@lhbC9TCIbT}bMhp1(kG{qDjOsyukx^b>tN8t3I^p9GO~r*W-y)- zDoa8ts}e2K@;tDTEw9SA7C_K&hkyiRcU+<=-)10$=Yj#d2&GNP@;;Z6L^P%;syhW@{#37>Wlf1+y?i|5G$I12IcerL>B0 z3g~+hCMImM0jzZ^E$}%cTax{C>H<80MgL9*l3I`YyMJNFgFaZ+| zp%-DoCMU>vc)@I9(}gq>gLKm@dGj~7lRJGwIKPvjJW3i>QxpnhFl@3E05dvmlO(E> zVeCjfKT|uqlRoPcGr$u+u{BARMSuEXk*4L~@#2L6;&w zBXpbu$^r0zJYy0--G)8Krcv(FHVJY%v6Dd`ltfE3C?pg`sfnJF@{B7nM;P)lnZ6QX^GTCzVnw)lx4NQzx|* zoB=ENG*dqnR6|u%N0n4d)l^RvRa2EwHx*an)K%4pp0<*9>M~FDbW4o_7(_uDZqH5Q z#2)w*7_1^!cePjNjUJ8IP((V{B&lpcz;PV7MxICUzl6gLwD%iDM=j2_*|CLW!HYrfnWTQl7jlyGJ_HRHoWDAK}3wC8S)@E)?{cKv}EN_Q!!fpmA`bweO^b3%AWHw1LoABvX*hT?QX zpmqHrbd^_hpSLFzmw8`}c7cK#VgPchB6)L{#c)@2w|9KccPDOFbf?#K2O)OLSADY= zep79Hu@^=zHz)MBa??Y9H5Y(8g>yUio(9(^c-9w^On6I|7-E+ij&~=tzj(g&Ex2}TCm?z5kC$x8sZ-I^jS%|MfkcGmI-MIG>87N-&jWd~g zA^49&;Ef5HMzC0mPkC#-n3cH%jKdf)#u$3B_mYvm29&RCuaaotG z_$O4DD?(Ut|3Gp1_$c@x4tAjml$d(mcPEH}k$D1?m-#33;R9m9bg#LFZ}^c1!3+va zn5mg3jCm`p8DNn&e%ZMv)H#qz{~(hcnZ?98h3PqVd6`#_7Hd;Ee^>~(WnlDT`m)408*IK2JgyQ$Z_%R2<{H@(q2 zyVd)$E4aVA8@{7^e(C$Zr@OwNn2z&%l==I%L5PdX8p6%`Z-)e}r}ZYPf@k%3r({*&ehyxk8w(<-2u7+{BYCn*rH(54?~SImLZKjm!5BX4k_z8nNGZv0+*$QaZBv z;i$8~ut&HbOm~D4|NOq&xy5^U*W?++%U5?%{It`#o8PybBN~HKcgA@9qzmkH8Q8@? z%gB|OePz+LBkX%;o21PbePck)Ve7CbOK~e%LY(`iQCF}^`gn_Xc=_DSM;Cjex4`9l zbRD?RVN1{R+Z+%0~y22+)ttXd^8Jlq#y1>vlvSYl&Rk+xZ zS+Q4FrbCyOUpS)q{Bh}8hmW0_Q`(k$SK6~-#(#Vez_$ShyZ15~%jNrc(-+hi_l&FH z#w&QkV>+=J|2NrpS(1@jzF+v4&G@)y43v*}x*Obgh1l7ndfKbtnprrMz1er&JlkGMO^cfBSQ z`neA`-_7|0bOD(6i^M_Pbio&xZ?EgEH_5YHumpW{0iM9EHw((W;dOk!`rUgoAj!O4 z$Wxf3d6&339I8$Cg-sdanLXZTJjTU5onN?&^Sz(#xthry;HNy4Tbg%yJm8IbhXa1o zVO)E4|Jd*0T%%dsLhQVl2YkNCo51mVzx7+Y*IVI#*?1NH(gi%eOaH)4U%?Ta!CRm8 zZ*BL*JHQQm&`I9Z;9qQvi6bx#}H@140FU3m}p77C!iY8khY0U+>I zspPMqKWZAX88q1M7Kw%Umf$i-Ervpa#7NjP$ZwDtbRj~D4Eb;&MT-XO-GX8-zPrWPzsR|BgKN z=;Mz-1}Wr_L>6h}kwcC~8fvJi*4vX%Mk(c#R8~pbZ*Spf5I$1;7Xo?tS)`zU10onk zei}({ZA_MDldQxhsP?O3@ zXBBqZdZ}^W5mP8eC<#TTqK+n7ta%+JXXCRbX*rg(&{k{hwb*8>?Y3)C%N3H~hAZy4 zy5YHEYvIb;Dk?kZ?|a` zJT_R0+a=dkjkEZV$zzq~V&qm~zWC-|Wy$&HpocE{=$@|y_vxsouKMb%x9+-Oa?hQb zZ3AQ?$|s`Oj=S!;-!97Uh7>OR@Wjh@cv@wXuKe=MH;--dVL31T|Mb*XFC+9;y{`TC z+;{K&_uxks``mTUhCw60r?39{zh?qU@$koA`0*-QZ~y)H=ie3fo$K%a{{XBW|7sGx z0vhmu2uz>?$u&NAl}|S3OJ69ofIjtIf(z<#!Up$>P*!yfu@Fb!nV17j1x-<^U2f>@s+jDWk}X^=J- z7zYVgQwk8yW)A6a18cCTMF=$D8B;W&7^Q^5vfQwSXiTFT$yT~Gy77&01j`xy@xwaW z@s4=RW7~rGuG$pw6Q`JfAetx&Oc(+Mm`L9fWitU?kV7|I|J-60$4JR4m60rSjH4zu zslQBSl9QkerS#^g$5NW|l&DOlXZU!UA;PAJqBvp_MWKo+w5E2VSY&KCcnwHSay5~x zq%fg$$!Td$l*mlx^z7luV=D8R&=egr*`ms7TJxIN%qA=8W}83C(ss3MO$(B!%h;46 z9HcO3Uq~oI588qo9^{1xNyx!u%z-Z-Y|TCSq76r`hJ))I=J1LMmR2|;ng~s(@|@9% zw-{8R5RK^O7)s4-TJ)kA&1eF*SsGWq#+!otL?%A*iBK3~3W7*vE;rc0UbcMQRZtvX z_$FXZ(5d zea~B#k{W-28;%raI)eiP<#j5sh!plyvLNNqmzqt-Ba9u{(-rPA7Q!V>IbSB|W$@rj zZ;<}7RHc8fr!G=)%001M=YL-vK$37FxG|0V3p?hN>XcHaP;M&?$i^Dk58rP#lBe>c zj2E6tCGKWyd8-+ErGg28oMEt&Ov_jP5}6(KY^qxDq2WIRM)spdT^nxv#>{EQBkEUt zu>V6-0h-f~VL|Pr&a&vtb~tRTl+T_1#@uE<2NT749n+$wvc6#_0vCPN6;vO9L8x6kw+JJ+V`yxS(Xulygo_R#8mM-_MeW%G4^ z|2gSCJGt}F`Pg%vP#<`#xcjof*LAvGW&1d}`|*-tRPx_XI|B%ggcNfq4|f0FrQxRb z_84wONC%5?$oQstgj+@F*rjV^HA*kxefyn4jkT=O0d~&QuwgdP9%vt(+pT0USI?iiMiHdT4Kcc0b$3R?$;ULXc&L;IE^5Wc4Q=Uv#22v zqfxTy&0f1V7U)c$X?JzbMkTh?*!0XprK-;NX?(+(@)v@r(GxB-?^6gr7wx0tbj68J z+cf^ML-W^PYjYRn6!o}485AvME0<~cPxJlEIpB43FOj}>RQbxiiFKaCI=_>v;*!dy zYg_rqqy1RKd-7S!sKW0o_V$}zwPT|C+f91c+n<~U{_y~=Fx^ntO)gn` ztEZ-ad9QEB;yzeYQ7U&uY%)gzs)EtVWOrpk@2ARqolE5^_ihwMr@G{{i-j}ybphKu zS{Pkx48iv`IY#jYkj{T4pQlnt&!z8d*A55qWAAIvoJW1vUP|?K z5Anx!G~LZE!K^PHLhyC+uE#!(>hpwwabd!2_mSA^(^x?8=D*(V6Is<4KIf0Sic#BR zvDp{;?VdYuQqRS=jF*i~(f_JldaitM_#CH;zhtybh-P0$IHL7Et)I!VRwUOn{ys!g zDKOM|89=T1LxrdOB*D8!^af(ee|Gc>zMGW{I=3)+-FoccUK+qOF)c(YdkT82{vNEh z^YQW2W^v^+8?xEGBhpa-KTi<&wugK@ihnL1sGEXOJqJ*pgEPTIx?ROXiVoy9$JpFM z(4T|T0DqPX1x?H1AJ7HShJ__whiXv3L*_6by>oDZ{rH3xVI(JEb}1MEb8xQ7$h*lw z)K9J)?O~)(VUq+v3l5;38IZmL$b151&kPfn3%4~3=dTDCZkL&T48?f*+(-+vDn!Gu zMMfzMMBvBYoP#@Ti!i}Njx`N6ZO2!90_LWLe1>hHG>5$VL^a%mptwaUt05aSpl3ow z?Y5yB>SB)i;BA6G*ARNBga1itCMR?9xJBDSN4xUlUxo&ei~)#kktqm+=T^h_Qc(2P z0J`Gva7C#4bD-OPWLJtE|1<8`QqI6>`Gtk!Dytj2LWLn21~){~#On(w?+q5#{@oR8trQ*pKv`gY*7@H_;z~q8<&e z9;Qv1nC^;oYl^btihoTXL%W}Bo06QdhIelosv;f@-+)9%uce6Uq*6X(Q``Nx(+w|-#v2;_!HSfcY73ff#}xHT6^OwX z>X4s}iiO{g)J7uUlm{9=1tTzkPAYzI*S<&Ul4n*&@~GR7LESVRi7Y*{EMO~Erv@t(6I!i@V>||* zD4t}hm(^y6J(P)GQJLzXdLYti%*azHq@l7vuL1?*OQCjQ0qR-7hil-U@vwt&3}8&b&=Xo>!DqlPl7^lO zJYq4F96YXl;iPyv5po!D6+7uhK4m8YRVOBmJ`NotNS82Y_q2q~o*JJJfAyH zSJZllpxloHf#(b~xd!-&Bbl6FAa&sI+yuIUk@J%iOrHWx_7Fz16Xx5{aHQdZV5HfC z(t!y;yJ_uORV_kA@hBtm`V+#+JbJZh&Da^nIXKLf0y%&kUPUbt;Gbn4jbOrFSB+F# zL{YoMSYISwPql_F_9fqpF!Z6L1dviX9g3tJ3ReV1T2}+hTnnwAG{9r!64`+ftHFOV zLsuCQvrl3sk`a}`@YVfDPikrBpWwfJEbCaZ8f{Y_as#$dFs?(xl6w4Y?B@^k2A;w| z;!K3E2AI?ijr7%x>O!?E1I+++Fu!gSiXs^E2_X0y`99YqM%*kV6igD(m=%hk(O<#j znF4`VFH{9%F`qXE>82vYA&q4uyCx%L7Qk=lG}7fXrg_9E`ZgS&w9v&N;w-_r&tW7J zw=z|SULcobfswqCf(aGtUliIy_Bu?NI*KQ1v${ImLpyxu8W-&0Jc_DWn2=K{nvJBY z2Zg%#%&Xg~0$`p~q%9d6}CTP3uv`Yj7VMU}}2Mrrv+;*FhUy z2aSXtDGN1Xx{mM41Wg=(?EgP=u^B=KnQAl zFZov1t#vE8a6d?|f1S7qF&EA134V?#e{Qs2*bWneWB^APWM|jUEu6}_HE_cK`d}RF zw5O}996CIX{C7Vs<8>rt8aO#i#V>>_)HlWHL|3|G@e=ZB}3#na94zg~Z7-oHj zP~dO5Ax$;Z2lm{DxImew7{1)0d!fM1tY5{*qo@wydl|`xpX@_t{-4mk8L95Xw=r?^ z?$JqqnDuJs#_G{|pcz9K(Dw)YCQUgLs&0H_v_esvU1hi(_N^L9CHv12zUB=ZOuUT* zUcyO5#HNSM=rn$eX$s^;hAa}jvQ37mi_^hG|4!{!Kx}*ISiyKdQcz7nC`5O@{I5?! zgHY~}>;#7Gu$z79qXTB}8wS!E4YE{>lpyfh7Yie|`QCae!yrS7f1-pWX=V#NpPQ*A zF(9-dG-00hQ|h_z#_YbB+^oU$7Ool)Zlu_%=M0(3k9WH3=jU6)7uQQKhp@O`6|4cUKR z10wBFdPCtx2y!(9%9VdIfAJgrCtvD{iKN9Gq_n-F=Eyl^fQmhl1G!OJ)=pR+h05Y! zTH)x%<5R%I?amHHUDJE7Z?0Tb%*v#C%0LPlENt(o8Xw$GUk&IXrFaU|nqC9e4r!>Z z>AS5pZi4KPHbR1y^?NXLN!Ov2*2$a(!%2gZPv;)F%5O}UzI3mJPNPDS(NkXFS+kQ< z`qv^de~~5xqFzoNoMUL%ji&i7Oz~}e{j%zzypV|kn(s-aWJxI2$GDGyTe24s`MGn} z;~};!D=9MWzc%1hFrr@r?{QI~SerahQC-%*D_D~u+D#X7nk*FuH%$j>0Ar;QGk)SH#!-p$GgvUzWGzxWBVBmdEhS)dZwgVftUbxOJgQZS^@ zd4jv@FYLpNr)WR@nT3(}aRx&ggoIR$g7x2rYuiWm8pQh?NlO82#56a&dafpj(zes5 z$UN=LvYjgm6cjvZvMBz!s-6O9;DNgw&BN)6szPrg_fy_m`Sz4d+-o=oqu#Qgt_vihI$(^>olo^( z+KUcu`llfXkDAs^(i)}Z+g^~Pf|~0vLjyx;*+%`}kFQrTwy(KV4Nsy!ZpGOMV|!1$ z9z$GgC+1ht0lF1~f>;Oih$&DPmEg9YF|CGRK8cCk8_wg7u8?5PkcxU|L z>iPiRak!`5EG`!py?eE1bFYgLlGu0WmOs@l@@((;+?@Gr(f;hWht{5de<<+sbL=G) zQdOb)SQWDBf)=cSn(IQvS zL2SFO5sm6G^N;TNsmJ9pYiCPizZs&f|t+F7X;1px}%gd=*P0!lJ)r>kyENX^d&{NC=|4*_5ry9-e zh?#Hs!qlnBq-z90$okzB$M2{PvRj#+j$5fgP(D%G&dl;i+OsyP zlk4Q{k6!IF^tiuYC8qMdz{N^kzaertm>uKnj3;QPFY`wfRMs8WtXQ(t4bnKO(j4D1 zu-{m_Z#ezu2kss$lG=y%sN_Un)EY6w-d8rq#GtTV0h0H+<{V;x`blS@kTjfxK}@c+ znf%S~u+*ezJ{k>*Y>M2`$d)P-2z*h1x0(Jxid>jvz@d5>8e{g_0Rd&P!*$8}_phU0 z6O}eCkOeQhx%v+|2OGL??LCtOjzz2gi3x|_A*e~53&(s<`0{1ut5P2vk7h{S*A`6; z)o(mnS~^xOS~@0?JS*BQpBeM@gV{_GUuxzk;W~rid3DXAXjWLdq`&d%vA1cquBW4W zKCELEill7V^1TmjIJEs~HNb_mT;dzrDKe=WT8X6&%Db#u`OtWn`SWo)4}7$?Xod0Hfi0rX0{ z@zFXgQ&naB45G95sH`$fKmyh_NM#+?IWE5hY<~J2buffuTp{bU0We3*ipf_F%}X<^ zJM9oT)1P+|i_1FC(wfbRvDDRu=IrbH00!%vx4Q5+aV2}4jxDR!U7LBkAR*_D~N{V3%<-WwPQB0k$jd4WE=Aqb+r`;n?WzK2P& zqJDo~jo$ZG7K=jn*WRuFAeJJS!lNOAS9iSs!jA^|-i*@q1>VleioMTd*z^TG?na3P z|IBW?_iI+k{7Azv<=en)r{6PSswz*%w#0yezsOrmo3I z0(jab&?aWX$>Gcpzg2L(P&%?;j}7hWrf@@%DdVj;Ov2!dMZ)D-LFLbpJpx9l%pA}jrvPhh|`eFT7GK|c?eWz^uYl?2kUx5AL! zwg!hfqoB2=_i;jTPyi8#{k*|Ri2-od?2!UW=J;HeVba!||8*$+LHog^%N$1yuN&Fu zJMYpXt%&3rjZYonh61}(_Any{EtkmYO8*8&-DlUsB90Azz`aL1JqWGEypN9LSk6kd zHe>h&>>_$mc7Mn4>5#ZY_ia z76=Dbl3=~4mGLfDszx$CGYV=|X)jkbEyV8RjpMU)VuDtLsd-ipLb-pG{^v}ALh$7z zR6Du}>)U_EOm74leh-&r^l*oAl;W!R$;xI0$>lcJyXw$#8YY}HRY{SK zmNY`^Ek?_Y86%F?DemgFw48NOs9UlL50b6ESUKiMRZ8zZGNi26xk(XF$aajI4a{JF zdSNHMa zomMCiHl zys#+@N_!`Qj4P1Je|y2*#~)_NL0`>R191)$M&`N#9;_kVX{8GIUfdBii+^O zrxba8#^;yEXBwQP=;QkAxFV;4E7+1}@+Q@T*R$w+!2&Nq>Pr&HvxG*(PC;j5A>$Xs zvy7+5PQ_`W2J=`_%(Ry%;0fj zwXfBy?()sXoM3a!6NTGAf6p|LcVUi0%d>g@yG^F6)R#X6vaKyWPR>4?o4Wv?_7M^1 z&v($)v5ZgWa*wlj+vfIPkWcrb5xSkLh0g$g*w+KBmXN8hyFKB|z4z~p!4RRbQ5oMs zJQc8I(>JqEdv~}<8Jb0L^T4K%x3`4SCDCW=kQ~8p?3<|jkBr>y1vRfLIWUUX_!QXy zyW~be*T3}gi$5Hn9amnx9(fi#O!^}ghLT_yL?O;J$xWLyE3Qc!R+FDvRR_w~o!$2PJ78-)wkC2iZ6o_d0cyvAOgtJ_yTqX9c& ztZ3W+Z94=Lu${M#b9boQeW=y<(q1q9FEc9W!b&V)!@=OT0Ox(uU3Gmsqvmm1BA^3?U?=6j){N-3S_?$9?=DV87)>5tMEcd-*M zpXftO6F>j#5IL*)80!BG>}Eykhq>#=fE%b15}))F_huM~6dZ7nmx#*l$M=+|+UP?~ z8yI}FVJO}sR~1~=3h2Tw^Y#bXNO6dvNl9ds0zOwo{>NRhOO88XctQmd3Q zZyXd}8e$lfWVw@y+m{Tv9%QE;mSpbmg_7jqmg3fw=2aT()kq19hW^K&66_ku48c@`=8KTVng{3( z4F@8|<2DR4V|JxK4GX=9n1r?f2yt+58`V93*%;=17ap;D`%m2Po6hhrM`^wQIcXV9 zX#>Zh`7cq~ z;*Nz0liHR13g^z%#U}1dbI_PdGOr zP!7w{wnLX%0-;iqfVEg(ph7!zR0xD&r^0H5I0mCa9(+3 z7HaikG{rDxr-o`|Y334_Fg$STFG<{3?$phcOn@5Pq~*l4r^0>i#AJ;^95cxGDJpSs zqV-h7WDMq9c;-@EUS1m1D?Yv=9b-B*tqWH9uOFg9E%-~PS|y|cK`t7e&Q2Lx1k=eE ziq1|JVSYM9Sn29+4kH2YFWl^3T-ATv>QXgI@xxQ4OG@RM;jZjbv%_OlxvGiPs;wQf z0ftEO)EK_Q(#!EJ%%QR}wgSG~Flg*^U2=0&_T&D(;RtJOp8a9EU8Am<-<$6yb%x*r zP8862gfQV3*+uZMNYzJ~=W)I*VlKfO(Svm9L8VHwcuuoZmO%50C`aE#yq2-j_%YsP zc#jHopRW0q(;n+N*_44WvYz1(-KbMxOfXpbE2)}}EfmQZJ`D@FlRDZna~SvpZN?uH zvWHEsk=afy{PTA%xJE3%m7)`bBg0qUNoTTH?NT6A_=P?0TL62K_P0J z(X2qJg$KPN@SJE-Y)w^YMtswRbqsHl(8}2nnjw9M_PJB{j)!h$R@@_*^VL-D)m&EU zK{0{S2}z!Dtca4QSUqi*9_L@0#0<;2`%V$C9Js7gMxmiEB4;qN9QsYnCv(h3WR?;U zDuNV<#U2X99!ks(1wsoAyN%M#oTzJxA|`~1)PfC9Sn(}h0Y8f@Q%?eQM;A3U&89}J z3?n&Wrq`8JS`C-nYBRL{6r@if?!O_J&`)LFN2LcLw!KAVOs|Wcpr~vw1iUu{S#6Y& z#s=T7+QI3DmFgcettDCk6O?sLdmzvh)GJY!QStO3EVb}dHMj)jHA+*Ma4Q%eD82cJ zn0{eJ)#a7VKtx$zo=lc#20SIpwUytvP^4Z+IolMuwP`TZfWBr$ujx(C-#a^@#BI zyhbo$hvKYTd-5~|fVS}fhqv$uewo_swO_vWQV7YYQOO*LXe-een}0Z%yTAgpT>)*8 ze15J`bO3Z*=pA&ef6jPjx#Xi^G&jkRh?+{!F!(iB?B71Ryg9eWem--ua7+$x*;iTgeTro5cQ(wsA_1Rdsztdwhr-xG{a*Qd za0P)m2WTd*G{Nb(T5|ja^oiZ6{I$Jxio9yyOLyU}b$PvlQDhH2y>c}2&9KV6Iu3Sz z_jaIIbEO4Gu=2Yu8ebDc-Qc=i6OoG|CS6NwTs%GSllHmdEJu#By8fQ|3qv3233B%M z_zO63JmZBL=XF-Gb(2WAVJQFCRdB<^CqmqJ1KAMAv-=Ayb4_fz?)Ct1?j4ZL3OT5G zxI!Vgd*8mX!q1E&dhJEPw1<+8xx7C(x}$?^OmA((Md0fHNzmQJ_y3cU6=vCWN1AXO z{op5~YqJ2u*dTiNG2L>>-i|jRsEk2VK*3DzKnw3e)9=9`Et*ct~;fAVU<-Eicpv@YtUcX zJ+xdxQ3|}zKo2OPKvl?{y{o5w+r4XFlOdf?-lmsv{ZAPJ0XcF$3p#IKMQ^KoVe8LX z*r4p%ytQV1uyyZILcPDNJy_>E5aT@p`|jOkpCW{OJj*3a2(V1c5zI39V%Q$!LmqwN zeEepGtpDEG5ZnjVd)p(xe2NNA#}DG=s^L0*!irDn5YZuCO3<-kR3A#T&7*JEv#ZCW zvk-{-`k9&^m zzJ|49iK=^i5pVOiqX;h|=!hequ&MyHe(v3b2DC#wbunPx(Zfl6f$jO>-(6qr34N0c zpZnYFGw1@}!=IUcJZt2-HfRU9Y(6_NAt;5u6u0@-v_0jyz!sMyDEYpW&b}021c-@? zROSczSG+Vp5R||$oQVF;6tL4`ApL@<5ZBM@gqO-u|8>5$U$eYB8B==V8E_PTPOb8X-L&zTQHTu)3DDMFBeCzfHxP9_k!7XN0ir@a)cTT zf1OsCZN8v5x}YkbkkV2AX)*uXUEXT)pwivI`Q7&q1Vn!r1Z-xA?KQ<<1Tq1q;|X}b zM!=&$m$S)2Hkm?|(>#rTexWhyD~iIc%|GgiG)A39$J2i_Q<Zl14@AIWb$kNvf<;ObaOF--EK-uF$eRvO8zpSC zf4J7&&k_;Yz;Zlu(5c-vOcinzm+8cz@=g86w)#&)g@TW>1<;$wf{AlX4TdcDvVi%H z!pCJ|3bt<-#YGB3_X@334utA?G)i?f=?Od!tyv|QZZ{(#*+B4)HzoFm@{&$ zAis}@Y>VEtH|(@awAEr@TUK&}VWw$S-P%uo5j%3zh9QY?qw5^H4VkTBMoKZ-lt_HT zXZSAd;cGLGL+CX8Qx;dNi5m2Kq>U!S$p4up(=1kiHUK)?k2c$`s)IJisq>jOS0C-u zRK?ivqs#L<)6@Q6>& z@kaa|&F{XbpWFa_s$agqvYuNgi;YYFqk$KI&ObW`c~Ru)5Dj;zTV}SH=Kmwig-o!TFK<6qh_wTBU%8l1WmjQnfQa`x z+etO8i)oiemI_yrxsr1b3n%}Q6$_c-)sHUN(Pgas^OSN}IfnIYUlfL4Z7+#KaCaqz zjk8uKP6ErwBsnT6#5qor6UaG1t(sr78 z;!ACDY`KN!K5Ti!<#O)$o%itV25oY4?S-LydJOxK#4}pcJHRfk!vvvV-C6#3W*-p2 z_r$_T=Sjk^+jmfOB(~4rF9nuLUe38KOYDCU(Z+r0HmFQ-2C>DXmFx3e{p2d~yXvty z<+~n05fi?dAPW}$H_p^2d}~jua(s}aC?<06{Vf>BBAXz{Z8H)6o#QD|`yzQ$BI>b6 z{9i@B=u5Xrp5@a4#(34=n=X@(v61sWG06LCpT;c=eLpldI27PHaf^)GbH)J<`_q}H zOnaQ{we3QA<8ScRF3a)HEh(6gB>Rn*kSuAREgZM1K>Tg)^W*zBk2X|JOo>L0QNcBZ z&nr2)N5v57zspe3H%iQKdTB=*unM{`|dNOn}I%q z@za0J3_ZWTl|+w(yULKl%S*fRA0os(4`6KZBf9FFbx>|6M|pQsk=;I(QvPd53Vx%a zSo|*C!OR{55~en9r=gr4a7ZKx9D`S+mp_to*Gkir!>vUel(lxH$YmJi7?Z&;buGi& zQ;VVxb<0-6A10mgEf(j6RrGf~BwPT?l9cYF`m{&?H&aY(UhGAeoY7YvQKWZ-?57OSi?eWo=2@s)|#F_YE#o1hl9z=hejg%oN(^P~X z*^h0vAl;@}XC5znNFv`ZlqeWwk$gjFeImQS-pCZ^jKe^?$UCTGhE#^NXk@_|Bf;zj zaLjj^m>9O%vAt#UD1$u(V7vo?#0t5Hq7z{0#Qd1zhTE>BKx-j$-aqHsma19 zMgC~1vA!giUSw>7ZfN;Tt!FYkWL)i7XsPq=VKTn0TJ8DQQXl-zWE^vXpQC(N1mba& zu~`_-{0_{Z@QC82V^|;m-rD$eUy0|WfynNHs|I!-#G)&qYOocD3S;*T8+#vJFEN}e z(Huc2lnU7&4D<7F?Hg0*1_XID*0RRtoy9dghqDEH)hbkk)jhR(>knsJ$4t;XQu*dbTQ@wzp-9S^DiADH>9nTAaeGwI3dE_|xg*qnW_(vm&nCf2DUCIbln7WNF72 z<858Lump-DEzy1@Yx(J9f!@8xpwTgL>c*a4@3qh3(J^WK(HOy{WP~2jK9vZ|p(LG) z=>rvxH^a^WT7%v(f^-vF9@cQ>5&atvnOh`+utH) z)PopN$)CX_NXDjX#duC>-hKX)r(R86+aa&q-P@LDev4f@52AGf-$k~yx;l50!dnzA zjrxQzy7mB%+p#ELcf+Z3DbNU#(zaP{VhjX!@J$wbxaw{aJl@F7kJ|dA>bOGNr1ucS z1ST{@uOkh3AqTi20#jiDH(B|WhrE3PGaYX?XmQ=g7`bH;nyhz)I3hm0|J6)d)ZLX5 zryZ$4RA-7=?<<*nj$>~HR))U0r)PGb7()ctZgV}$QhP4E0|hr8rS4mrdM-U%1n(MI zeT1EYXpAs~c5dr@-4@i zbcFinXOiCAyivb{gt4c2s<9h}FyTKM^)JiE7`JsHK{vc?0nLHE53OxJCrI)y+fwK! z!R8{@;cRaaccc%$#CmV6>)#r-dY@-7ysmzZzn-G}x}%qPziz4z3X6xGL0}X8H^lbA z%F_2{3h@(tSv1){AxM9@QjPyR-}3&v7@`5S4ex??q;~_w&o2x^^pubfgt6)`rnO{zdcnkXqa}=_U1`R4e^dE;#r_g4mKrSmV z;i0IO*t?Q1kXI{!pDCCyD-f{FY0=XnCK*EC7-FS{vDK9zb`2MzR!+9tq~}SOT!Kl8 zhowa<{xq#EXjSk(sm zAxo0Pp|I?_VXRsQB_dnC@r883U)3`U=_Mn-q!%$X;t_XJ!VMOPjqQDAkANBe)7qw> zaF-(H59hMoqzr|%NeRPSl4S9vwE6RuA5mIB4TeY!=thE&Buq&}O~sxDLeQR|tO#cj z3u&=YEPhu>b}xK z$lG$hhe{+K7Mt-mtLZ_Ao&<4=q(JnbHA%P#>Xan+S3X@zq6?q|?^j9vLzY;4B1rP4 zWT=@mfClGvOG8iF+Xjd_E~1A+_cI=wW~!KM7MG)6mQdg(NWKdtnyXiP*$wFhZT_45ot z7Do7G$J;ciTkFBMP}O8`;^w^*4yTSv^L(fB5zifpt1$!GJ5?o zyE;;9>#|v=&ma+66JVL`ucP6VGNQaPCmAFAsPNQccVtspTJG;p$W$d|FjyW6`pFHJ3L-mM*e-`YqYIbJ z@3mW7zAv{PG*huGAVQ-DA?F7IVS(QCQw$Z)JQdO2L?H?lUJXU^U|2pm*w1*~xL*4B zUls8)^a(2!2|M(OM-_=z^hpmDNgwpdfXZZahLnHwe1sKIw3WkQw$BL_srtGx+4Sb> z6+g5qKcibXI8OhGFl2z%!xOX8>S+HnXUIyg%qsdXea1MW?$qO(U8Xi}Y+hyV48zY@ z`Rpo&oFlvCAcnD?Q};x>pMa_YbjGZ$%8OHmBC?E}ms740hC)%s5{Qg_==nyS)= zZaJo|{UGyl4? z>MO?2&(a!XvRZ(Hp%r5t8CLlNV{78q+wKWWpm@i_&SRd1&~b(VC!%jLY96RXQI zAj?Ks?M5BTrgi38Bg0De<%ouOtItqp3DzU)x+CW+Lxrns+PXiCh{uVnr|EU4Gr7mXtbY_t zP6X#pds#1j)m;F-pLsK!v^syCuDiNo{rhmWzr>oc!+Mn+_ZPqZhK%hW@XNJelg=Ck;L?a{mbGvH?Vinz*}tqTIIf6iljDXV`$PL>v+cs@9P z`Bncm!}h+ymfP%t(px{b!S;!lLO$4_;^05d>hIvd(B$kebnH+V?9lmHFkR5!tVA5jLw9GNzi~r&VfywjEUivN8NxU#(^u#F~!V*Gh2&m!hvto zfWMksmEeLWbcr9;K$yfqgyKrDdq#lcMpVy1+}1!$2ai{NbI{8{y4pZ0`}uGC2DrsR z{@6gi=}LC)27Ke7Bxs~`aHT+TzarzL;%lUW+`4>a;=B>%q|s@l@o}M6{C8{2N$1l@ zck4{+(D<-Zvzp$>kh)AKf9iHHq^zOARqf?A{nL+8W&P?LmO!IllSHhV-ZB<+; zGgvIr{3Kot zA$uWT7(D(VGHwaxc3u}LMn{_lM~s%@SScJi3Eo_9!jcHi3U6V0SbT11Y}Y~g>raao zn*6sEqwNF!o1}v2qlc;lweOHTpJ%o5!bB6`H2XIZHi6fruUtuFd_=!uN$d}suQ6!@w zP@GHr@rUh+Iqh){-Z<24^3DGnGPM?ajDD38<%hxU_l+hV0P^vt|5X<34-4_x2v>BA z81>9O7$O#K6n|togKTcBVkO?3-FeYNVJ-V2IOR8>#$hN{0Ih z-Ufuc2X}q^>)XWoJ8`0Y6#51G9a@v(x<>gF1uNRDi61+PUvb(xWs6T*T)M4w28&jO z+INNObskgCeOn-_?N~KH`jhS%1E2`K0QRT)>ng!$D=|tXm`~Ti1ou8i@IJ5jmRv0` zRXyxZB|&@rHsc~W6(YPEhh)Lkk-{V>oD+y$Ec~tb#Jwr7KWBIe=cW9(%c~eJ>+#i2 z3|cX{3)l3mO*UZR6?W%52*;LxLA5(OwW}vTV&5fbl}$7&S*U;ZRV}#(C#OfU>1+0= zh{D)w>}wY&2QEt^FeYlCKD7(P7e3GQ(K9bcPT-+$FmE8h%tA(akng z&n5adL_V(R4L!c+H!;VbS1zUta*;?Z#4yP&_vVgXY_{8O;v zX~cZ0d))z7Z#0_i$!1bf$fMuV_*2Zk#Sw5=FSVyw$R?3XfN%wVSjwl;sh4SX{IF8Y zU^DxbCXjkG7Q*LtwDgQ2shTeq2EY?cvsEvaO`+B5OtaG{|E43Fb_UL`r&Vd>X^vga zZ={tW;jvqcaIA@V6Xw}3vYJ@?Y%8*-+KiaiWo&;NcUnlFD5n)mex7_Ri>ZwCe|~{y z&IIpAgrkV&-^fMRL5IHrw2e zS9%~hJ}$c*4gdntTwk}t(G)tJ-dsPA;|U*`(dRUOuk+Ogo7G@$`}4rmY5vc4yz^z( z$}wlXGEApbfpc2bl%d3Z!MlLADFwp%bz*801)`+b{?8q4@_=l+!#=%Vuawm=ctG|- zzqCq6Wd8I4C9o!=6c9~?`%QTmOP+at7)M=6eFRU>aejorZ1}Q+$gXDo7qQ!v`Y5U2 zMGEz4$)?H}WeoFzTv_MgG*caky-OltVf^_&^mtCyf6^ytt>{%Zaq}tV zD50o+_q$wPH3>u0UNcj4T3)kAQPy6!ath?3(=SZW-Y9S!LDLah^#8Hu)N#48=`w)E zCu2R%vbyCluS`H?Q=YT3?ZZ&3z2$dWySfu_Gwmbo^?bRy8v@Omx}CGfvS!NrXIW=I zlE`^&KdKE)_aKI$ZtWloaCEwtAn=RTELs9x?{|tkYt~4dx{BVP|MX_s4>QbUzSE@I z)vX`pxXtKsr~6&4ALnOy2^f3WgvToQHB{}Ou&TBia zHXInr(G4yd#zD?|)$@r0=k@E(o0o0-&b1dEr*)goI; z4_5COxcR)|Z{3ViCUx%*G1PDUE5|W0^w1~H*t(sSz}Q}$lxN%ajN#ffyq6au*uGyi zOA4A?w5#9tw$d;$^5HYc*nZp%!wBBpjA7e(lJ?j&dj1+fu=9LenDo(nSXsa0Po8RG z9B`SPvGe+OfZ*fhW}Gdgpu`7{bC=>8@{fadA>?=EEaoIo5J z9h3UA#TmL|s29SL9ESGx1)7pj0x5AQ6tTHr9`{5X%{e)oCua{q!nPN=#5g%ZI7?^;El_i&N#u2x^#udr0K6qIJZj-k2*TU)oLSu75D?3OIoGG5049Wjz&iqwv!pf=OHsk{iM@0p z1`jJ(lfjKjGK2dY*>L5LJe7EEtq+5>>)ojWijD#58170LgIiy~f1mLQ8p&r0_DdDT zG9ATd=u5~QXC?x1Sj&}ErjxL8c4W>k8UY2Lu87b!si}}EBD?8FL>iB7xYK+q*@eKZ z=~cnEa7laqTLSanVm5JcxR=rE;r~rTU||05jVypQgbIdw_`DVf6aaJH ziNoWc0e&eW;f-${8Wrlv(pqFju^g4(%hbqe-*vdFw9-_njkgupnbhh`;r)ZYJe+-Y z4-^WPB6G2CcJvH8Z`-d?flvBHl65kgTSaT`Tqa0l>(_aGUd)sY^6e@+W7y0 zt#q~h-R%!YAy?^czd0OBWipxR?zlakD^|=`>FK;bUu$yMo$2X%{JS?42O(GO?S8&J zS*$jh?d^Geygr=FSMBS4e|@?=-<|F2`=l-a^n0Oj|BJS}Zi~A~7YC0v4vi6n`@Yph**xqf|t5#=716&JU2wgn|9( zCc+H!YK`$7Tv~t*J?KT2z?ta3Oeeq^&i1p|yu}Tw5R3?o%65-vGWw%_{&I&MMv~zt zN6G?$B}N%6(sl^Pz4M43SF&!mt<#!vSzmSif8SoJu>8=5P(S~}a?$4t2U5yGmP=l5 zG%knjTGQnZ@i;PZ+uKLw!r>%j*;I+)#G;XSX0veLuPVjkQJf|lYe+6xler>;S43rO zr7AyU&W*e|!Fk-&&+bQa`5Kjm?ccc$7qZ_F!*LI*E0(Ky2Hyl)8<=!+OvYOr zAgH-sgWJhUGGSV^ZadR{;^$0!=dDgp6hg?lVP6}F`+wLx{|A@L_W!b6NXxdC&S1HS zc1azOU)00{>xhlXf@^WpJP8v5TsLK$`x8V8CL^3|6iK?3J+ z60)ZdvGM*YwM0Tth`B?DlqtkQ;MjGkylQr&V&4lXsms`hOD4d@eygFyEb2-mLmD!t zPl6f^VmPy@pa;e(_$S)VkwLrVi>4w>sQ*CVjP0`FQXs&kW3?#?m@_pe)V|)F3(!be zp#{jJ9v#nSNesvrN($@qwls}FX(#trMjs{34d!sRNDo%vn zTPiV^a-53{<5FI~@~CYuhGet)ci7L?TFmh91hZ6ne?DHw(&>$RT`^Vk{$(LhmzLpq z5(xG0U;BSBx17VfV|8LPX;vd@u5?$Znzm5JKUCG3wh-9&L1`_Gi%JheS z7s&_F8jWPh))p%!vpXHH4cC@Hwo3>yv0Pp0bb*WzNMWSz=WMEcu3WYpuGw4}#Ih3d z`dq$Pt=jq*WmUTL+j{m`u)LvCFV#L|V4v^7VWGw2=D5BELRrOofssk{+1R#w1JEc9 zv$WWE2W^SPb9@`w_D8?6+buADskJJ}7LNW%;9X~vU-YT`{JVF(U1p`xsQ-JP28Wb- zrxTLzK8;RAoguThN<~~88SBmb69w@iG5S;_Wc=&{+_Y_dn&g2q6A* z=HUfte-tJpU_risbjUIdas}0O!Eh3tnq|e%r$osVHnS1+qw4*!OkTH-6-QVF6S*QT z*Qj!JbP55FBMF=%bw>kwTv>A2D^uU8r0z>?*BRIfKUEoLs-nuL9zni9P>$m0J!qxD z*(Nnc{$X#m#fxWSeAM$`ts{`|98JM%OENkHIDWJP|d8i?)TX<-Z-A3Qh4E0zxuEzZ>FXrJ;K8d_-jLmJ{RH9rycS@u?y=<|X!$(Cq z^<(v-_aXkoh^M4Awbrv`8Uoy9dXd^eE2rLd4k}g7tHH4+$<=Gk&aVXUOe&X~dEuU_ zzB1Yu>&agcSnr>-S-Ue#m>>EDb#C@^b6|PU|JRDlQwDy}lC;!?iPs(;YzvI=BYV1D z9D@JowC=lgJ3n2C-`Lo~FSPyoUBF&=2O zOc@$lIuHEe^4|7PA);iNBVXk297x@wi58(5x=6r7#9(6nKXPC?%s31XiU9Ii2BE-D zH-8uX2ngsBL(1LkK`8GD1eJG}ennz|=`XbkD5Sy>cr`=QUCg?_AtRBX+5q>ZV;Mf_ z*5TKZjfN1jE^vOGr5wma^kdljs+^-7Ac7fJ?iB-q&UoMaB~XM$WhVWt3Aar~-K0Bc zrf~jo&^50mjCeMV>*&*Zr!Jh`((lIKm8$_HU7*+|72;OdF0nvdqMN{0SU3`7Xuw!b zLNhb8@Qde|xS`b-w3PxMZwQN;2M6%eCww#;Dk{^vr4!|upGj7G1UChlKt zgQF||zuN};oHcuu=ZK$pJky|mwhiWId;*6tByaz08-_4>kjSn7**55E$%|o2{j+WO zZjzV~LG)j3gQ<;eA*5|ksQU|P>}lGGvCXpHjpYSFCTJr~51Gb@3>+3j-CSDleUqX2 zxfdW_>?NL{+_Gf;OpT9u}lD93Pk041jH?^2>@_Y>Ep(8ReBFWpd>eT>!?@8r|Ss zyRy>zvXkHWj>q<8byA}Yzvliz8VRw=Y>K}#_%PIttz?`w>|sTn{f#vGrP;26nkIr< zPit>yj?e2(K;;)5FCPZW8?G{1ju4@N_RigTSTUD9&?sYe#jjFKSA95>nk?AjFVUxH z2&6I2gDAarjEz&8_SeI7B?>wv?_dQbpjZb{-Fiq7jG;<-R*7uc`;7%_$5=@-eogU| z+TTvg&>AeFiPw$Y&gKjdam~UV*mF(rmQN=M+nS@^%)PgIsaxV%3#p#@+h|luNwS?? zMaSfr;@q_7S>Wd|i5K?$1Kvd&b5A;RpB1lhc-)Sp-N3?*VmtTRje>e}8>3WreA-Vr zvG<%$*{t#0e8UNO+8368`>+=;;8?N)K^mV=YJY4{?tUbhzd4_vWP#`|_RJH`3zd)Dp>ET)xDKXAaQRrw#6 zGXCb5pMg@7XUw02iQzz&g8W_ga-xm?XHa6ik{^FiNy>!36iG&V&_xjN3=b=5?z@OPQ)1hj$k1Cl1}U6o zk~l~WLeZJ}ZXo`EcD#(aS}sUVOQOJ*(2b_+=7qc8)Yu#nw7-M)TF5#B^|WEwusrGLg>nEG4I{bt%S~`cMp4^ zySjwLEBR>DhOzIPG8}O{^5~BR_QLzMeVKYb3`GLCA`0~*@tT$%s=6Souht>BrrHB} zOQO*n2HWgzBMS{JcjT@dMQc@BD*USMkv*5$JmFp~sKlD1=r{p;C&G2aaxti(Fp_AgNu}PqidgH^Uo>_y9XQ=@A-Z$yDiHVy8y` zjQ3@6-oe0(y`y#E!`I)$Wx`Wdi`u?%v^Wk9PK43xhlU!_J-9M2y3P}?XkZ$yE z;h~Z$n`V)zEp$pQBY{JvCB+_a;;{~r(V}{=bioC(dyKK7v>0cV^pYS=}0@MDhcFB#)4H*4`T;WDQ4}IP`{n(3Fq?hH1Ne!2BE|FKTc0y{pf%_ zjot_8ox~YW#LQ9fN~ny5D0~U~Q8UC&7j%$n+LH+D!iFSH9?LQ~g`xO1m|m-!pxHQw zLAGF;C|udE8>&N48R*77Tm$+@_-E;;=lrUQ&{~WTvkgEe!Zd-@!m{-4XLGwp!K|JZ z-6i+b2;OhXKSvS43f$o-buvG#9N^W#z4Q6b^?0-6ARUyOcPHmobjR&IHTQ10mFZko z?6If8ghZMf=(oR%v;(aL+P2}fD=&hz1DCn^Q>M7PKJ*cy@Qb}{18yrDef0R~ni|RU z!Ta@8VZ-xOdT`h>m3CxettlX|u{0TLg=^BW>LtXV>7u_fm1@x>S) z*JtqgDG&P@>>(-OfZN6 z4p;I5cy=B<{jlC1hZa@&I?x@9LfVdEJlbw81V3*!-~9F9`lcJrF)2>yacxNwd^OCJ zaD_s?fGsOTQ+Oq6Q@W8@h2KMd`4E3u?i=dn)b57#V{?aQr-)(!89F6^r^KWcXaddS z1lZPa)B064(D=pDnxS*bkUT&pB?P^LOeNTMtK2f2 zarO~2MwzB|q6L`HrUrK3dKgg!U0e89q}l%A0bX0e|FV>7O@LDbNY&B;xxLIgi-B8# zo^~2Rs=Q$|!9kk5FiVT>B)oo6dFb&6&dPx(#En7bOU_!6K^rB3@Gc&VR8pV_f0BGR zsy#cA(r|zYN`DyZwIy&(SwA%lSb8tXCIg%aw8YxBeUS`{YKkOu4H^e)g--+Ec^ksi zX$`S(9Vi2>w+m5#i(f4dBR9f>FL1@-c!95tVsMXNs5srM+`tBvmIkoT z>A-CV_cuhqZ~L&Td!VZ5)6xQ~QsGd@O@HwUS2+8~ia5tS#!S(XSs^;YZ+(S#HcL*A zmDPw9-wN~FMVr?SM?;7T3jdT~0kp#x|3d?`mk}$n#;o5$c%YR%p#wVeh&j^%%Xr1m z9x)#1!~nlS_YQz?8o)n@35StLp4@iROOV@EvEwD~8=A4(L$NC|U&WPU=NEaRl)sVC zf5YU1+3^U0pN=@T*3j2*#D_+`(N@5Uj6^0+piqx$lL6|d#3O>C4GQSg;JVR3i=Qyw zCyUXOZb2m~lYJx6iH-667WaUvT;oM}AduA*wD9g5z&SaHJ8{4YC}gGK+7xx!PT*7xEA=|B(y>TF^vj0#G-Wkx=@K8cDGc(kOEYitTT9Y=|i zdH$3$tdiU>n^{Mn1)qn~dL#hea(IWpuWpkYEt?6MA7OJSgD{;^+~kUeDP|h#sp-r; z-)w8voB|+6yIC^74!5=B6BAkjro*L8^lP}w01c@!F2DSsDZj2<}g=Dt^zmN*cXAI@cP{KDQ@N|R$ znC2PHOLto-amj$SIWD%1Do)J<>KADs+UAteirIicVl&R(gFq)nbDaZOF`LCCA)b6` zZugIkCUCz}b-3M@mg8ZzQTyiNbu(;!@ImHngbT|Q*ASHFvZJR?!P|}$7n-9OT$Z#k zlytr?_`smjgH+NkS79wD*JN960GaHZ5PVRY^^w5xgRI-WX5^tIFpoiO@kvtF84)>E zEYTbVp1o2Gh&)IZ82>xpWr5`Q%Esa$e{VTwx>-#805#L%$M1~lXYcpB&J_(S#p1>& zef%}f{BUf?L0?9Ax@BSDyJ}GNpy1>yTp3D(2x{#3Lr7Y(G8n26o{h^qZLcLWz8{D9 zHhNp_MkkuXPwxjOQ59igrooW^W~#FsoJ#xy_O9jq^A4n3{zg#axKfTUQo;xPqVT=u zEddryFBW68MpU3g)CbzdyZqy5t+=u3&ihK@(O-`AV%Rf9F}Cp0x>baPZiUYn>B}01 z?;DKzqR`(}BR*lItZ1On%kt?pdf2@KT~-f2SNE;dVadZNm&A56VBkE}$m+!^+d(PI z*LY_Z+m)4T{sDfq1v2%2l0$Cv)r!B+{GF=fpPiZq^MHf}U7JJb>FLu_+KL}kRu0xJ zcV(!HLMcJZMDwB4hS~P&Zb3yKtwBquYnO-lRo>*f;vA@3ULh~nV2l2)6_}(4+|6r7 zH-WEYLmwX@dF5=xlKWliWrxU)e%vCa2?n6r>bVuP26#sJRA;mtw|3YS7N57av?Bik zqSRk!*7=G9H9Uc`{jIX2oo$3A0tv9ub`>E}ZRaTH^Lm)$0>C)|bb~#h>}9~5Kt|FW zV9hxoqcviSPnKT>IJc^kqzjzL%b-YxyLikJK16l<4tJf@ar&o+?G$%hw_Nq40{{j0 zTfPR}2YNZMQ>Lg>d8?D^vK3yWPnoa|TCfvv*}+LvsyV8l90OFYP$={SqOEleULq0e z0?jXxW}N%sp-~$b0gh>i>I(hfzUaZOGJl{B%ygG&RyMT)Afl^b&>68z8lbHUR2x%3 zLKX8P3WMoJD;y9zv1$lvYhwqu4aHR8ydHOq9CyH={(`A!0?NaHqfuZ*KYz)9O+W3F zBpMOdkA;b;bC&DmTx$W_s%ou`;7*TJ5(#5#8m|R*RgFbpEg*L(k78WK8}b7YErri5 zft6!uT_VOki@@tz*W1>bQ4lX9?f>6(3cvO*_sOkMsSYkb&9z`kNKdF`J-s^{dUY! z))aC(&J7g$&E*tueF`K}qs&%=uM8#PJS~F)U$ljGAPBtfLh2BhAn=36cbG{g`qf7; zjak`-WHN=FKZ*7-V+>xygeJy>J;P*cpAuZ3wI-kCQ=Z1jh7}2%e&+`*8QV*A76$hV zH4CyG*!qrRhHs*$WiqE>8Rx{ZVQ-xK_nk-kvS!CxChwURP}paYuO`tN0&KGv9L9kH zXWgcX3+N^bAN>}+gs?>_XZl)Tw_@htouO6MTcu-$PunJredlG*7B$Bg^_gca+9wlU z$2_tZz6mYE9Zi0SoiuA-<~nQ3L0bX0EpwhNXJs#zX0K5FTGk<+DDj2%&+Zcec7-s{ zqbaY3#IB;YF3||B!dA>^Xe^`JuQ&;<^~cWky)IV{rVKN$^qs90JFHa^t-EHgO;@Ze zWv`Qx&u*i_Re@jO__h{h2v=*Emm2&wS`1c$&K7GN<~Finx6n47kvC2Qm!}-oAMH0` zVmBAFZO7KvW)#<*Vm6_bw&uq-SF*Q|9Wg~>dwGdAdD~#&MK=6jF+kZH;xXH3${RT7 zt9=9$SL5?W%xl@>o3F%+><&Ah(Y9bGb{IBxSPi$BI<`0scOCsE(a}rzSh|SM7e$;` zo3mHnlkBMoZR4+ROJwh@XTv^-te80L&?@a6klBWNUh2T=*wps>&3u;pX8 z!#;6f1ZDw61j1_gi8 zvCE&cM~Z$SQgaTuN_^^gKH_t@mUCQ7a;DmWnJ#qp`gRO!bo~3gd+Kcv#^}tC8dX<&}u?6?XhNIq6|t$3<5AEXpTLgNgl;%Huzdmv9)1 zDd5)&*iSbY0XM9u`}ZVBCvoS88>b={hoVzAxYg&UO4l6dXKVrM^tqGNotG{`H{4Fw z@=hnR@i*F?L&}C%ZfsW)V7OW|xc8l~wZw1&#`o3%_vVu~`WV+6c^B%rmn;F8>TlPZ z=#Zl4R*mHj!RSE;{J^fT4?4dy*u1eKy|*HT!@q?4y7_4R>FT4=6{X>|OZCH-^V_hT zhqU#x!S!2jr-w3@tw7=DpYr=yljkLycglhH)}4>$PWPtZ=O{4T$;ADk;iF9MVXo0r zPQb$_jB~g6L;20?OwyYSqnjU}o=1!tgN^=3IGx)X-P`8g&p6!+Tu_6NZx$Sm*(TtYeXL+2kovAAGGqCw0b1K&s#J#cI;$>n0;6+1%T ztAYN%8jXhi85$=GS!ALU>>RXM$$ZKbVe6RY2(e`LvmFlQ+~;w>jR$k!?IsvUlNp#( z?U5cYBonAOsssgjucW(U2%}F=W@^j_lPQh%GIVY%C$fbC0K~et)-y$lxl-A>ceV?a z4@#VN1E?Fz%HV~M`B&x+x&&?WEoXinOxnN9yW0(Y-`BcErF;{nh5QM*I2`@N-?*0e zW#~Aa)XZr^_r>dae>_(@*YMT*{%pN7f^?J8J$QfM2$%QbvFXb_!t=u?GN?b4GM%r7 zqv-6NEqdsJaN;d-MF>ga6W#3%NfWIDRY}$27{YMu68|z9`-^DIe@Vi9dS(&BZ)P0p z0a>C}ixJw@v57}{?WstTM^OEip^TUKAWNNQJ|jq!8~UN;$+U2$pO{rWL6Q_BlTDuf z`%Pj8%^+2+0>`8Tha%Ua`D`8CW*_Fj9?YLaQT9s6-8%XZU$#%@UAH&&+z8Zl%HkN3 zoM076dDDzjQPh23c4elcISy4Mjue#{y!Y^2>MGLIe<6)Rw<;PO^*58U^nQ-= zqBm_b8jAEW^OMYa?Km1n0slZ68H;WL}@FeurfZZ!0{=;whLjm#JN0fco?28B~8a>hld zARd!2e9I=22-2#f%>ZGlcc#&-1H5LjJfL)rujI_XcH*RI{x%w$cjNzXs_Z5IWi)=b zD*is5!ie^?o&hl$t#ShZE4`U6B-8tO@lyOY5Tnt1Bj0WO`$lm|F(jXtR~J9q5bG_x zw}T*!0`|X{7rgDTFi8X){z4khj7QJs9sYqdc89O7v_61ZojSp(Uo5&1Xxp57F|;1d z`tYsVTn0%oG)#wRAxPsW>n9c0F`k3JkVa28)2V+TjXZL0b6QsIpBGiMUOz8eL5#*; zvqp%~=y~vJx90Pg(HIf`=(fAbRO#PKt7twoARky?Yqv40Zz>Q$!Wag(Nd&+>6@(FL3`cF< zm8tMAqY>R>3j7bGkyi{Wbt;rr!US2PNepkJI+!`s1l599oM2%poTtwO{d1Ez$^BG> zFx(D;(K`tWyy<@-joi~;|3VsFcqQmHr=zs`O!4ZQBw0MBqmAHp@qWIO`j9#uV3GxA;(VDr&yr zH~PfHv_5khu4Y*!kC`OZx;XWj4YgVx2p8Y-6;PGj;X|G@9Jmf~trdDBTQAceP)kt9%!kDDu`m9&uq>!_wQ z%oVYQ+3@HPsAVk774xj`E4Z|%<=oGeWR4jshw-cb@K$=SG$f_6oE*;sner_cW~(l} z7_ZOSU8a}^!&2%xS11-nn&ZV_m2QhXZ@pWlDaqh{@1j{@`&me#{TL(R7p}vQ28~&Y zt>K+FUu`%p`3TvGdJ{oP^@J#m5!$J0@>OW)78lp&Y(}up!ngTCrqrtBR|E}8J?uUb zNka9dQ+cvht(jC0mp@(hnt&6H8j=OZIIMek2EqL zj(xn1R4&FtKGI}sjEQ12;D1+kZg8d+7oBih)z}^&#OQvu3U{3`U*?Iu$D_Q^ z4?=Qb890&P`mllc9l34s>vIFP`8dn8B1BqHo6{HJtd8knj_=R zoGNY$NV3|S3w0e6+pCJ?yiBe1d3%gTo7^jm{lga6$0!t4yM^A6-3(2^AZ(87XJqzo z&9icNQvC13+wgAb-#yg7beUJ06T7O8+iDem;2Fnsgwg4Yis-YYtZ{f_{Fd3XidXxD zHujk%2b_;O^)_FnZs8KqToYDx4U1)<5$^u^WT`$py<%c#Y)u44PGl`Rld| zUAAV^1{Mq!iz9$TDetPJ&*dL%M{%?T%sUZ9U9+OI7Puxgrb0X}iUo*qA#bdkLZoaf z5rh^+z)#g-O7)sr>&NeI8mI2j%FCbrz^ZqOcI8afruPe-f8X~U#&2*j+Z0)t-0`U4 zm~i9n7%_<$;_g&x{@l8msd-T4(W%gX)>av-2abSxsXp&#)c7V~<~K;Vr1_;rBiHuQ zubi(wxcE5fq3hgPxM=V|@z{1YGuD0Ad!1P6%=WY0`cE?5MR3!d%Ne_?UT4FOq9gNw zTfWPZ=~5NU;N3tavCfHU+M2ZV^YFQWd9NxFsIus(;lS2lXoH`e1%dB(NQ~1bHlAbR zx90KOoF(@V0&;3$ZZU77CD~jE=ooOkD80H^R@mMvVcF!Ftz?;$^ttjjJnDD6uWJ~% z_vlYbYhj4rb~zdUs?B!Ax*lb7FrsZ&ZulW0>_qPd0Ms%H^48h3!Z~`=}Yu(=j_3;K`VF zqZ%PR(T;wW1WS5ZjL-$Om*xv>xfl&AE)b5FX-oJcd~n^-t;=7$RSQ2ReAd!ji_%d_ zC^Tp*@Y`FUZ&t`rEwXy&V-cGGYOesoAGXsI0ocM1x;~;cYQG8PyQ1>CBFdYw_F76* zc~J@(My{DrIGdkGKf>R(^}z^P*0zmechR_u`Au_g`7o51{|5c}W$VUb@u#dVs;g*7 z=te*c^+ouiwGQi~Y?`t@M2&~ft`Zz-%*)8sM4;cfa^11{haZosBL};usI)iqkwFqD zz#t*YM%4oL5%_sod21W)e8RLz(B4higI6bt>0X7zR43imNjul4$dpQo+Ele$owi%| zL0*try~@wHw-1Z+aYyVErugGLH< z8#jz;1u(d3H5hJu*eAk&5*fj#$3ki~5&lFiqS58{OGBUBK1O)4U6>BY-1Z|xi+P@wOJpNxW01F#`g0IPh1u}yk^4pvu~ury+vXRMoQtcP=~7h*K3kM*064Y-dDhK>y-j|~@& zjns{e_Kl6rjg9Y(P27%6!i`ViDAw=gOuu|RXCI$K9lOkrnh8Z-Tti(FL|YKVSW(Bg zTt;5zL|RuL-x!l$UdsV5piV3jDWz|X7tl@Y5~1xgVSwPGcKVPP-Ie0gm2yfaj&H|L zQRPqFkuPC_RN5hv#_mFDRtv)+B$zKzJ?{geqcc{exlm^FH@j{JQ4^}#;sRsrn~ z6WUuL(rYp@_yqx)O9@I55hi64j;sCXg(S2~G3=5AA$AIoqWtKKd{j7v8ao9$uRLcz zb+xTLSD_3s6k#PNZVRWNnMrZO#&OOjF72ncPn9wI74a>Qu`E;&(I#*$R8X^(iRP#8 z%*P4VmEpNmmE0$0Zk4H1RA_K#-c?S~Q7b*_t1>7~(A3Y+_Rlb-%rNfH5S^*8eV!@Z zQY0mw<|vvbc2EU>2vcDlpJtd>MMqO%YggX7RYfgQ;|Nou|BOics>*>jONl#26En>o zJ0mteOHql)WHHO?r^e%_jsia?X)r4urX=pCUQVWp5odOXDz>rnUU!;?@JsaLb696HUcQJ z7ZuIp-)U>K>jbQ?lwGR)sMjs}tdq^WQZl}rE4eyDp(1joW%jD=GOv{YuSK`6_GNyh z2yMYYXtjt=O-gauI(DgPeLUV`MJ{$F<8g%}Wy&Lav1fdx`EK=>;_5Ip^XjQ`fTC8& zymrUks&l{A=XSk}*F`Zj17RWkzSo5^YJI}kRSM>Xwpaay%1?yU>jK2{UletJ_pbqk z3`XwO!RyZ5Ffm*AI{7BY(b$Q8lF^coXl^W?i-%o zZJfPsoWpNkjT?fvJ{@vpZ=`J8;nuo3Z$5-=KBjCw+=W|tg+JFDz07aE>~H=#+kCy- zgaT|qzis}>-h`Ffg45iBx7-4FY$1eiA*OC26>lLoY@rNnp)PEpfws`^w=e+PK)h{C znr$rZZEUG+9L;T9%WXW5ZT#@+Xiw>W?-O7jax^86x39{*uO_vxuDP#axv!aO zuIjO`ow~16ysz7^uQ#x-Phz6Iuy1(3Zv+4t2~NORyOb>Oaf@Y(XfBhDB?B6y`9d?`Ng zZm=>6Kk!*N@B4rhZKO3aY%VauwXj8GvZF=N7ibRljh=+mIgaEf8@t~fYCeQiYR!z z38bcTTQ}p)9&Y=UVFc+W29_FlG=cJ#;8v2{tN?Y#)Hx&k5URajaknx3n%(eT;OF2`#pT*-~-{6>;ckIJ=^`=p;ud zPlRzwM{?tBTv|OldJ8hx`n?nlA4V4O^s$@|5$Vw~th_8Vz&e~>yS)nFRMl~MEp-W3 zLI}$No8f$hRvsQe7EyeB?1C7fUc?{gj*(r z#3Md@qGkIO@JPcJtdkHPumv!d3A12xRnv;J-1(b|a23JDQ~BVtWA~{G6hK(}j(#gxrZilO zG{Ukgq}&u%1nTTh;FoW-p2s2f&T5_E>eCdvO8A^K@E_oSgd>I{l8C!fAKX{pVc$q}_`@u8q>kQB9tn}-g z*6Y00>w@R&V#MoGn%{8D=5pifs!d_w#0KQ-icwB$GJ@CIxLs}OO zxc-E=P8;yh>3`PR}=#= z1U#;%hgXzC2^7+aOg8`TMx$Tz<+fNjS_+NAvHJFGkbDt^Mus~>_mBTzG%o&jIJvJ} zD%Y-5br`uUU2pw-z#sZ9B~QQUA4VhF4!AE0pTqI=k$rC{G4|YVV zH}yk0iN)cW^LVaItJd+1fNrDWmk`2$0^zO3s*lml`Pm-Z$3=KLO}}8I6zEe;bYdBQF0m8sA()qqKp@MexytgMdqXWCQ0yxDp8i9nJP(<|A{JD<#^~@xB!K2LrPQH_n2%&x_WwW{n`v|Xo}Xy*f{^)3LmaWZ>3)1=Xn`Di z@ITWPev{+32@F^DrZ4_(+XA^)>itY#nxA3wv$QC~o1yGySqnpXWy=W7PpoGS#>)B? zZ^o+T;}*v1_UC8Dnr>tPreFO8K1}~I8ky>*|C`a+%G_Ar@yy(`jZ9z{x}M>~(sESR z%F=q)@&_`?XGDOt{cgpsyy@w<)hT07%!{=P8by$;8=laYtp|y*?Xv5I|Annj<@pa; zFRq?1`@nmwhyD=zmY~zq9DgOSEIFS2>VGJ$E47o z7mg{>YCDc;Ny2sV2~^~E&RIo)SI#*VCtuEa4ZU^a85Fs8u0;c%SFR-!3?Hs#i_Gl$ zVAJw;?p24@*ZVokQ6ZjbYg$B}|3Vt&<$1P(BJ6pB{R#bfcfK-iG;GBRu&`_+uzcj( zPto&l9*MW>XfFGP5XpC#AN`U4=-kzx|2Wqh-T0`o^^O1Z7fL4oS-o1zbHMMD4uOky zJx77dZq}&QfDXa{h|w6qEO;{xE9V<9@|V##-+L-}zr2Yg6tLg}7JA$csStYFPa1yp zU$neYVDB#tiY7S2Pl^@VSq%_=18-+SkVgF<)ui=%-5SX1S20wxO7`M_?| zA@Q$z0R8NVzhbUk@PPHaeK5yjv9{K`C@9)7Y%{;&JoMAw-;@pt>6Yj$8AfXVL7-T&3Hz8zIrv!-^BV$FIE?(yQG@Fl?XnkYwvZ=0OX8UnxVgfrB^eQ3 ztSQ2F2+~;amC;1CHe*3ufw{UA@c!)wDc&z>g!RZ#yTsZokRUDp?9YkM3x(;dg5un4 zJ+gYX>^Uq)2pp$Z3GUWE0IVVao-&ifFYe;Gr-Bfpv1}>~Vl>(h4{)#3^^tqsP@HO; zLFcNdgaQiyj9u^&kK|wDJqk%1OS_3~zhel^L7^mwL;&RiQ4=r4vH6Wd#ofwgv#;w) zKEB#WwP7m3^~M(Sb;Hs0{;tX6#QKi^(I8p_$43Qr+0A4oZ)&XT+h-yQ#x0(aP!m2q`> zrlFys{Y-o7K#KQ6H`LWsBujc%s8Sg_MWjUq&h7V=ItDXTrT%W#)1dedyz@V)9_`Q= z$Y+ih0^w$3gM<#Yqq`Qmkgg*mxCh8W36=t}!RaiXvc{@q_mu5Q%)vgh-qE;+V((9i zdN_a-8+Sb-=uJXwe;JMNYNX5nII6_-GKwP`68d5Y z;9v)7maJ7c1??SD#YzbwUy}#|&LFJRM@PY{d<5e3z&@p+0ry`CQEJKgy>y!F(Fb-* z#XV3MY1$Xqx2-S&bU|2iDWcrAWg+y+FgV5*Z0WsBAoir?4B6Oxf(anxjshiQcJU2& z?CMfLR{<))(1%Dcdu++f1?h8XFd__*UYsR9d6gt$oa75!$gvyADB_9mJ3=@=blqVv zP#Vqa^6()wAFdyG6%S@#z+-|PM55;?Q>#4IsOA57j&ly2Aj62oF+(%}R#C7hbfF3? zyyG7dGm*59iWpn$O^_UlMia793TY%xd@PZ;?v9dAco-dQaF<5-lVCr|gNOJXT+NbY z5W;NVG7tL5(=uCmKD)G=!fxJ!7+&+u3N?SD>FuHH{squv`Xu;`ZR|lb7AvI8^orf&gn@7LXUM4Fz=8!i|cQq4~soqB0OBC@!p;$ zh&{2TD&!xmeXfSO={ppUz^};FiVJXjr zRum5QoZE`9^x!^rnOQ8>>|5-wGGnfcS8(!fq1FZrxJ;mVhH6}@;|hSl9MwU zoC4T%Eto!Y8T(F#WwS;ooAE0lo0I@aG=&7Cfhs5r*T|MlOhdrsia60+eNcRDceH|9 z4|7Yc)W7q4aoqOTjt+LpmmlI>0l5)h_az-AqE>)#pWSpkgXzVF}>i)E%k=F zz@Z*vqZ&$}>4q8&=K;>iFz)j(7?K5?f!HEJ(C-3Ka6~Zi@=-*<-S1<%-gBB@5tu;7 zh_uxcW8?H4q?&DbsGWD3+rUFHRHYvbRTPkc3gQ~thx2+wSmZ!56U-k_NPDKx z`XXd;CZqJh&&@yB&?(vRDA|@n1mV)&4VaLTm_l;~vV@yb5QxyU=(7<}a$6Q~J5u`B z=`am!BPtYd1n;m=kkbzkV(U}#R8a~v6bKMR2zyb|d?=tW1P9VlP_VM>ATT5fw-pG# zQHlWetmovO(4cu4OwnT~SV5Fr=%P&S(-nw?5=vB(ntQryQG#1Nz!@{L4^%kr&}*K~6zZsERQrlS$rg+j#*Dy8ty>Y)(9cgcdj$}H37O6b%o zc+^VwayVB}DlF7$+|(k^a;gkPYD&}^nnjEh`;x{M@>3(?3Tm>>MH=Bn+Hw1Oq86IA z`@(a`5~bAAOLDp(WZ4>Ooe64#1!}Q;3w2~_v8H{)U<<>03*in6;cE-&(jxs8YEznG zQ;G(8Vjl(i z5@r77dEXOY=`;cITd=bHaNt{J=>sSYL@!l(gk>Y53#KUzW}yq=E)Dre7b;a6szev2 zSsG?Y7j9V^?noEmQ5xY-7a3j}8Atauwe)KaT~u*tR2AJ{M&oa~paHs1ZB`PYG{$dM z<|GIHA4)tEON@6){ew&V5{qN-enRdD%PfKEq?Qg7Txk%7x=H{*p>iS(QiG@6)pCx8vN5 zAZqPk=C;ybB#ggl%73#k)^eBEeq^kZDz8&wtk<;r4PzHm9Q58?l)zjx!IGgN{6rWk zqzSq7eIYcddwE5bP4hA2m9uFpdWldLn6dGPhJC7y#eiK~M|nrtL31(VpS$udUARv4 z3U?329)gMy`#lhFkxor&_1M5YOtlkxisZCj>En6s)krfE&;zOvKl zsPbu+O0}wr7XHe~nTk1Xi=ns*PK(L~DeOWGhbb7QQSZvkm0s?xAUsY{>>6lVWo9YP z$|bC#v6Yim4;y}7n3WCY6@s7_ztGi*GsR=3E-Wd*$Ho0@c(eEVG6}Hq--9-v=lHXj zH>9c}zDR6xJ1QbqO81Gw@TXu{g9%mGQZY|^KGZl!GLd)&r77w6BA*h;DBxo(^)Mw= z?N_ONJQc-$7sR#XumN(!Ru&y}kl3Gal%=WcbA^Lm5Wysaq1F#R*pc903R*kXLlO)* zO=XEyfuSiBqZ-qd6m+@;^zWc)-ib*F(~0AZC0`;Zv96sL)Q7ASK;N}g;|W4Pz+5~Q zU&x3#ELlo?lz~Zo?c4cQAv>Hb19vI)&RK=%TpE?_d8eA8K7@9y>bV}4N}-1FmgU$& z;*$ST!mx72HMDkJM?zsSjs3D)BbdEn5if6>Ia!4FRxL=hkGoV0jZ74l#gJr5%;U5A z=bt2>`EZXXF1?p)TxENZ3c;6YLU1tHsZ@P|11>}!cWh#ju=3qdy4yAAT4GQ}u%ENL zirE+bF95YbO1~!jn*x__U~QFv?OzR-8_!i2N$H;sz`z%%UpmmjdbJm)RhLW=163KY zNFA{dfK@y+0~%yne$_)R)G=FeFnH|4-NJ7~)PwFe0Zwtm1}m~a?(F_%1T+w`UQO2k zw(v|bmKAIPFzB!h$isYDK_oPTb7|Y2HGwTCLlThG;;q0RAcQn1!?+#8=sv_e3ZAwoub(z2{AX*ueFeo3~qUjf@37bj*^glRT40wY+!NVVaa{~}t0H>k}`!rC~ z*-(qr^iG87O0iR8q2PI%JsfpUOTwbr!-iqs;uSSQEFPBWlRA4CV}*f19qs`4vOZA* zRn=T2)UQ3z!=4!&F+kftsI#{*TFniX3ICi!CzeyI-*lmsNHu^+{q(H0v`YU5NZ+j! zl$-nF?HqJOB{#M^0&d2F|3rP20Svg8C-WQuE3mRLf(h$a31q_(C$?%YTUfg``PTGm zH!+@}u0$+ejb(34vo=T3^0GxW9wWmN4|fePE@_|erBwk8V1fLJ7QC%bJqZPO~V_*ff{2rb}%y9Qo(6K1WDg5>uSVhqc=NZZbjDtYT!#!NJYcFwM zBX@KQ*myP802c#=Q@A>`R-q;KGf=od$is%&fGq?ArX|*C>v4BK^miW|AFzXpmxDf~ z!y&Ige$n@JK(GXl|1>0^?_{%gO3$~DZzJ&zEk)$R+9I7Mya1kIUsjKH4WM;eX+jAI zL$?L>OpDcx*BK2!_`*T=erL69oB4;?c0?HXg3~yf_w*oGK=#%7H_re)q!ll$l{xpf z0@q+oS-Cm~IYo>yFO)zcEAg@&+G*EyTibY>3xN|zgh5T03@~<+uSP$t?+*kRNl$?z zzxNJME~j^THtKIjxGp770!zvGNo_$v#}t3B^Ddl}9H8<^y)G;i+0t$D3E09vlbW8t zR~7I;Ell}=%M=U>JF%C6u`hU>UvKsTf;TugN#R4XFS|W76)X<}EesoRk6S61S3DiJ zTGIkWD?=3&|MhgO^D)!{B;+}V??V;XK)WxRQ1bvVumVeYYt%`>DtLoXySOS)mtfzx zh>7zqxB@Ql!z2`IQ$?AoBS-C$I`8hT-TE%7Upz&6aJmXh`TnpHa00DFpb)@-Er7B= zFqS1Wl?gXIga8iZ-xR4Sd1q`a=NEQVM5RP%^O2^Ssa34{PHJaMyrLExkX` zI1Hw+75l^BlGhaA0?;=Wtt_4y480UUpX8<3_IJ zo@uIs|9mkPZ%0(`gdHvoHajxpAf~TG=CfH!8#qYZVCT1fSb099O~mPI{%O>$<=^h! ze#Gq4zAJj`_o~Eki@s#2KJQl+*(L(ya=|RrVevQRV5NbgrbO_sd1MfO^UD_NUw=_* zY)ni)YB%s>SikmQOpkYGWB2N5PzxR7B(hYuk}lsJ)MMT-|PX4JTmV@Ho4L537Ll4M0QX|nv|W3OaO zmoH()lsS`TO`A7y=G3{9XHTC$fd&;ilxR_-N0BB~x|AbJmH*QCV>*>;RjXIAX4Sft z|7%yTU%`eIJCCLo% z*TUAln|E*DzkvrA{#!P};yF*ITsfS1bLY>u`jb9=I&|yTv1dMRaJx;XxTR(nKc0N~ zkJQmiH@}{Jd$xzV3xuyTZI;|$(O<1@k-B^T|9MMKKmZ9W(7>YLOYolr=hMkAz#+>=l}3q_PpIRTB) z&@&;8)W$IDq*T&NF&!>V1sz;#xh<{yQ>s8We9=)dNmb8MKDkVF&{G3tbyP(yb@k9x zWxaJ)QZwx}(hzI(RoG!w+cd?SzJp4~H~*A%*Jl;g_0VaZUG`RK8MRhdRkNj)PHedq zbWUn#Of*msEp_EC80t#>kGj-cjJ#i-V2jWF`>u7zy9K{x;SttI8^ldxg{!8 z_mueGhoy_z$%6V6ch`UPDFGQFAFh*_7_w>jTwZw&7uR(!_PJu41=4vbVroE|DtyYQ z#G;sMn1L%|#2yN3tv4dOBYaqPi0zhzvf7}ak-153Affg+cN5l0$Nf+5eW=a{(mx+1lWq6Trr7cz!~+J3S<8;^`f9wWwe|8cwVp=cL~Zo6g1 zuTiJ_?%w;jxY?AOB}HR%_ba8N#`J&Qo*G2S86`&OoLw2Zb1A7)Kk0<4kJ#K>L+3C5 z{j6Hvk{HH__A~?@tRVfvi35R0k+(fWe?D>GLiiyG-?`*y%lk(&;FgdG0%e40E89jU z*pL(krGMAkNCr3PkPGSuSKqVY4awq+Bss%mIk^o~+=M=V=r25si-r3d1wVi(uR8Y7 zQq87AME+$@Mt3TpbOP8YoWZVJt%H)%y6Ch7f{|zlnPE*F*u08BkAk<`$r%v>!m z5z%{y8iRsIj_5HXMwDJGs7J+uxKJZ98PO;v{nWWCp7DopdF*EL21Co%H_eb28vUq zE(O9%SvF8+(}?BJ{Bb>MkYFGwq})HCKt;9vGHV_rCgOajkIH$FZM!H#4TPpmaMq1| zaq#9i#W}xV+7fMK6W%!0!%I}2GK9H{=K21SOX4lFnQaSNElD{LvWXLw`Md=-1v&$) z<>8wF9SARP=}E*fbC%JlCP7vR$~Y8b5CP5QMRP~dm;vITmH4MEcSbg>r6GletAX!$ z=|=W7^rioZsRxBwH*p@W68u<%9sdD5l}7ZYplqm2{~sy|d>Ry?0#RE89?;Peo-noKZw5=dH)u=8GS_6^Z zBCA@{C*0myQ-cgNad7KqSnDQFxarK8UHPr14^NCqjY53f;Up0eZ`(!hq^Ta@j* z*+{Q@*Sk*N0e6+SjPFdH1j2vF)_TP2ol_%P{}ABmx4O-oo;HOx+%h<6l@uj!%fM?? z2G`Uc5ImuD4XQP5(%>L|#3*8chDzhMEoNei87dKs3YP7t5|7T>qi-=7U0ZiA??(Eq579D9vZ8MijA_Has6 z&wb?``x_zGt9iot3TXB2ZsiFb?7p*C^AS!{*Ekm|!i6R`G-rF+M4zC$1yY-rCmpV9 zPNcS2op!Yo=0PcA?d?)%HEsSQ|FcfY_0IH{Y=Q(f(&QAkU&%g@yM2=Heowi?m1$iu z#NyA=X7KR_FH>Ti59IUwCZ`q#ldN z_;&k^N9Gd`Yi3tS2F1ENl&i78bc~)pbO8PH*~1v6F+cmoUu)BAHPZz7a>WJiwcJl% z_C9{S%55pY@Q7|IkA0@cAf#`F-e&$ZEcFELaJ)~C)F$o%ugu_UXXGyH@(OV@&`Hc{ z=(=wIw9NGG#-+4o8kouS|JH5=Sx`g<=hYk{)(%kad`yJ0Euw=YzpHv zu52PG5U~{|5~sbt>_R+nJbQV?%arnkbnn|ZomJ-chVLvc`6d>*R|fzs(?9&Vwq5{VHJ^mg*YeGA^&Suz$Pp2-b(KwIEd@BeAQxe*-q%v$43C_;S%`k&1z^Lv9sS(S> z%O0j-p7!h_$r1BTlF9g?%_7m;5c3vq0c}L>5(P`UoUh2H@4qB7xEgT2EVIs(%&6vT z&C&|{G)|U`O%A^iFRAFs1PdSdfF6pkFkf@^{(&!NZNY-6&H6ISY^u!`Q#h%}+?Gdp zC@O+TQ#+Tl)Xen0$Vo2+f-enX8U&#bgkhbQj47w#wF)y7fztqe z@A+cPzG{lez;m$X%rZ}iZrD#Z?@ZnX)3vOSI@8QQ(MvYv2*W`pj_g*uij84&(=Ms&877U9i<#I=PR5�QzC*JGtx;u3ZH^d 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%0D^y6FLu=c(-}$n3Ft#G0u}E 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

L4Ib$lc>2tIHf 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 z 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 )b&-z4?K6mk&bc@X%re&{~1B-Ui`6m(PKs5>zk$ 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⁡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

'; @@ -4044,7 +4135,7 @@ public function list_errors() { * @param Array $backup_array An array of backup information */ private function save_last_backup($backup_array) { - $success = ($this->error_count() == 0) ? 1 : 0; + $success = (0 == $this->error_count()) ? 1 : 0; $last_backup = UpdraftPlus_Options::get_updraft_option('updraft_last_backup', array()); if (empty($last_backup)) $last_backup = array(); if ('incremental' === $this->jobdata_get('job_type')) { @@ -4090,7 +4181,7 @@ public function check_db_connection($handle = false, $log_it = false, $reschedul if ('mysql link' == $type || 'mysqli' == $type) { if ('mysql link' == $type && @mysql_ping($handle)) return true;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged, PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved -- Needed to add this as the old ignores no longer work - if ('mysqli' == $type && @mysqli_ping($handle)) return true;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if ('mysqli' == $type && @mysqli_ping($handle)) return true;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. for ($tries = 1; $tries <= 5; $tries++) { // to do, if ever needed @@ -4313,7 +4404,7 @@ private function delete_local($file) { */ public function check_recent_modification($file) { if (file_exists($file)) { - $time_mod = (int) @filemtime($file);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + $time_mod = (int) @filemtime($file);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $time_now = time(); if ($time_mod > 100 && ($time_now - $time_mod) < 30) { UpdraftPlus_Job_Scheduler::terminate_due_to_activity($file, $time_now, $time_mod); @@ -4459,7 +4550,7 @@ public function compile_folder_list_for_backup($backup_from_inside_dir, $avoid_t } } } - @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. if ($log_skipped > 0) { $this->log("finding files: $log_skipped_last: adding to list ($added, last; $log_skipped log lines skipped)"); } @@ -4481,7 +4572,7 @@ private function save_backup_to_history($backup_array) { if (!is_array($backup_array)) { $this->log('Could not save backup history because we have no backup array. Backup probably failed.'); - $this->log(__('Could not save backup history because we have no backup array. Backup probably failed.', 'updraftplus'), 'error'); + $this->log(__('Could not save backup history because we have no backup array.', 'updraftplus').' '.__('Backup probably failed.', 'updraftplus'), 'error'); return; } @@ -4699,8 +4790,10 @@ public function storage_options_filter($options, $option_name) { public function backups_dir_location($allow_cache = true) { if ($allow_cache && !empty($this->backup_dir)) return $this->backup_dir; + $updraft_dir = UpdraftPlus_Options::get_updraft_option('updraft_dir'); + if (!is_string($updraft_dir)) $updraft_dir = ''; + $updraft_dir = untrailingslashit($updraft_dir); - $updraft_dir = untrailingslashit(UpdraftPlus_Options::get_updraft_option('updraft_dir')); // When newly installing, if someone had (e.g.) wp-content/updraft in their database from a previous, deleted pre-1.7.18 install but had removed the updraft directory before re-installing, without this fix they'd end up with wp-content/wp-content/updraft. if (preg_match('/^wp-content\/(.*)$/', $updraft_dir, $matches) && ABSPATH.'wp-content' === WP_CONTENT_DIR) { UpdraftPlus_Options::update_updraft_option('updraft_dir', $matches[1]); @@ -4724,10 +4817,10 @@ public function backups_dir_location($allow_cache = true) { // Check for the existence of the dir and prevent enumeration // index.php is for a sanity check - make sure that we're not somewhere unexpected if ((!is_dir($updraft_dir) || !is_file($updraft_dir.'/index.html') || !is_file($updraft_dir.'/.htaccess')) && !is_file($updraft_dir.'/index.php') || !is_file($updraft_dir.'/web.config')) { - @mkdir($updraft_dir, 0775, true);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged - @file_put_contents($updraft_dir.'/index.html', "WordPress backups by UpdraftPlus");// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged - if (!is_file($updraft_dir.'/.htaccess')) @file_put_contents($updraft_dir.'/.htaccess', 'deny from all');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged - if (!is_file($updraft_dir.'/web.config')) @file_put_contents($updraft_dir.'/web.config', "\n\n\n\n\n\n\n");// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @mkdir($updraft_dir, 0775, true);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. + @file_put_contents($updraft_dir.'/index.html', "WordPress backups by UpdraftPlus");// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. + if (!is_file($updraft_dir.'/.htaccess')) @file_put_contents($updraft_dir.'/.htaccess', 'deny from all');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. + if (!is_file($updraft_dir.'/web.config')) @file_put_contents($updraft_dir.'/web.config', "\n\n\n\n\n\n\n");// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } $this->backup_dir = $updraft_dir; @@ -4763,10 +4856,10 @@ public function get_total_backup_size($backup) { } public function spool_file($fullpath, $encryption = '') { - if (function_exists('set_time_limit')) @set_time_limit(900);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (function_exists('set_time_limit')) @set_time_limit(900);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. if (!file_exists($fullpath) || filesize($fullpath) < 1) { - _e('File not found', 'updraftplus'); + esc_html_e('File not found', 'updraftplus'); return; } @@ -4778,7 +4871,7 @@ public function spool_file($fullpath, $encryption = '') { if (ob_get_level()) { $flush_max = min(5, (int) ob_get_level()); for ($i=1; $i<=$flush_max; $i++) { - @ob_end_clean();// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @ob_end_clean();// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } } header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 @@ -4795,7 +4888,7 @@ public function spool_file($fullpath, $encryption = '') { if (ob_get_level()) { $flush_max = min(5, (int) ob_get_level()); for ($i=1; $i<=$flush_max; $i++) { - @ob_end_clean();// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @ob_end_clean();// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } } if (ob_get_level()) @ob_end_clean(); // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged --Twice - see HS#6673 - someone at least needed it @@ -4979,9 +5072,9 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only if (!$encryption) { if (class_exists('UpdraftPlus_Addon_MoreDatabase')) { - $err[] = sprintf(__('Error: %s', 'updraftplus'), __('Decryption failed. The database file is encrypted, but you have no encryption key entered.', 'updraftplus')); + $err[] = sprintf(__('Error: %s', 'updraftplus'), __('Decryption failed.', 'updraftplus').' '.__('The database file is encrypted, but you have no encryption key entered.', 'updraftplus')); } else { - $err[] = sprintf(__('Error: %s', 'updraftplus'), __('Decryption failed. The database file is encrypted.', 'updraftplus')); + $err[] = sprintf(__('Error: %s', 'updraftplus'), __('Decryption failed.', 'updraftplus').' '.__('The database file is encrypted.', 'updraftplus')); } return array($mess, $warn, $err, $info); } @@ -4991,7 +5084,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only if (is_array($decrypted_file)) { $db_file = $decrypted_file['fullpath']; } else { - $err[] = __('Decryption failed. The most likely cause is that you used the wrong key.', 'updraftplus'); + $err[] = __('Decryption failed.', 'updraftplus').' '.__('The most likely cause is that you used the wrong key.', 'updraftplus'); return array($mess, $warn, $err, $info); } } @@ -5049,7 +5142,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only // "120 or 240" is a first attempt at something more useful than just fixed at 90 - but should be sufficient (as 90 was for everyone without ~1GB databases) $default_dbscan_timeout = (filesize($db_file) < 31457280) ? 120 : 240; $dbscan_timeout = (defined('UPDRAFTPLUS_DBSCAN_TIMEOUT') && is_numeric(UPDRAFTPLUS_DBSCAN_TIMEOUT)) ? UPDRAFTPLUS_DBSCAN_TIMEOUT : $default_dbscan_timeout; - if (function_exists('set_time_limit')) @set_time_limit($dbscan_timeout);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (function_exists('set_time_limit')) @set_time_limit($dbscan_timeout);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. // We limit the time that we spend scanning the file for character sets $db_charset_collate_scan_timeout = (defined('UPDRAFTPLUS_DB_CHARSET_COLLATE_SCAN_TIMEOUT') && is_numeric(UPDRAFTPLUS_DB_CHARSET_COLLATE_SCAN_TIMEOUT)) ? UPDRAFTPLUS_DB_CHARSET_COLLATE_SCAN_TIMEOUT : 10; @@ -5084,16 +5177,16 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only $old_siteurl_parsed = parse_url($old_siteurl); $actual_siteurl_parsed = parse_url(site_url()); if ((stripos($old_siteurl_parsed['host'], 'www.') === 0 && stripos($actual_siteurl_parsed['host'], 'www.') !== 0) || (stripos($old_siteurl_parsed['host'], 'www.') !== 0 && stripos($actual_siteurl_parsed['host'], 'www.') === 0)) { - $powarn = sprintf(__('The website address in the backup set (%s) is slightly different from that of the site now (%s). This is not expected to be a problem for restoring the site, as long as visits to the former address still reach the site.', 'updraftplus'), $old_siteurl, site_url()).' '; + $powarn = sprintf(__('The website address in the backup set (%s) is slightly different from that of the site now (%s).', 'updraftplus'), $old_siteurl, site_url()).' '.__('This is not expected to be a problem for restoring the site, as long as visits to the former address still reach the site.', 'updraftplus').' '; } else { $powarn = ''; } if (('https' == $old_siteurl_parsed['scheme'] && 'http' == $actual_siteurl_parsed['scheme']) || ('http' == $old_siteurl_parsed['scheme'] && 'https' == $actual_siteurl_parsed['scheme'])) { $powarn .= sprintf(__('This backup set is of this site, but at the time of the backup you were using %s, whereas the site now uses %s.', 'updraftplus'), $old_siteurl_parsed['scheme'], $actual_siteurl_parsed['scheme']); if ('https' == $old_siteurl_parsed['scheme']) { - $powarn .= ' '.apply_filters('updraftplus_https_to_http_additional_warning', sprintf(__('This restoration will work if you still have an SSL certificate (i.e. can use https) to access the site. Otherwise, you will want to use %s to search/replace the site address so that the site can be visited without https.', 'updraftplus'), ''.__('the migrator add-on', 'updraftplus').'')); + $powarn .= ' '.apply_filters('updraftplus_https_to_http_additional_warning', ''); } else { - $powarn .= ' '.apply_filters('updraftplus_http_to_https_additional_warning', sprintf(__('As long as your web hosting allows http (i.e. non-SSL access) or will forward requests to https (which is almost always the case), this is no problem. If that is not yet set up, then you should set it up, or use %s so that the non-https links are automatically replaced.', 'updraftplus'), apply_filters('updraftplus_migrator_addon_link', ''.__('the migrator add-on', 'updraftplus').''))); + $powarn .= ' '.apply_filters('updraftplus_http_to_https_additional_warning', ''); } } else { $powarn .= apply_filters('updraftplus_dbscan_urlchange_www_append_warning', ''); @@ -5103,10 +5196,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only // For completely different site migration $info['same_url'] = false; $info['url_scheme_change'] = false; - $warn[] = apply_filters('updraftplus_dbscan_urlchange', ''.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus'), htmlspecialchars($old_siteurl.' / '.untrailingslashit(site_url()))).'', $old_siteurl, $res); - } - if (!class_exists('UpdraftPlus_Addons_Migrator')) { - $warn[] .= ''.__('You can search and replace your database (for migrating a website to a new location/URL) with the Migrator add-on - follow this link for more information', 'updraftplus').''; + $warn[] = apply_filters('updraftplus_dbscan_urlchange', ''.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration.', 'updraftplus'), htmlspecialchars($old_siteurl.' / '.untrailingslashit(site_url()))).' '.__('You need the Migrator add-on in order to make this work.', 'updraftplus').'', $old_siteurl, $res); } } @@ -5124,7 +5214,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only // Check for should-be migration if (!$migration_warning && UpdraftPlus_Manipulation_Functions::normalise_url(home_url()) != UpdraftPlus_Manipulation_Functions::normalise_url($old_home)) { $migration_warning = true; - $powarn = apply_filters('updraftplus_dbscan_urlchange', ''.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration. You need the Migrator add-on in order to make this work.', 'updraftplus'), htmlspecialchars($old_home.' / '.home_url())).'', $old_home, $res); + $powarn = apply_filters('updraftplus_dbscan_urlchange', ''.sprintf(__('This backup set is from a different site (%s) - this is not a restoration, but a migration.', 'updraftplus'), htmlspecialchars($old_home.' / '.home_url())).' '.__('You need the Migrator add-on in order to make this work.', 'updraftplus').'', $old_home, $res); if (!empty($powarn)) $warn[] = $powarn; } } elseif (!isset($info['created_by_version']) && preg_match('/^\# Created by UpdraftPlus version ([\d\.]+)/', $buffer, $matches)) { @@ -5134,16 +5224,15 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only if (!empty($matches[3])) $old_wp_version .= substr($matches[3], 0, strlen($matches[3])-1); if (version_compare($old_wp_version, $wp_version, '>')) { // $mess[] = sprintf(__('%s version: %s', 'updraftplus'), 'WordPress', $old_wp_version); - $warn[] = sprintf(__('You are importing from a newer version of WordPress (%s) into an older one (%s). There are no guarantees that WordPress can handle this.', 'updraftplus'), $old_wp_version, $wp_version); + $warn[] = sprintf(__('You are importing from a newer version of WordPress (%s) into an older one (%s).', 'updraftplus'), $old_wp_version, $wp_version).' '.__('There are no guarantees that WordPress can handle this.', 'updraftplus'); } if (preg_match('/running on PHP ([0-9]+\.[0-9]+)(\s|\.)/', $matches[4], $nmatches) && preg_match('/^([0-9]+\.[0-9]+)(\s|\.)/', PHP_VERSION, $cmatches)) { $old_php_version = $nmatches[1]; $current_php_version = $cmatches[1]; if (version_compare($old_php_version, $current_php_version, '>')) { - // $mess[] = sprintf(__('%s version: %s', 'updraftplus'), 'WordPress', $old_wp_version); - $warn[] = sprintf(__('The site in this backup was running on a webserver with version %s of %s. ', 'updraftplus'), $old_php_version, 'PHP').' '.sprintf(__('This is significantly newer than the server which you are now restoring onto (version %s).', 'updraftplus'), PHP_VERSION).' '.sprintf(__('You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the older %s version.', 'updraftplus'), 'PHP').' '.sprintf(__('Any support requests to do with %s should be raised with your web hosting company.', 'updraftplus'), 'PHP'); + $warn[] = sprintf(__('The site in this backup was running on a webserver with version %s of %s.', 'updraftplus'), $old_php_version, 'PHP').' '.sprintf(__('This is significantly newer than the server which you are now restoring onto (version %s).', 'updraftplus'), PHP_VERSION).' '.sprintf(__('You should only proceed if you cannot update the current server and are confident (or willing to risk) that your plugins/themes/etc are compatible with the older %s version.', 'updraftplus'), 'PHP').' '.sprintf(__('Any support requests to do with %s should be raised with your web hosting company.', 'updraftplus'), 'PHP'); } elseif (version_compare($old_php_version, $current_php_version, '<')) { - $warn[] = sprintf(__('The site in this backup was running on a webserver with version %s of %s. ', 'updraftplus'), $old_php_version, 'PHP').' '.sprintf(__('This is older than the server which you are now restoring onto (version %s).', 'updraftplus'), PHP_VERSION).' '.sprintf(__('You should only proceed if you have checked and are confident (or willing to risk) that your plugins/themes/etc. are compatible with the new %s version.', 'updraftplus'), 'PHP').' '.sprintf(__('Any support requests to do with %s should be raised with your web hosting company.', 'updraftplus'), 'PHP'); + $warn[] = sprintf(__('The site in this backup was running on a webserver with version %s of %s.', 'updraftplus'), $old_php_version, 'PHP').' '.sprintf(__('This is older than the server which you are now restoring onto (version %s).', 'updraftplus'), PHP_VERSION).' '.sprintf(__('You should only proceed if you have checked and are confident (or willing to risk) that your plugins/themes/etc are compatible with the new %s version.', 'updraftplus'), 'PHP').' '.sprintf(__('Any support requests to do with %s should be raised with your web hosting company.', 'updraftplus'), 'PHP'); } } } elseif (null === $old_table_prefix && (preg_match('/^\# Table prefix: ?(\S*)$/', $buffer, $matches) || preg_match('/^-- Table prefix: ?(\S*)$/i', $buffer, $matches))) { @@ -5170,7 +5259,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only return array($mess, $warn, $err, $info); } } elseif (isset($old_siteinfo['multisite']) && $old_siteinfo['multisite'] && !is_multisite()) { - $warn[] = __('Warning:', 'updraftplus').' '.__('Your backup is of a WordPress multisite install; but this site is not. Only the first site of the network will be accessible.', 'updraftplus').' '.__('If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite.', 'updraftplus').''; + $warn[] = __('Warning:', 'updraftplus').' '.__('Your backup is of a WordPress multisite install; but this site is not.', 'updraftplus').' '.__('Only the first site of the network will be accessible.', 'updraftplus').' '.__('If you want to restore a multisite backup, you should first set up your WordPress installation as a multisite.', 'updraftplus').''; } } elseif (preg_match('/^([^=]+)=(.*)$/', $matches[1], $kvmatches)) { $key = $kvmatches[1]; @@ -5182,7 +5271,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only $old_siteinfo[$key] = $val; } } elseif (preg_match('/^\# Skipped tables: (.*)$/', $buffer, $matches)) { - $skipped_tables = explode(',', $matches[1]); + $skipped_tables = array_map('trim', explode(',', $matches[1])); } } elseif (preg_match('#^\s*/\*\!40\d+ SET NAMES (.*)\*\/#i', $buffer, $smatches)) { @@ -5251,10 +5340,10 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only } if ($is_plain) { if (!feof($dbhandle)) $db_scan_timed_out = true; - @fclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @fclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } else { if (!gzeof($dbhandle)) $db_scan_timed_out = true; - @gzclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @gzclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } if (!empty($db_supported_character_sets)) { $db_charsets_found_unique = array_unique($db_charsets_found); @@ -5326,7 +5415,7 @@ public function analyse_db_file($timestamp, $res, $db_file = false, $header_only $similar_type_collate = UpdraftPlus_Manipulation_Functions::get_matching_str_from_array_elems($db_unsupported_collate_unique, array_keys($db_supported_collations), false); } - $collate_select_html = '
'; + $collate_select_html = '
'; $collate_select_html .= ' '; $select_restore_tables .= '
'; } @@ -5697,6 +5787,7 @@ public function get_settings_keys() { 'updraftplus_tour_cancelled_on', 'updraftplus_version', 'updraft_dismiss_admin_warning_litespeed', + 'updraft_dismiss_admin_warning_pclzip', 'updraft_dismiss_phpseclib_notice', ); } @@ -5747,8 +5838,8 @@ public function get_database_tables($dbsinfo = array('wp' => array())) { } // Put the options table first - $updraftplus_database_utility = new UpdraftPlus_Database_Utility($key, $table_prefix_raw, $dbhandle); - usort($all_tables, array($updraftplus_database_utility, 'backup_db_sorttables')); + UpdraftPlus_Database_Utility::init($key, $table_prefix_raw, $dbhandle); + usort($all_tables, array('UpdraftPlus_Database_Utility', 'backup_db_sorttables')); $all_table_names = array_map(array($this, 'cb_get_name'), $all_tables); $db_tables_array[$key] = $all_table_names; @@ -5806,38 +5897,71 @@ public function get_url($which_page = false) { return apply_filters('updraftplus_com_shop', 'https://updraftplus.com/shop/'); break; case 'premium': - return apply_filters('updraftplus_com_premium', 'https://updraftplus.com/shop/updraftplus-premium/'); + return apply_filters('updraftplus_com_premium', 'https://teamupdraft.com/updraftplus/pricing?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=updraftplus-premium&utm_creative_format=text'); break; case 'buy-tokens': return apply_filters('updraftplus_com_updraftclone_tokens', 'https://updraftplus.com/shop/updraftclone-tokens/'); break; case 'lost-password': - return apply_filters('updraftplus_com_myaccount_lostpassword', 'https://updraftplus.com/my-account/lost-password/'); + return apply_filters('updraftplus_com_myaccount_lostpassword', 'https://teamupdraft.com/my-account/lost-password/?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=forgotten-details&utm_creative_format=text'); break; case 'mothership': return apply_filters('updraftplus_com_mothership', 'https://updraftplus.com/plugin-info'); break; case 'shop_premium': - return apply_filters('updraftplus_com_shop_premium', 'https://updraftplus.com/shop/updraftplus-premium/'); + return apply_filters('updraftplus_com_shop_premium', 'https://teamupdraft.com/updraftplus/pricing?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=updraftplus-premium&utm_creative_format=text#pricing-block'); break; case 'shop_vault_5': - return apply_filters('updraftplus_com_shop_vault_5', 'https://updraftplus.com/shop/updraftplus-vault-storage-5-gb/'); + return apply_filters('updraftplus_com_shop_vault_5', 'https://teamupdraft.com/cart/?add-to-cart=1431&variation_id=1441?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=updraftplus-vault-storage-$1-trial&utm_creative_format=button'); break; case 'shop_vault_15': - return apply_filters('updraftplus_com_shop_vault_15', 'https://updraftplus.com/shop/updraftplus-vault-storage-15-gb/'); + return apply_filters('updraftplus_com_shop_vault_15', 'https://teamupdraft.com/cart/?add-to-cart=1434&variation_id=1441?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=updraftplus-vault-storage-15-gb&utm_creative_format=button'); break; case 'shop_vault_50': - return apply_filters('updraftplus_com_shop_vault_50', 'https://updraftplus.com/shop/updraftplus-vault-storage-50-gb/'); + return apply_filters('updraftplus_com_shop_vault_50', 'https://teamupdraft.com/cart/?add-to-cart=1440&variation_id=1441?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=updraftplus-vault-storage-50-gb&utm_creative_format=button'); break; case 'shop_vault_250': - return apply_filters('updraftplus_com_shop_vault_250', 'https://updraftplus.com/shop/updraftplus-vault-storage-250-gb/'); + return apply_filters('updraftplus_com_shop_vault_250', 'https://teamupdraft.com/cart/?add-to-cart=1437&variation_id=1441?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=updraftplus-vault-storage-250-gb&utm_creative_format=button'); break; case 'anon_backups': - return apply_filters('updraftplus_com_anon_backups', 'https://updraftplus.com/upcoming-updraftplus-feature-clone-data-anonymisation/'); + return apply_filters('updraftplus_com_anon_backups', 'https://teamupdraft.com/blog/upcoming-updraftplus-feature-anonymise-data-before-cloning-your-site/?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=unknown&utm_creative_format=unknown'); break; case 'clone_packages': return apply_filters('updraftplus_com_clone_packages', 'https://updraftplus.com/faqs/what-is-the-largest-site-that-i-can-clone-with-updraftclone/'); break; + case 'premium_more_than_one_storage': + return apply_filters('updraftplus_premium_more_than_one_storage', 'https://teamupdraft.com/updraftplus/pricing?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=more-than-one&utm_creative_format=text'); + break; + case 'premium_rackspace': + return apply_filters('updraftplus_premium_rackspace', 'https://teamupdraft.com/updraftplus/features/rackspace-cloudfiles?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=rackspace-container&utm_creative_format=text'); + break; + case 'premium_onedrive': + return apply_filters('updraftplus_premium_onedrive', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=back-up-to-onedrive&utm_creative_format=text'); + break; + case 'premium_azure': + return apply_filters('updraftplus_premium_azure', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=backup-to-microsoft-azure&utm_creative_format=text'); + break; + case 'premium_sftp': + return apply_filters('updraftplus_premium_sftp', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=backup-via-sftp-and-scp&utm_creative_format=text'); + break; + case 'premium_googlecloud': + return apply_filters('updraftplus_premium_googlecloud', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=backup-to-google-cloud&utm_creative_format=text'); + break; + case 'premium_backblaze': + return apply_filters('updraftplus_premium_backblaze', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=backup-to-backblaze&utm_creative_format=text'); + break; + case 'premium_webdav': + return apply_filters('updraftplus_premium_webdav', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=backup-to-webdav&utm_creative_format=text'); + break; + case 'premium_pcloud': + return apply_filters('updraftplus_premium_pcloud', 'https://teamupdraft.com/updraftplus/wordpress-cloud-storage-options?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=backup-to-pcloud&utm_creative_format=text'); + break; + case 'premium_email': + return apply_filters('updraftplus_premium_email', 'https://teamupdraft.com/updraftplus/features/advanced-wordpress-backup-reports?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=for-more-email-options&utm_creative_format=notice'); + break; + case 'buy_clone_tokens': + return apply_filters('updraftplus_buy_clone_tokens', 'https://teamupdraft.com/updraftplus/updraftclone/?utm_source=udp-plugin&utm_medium=referral&utm_campaign=paac&utm_content=to-clone-your-site&utm_creative_format=text#pricing-block'); + break; default: return 'URL not found ('.$which_page.')'; } @@ -6040,7 +6164,7 @@ public function server_configuration_file_list() { '.htaccess', ); // the default value for user_ini.filename setting in PHP.ini file is '.user.ini' but this could be set to use different file name - $server_config_filenames[] = ini_get('user_ini.filename'); // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives.user_ini_filenameFound + $server_config_filenames[] = ini_get('user_ini.filename'); // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives.user_ini_filenameFound -- Ignore ini_get function compatibility. $server_config_filenames = array_unique($server_config_filenames); return $server_config_filenames; } @@ -6187,6 +6311,7 @@ public function if_cond($value1, $operator, $value2) { return $value1 != $value2; break; default: + // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. throw new Exception(__METHOD__.": Unsupported (".$operator.") operator", 1); break; } @@ -6278,7 +6403,39 @@ protected function list_active_features_requiring_phpseclib() { private function get_site_name() { return preg_replace('/^www\./i', '', strtolower(parse_url(network_site_url(), PHP_URL_HOST))); } - + + /** + * Function to load Updraft_Checkout_Embed + * + * @return void + */ + public static function load_checkout_embed() { + global $updraftplus_checkout_embed; + if (!class_exists('Updraft_Checkout_Embed')) updraft_try_include_file('includes/checkout-embed/class-udp-checkout-embed.php', 'include_once'); + + // Create an empty list (useful for testing, thanks to the filter below) + $checkout_embed_products = array(); + + // get products from JSON file. + $checkout_embed_product_file = UPDRAFTPLUS_DIR.'/includes/checkout-embed/products.json'; + if (file_exists($checkout_embed_product_file)) { + $checkout_embed_products = json_decode(file_get_contents($checkout_embed_product_file)); + } else { + throw new Exception(sprintf("The %s file is missing.", $checkout_embed_product_file)); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. + } + + $checkout_embed_products = apply_filters('updraftplus_checkout_embed_products', $checkout_embed_products); + + if (!empty($checkout_embed_products)) { + $updraftplus_checkout_embed = new Updraft_Checkout_Embed( + 'updraftplus', // plugin name + UpdraftPlus_Options::admin_page_url().'?page=updraftplus', // return url + $checkout_embed_products, // products list + UPDRAFTPLUS_URL.'/includes' // base_url + ); + } + } + /** * Function to replace avatar with default image in UpdraftClone environment * @@ -6290,4 +6447,44 @@ public function get_avatar_url($url) { if (preg_match('/gravatar.com/i', $url)) return UPDRAFTPLUS_URL.'/images/default-avatar.jpg'; return $url; } + + /** + * Modifies the parent file value. + * + * This modification is necessary to prevent the active menu selection from pointing to the + * old "Settings" menu and to ensure correct menu highlighting. + * + * @param string $parent_file The current parent file value. + * + * @return string The modified parent file value. + */ + public static function parent_file($parent_file) { + // Set the global variable 'self' and update the parent file to UpdraftPlus_Options::PARENT_FILE + $GLOBALS['self'] = $parent_file = UpdraftPlus_Options::PARENT_FILE; + + return $parent_file; + } + + /** + * Unserialize data while maintaining compatibility across PHP versions due to different number of arguments required by PHP's "unserialize" function + * + * @param string $serialized_data Data to be unserialized, should be one that is already serialized + * @param boolean|array $allowed_classes Either an array of class names which should be accepted, false to accept no classes, or true to accept all classes + * @param integer $max_depth The maximum depth of structures permitted during unserialization, and is intended to prevent stack overflows + * @return mixed Unserialized data can be any of types (integer, float, boolean, string, array or object) + */ + public static function unserialize($serialized_data, $allowed_classes = false, $max_depth = 0) { + static $polyfill_unserialize_loaded = false; + if (version_compare(PHP_VERSION, '5.2', '<=')) { + $result = unserialize($serialized_data); // For PHP 5.2 users, the search-replace feature has been removed, meaning that any input provided in this context will not undergo search-replace processing + } else { + if (!$polyfill_unserialize_loaded) { + if (!class_exists('Brumann\Polyfill\DisallowedClassesSubstitutor')) updraft_try_include_file('vendor/brumann/polyfill-unserialize/src/DisallowedClassesSubstitutor.php', 'require_once'); + if (!class_exists('Brumann\Polyfill\Unserialize')) updraft_try_include_file('vendor/brumann/polyfill-unserialize/src/Unserialize.php', 'require_once'); + $polyfill_unserialize_loaded = true; + } + $result = call_user_func(array('Brumann\Polyfill\Unserialize', 'unserialize'), $serialized_data, array('allowed_classes' => $allowed_classes, 'max_depth' => $max_depth)); + } + return $result; + } } diff --git a/wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css b/wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css new file mode 100644 index 00000000..4601b82e --- /dev/null +++ b/wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css @@ -0,0 +1,2 @@ +@-webkit-keyframes udp_blink{from{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:.4;-webkit-transform:scale(0.85);transform:scale(0.85)}}@keyframes udp_blink{from{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:.4;-webkit-transform:scale(0.85);transform:scale(0.85)}}@-webkit-keyframes udp_rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes udp_rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.max-width-600{max-width:600px}.max-width-700{max-width:700px}.width-900{max-width:900px}.width-80{width:80%}.updraft--flex{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft--flex>*{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft--flex>.updraft--one-half{width:50%;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.updraft--flex>.updraft--two-halves{width:100%;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.updraft-file-ready-label{padding:5px}.updraft-color--very-light-grey{background:#f8f8f8}.no-decoration{text-decoration:none}.bold{font-weight:bold}.center-align-td{text-align:center}.remove-padding{padding:0 !important}.updraft-text-center{text-align:center}.autobackup{padding:6px;margin:8px 0}ul .disc{list-style:disc inside}.dashicons-log-fix{display:inherit}.udpdraft__lifted{-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#updraft-wrap a .dashicons{text-decoration:none}.updraft-field-description,table.form-table td p.updraft-field-description{font-size:90%;line-height:1.2;font-style:italic;margin-bottom:5px}label.updraft_checkbox{display:block;margin-bottom:4px;margin-left:26px}label.updraft_checkbox>input[type=checkbox]{margin-left:-25px}div[id*="updraft_include_"]{margin-bottom:9px}.settings_page_updraftplus input[type="file"]{border:0}.settings_page_updraftplus .wipe_settings{padding-bottom:10px}.settings_page_updraftplus input[type="text"]{font-size:14px}.settings_page_updraftplus select{border-radius:4px;max-width:100%}input.updraft_input--wide,textarea.updraft_input--wide{max-width:442px;width:100%}#updraft-wrap .button-large{font-size:1.3em}.main-dashboard-buttons{border-width:4px;border-radius:12px;letter-spacing:0;font-size:17px;font-weight:bold;padding-left:.7em;padding-right:2em;padding:.3em 1em;line-height:1.7em;background:transparent;position:relative;border:2px solid;-webkit-transition:all .2s;transition:all .2s;vertical-align:baseline;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;line-height:1.3em;margin-left:.3em;text-transform:none;line-height:1;text-decoration:none}.button-restore{border-color:#629ec0;color:#629ec0}.button-ud-google{text-decoration:none !important;-webkit-transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,box-shadow .3s;transition:background-color .3s,box-shadow .3s,-webkit-box-shadow .3s;padding:12px 16px 12px 42px !important;border:0;border-radius:3px;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);color:#757575;font-size:14px;font-weight:500;font-family:"Roboto";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTcuNiA5LjJsLS4xLTEuOEg5djMuNGg0LjhDMTMuNiAxMiAxMyAxMyAxMiAxMy42djIuMmgzYTguOCA4LjggMCAwIDAgMi42LTYuNnoiIGZpbGw9IiM0Mjg1RjQiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik05IDE4YzIuNCAwIDQuNS0uOCA2LTIuMmwtMy0yLjJhNS40IDUuNCAwIDAgMS04LTIuOUgxVjEzYTkgOSAwIDAgMCA4IDV6IiBmaWxsPSIjMzRBODUzIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNNCAxMC43YTUuNCA1LjQgMCAwIDEgMC0zLjRWNUgxYTkgOSAwIDAgMCAwIDhsMy0yLjN6IiBmaWxsPSIjRkJCQzA1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNOSAzLjZjMS4zIDAgMi41LjQgMy40IDEuM0wxNSAyLjNBOSA5IDAgMCAwIDEgNWwzIDIuNGE1LjQgNS40IDAgMCAxIDUtMy43eiIgZmlsbD0iI0VBNDMzNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZD0iTTAgMGgxOHYxOEgweiIvPjwvZz48L3N2Zz4=);background-color:#FFF;background-repeat:no-repeat;background-position:12px 11px}.button-ud-google:hover{-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25);box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25)}.button-ud-google:active{background-color:#EEE}.button-ud-google:focus{outline:0;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25),0 0 0 3px #c8dafc;box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25),0 0 0 3px #c8dafc}.button-ud-google:disabled{-webkit-filter:grayscale(100%);filter:grayscale(100%);background-color:#ebebeb;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);cursor:not-allowed}.dashboard-main-sizing{border-width:4px;width:190px;line-height:1.7em}p.updraftplus-option{margin-top:0;margin-bottom:5px}p.updraftplus-option-inline{display:inline-block;padding-right:20px}span.updraftplus-option-label{display:block}#updraft-navtab-migrate-content .postbox{padding:18px}.updraftclone-main-row{display:-webkit-box;display:-ms-flexbox;display:flex}.updraftclone-tokens{background:#f5f5f5;padding:20px;border-radius:10px;margin-right:20px;max-width:300px}.updraftclone-tokens p{margin:0}.updraftclone_action_box{background:#f5f5f5;padding:20px;border-radius:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.updraftclone_action_box p:first-child{margin-top:0}.updraftclone_action_box p:last-child{margin-bottom:0}.updraftclone_action_box #ud_downloadstatus3{margin-top:10px}span.tokens-number{font-size:46px;display:block}.button.updraft_migrate_widget_temporary_clone_show_stage0{display:none;position:absolute;right:0;top:0;height:100%;border-left:1px solid #CCC;padding-left:10px;padding-right:10px}.updraft_migrate_widget_temporary_clone_stage0_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_migrate_widget_temporary_clone_stage0_box{margin-right:20px;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:none}@media(min-width:1024px){.updraft_migrate_widget_temporary_clone_stage0_container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_migrate_widget_temporary_clone_stage0_box{-ms-flex-preferred-size:45%;flex-basis:45%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:right}}.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons{text-decoration:none;font-size:20px}.opened .button.updraft_migrate_widget_temporary_clone_show_stage0{display:inline-block}.opened .updraft_migrate_widget_temporary_clone_stage0{background:#f5f5f5;padding:20px;border-radius:8px;margin-bottom:21px}.clone-list{clear:both;width:100%;margin-top:40px}.clone-list table{width:100%;text-align:left}.clone-list table tr th{background:#e4e4e4}.clone-list table tr td{background:#f5f5f5;word-break:break-word}.clone-list table tr:nth-child(odd) td{background:#fafafa}.clone-list table td,.clone-list table th{padding:6px}.updraftplus-clone .updraft_row{padding-left:0;padding-right:0}button#updraft_migrate_createclone+.updraftplus_spinner{margin-top:13px}.button.button-hero.updraftclone_show_step_1{white-space:normal;height:auto;line-height:14px;padding-top:10px;padding-bottom:10px}.button.button-hero.updraftclone_show_step_1 span.dashicons{height:auto}.updraftplus_clone_status{color:red}a.updraft_migrate_add_site--trigger span.dashicons{text-decoration:none}.button-restore:hover,.button-migrate:hover,.button-backup:hover,.button-view-log:hover,.button-mass-selectors:hover,.button-delete:hover,.button-entity-backup:hover,.udp-button-primary:hover{border-color:#df6926;color:#df6926}.button-migrate{color:#eea920;border-color:#eea920}#updraft_migrate_tab_main{padding:8px}.updraft_migrate_widget_module_content{background:#FFF;border-radius:0;position:relative}body.js #updraft_migrate .updraft_migrate_widget_module_content{display:none}.updraft_migrate_widget_module_content>h3,div[class*="updraft_migrate_widget_temporary_clone_stage"]>h3{margin-top:0}.updraft_migrate_widget_module_content header,#updraft_migrate_tab_alt header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;justify-items:center;margin-top:-18px;margin-left:-18px;margin-right:-18px;margin-bottom:15px;border-bottom:1px solid #CCC}.updraft_migrate_widget_module_content header h3,.updraft_migrate_widget_module_content header button.button.close,#updraft_migrate_tab_alt header h3,#updraft_migrate_tab_alt header button.button.close{padding:10px;line-height:20px;height:auto;margin:0}.updraft_migrate_widget_module_content button.button.close,#updraft_migrate_tab_alt button.button.close{text-decoration:none;padding-left:5px;border-right:1px solid #CCC}.updraft_migrate_widget_module_content button.button.close .dashicons,#updraft_migrate_tab_alt button.button.close .dashicons{margin-top:1px}.updraft_migrate_widget_module_content header h3,#updraft_migrate_tab_alt header h3{margin:0}.updraft_migrate_intro button.button.button-primary.button-hero{max-width:235px;word-wrap:normal;white-space:normal;line-height:1;height:auto;padding-top:13px;padding-bottom:13px;text-align:left;position:relative;margin-right:10px;margin-bottom:10px}.updraft_migrate_intro button.button.button-primary.button-hero .dashicons{position:absolute;left:10px;top:calc(50% - 8px)}#updraft_migrate_tab_alt #updraft_migrate_send_existing_button{margin-right:6px}#updraft_migrate .ui-widget-content a{color:#1c94c4}#updraft-wrap .ui-accordion .ui-accordion-header{background:#f6f6f6;margin:0;border-radius:0;padding-left:.5em;padding-right:.7em}#updraft-wrap .ui-widget{font-family:inherit}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w{background-position:-96px 0}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s{background-position:-64px 0}#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon{left:auto;right:5px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;-webkit-box-shadow:0 0 0 1px rgba(91,157,217,0.22),0 0 2px 1px rgba(30,140,190,0.3);box-shadow:0 0 0 1px rgba(91,157,217,0.22),0 0 2px 1px rgba(30,140,190,0.3);background:#FFF}#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons{color:#0572aa;opacity:1}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active{background:#f6f6f6;border-bottom:2px solid #0572aa;-webkit-box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3);box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3)}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus{-webkit-box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child){border-top:0}#updraft-wrap .ui-accordion .ui-accordion-header .dashicons{opacity:.4;margin-right:10px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);z-index:1}button.ui-dialog-titlebar-close:before{content:none !important}.updraft_next_scheduled_backups_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;background:#FFF;justify-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_next_scheduled_backups_wrapper>div{width:50%;background:#FFF;height:auto;padding:33px;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_backup_btn_wrapper{text-align:center;border-left:1px solid #f1f1f1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.incremental-backups-only{display:none}.incremental-free-only{display:none}.incremental-free-only p{padding:5px;background:rgba(255,0,0,0.06);border:1px solid #bfbfbf}#updraft-delete-waitwarning span.spinner{visibility:visible;float:none;margin:0;margin-right:10px}button#updraft-backupnow-button .spinner,button#updraft-backupnow-button .dashicons-yes{display:none}button#updraft-backupnow-button.loading .spinner{display:inline-block;visibility:visible;margin-top:13px;margin-right:0}button#updraft-backupnow-button.loading{background-color:#efefef;border-color:#CCC;text-shadow:0 -1px 1px #bbc3c7,1px 0 1px #bbc3c7,0 1px 1px #bbc3c7,-1px 0 1px #bbc3c7;-webkit-box-shadow:none;box-shadow:none}button#updraft-backupnow-button.finished .dashicons-yes{display:inline-block;visibility:visible;font-size:42px;margin-right:0;margin-top:2px}.updraft_next_scheduled_entity{width:50%;display:inline-block;float:left}.updraft_next_scheduled_entity .dashicons{color:#CCC;font-size:20px}.updraft_next_scheduled_entity strong{font-size:20px}.updraft_next_scheduled_heading{margin-bottom:10px}.updraft_next_scheduled_date_time{color:#46a84b}.updraft_time_now_wrapper{margin-top:68px;width:100%}.updraft_time_now_label,.updraft_time_now{display:inline-block;padding:7px}.updraft_time_now_label{background:#b7b7b7;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#FFF;margin-right:0;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.updraft_time_now{background:#f1f1f1;border-top-right-radius:4px;border-bottom-right-radius:4px;margin-left:-3px}#updraft_lastlogmessagerow{margin:6px 0}#updraft_lastlogmessagerow{clear:both;padding:.25px 0}#updraft_lastlogmessagerow .updraft-log-link{float:right;margin-top:-2.5em;margin-right:2px}#updraft_lastlogmessagerow>div{clear:both;background:#FFF;padding:18px}#updraft_activejobs_table{overflow:hidden;width:100%;background:#fafafa;padding:0}.updraft_requeststart{padding:15px 33px;text-align:center}.updraft_requeststart .spinner{visibility:visible;float:none;vertical-align:middle;margin-top:-2px}a.updraft_jobinfo_delete.disabled{opacity:.4;color:inherit;text-decoration:none}.updraft_row{clear:both;-webkit-transition:.3s all;transition:.3s all;padding:15px 33px}.updraft_row.deleting{opacity:.4}.updraft_existing_backups_count{padding:2px 8px;font-size:12px;background:#ca4a1e;color:#FFF;font-weight:bold;border-radius:10px}.form-table .existing-backups-table input[type="checkbox"]{border-radius:0}.form-table .existing-backups-table .check-column{width:40px;padding:0;padding-top:8px}.existing-backups-buttons{font-size:11px;line-height:1.4em;border-width:3px}.existing-backups-restore-buttons{font-size:11px;line-height:1.4em;border-width:3px}.button-delete{color:#e23900;border-color:#e23900;font-size:14px;line-height:1.4em;border-width:2px;margin-right:10px}.button-view-log,.button-mass-selectors{color:darkgrey;border-color:darkgrey;font-size:14px;line-height:1.4em;border-width:2px;margin-top:-1px}.button-view-log{width:120px}.button-existing-restore{font-size:14px;line-height:1.4em;border-width:2px;width:110px}.main-restore{margin-right:3%;margin-left:3%}.button-entity-backup{color:#555;border-color:#555;font-size:11px;line-height:1.4em;border-width:2px;margin-right:5px}.button-select-all{width:122px}.button-deselect{width:92px}#ud_massactions>.display-flex>.mass-selectors-margins,#updraft-delete-waitwarning>.display-flex>.mass-selectors-margins{margin-right:-4px}.udp-button-primary{border-width:4px;color:#0073aa;border-color:#0073aa;font-size:14px;height:40px}#ud_massactions .button-delete{margin-right:0}.stored_local{border-radius:5px;background-color:#007fe7;padding:3px 5px 5px 5px;color:#FFF;font-size:75%}span#updraft_lastlogcontainer{word-break:break-all}.stored_icon{height:1.3em;position:relative;top:.2em}.backup_date_label>*{vertical-align:middle}.backup_date_label .dashicons{font-size:18px}.backup_date_label .clear-right{clear:right}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:bold}.udp-logo-70{width:70px;height:70px;float:left;padding-right:25px}h3 .thank-you{margin-top:0}.ws_advert{max-width:800px;font-size:140%;line-height:140%;padding:14px;clear:left}.dismiss-dash-notice{float:right;position:relative;top:-20px}.updraft_exclude_container,.updraft_include_container{margin-left:24px;margin-top:5px;margin-bottom:10px;padding:15px;border:1px solid #DDD}label.updraft-exclude-label{font-weight:500;margin-bottom:5px;display:inline-block}.updraft_add_exclude_item,#updraft_include_more_paths_another{display:inline-block;margin-top:10px}input.updraft_exclude_entity_field,.form-table td input.updraft_exclude_entity_field,.updraftplus-morefiles-row input[type=text]{width:calc(100% - 70px);max-width:400px}.updraft-fs-italic{font-style:italic}@media screen and (max-width:782px){.form-table td input.updraft_exclude_entity_field,.form-table td .updraftplus-morefiles-row input[type=text]{display:inline-block}}.updraft_exclude_entity_delete.dashicons,.updraft_exclude_entity_edit.dashicons,.updraft_exclude_entity_update.dashicons,.updraftplus-morefiles-row a.dashicons{margin-top:2px;font-size:20px;-webkit-box-shadow:none;box-shadow:none;line-height:1;padding:3px;margin-right:4px}.updraft_exclude_entity_delete,.updraft_exclude_entity_delete:hover,.updraftplus-morefiles-row-delete{color:#ff6347}.updraft_exclude_entity_update.dashicons,.updraft_exclude_entity_update.dashicons:hover{color:#008000;font-weight:bold;font-size:22px;margin-left:4px}.updraft_exclude_entity_edit{margin-left:4px}.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete{display:none}.updraft-exclude-panel-heading{margin-bottom:8px}.updraft-exclude-panel-heading h3{margin:.5em 0 .5em 0}.updraft-exclude-submit.button-primary{margin-top:5px}.updraft_exclude_actions_list{font-weight:bold}.updraft-exclude-link{cursor:pointer}#updraft_include_more_options{padding-left:25px}#updraft_report_cell .updraft_reportbox,.updraft_small_box{padding:12px;margin:8px 0;border:1px solid #CCC;position:relative}#updraft_report_cell button.updraft_reportbox_delete,.updraft_box_delete_button,.updraft_small_box .updraft_box_delete_button{padding:4px;padding-top:6px;border:0;background:transparent;position:absolute;top:4px;right:4px;cursor:pointer}#updraft_report_cell button.updraft_reportbox_delete:hover{color:#de3c3c}a.updraft_report_another .dashicons{text-decoration:none;margin-top:2px}.updraft_report_dbbackup.updraft_report_disabled{color:#CCC}#updraft-navtab-settings-content .updraft-test-button{font-size:18px !important}#updraft_report_cell .updraft_report_email{display:block;width:calc(100% - 50px);margin-bottom:9px}#updraft_report_cell .updraft_report_another_p{clear:left}#updraft-navtab-settings-content table.form-table p{max-width:700px}#updraft-navtab-settings-content table.form-table .notice p{max-width:none}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected,#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td{background-color:#efefef}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td{background-color:#e8e8e8}.updraft_settings_sectionheading{display:none}.updraft-backupentitybutton-disabled{background-color:transparent;border:0;color:#0074a2;text-decoration:underline;cursor:pointer;clear:none;float:left}.updraft-backupentitybutton{margin-left:8px}.updraft-bigbutton{padding:2px 0 !important;margin-right:14px !important;font-size:22px !important;min-height:32px;min-width:180px}tr[class*="_updraft_remote_storage_border"]{border-top:1px solid #CCC}.updraft_multi_storage_options{float:right;clear:right;margin-bottom:5px !important}.updraft_toggle_instance_label{vertical-align:top !important}.updraft_debugrow th{float:right;text-align:right;font-weight:bold;padding-right:8px;min-width:140px}.updraft_debugrow td{min-width:300px;vertical-align:bottom}.updraft_webdav_host_error,.onedrive_folder_error{color:red}label[for=updraft_servicecheckbox_updraftvault]{position:relative}#updraft-wrap .udp-info{position:absolute;right:10px;top:calc(50% - 10px)}#updraft-wrap span.info-trigger{display:inline-block;width:20px;height:20px;background:#FFF;color:#72777c;border-radius:30px;text-align:center;line-height:20px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.15);box-shadow:0 1px 3px rgba(0,0,0,0.15)}#updraft-wrap .info-content-wrapper{display:none;position:absolute;bottom:20px;-webkit-transform:translatex(calc(-50% + 10px));transform:translatex(calc(-50% + 10px));width:330px;padding-bottom:10px}#updraft-wrap .info-content-wrapper::before{content:'';position:absolute;bottom:-10px;border:10px solid transparent;border-top-color:#FFF;left:calc(50% - 10px)}#updraft-wrap .info-content{padding:20px;background:#FFF;border-radius:4px;-webkit-box-shadow:0 3px 10px rgba(0,0,0,0.1);box-shadow:0 3px 10px rgba(0,0,0,0.1);color:#72777c}#updraft-wrap .info-content h3{margin-top:0}#updraft-wrap .info-content p{margin-top:10px}#updraft-wrap .udp-info:hover .info-content-wrapper{display:block}div.conditional_remote_backup select.logic_type{vertical-align:inherit !important}div.conditional_remote_backup label.updraft_toggle_instance_label.radio_group{display:block;margin-top:7px}div.conditional_remote_backup div.logic ul.rules input.rule_value{vertical-align:middle}div.conditional_remote_backup p{margin-bottom:10px}div.conditional_remote_backup div.logic ul.rules span svg{width:20px;vertical-align:middle;cursor:pointer}div.conditional_remote_backup div.logic ul.rules span svg{margin-left:3px}div.conditional_remote_backup div.logic select.logic_type{vertical-align:unset}.updraft_jstree .jstree-container-ul>.jstree-node,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-node{background:transparent}.updraft_jstree .jstree-container-ul>.jstree-open>.jstree-ocl,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-open>.jstree-ocl{background-position:-36px -4px}.updraft_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-closed>.jstree-ocl{background-position:-4px -4px}.updraft_jstree .jstree-container-ul>.jstree-leaf>.jstree-ocl,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-leaf>.jstree-ocl{background:transparent}#updraft_zip_files_container{position:relative;height:450px;overflow:none}.updraft_jstree_info_container{position:relative;height:auto;width:100%;border:1px dotted;margin-bottom:5px}.updraft_jstree_info_container p{margin:1px;padding-left:10px;font-size:14px}#updraft_zip_download_item{display:none;color:#0073aa;padding-left:10px}#updraft_zip_download_notice{padding-left:10px}#updraft_exclude_files_folders_jstree,#updraft_exclude_files_folders_wildcards_jstree{max-height:200px;overflow-y:scroll}.updraft_jstree{position:relative;border:1px dotted;height:80%;width:100%;overflow:auto}div[id^="updraft_more_files_container_"],div.updraft_googledrive_container{position:relative;display:none;width:100%;border:1px solid #CCC;background:#fafafa;margin-bottom:5px;margin-top:4px;-webkit-box-shadow:0 5px 8px rgba(0,0,0,0.1);box-shadow:0 5px 8px rgba(0,0,0,0.1)}div.updraft_googledrive_container ul.jstree-container-ul{overflow-y:scroll;max-height:200px}div[id^="updraft_more_files_container_"]::before,div.updraft_googledrive_container::before{content:' ';width:11px;height:11px;display:block;background:#fafafa;position:absolute;top:0;left:20px;border-top:1px solid #CCC;border-left:1px solid #CCC;-webkit-transform:translatey(-7px) rotate(45deg);transform:translatey(-7px) rotate(45deg)}input.updraft_more_path_editing{border-color:#0285ba}input.updraft_more_path_editing ~ a.dashicons{display:none}div[id^="updraft_jstree_buttons_"]{padding:10px;background:#e6e6e6}div[id^="updraft_jstree_container_"]{height:300px;width:100%;overflow:auto}div[id^="updraft_more_files_container_"] button{line-height:20px}button[id^="updraft_parent_directory_"]{margin:10px 10px 4px 10px;padding-left:3px}button[id^="updraft_jstree_confirm_"],button[id^="updraft_jstree_cancel_"]{display:none}input[id^="updraft_include_more_path_restore_"]{text-align:right}.updraftplus-morefiles-row-delete,.updraftplus-morefiles-row-edit{cursor:pointer}#updraft_include_more_paths_error{color:#de3c3c}p[id^="updraftplus_manual_authentication_error_"]{color:#de3c3c}#updraft-wrap .form-table th{width:230px}#updraft-wrap .form-table .existing-backups-table th{width:auto}.updraft-viewlogdiv form{margin:0;padding:0}.updraft-viewlogdiv{display:inline-block;margin-left:4px}.updraft-viewlogdiv input,.updraft-viewlogdiv a{border:0;background-color:transparent;color:#000;margin:0;padding:3px 4px;font-size:16px;line-height:26px}.updraft-viewlogdiv input:hover,.updraft-viewlogdiv a:hover{color:#FFF;cursor:pointer}.button.button-remove{color:white;background-color:#de3c3c;border-color:#c00000;-webkit-box-shadow:0 1px 0 #c10100;box-shadow:0 1px 0 #c10100}.button.button-remove:hover,.button.button-remove:focus{border-color:#C00;color:#FFF;background:#C00}body.admin-color-midnight .button.button-remove{color:#de3c3c;background-color:#f7f7f7;border-color:#CCC;-webkit-box-shadow:0 1px 0 #CCC;box-shadow:0 1px 0 #CCC}body.admin-color-midnight .button.button-remove:hover,body.admin-color-midnight .button.button-remove:focus{border-color:#ba281f}body.admin-color-midnight .button.button-remove:focus{-webkit-box-shadow:inherit;box-shadow:inherit;-webkit-box-shadow:0 0 3px rgba(0,115,170,0.8);box-shadow:0 0 3px rgba(0,115,170,0.8)}.drag-drop #drag-drop-area2{border:4px dashed #DDD;height:200px}#drag-drop-area2 .drag-drop-inside{margin:36px auto 0;width:350px}#filelist,#filelist2{margin-top:30px;width:100%}#filelist .file,#filelist2 .file,.ud_downloadstatus .file,#ud_downloadstatus2 .file,#ud_downloadstatus3 .file{padding:1px;background:#ececec;border:solid 1px #CCC;margin:4px 0}.updraft_premium section{margin-bottom:20px}.updraft_premium_cta{background:#FFF;margin-top:30px;padding:0;border-left:4px solid #db6a03}.updraft_premium_cta a{font-weight:normal}.updraft_premium_cta__action{position:relative;text-align:center}.updraft_premium_cta a.button.button-primary.button-hero{font-size:1.3em;letter-spacing:.03rem;text-transform:uppercase;margin-bottom:7px}.updraft_premium_cta a.button.button-primary.button-hero+small{display:block;max-width:100%;text-align:center;color:#afafaf}.updraft_premium_cta a.button.button-primary.button-hero+small .dashicons{width:12px;height:12px}.updraft_premium_cta__top{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;padding:18px 30px}.updraft_premium_cta__bottom{background:#f9f9f9;padding:5px 30px}.updraft_premium_cta__summary{margin-right:60px}.updraft_premium_cta h2{font-size:28px;font-weight:200;line-height:1;margin:0;margin-bottom:5px;letter-spacing:.05rem;color:#db6a03}.updraft_premium_cta ul li::after{color:#CCC}@media only screen and (max-width:768px){.updraft_premium_cta__top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updraft_premium_cta__summary{margin-right:0;margin-bottom:30px}}.udp-box{background:#FFF;padding:20px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1);text-align:center}.udp-box h3{margin:0}.udp-box__heading{-ms-flex-item-align:center;align-self:center;background:0;-webkit-box-shadow:none;box-shadow:none}.updraft-more-plugins{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;flex-wrap:wrap}.updraft-more-plugins img{max-width:80%;max-height:30%;display:inline-block}.updraft-more-plugins .udp-box{-webkit-box-sizing:border-box;box-sizing:border-box;width:24%}.updraft-more-plugins .udp-box p:last-child{margin-bottom:0;padding-bottom:0}.updraft_premium_description_list{text-align:left;margin:0;font-size:12px}ul.updraft_premium_description_list,ul#updraft_restore_warnings{list-style:disc inside}ul.updraft_premium_description_list li{display:inline}ul.updraft_premium_description_list li::after{content:" | "}ul.updraft_premium_description_list li:last-child::after{content:""}.updraft_feature_cell{background-color:#f7d9c9 !important;padding:5px 10px}.updraftplus_com_login_status,.updraftplus_com_key_status{display:none;background:#FFF;border-left:4px solid #FFF;border-left-color:#dc3232;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px 0;padding:5px 12px}.updraftplus_com_login_status.success{border-left-color:green}#updraft-wrap strong.success{color:green}.updraft_feat_table{border:0;border-collapse:collapse;font-size:120%;background-color:white;text-align:center}.updraft_feat_th,.updraft_feat_table td{border:1px solid #f1f1f1;border-collapse:collapse;font-size:120%;background-color:white;text-align:center;padding:15px}.updraft_feat_table td{border-bottom-width:4px}.updraft_feat_table td:first-child{border-left:0}.updraft_feat_table td:last-child{border-right:0}.updraft_feat_table tr:last-child td{border-bottom:0}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){background-color:rgba(241,241,241,0.38);width:190px}.updraft_feat_table__header td img{display:block;margin:0 auto}.updraft_feat_table__header td{text-align:center}.updraft_feat_table .installed{font-size:14px}.updraft_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.updraft_feat_table h4{margin:5px 0}.updraft_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.updraft_feat_table .dashicons-yes,.updraft_feat_table .updraft-yes{color:green}.updraft_feat_table .dashicons-no-alt,.updraft_feat_table .updraft-no{color:red}.updraft_tick_cell{text-align:center}.updraft_tick_cell img{margin:4px 0;height:24px}.ud_downloadstatus__close{border:0;background:transparent;width:auto;font-size:20px;padding:0;cursor:pointer}#filelist .fileprogress,#filelist2 .fileprogress,.ud_downloadstatus .dlfileprogress,#ud_downloadstatus2 .dlfileprogress,#ud_downloadstatus3 .dlfileprogress{width:0;background:#0572aa;height:8px;-webkit-transition:width .3s;transition:width .3s}.ud_downloadstatus .raw,#ud_downloadstatus2 .raw,#ud_downloadstatus3 .raw{margin-top:8px;clear:left}.ud_downloadstatus .file,#ud_downloadstatus2 .file,#ud_downloadstatus3 .file{margin-top:8px}div[class^="updraftplus_downloader_container_"]{padding:10px}tr.updraftplusmethod h3{margin:0}tr.updraftplusmethod img{max-width:100%}#updraft_retain_db_rules .updraft_retain_rules_delete,#updraft_retain_files_rules .updraft_retain_rules_delete{cursor:pointer;color:red;font-size:120%;font-weight:bold;border:0;border-radius:3px;padding:2px;margin:0 6px;text-decoration:none;display:inline-block}#updraft_retain_db_rules .updraft_retain_rules_delete:hover,#updraft_retain_files_rules .updraft_retain_rules_delete:hover{cursor:pointer;color:white;background:red}#updraft_backup_started{max-width:800px;font-size:140%;line-height:140%;padding:14px;clear:left}.blockUI.blockOverlay.ui-widget-overlay{background:#000}.updraft_success_popup{text-align:center;padding-bottom:30px}.updraft_success_popup>.dashicons{font-size:100px;width:100px;height:100px;line-height:100px;padding:0;border-radius:50%;margin-top:30px;display:block;margin-left:auto;margin-right:auto;background:#e2e6e5}.updraft_success_popup>.dashicons.dashicons-yes{text-indent:-5px}.updraft_success_popup.success>.dashicons{color:green}.updraft_success_popup.warning>.dashicons{color:#888}.updraft_success_popup--message{padding:20px}.button.updraft-close-overlay .dashicons{text-decoration:none;font-size:20px;margin-left:-5px;padding:0;-webkit-transform:translatey(3px);transform:translatey(3px)}.updraft_saving_popup img{-webkit-animation-name:udp_blink;animation-name:udp_blink;-webkit-animation-duration:610ms;animation-duration:610ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}.udp-premium-image{display:none}@media screen and (min-width:720px){.udp-premium-image{display:block;float:left;padding-right:5px}}#plupload-upload-ui2{width:80%}.backup-restored{padding:8px}.updated.backup-restored{padding-top:15px;padding-bottom:15px}.backup-restored span{font-size:120%}.memory-limit{padding:8px}.updraft_list_errors{padding:8px}.updraftplus-nav-tab.nav-tab-active,.updraftplus-nav-tab.nav-tab-active:hover,.updraftplus-nav-tab.nav-tab-active:focus,.updraftplus-nav-tab.nav-tab-active:focus:active{border-bottom:1px solid #f0f0f1;background:#f0f0f1 !important;color:#000}.updraftplus-nav-tab.nav-tab-active{margin-bottom:-1px;color:#3c434a}.updraftplus-nav-tab.nav-tab-active,.updraftplus-nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.updraftplus-nav-tab{float:left;border:1px solid #c3c4c7;border-bottom-color:#c3c4c7;border-bottom-style:solid;border-bottom-width:1px;border-bottom:0;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:1.71428571;font-weight:600;background:#dcdcde;color:#50575e;text-decoration:none;white-space:nowrap}.nav-tab-wrapper{margin:14px 0}#updraft-poplog-content{white-space:pre-wrap}.next-backup{border:0;padding:0;margin:0 10px 0 0}.not-scheduled{vertical-align:top !important;margin:0 !important;padding:0 !important}.next-backup .updraft_scheduled{margin:0;padding:2px 4px 2px 0}#next-backup-table-inner td{vertical-align:top}.updraft_all-files{color:blue}.multisite-advert-width{width:800px}.updraft_settings_sectionheading{margin-top:6px}section.premium-upgrade-purchase-success{padding:2em;background:#fafafa;text-align:center;-webkit-box-shadow:0 14px 40px rgba(0,0,0,0.1);box-shadow:0 14px 40px rgba(0,0,0,0.1)}section.premium-upgrade-purchase-success h3{font-size:2em;color:green}section.premium-upgrade-purchase-success h3 .dashicons{display:block;margin:0 auto;font-size:60px;width:60px;height:60px;border-radius:50%;background:green;color:#FFF;margin-bottom:20px}section.premium-upgrade-purchase-success h3 .dashicons::before{display:inline-block;margin-left:-4px;margin-top:2px}section.premium-upgrade-purchase-success p{font-size:120%}.show_admin_restore_in_progress_notice{padding:8px}.show_admin_restore_in_progress_notice .unfinished-restoration{font-size:120%}#backupnow_includefiles_moreoptions,#backupnow_database_moreoptions,#backupnow_includecloud_moreoptions{margin:4px 16px 6px 16px;border:1px dotted;padding:6px 10px}#backupnow_database_moreoptions{max-height:250px;overflow:auto}#backupnow_database_moreoptions div.backupnow-db-tables{margin-bottom:5px}#backupnow_database_moreoptions div.backupnow-db-tables>a{color:#0073aa}.form-table #updraft_activejobsrow .minimum-height{min-height:100px}#updraft_activejobsrow th{max-width:112px;margin:0;padding:13px 0 0 0}#updraft_lastlogmessagerow .last-message{padding-top:20px;display:block}.updraft_simplepie{vertical-align:top}.download-backups{margin-top:8px}.download-backups .updraft_download_button{margin-right:6px}.download-backups .ud-whitespace-warning,.download-backups .ud-bom-warning{background-color:pink;padding:8px;margin:4px;border:1px dotted}.download-backups .ul{list-style:none inside;max-width:800px;margin-top:6px;margin-bottom:12px}#updraft-plupload-modal{margin:16px 0}.download-backups .upload{max-width:610px}.download-backups #plupload-upload-ui{width:100%}.ud_downloadstatus{padding:10px 0}#ud_massactions,#updraft-delete-waitwarning{padding:14px;background:#f1f1f1;position:absolute;left:0;top:100%}#ud_massactions>*,#updraft-delete-waitwarning>*{vertical-align:middle}#ud_massactions .updraftplus-remove{display:inline-block;margin-right:0}#ud_massactions .updraftplus-remove a{text-decoration:none}#ud_massactions .updraft-viewlogdiv a{text-decoration:none;position:relative}small.ud_massactions-tip{display:inline-block;opacity:.5;font-style:italic;margin-left:20px}#updraft-navtab-backups-content .updraft_existing_backups{margin-bottom:35px;position:relative}#updraft-message-modal-innards{padding:4px}#updraft-authenticate-modal{text-align:center;font-size:16px !important}#updraft-authenticate-modal p{font-size:16px}div.ui-dialog.ui-widget.ui-widget-content{z-index:99999 !important}#updraft_delete_form p{margin-top:3px;padding-top:0}#updraft_restore_form .cannot-restore{margin:8px 0}.notice.updraft-restore-option{padding:12px;margin:8px 0 4px 0;border-left-color:#CCC}#updraft_restorer_dboptions h4{margin:0 0 6px 0;padding:0}.updraftplus_restore_tables_options_container{max-height:250px;overflow:auto}.updraft_debugrow th{vertical-align:top;padding-top:6px;max-width:140px}.expertmode p{font-size:125%}.expertmode .call-wp-action{width:300px;height:22px}.updraftplus-lock-advert{clear:left;max-width:600px}.uncompressed-data{clear:left;max-width:600px}.delete-old-directories{padding:8px;padding-bottom:12px}.active-jobs{width:100%;text-align:center;padding:33px}.job-id{margin-top:0;margin-bottom:8px}.next-resumption{font-weight:bold}.updraft_percentage{z-index:-1;position:absolute;left:0;top:0;text-align:center;background-color:#1d8ec2;-webkit-transition:width .3s;transition:width .3s}.curstage{z-index:1;border-radius:2px;margin-top:8px;width:100%;height:26px;line-height:26px;position:relative;text-align:center;font-style:italic;color:#FFF;background-color:#b7b7b7;text-shadow:0 1px 2px rgba(0,0,0,0.3)}.curstage-info{display:inline-block;z-index:2}.retain-files{width:48px}.backup-interval-description tr td div{max-width:670px}#updraft-manualdecrypt-modal{width:85%;margin:6px;margin-left:100px}.directory-permissions{font-size:110%;font-weight:bold}.double-warning{border:1px solid;padding:6px}.raw-backup-info{font-style:italic;font-weight:bold;font-size:120%}.updraft_existingbackup_date{width:22%;max-width:140px}.updraft_existing_backups_wrapper{margin-top:20px;border-top:1px solid #DDD}.updraft-no-backups-msg{padding:10px 40px;text-align:center;font-style:italic}.tr-bottom-4{margin-bottom:4px}.existing-backups-table th{padding:8px 10px}.form-table .backup-date{width:172px}.form-table .backup-data{width:426px}.form-table .updraft_backup_actions{width:272px}.existing-date{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:140px;width:25%}.line-break-tr{height:2px;padding:1px;margin:0}.line-break-td{margin:0;padding:0}.td-line-color{height:2px;background-color:#888}.raw-backup{max-width:140px}.existing-backups-actions{padding:1px;margin:0}.existing-backups-border{height:2px;padding:1px;margin:0}.existing-backups-border>td{margin:0;padding:0}.existing-backups-border>div{height:2px;background-color:#AAA}.updraft_existing_backup_date{max-width:140px}.updraftplus-upload{margin-right:6px;float:left;clear:none}.before-restore-button{padding:1px;margin:0}.before-restore-button div{float:none;display:inline-block}.table-separator-tr{height:2px;padding:1px;margin:0}.table-separator-td{margin:0;padding:0}.end-of-table-div{height:2px;background-color:#AAA}.last-backup-job{padding-top:3% !important}.line-height-03{line-height:.3 !important}.line-height-13{line-height:1.3 !important}.line-height-23{line-height:2.3 !important}#updraft_diskspaceused{color:#df6926}#updraft_delete_old_dirs_pagediv{padding-bottom:10px}.fix-time{width:70px}.retain-files{width:70px}.number-input{min-width:50px;max-width:70px}.additional-rule-width{min-width:60px;max-width:70px}#updraft-wrap .dashicons.dashicons-adapt-size{line-height:inherit;font-size:inherit}#updraft-wrap .button span.dashicons:not(.dashicons-adapt-size){vertical-align:middle;margin-top:-3px}.addon-logo-150{margin-left:30px;margin-top:33px;height:125px;width:150px}.margin-bottom-50{margin-bottom:50px}.premium-container{width:80%}.main-header{background-color:#df6926;height:200px;width:100%}.button-add-to-cart{color:white;border-color:white;float:none;margin-right:17px}.button-add-to-cart:hover,.button-add-to-cart:focus,.button-add-to-cart:active{border-color:#a0a5aa;color:#a0a5aa}.addon-title{margin-top:25px}.addon-text{margin-top:75px}.image-main-div{width:25%;float:left}.text-main-div{width:60%;float:left;text-align:center;color:white;margin-top:16px}.text-main-div-title{font-weight:bold !important;color:white;text-align:center}.text-main-div-paragraph{color:white}.updraftplus-vault-cta{width:100%;text-align:center;margin-bottom:50px}.updraftplus-vault-cta h1{font-weight:bold}.updraftvault-buy{width:225px;height:225px;border:2px solid #777;display:inline-table;margin:0 auto;margin-right:50px;position:relative}.updraftplus-vault-cta>.vault-options>.center-vault{width:275px;height:275px}.updraftplus-vault-cta>.vault-options>.center-vault>a{right:21%;font-size:16px;border-width:4px !important}.updraftplus-vault-cta>.vault-options>.center-vault>p{font-size:16px}.updraftvault-buy .button-purchase{right:24%;margin-left:0;line-height:1.7em}.updraftvault-buy hr{height:2px;background-color:#777;margin-top:18px}.right{margin-right:0}.updraftvault-buy .addon-logo-100{height:100px;width:125px;margin-top:7px}.updraftvault-buy .addon-logo-large{margin-top:7px}.updraftvault-buy .button-buy-vault{font-size:12px;color:#df6926;border-color:#df6926;border-width:2px !important;position:absolute;right:29%;bottom:2%}.premium-addon-div .button-purchase{line-height:1.7em}.updraftvault-buy .button-buy-vault:hover{border-color:darkgrey;color:darkgrey}.premium-addons{margin-top:80px;width:100%;margin:0 auto;display:table}.addon-list{display:table;text-align:center}.premium-addons h1{text-align:center;font-weight:bold}.premium-addons p{text-align:center}.premium-addons .premium-addon-div{width:200px;height:250px;border:2px solid #777;display:inline-table;margin:0 auto;margin-right:25px;margin-top:25px;text-align:center;position:relative}.premium-addons .premium-addon-div p{margin-left:2px;margin-right:2px}.premium-addons .premium-addon-div img{width:auto;height:50px;margin-top:7px}.premium-addons .premium-addon-div .hr-alignment{margin-top:44px}.premium-addons .premium-addon-div .dropbox-logo{height:39px;width:150px}.premium-addons .premium-addon-div .azure-logo,.premium-addons .premium-addon-div .onedrive-logo{width:75%;height:24px}.button-purchase{font-size:12px;color:#df6926;border-color:#df6926;border-width:2px !important;position:absolute;right:25%;bottom:2%}.button-purchase:hover{color:darkgrey;border-color:darkgrey}.premium-addons .premium-addon-div hr{height:2px;background-color:#777;margin-top:18px}.premium-addon-div p{font-style:italic}.addon-list>.premium-addon-div>.onedrive-fix,.addon-list>.premium-addon-div>.azure-logo{margin-top:33px}.addon-list>.premium-addon-div>.dropbox-fix{margin-top:18px}.premium-forgotton-something{margin-top:5%}.premium-forgotton-something h1{text-align:center;font-weight:bold}.premium-forgotton-something p{text-align:center;font-weight:normal}.premium-forgotton-something .button-faq{color:#df6926;border-color:#df6926;margin:0 auto;display:table}.premium-forgotton-something .button-faq:hover{color:#777;border-color:#777}.updraftplusmethod.updraftvault #vaultlogo{padding-left:40px}.updraftplusmethod.updraftvault .vault_primary_option{float:left;width:50%;text-align:center;padding-bottom:20px}.updraftplusmethod.updraftvault .vault_primary_option div{clear:right;padding-top:20px}.updraftplusmethod.updraftvault .clear-left{clear:left}.updraftplusmethod.updraftvault .padding-top-20px{padding-top:20px}.updraftplusmethod.updraftvault .padding-top-14px{padding-top:14px}.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary,.updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary{font-size:18px !important}.updraftplusmethod.updraftvault #updraftvault_showoptions,.updraftplusmethod.updraftvault #updraftvault_connect{margin-top:8px}.updraftplusmethod.updraftvault #updraftvault_settings_connect input{margin-right:10px}.updraftplusmethod.updraftvault #updraftvault_email{width:280px}.updraftplusmethod.updraftvault #updraftvault_pass{width:200px}.updraftplusmethod.updraftvault #vault-is-connected{margin:0;padding:0}.updraftplusmethod.updraftvault #updraftvault_settings_default p{clear:left}.updraftplusmethod.updraftvault .vault-purchase-option-container{text-align:center}.updraftplusmethod.updraftvault .vault-purchase-option{width:40%;text-align:center;padding-top:20px;display:inline-block}.updraftplusmethod.updraftvault .vault-purchase-option-size{font-size:200%;font-weight:bold}.updraftplusmethod.updraftvault .vault-purchase-option-link{clear:both;font-size:150%}.updraftplusmethod.updraftvault .vault-purchase-option-or{clear:both;font-size:115%;font-style:italic}.autobackup-image{clear:left;float:left;width:110px;height:110px}.autobackup-description{width:100%}.advert-description{float:left;clear:right;padding:4px 10px 8px 10px;width:70%;clear:right;vertical-align:top}.advert-btn{display:inline-block;min-width:10%;vertical-align:top;margin-bottom:8px}.advert-btn:first-of-type{margin-top:25px}.advert-btn a{display:block;cursor:pointer}a.btn-get-started{background:#FFF;border:2px solid #df6926;border-radius:4px;color:#df6926;display:inline-block;margin-left:10px !important;margin-bottom:7px !important;font-size:18px !important;line-height:20px;min-height:28px;padding:11px 10px 5px 10px;text-transform:uppercase;text-decoration:none}.circle-dblarrow{border:1px solid #df6926;border-radius:100%;display:inline-block;font-size:17px;line-height:17px;margin-left:5px;width:20px;height:20px;text-align:center}.expertmode .advanced_settings_container{height:auto;overflow:hidden}.expertmode .advanced_settings_container .advanced_settings_menu{float:none;border-bottom:1px solid #ccc}.expertmode .advanced_settings_container .advanced_settings_content{padding-top:5px;float:none;width:auto;overflow:auto}.expertmode .advanced_settings_container .advanced_settings_content h3:first-child{margin-top:5px !important}.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools{display:none}.expertmode .advanced_settings_container .advanced_settings_content .site_info{display:block}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{display:inline-block;cursor:pointer;padding:5px;color:#000}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text{font-size:16px}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover{background-color:#eaeaea}.expertmode .advanced_settings_container .advanced_settings_menu .active{background-color:#3498db;color:#FFF}.expertmode .advanced_settings_container .advanced_settings_menu .active:hover{background-color:#72c5fd;color:#FFF}.expertmode .advanced_settings_container .advanced_settings_content input#import_settings{height:auto !important}div#updraft-wrap a{cursor:pointer !important}.updraftcentral_wizard_option{width:45%;float:left;text-align:center}.updraftcentral_wizard_option label{margin-bottom:8px}#updraftcentral_keys_table{display:none}.create_key_container{border:1px solid;border-radius:4px;padding:0 0 6px 6px;margin-bottom:8px}.updraftcentral_cloud_connect{border-radius:4px;border:1px solid #000;padding:0 20px;margin-top:30px;background-color:#FFF}.updraftcentral_cloud_error{border:1px solid #000;padding:3px 10px;border-left:3px solid #F00;background-color:#FFF;margin-bottom:10px}.updraftcentral_cloud_info{border:1px solid #000;padding:3px 10px;border-left:3px solid #ef8f31;background-color:#FFF;margin-bottom:10px}.updraftplus_spinner.spinner{padding-left:25px;float:none}.updraftplus_spinner.spinner.visible{visibility:visible;width:auto}.updraftcentral_cloud_notices .updraftplus_spinner{margin-top:-5px}.updraftcentral-subheading{font-size:14px;margin-top:-10px;margin-bottom:20px}#updraftcentral_cloud_form input#email,#updraftcentral_cloud_form input#password{min-width:250px}.updraftcentral-data-consent{font-size:13px;margin-bottom:10px}.updraftcentral_cloud_wizard_image{float:left;min-width:100px;margin-right:25px}.updraftcentral_cloud_wizard{float:left}.updraftcentral_cloud_clear{clear:both}.updraftplus-settings-footer{margin-top:30px}.updraftplus-top-menu{padding:.5em}#updraft_inpage_backup #updraft_activejobs_table{background:transparent}#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link{float:none}#updraft_inpage_backup #updraft_activejobsrow .updraft_row{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:20px;padding-right:20px}#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container{width:100%}#updraft_inpage_backup #updraft_activejobs_table{overflow:inherit}#updraft_inpage_backup span#updraft_lastlogcontainer{padding:18px;background:#fafafa;display:block;font-size:90%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup div#updraft_activejobsrow{background:#fafafa;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup #updraft_lastlogmessagerow>div{background:transparent;padding:0}#updraft_inpage_backup .last-message>strong{display:block;margin-top:13px}body.update-core-php #updraft_inpage_backup h2:nth-child(1){margin-top:1em !important}.updraft_restore_container{display:block;position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999;padding-top:30px;background:#f1f1f1;overflow:auto}.updraft-modal-is-opened .select2-container{z-index:99999}body.updraft-modal-is-opened{overflow:hidden}.updraft_restore_container h2{margin:0}.updraft_restore_container .updraftmessage{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:860px;margin-left:auto;margin-right:auto}.updraft_restore_main{max-width:860px;margin:0 auto;margin-top:20px;background:#FFF;-webkit-box-shadow:0 3px 3px rgba(0,0,0,0.1);box-shadow:0 3px 3px rgba(0,0,0,0.1);position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_restore_main--header{font-size:20px;font-weight:bold;text-align:center;padding-top:16px;line-height:20px;width:100%;max-width:100%;padding-right:30px;padding-left:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_restore_main--activity{position:relative;width:calc(100% - 350px);-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_restore_main--activity-title{padding:20px;margin:0}.show-credentials-form.updraft_restore_main .updraft_restore_main--activity-title{display:none}.updraft_restore_main--components{width:350px;padding:20px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#f8f8f8;min-height:350px}.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output{background:#23282d;color:#e3e3e3;font-family:monospace;padding:19px;overflow:auto;position:absolute;top:60px;bottom:0;right:0;left:0}#updraftplus_ajax_restore_output form{white-space:normal;font-family:-apple-system,blinkmacsystemfont,"Segoe UI",roboto,oxygen-sans,ubuntu,cantarell,"Helvetica Neue",sans-serif}#updraftplus_ajax_restore_output .updraft_restore_errors{border:1px solid #dc3232;padding:10px 20px;white-space:normal}.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output h2{color:#00a0d2;padding-top:10px;padding-bottom:5px}.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output{padding:20px;border-left:1px solid #EEE}.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output #message{margin-left:0;margin-right:0}.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table td,.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table th{padding-bottom:0}.updraft_restore_main.show-credentials-form .updraft_restore_main--components{opacity:.2}.updraft_restore_main.show-credentials-form div.error .restore-credential-errors--list p{margin:0;list-style-type:disc;display:list-item;list-style-position:inside}.restore-credential-errors>:first-child{margin-top:0}.restore-credential-errors>:last-child{margin-bottom:0}ul.updraft_restore_components_list li{color:#bababa;font-size:1.2em;margin-bottom:1em}ul.updraft_restore_components_list li::before{content:'\f469';font-family:dashicons;font-size:20px;vertical-align:middle;display:inline-block;margin-right:7px}ul.updraft_restore_components_list li span{vertical-align:middle}ul.updraft_restore_components_list li.done{color:green}ul.updraft_restore_components_list li.done::before{content:"\f147"}ul.updraft_restore_components_list li.active{color:inherit}ul.updraft_restore_components_list li.active::before{content:"\f463";-webkit-animation:udp_rotate 1s linear infinite;animation:udp_rotate 1s linear infinite}ul.updraft_restore_components_list li.error{color:#dc3232}ul.updraft_restore_components_list li.error::before{content:"\f335"}.updraft_restore_result{padding:10px 0;font-size:1.3em;margin-bottom:1em;vertical-align:middle;display:none}.updraft_restore_result.restore-error{color:#dc3232}.updraft_restore_result.restore-success{color:green}.updraft_restore_result .dashicons{font-size:35px;height:35px;line-height:33px;width:35px}.updraft_restore_result span{vertical-align:middle}#updraft-restore-modal{width:100%}div#updraft-restore-modal .notice{background:#f8f8f8}.updraft-restore-modal--stage .updraft--two-halves,.updraft-restore-modal--stage .updraft--one-half{padding:20px 30px}.updraft-restore-modal--header{padding:20px;padding-bottom:0;text-align:center;border-bottom:1px solid #EEE}.updraft-restore-modal--header h3{margin:0;padding:0}.updraft-restore-item{padding-bottom:4px}.updraft-restore-buttons{padding-top:10px}ul.updraft-restore--stages{display:inline-block;margin:0;height:28px}ul.updraft-restore--stages li{display:inline-block;position:relative;width:12px;height:12px;background:#d2d2d2;border-radius:20px;line-height:1;margin:0 4px;vertical-align:middle}ul.updraft-restore--stages li.active{background:#444}.updraft-restore--footer{border-top:1px solid #EEE;padding:20px;text-align:center;position:sticky;bottom:0;background:#FFF;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;z-index:999999}.updraft-restore--footer .updraft-restore--cancel{position:absolute;left:20px;top:auto}.updraft-restore--footer .updraft-restore--next-step{position:absolute;right:20px;top:auto}ul.updraft-restore--stages li span{position:absolute;width:120px;bottom:calc(100% + 14px);left:-55px;background:rgba(0,0,0,0.85882);padding:5px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;color:#FFF;text-align:center;display:none}ul.updraft-restore--stages li:hover span{display:inline-block}.updraft-restore-item input[type=checkbox]{margin-bottom:-5px}.updraft-restore-item input[type=checkbox]:checked+label{font-weight:bold}div#updraft-restore-modal .ud_downloadstatus__close{display:none}#ud_downloadstatus2:not(:empty){margin-top:15px}.dashicons.rotate{-webkit-animation:udp_rotate 1s linear infinite;animation:udp_rotate 1s linear infinite}span#updraftplus_ajax_restore_last_activity{font-size:.8rem;font-weight:normal;float:right}.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice{margin:-20px -20px 20px;padding:19px}.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice button{margin-right:5px}#updraft_migrate_receivingsites .updraftplus-remote-sites-selector .button-primary,.updraft_migrate_add_site .input-field input,.updraft_migrate_add_site button{vertical-align:middle}#updraft_migrate_receivingsites .text-link-menu a:not(:last-child){padding-right:10px}#updraft_migrate_receivingsites a.updraft_migrate_clear_sites span.dashicons-trash:before{font-size:17px}#updraft_migrate_receivingsites .updraft_migrate_add_site{clear:both}.rtl .advanced_tools.total_size table td{direction:ltr;text-align:right}.rtl #plupload-upload-ui2.drag-drop #drag-drop-area2{margin-bottom:20px}.rtl #updraft_lastlogmessagerow .updraft-log-link{float:left}.rtl label.updraft_checkbox>input[type=checkbox]{margin-right:-25px;margin-left:inherit}.rtl .ud_downloadstatus__close{float:left !important}.rtl #updraft_backupextradbs_another_container{float:right}.rtl input.labelauty+label{direction:ltr;position:relative;min-height:29px}.rtl input.labelauty+label>span.labelauty-checked-image,.rtl input.labelauty+label>span.labelauty-unchecked-image{right:8px;top:11px;position:absolute}.rtl .button.updraft-close-overlay .dashicons{margin-right:-5px;margin-left:inherit}.rtl label.updraft_checkbox{margin-right:26px;margin-left:inherit}.rtl #updraft-wrap .udp-info{left:10px;right:inherit}.rtl input.labelauty+label>span.labelauty-unchecked-image+span.labelauty-unchecked,.rtl input.labelauty+label>span.labelauty-checked-image+span.labelauty-checked{margin-right:7px;margin-left:inherit;padding:7px 7px 7px 26px;width:141px;text-align:right}.rtl #updraft_report_cell button.updraft_reportbox_delete,.rtl .updraft_box_delete_button,.rtl .updraft_small_box .updraft_box_delete_button{left:4px;right:inherit}#updraft_exclude_modal .clause-input-container{overflow:auto}#updraft_exclude_modal .clause-input-container select,#updraft_exclude_modal .clause-input-container input{float:left}#updraft_exclude_modal .clause-input-container .wildcards-input{margin:7px 7px 0 0}#updraft_exclude_modal .updraft-exclude-panel .contain-clause-sub-label{margin-top:10px;display:block}.udp-notice{border:1px solid #c3c4c7;border-left-width:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#FFF;margin:5px 0 15px 0;padding:1px 12px}.udp-notice p{margin:.5em 0;padding:2px}.udp-notice.notice-warning{border-left-color:#dba617}.udp-notice.notice-error{border-left-color:#d63638}.udp-notice.updraft-restore-option{border-left-color:#CCC;margin:8px 0 4px 0;padding:12px}div#updraft-restore-modal .udp-notice,.udp-notice.updraft-restore-option{background:#f8f8f8}@media only screen and (min-width:1024px){#updraft_activejobsrow .updraft_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}#updraft_activejobsrow .updraft_row .updraft_col{-webkit-box-flex:1;-ms-flex:auto;flex:auto}#updraft_activejobsrow .updraft_progress_container{width:calc(100% - 230px)}}@media only screen and (min-width:782px){.settings_page_updraftplus input[type=text],.settings_page_updraftplus input[type=password],.settings_page_updraftplus input[type=number]{line-height:1.42;height:27px;padding:2px 6px;color:#555}.settings_page_updraftplus input[type="number"]{height:31px}#ud_massactions.active,#updraft-delete-waitwarning.active{position:fixed;bottom:0;left:160px;right:0;top:auto;background:#FFF;z-index:3;-webkit-box-shadow:0 0 10px rgba(0,0,0,0.2);box-shadow:0 0 10px rgba(0,0,0,0.2)}.rtl #ud_massactions.active,.rtl #updraft-delete-waitwarning.active{left:0;right:160px}body.folded #ud_massactions.active,body.folded #updraft-delete-waitwarning.active{left:36px}.updraft-after-form-table{margin-left:250px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.range-selection:not(.backuprowselected) .updraft_existingbackup_date .backup_date_label{color:#FFF}}@media only screen and (min-width:782px) and (max-width:960px){body.auto-fold #ud_massactions.active,body.auto-fold #updraft-delete-waitwarning.active{left:36px}}@media only screen and (max-width:782px){#updraft-wrap{margin-right:0}#updraft-wrap .form-table td{padding-right:0}label.updraft_checkbox{margin-bottom:8px;margin-top:8px;margin-left:36px}.updraft_retain_rules{position:relative;margin-right:0;border:1px solid #CCC;padding:5px;margin-bottom:-1px}.updraft_retain_rules_delete{position:absolute;right:0;top:5px}a[id*=updraft_retain_]{display:block;padding:15px 15px 15px 0}label.updraft_checkbox>input[type=checkbox]{margin-left:-33px}#updraft-backupnow-button{margin:0;display:block;width:100%}.updraft_next_scheduled_backups_wrapper>.updraft_backup_btn_wrapper{padding-top:0}#ud_massactions,#updraft-delete-waitwarning{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}#ud_massactions.active{position:fixed;top:auto;bottom:0;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;-webkit-box-shadow:0 -3px 15px rgba(0,0,0,0.08);box-shadow:0 -3px 15px rgba(0,0,0,0.08);background:#FFF;z-index:3}#ud_massactions strong{display:block;margin-bottom:5px}small.ud_massactions-tip{display:block}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:normal}.existing-backups-table .backup_date_label .clear-right{display:inline-block}table.widefat.existing-backups-table{border:0;-webkit-box-shadow:none;box-shadow:none;background:transparent}.existing-backups-table thead{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;padding:0;margin:0}.existing-backups-table tr{display:block;margin-bottom:.625em;padding-bottom:16.625px;width:100%;padding:0;margin:0;margin-bottom:10px;background:#FFF;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.1);box-shadow:0 2px 3px rgba(0,0,0,0.1)}.existing-backups-table td{border-bottom:1px solid #DDD;display:block;font-size:.9em;text-align:left;width:100%;padding:10px;margin:0}.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{content:attr(data-label);font-weight:bold;display:block;position:relative;left:auto;padding-bottom:10px;width:auto;text-align:left}.existing-backups-table td:last-child{border-bottom:0}.form-table td.updraft_existingbackup_date{width:inherit;max-width:100%}.existing-backups-table td.before-restore-button{min-height:36px}.updraft_next_scheduled_backups_wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_next_scheduled_backups_wrapper>div{width:100%}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row{position:relative}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected{background-color:#FFF;border-left:4px solid #0572aa}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select){margin-left:50px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select{width:50px !important;position:absolute;left:0;top:0;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;z-index:1;border:0;border-right:1px solid rgba(0,0,0,0.05)}#updraft-navtab-backups-content .updraft_existing_backups input[type="checkbox"]{height:25px}.updraft_migrate_intro button.button.button-primary.button-hero{display:block;margin-right:0;width:100%;max-width:100%}.updraftclone-main-row{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraftclone-main-row>div{width:auto;max-width:none;margin-right:0;margin-bottom:10px}.form-table th{padding-bottom:10px}.updraft--flex{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_restore_main{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_restore_main--components{width:100%;min-height:0}.updraft_restore_main--activity{width:100%}div#updraftplus_ajax_restore_output,.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output{position:relative;top:0;bottom:auto}.updraft--flex>.updraft--two-halves,.updraft--flex>.updraft--one-half{width:100%}.updraft-restore-item{padding-bottom:10px;padding-top:10px}}@media screen and (max-width:600px){.updraft_next_scheduled_entity{float:none;width:100%;margin-bottom:2em}.updraft_time_now_wrapper{margin-top:0}#updraft_lastlogmessagerow h3{margin-bottom:5px}#updraft_lastlogmessagerow .updraft-log-link{display:block;float:none;margin:0;margin-bottom:10px}}@media only screen and (min-width:768px){.addon-activation-notice{left:20em}.existing-backups-table tbody tr.range-selection:hover,.existing-backups-table tbody tr.range-selection{background:#0572aa}.existing-backups-table tbody tr:hover{background:#f1f1f1}.existing-backups-table tbody tr td.before-restore-button{position:relative}.form-table .existing-backups-table thead th.check-column{padding-left:6px}.existing-backups-table tr td:first-child{border-left:4px solid transparent}.existing-backups-table tr.backuprowselected td:first-child{border-left-color:#0572aa}}@media screen and (min-width:670px){.expertmode .advanced_settings_container .advanced_settings_menu{float:left;width:215px;border-right:1px solid #ccc;border-bottom:0}.expertmode .advanced_settings_container .advanced_settings_content{padding-left:10px;padding-top:0}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{display:block}}@media only screen and (max-width:1068px){.updraft-more-plugins .udp-box{width:calc(50% - 10px);margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:100px}}@media only screen and (max-width:600px){.updraft-more-plugins .udp-box{width:100%;margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:auto}table.updraft_feat_table{display:block}table.updraft_feat_table tr{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.updraft_feat_table td{display:block}table.updraft_feat_table td:first-child{width:100%;border-bottom:0}table.updraft_feat_table td:not(:first-child){width:50%;-webkit-box-sizing:border-box;box-sizing:border-box}table.updraft_feat_table td:first-child:empty{display:none}td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}} +/*# sourceMappingURL=updraftplus-admin-1-25-5.min.css.map */ diff --git a/wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css.map b/wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css.map new file mode 100644 index 00000000..156909f7 --- /dev/null +++ b/wp-content/plugins/updraftplus/css/updraftplus-admin-1-25-5.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["css/updraftplus-admin.css"],"names":[],"mappings":"AAAA;;CAEC;EACC,UAAU;EACV,2BAAmB;UAAnB,mBAAmB;CACpB;;CAEA;EACC,YAAY;EACZ,8BAAsB;UAAtB,sBAAsB;CACvB;;AAED;;AAZA;;CAEC;EACC,UAAU;EACV,2BAAmB;UAAnB,mBAAmB;CACpB;;CAEA;EACC,YAAY;EACZ,8BAAsB;UAAtB,sBAAsB;CACvB;;AAED;;AAEA;;CAEC;EACC,4BAAoB;UAApB,oBAAoB;CACrB;;CAEA;EACC,iCAAyB;UAAzB,yBAAyB;CAC1B;;AAED;;AAVA;;CAEC;EACC,4BAAoB;UAApB,oBAAoB;CACrB;;CAEA;EACC,iCAAyB;UAAzB,yBAAyB;CAC1B;;AAED;;AAEA,sBAAsB;AACtB;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,mBAAe;KAAf,eAAe;AAChB;;AAEA;CACC,mBAAO;KAAP,WAAO;SAAP,OAAO;CACP,8BAAsB;SAAtB,sBAAsB;AACvB;;AAEA;CACC,UAAU;CACV,mBAAU;KAAV,cAAU;SAAV,UAAU;AACX;;AAEA;CACC,WAAW;CACX,mBAAU;KAAV,cAAU;SAAV,UAAU;AACX;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,mBAAmB;AACpB;;AAEA,0BAA0B;;AAE1B,iBAAiB;AACjB;CACC,qBAAqB;AACtB;;AAEA;CACC,iBAAiB;AAClB;;AAEA,qBAAqB;AACrB,cAAc;AACd;CACC,kBAAkB;AACnB;;AAEA,qBAAqB;AACrB,YAAY;AACZ;CACC,qBAAqB;AACtB;;AAEA,mBAAmB;;AAEnB;CACC,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,8CAAsC;SAAtC,sCAAsC;AACvC;;AAEA;CACC,qBAAqB;AACtB;;AAEA;;CAEC,cAAc;CACd,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA,gBAAgB;AAChB;CACC,cAAc;CACd,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA,gBAAgB;AAChB;CACC,YAAY;AACb;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,eAAe;AAChB;;AAEA;;CAEC,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,gBAAgB;AACjB;;AAEA,oBAAoB;;AAEpB,iBAAiB;AACjB;CACC,iBAAiB;CACjB,mBAAmB;CACnB,mBAAmB;CACnB,eAAe;CACf,iBAAiB;CACjB,mBAAmB;CACnB,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB,uBAAuB;CACvB,kBAAkB;CAClB,iBAAiB;CACjB,4BAAoB;CAApB,oBAAoB;CACpB,wBAAwB;CACxB,8BAAsB;SAAtB,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,iBAAiB;CACjB,oBAAoB;CACpB,cAAc;CACd,qBAAqB;AACtB;;AAEA;CACC,+BAA+B;CAC/B,wBAAwB;AACzB;;AAEA;CACC,gCAAgC;CAChC,gEAAgD;CAAhD,wDAAgD;CAAhD,gDAAgD;CAAhD,wEAAgD;CAChD,uCAAuC;CACvC,YAAY;CACZ,kBAAkB;CAClB,6EAAqE;SAArE,qEAAqE;CACrE,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,qBAAqB;CACrB,60BAA60B;CAC70B,sBAAsB;CACtB,4BAA4B;CAC5B,8BAA8B;AAC/B;;AAEA;CACC,6EAAqE;SAArE,qEAAqE;AACtE;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,aAAa;CACb,gGAAwF;SAAxF,wFAAwF;AACzF;;AAEA;CACC,+BAAuB;SAAvB,uBAAuB;CACvB,yBAAyB;CACzB,6EAAqE;SAArE,qEAAqE;CACrE,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;CACjB,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,aAAa;CACb,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;CACrB,mBAAmB;AACpB;;AAEA;CACC,cAAc;AACf;;AAEA;;CAEC;;AAED;CACC,aAAa;AACd;;AAEA,eAAe;;AAEf;CACC,oBAAa;CAAb,oBAAa;CAAb,aAAa;AACd;;AAEA;CACC,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,SAAS;AACV;;AAEA;CACC,mBAAmB;CACnB,aAAa;CACb,mBAAmB;CACnB,mBAAO;KAAP,WAAO;SAAP,OAAO;AACR;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;CACf,cAAc;AACf;;AAEA,wBAAwB;AACxB;CACC,aAAa;CACb,kBAAkB;CAClB,QAAQ;CACR,MAAM;CACN,YAAY;CACZ,2BAA2B;CAC3B,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,4BAAsB;CAAtB,6BAAsB;KAAtB,0BAAsB;SAAtB,sBAAsB;AACvB;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,6BAAgB;KAAhB,gBAAgB;AACjB;;AAEA;;CAEC,WAAW;AACZ;;AAEA;;CAEC;EACC,8BAAmB;EAAnB,6BAAmB;MAAnB,uBAAmB;UAAnB,mBAAmB;EACnB,mBAAe;MAAf,eAAe;CAChB;;CAEA;EACC,4BAAe;MAAf,eAAe;CAChB;;CAEA;;EAEC,YAAY;CACb;;AAED;;AAEA;CACC,qBAAqB;CACrB,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,mBAAmB;CACnB,aAAa;CACb,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA,qBAAqB;AACrB;CACC,WAAW;CACX,WAAW;CACX,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,gBAAgB;AACjB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,mBAAmB;CACnB,sBAAsB;AACvB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,YAAY;AACb;;AAEA,mBAAmB;AACnB;CACC,eAAe;CACf,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA,oCAAoC;AACpC;CACC,mBAAmB;CACnB,YAAY;CACZ,iBAAiB;CACjB,iBAAiB;CACjB,oBAAoB;AACrB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,UAAU;AACX;;AAEA,YAAY;;AAEZ;CACC,qBAAqB;AACtB;;AAEA;;;CAGC,qBAAqB;CACrB,cAAc;AACf;;AAEA;CACC,wBAAwB;CACxB,+BAA+B;AAChC;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;;CAEC,aAAa;AACd;;AAEA,4BAA4B;AAC5B;;CAEC,kBAAkB;CAClB,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,0BAAqB;KAArB,qBAAqB;CACrB,qBAAqB;CACrB,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB,6BAA6B;AAC9B;;AAEA;;;;CAIC,aAAa;CACb,iBAAiB;CACjB,YAAY;CACZ,SAAS;AACV;;AAEA;;CAEC,qBAAqB;CACrB,iBAAiB;CACjB,4BAA4B;AAC7B;;AAEA;;CAEC,eAAe;AAChB;;AAEA;;CAEC,SAAS;AACV;;AAEA;CACC,gBAAgB;CAChB,iBAAiB;CACjB,mBAAmB;CACnB,cAAc;CACd,YAAY;CACZ,iBAAiB;CACjB,oBAAoB;CACpB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,UAAU;CACV,oBAAoB;AACrB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;;CAEC;AACD;CACC,cAAc;AACf;;AAEA;CACC,mBAAmB;CACnB,SAAS;CACT,gBAAgB;CAChB,mBAAmB;CACnB,oBAAoB;AACrB;;AAEA;CACC,oBAAoB;AACrB;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,4BAA4B;AAC7B;;AAEA;CACC,UAAU;CACV,UAAU;AACX;;AAEA;CACC,aAAa;CACb,2FAAmF;SAAnF,mFAAmF;CACnF,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,UAAU;AACX;;AAEA;CACC,mBAAmB;CACnB,gCAAgC;CAChC,wDAAgD;SAAhD,gDAAgD;AACjD;;AAEA;CACC,+GAAuG;SAAvG,uGAAuG;AACxG;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,aAAa;CACb,yEAAiE;SAAjE,iEAAiE;CACjE,UAAU;AACX;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,gBAAgB;CAChB,qBAAqB;CACrB,mBAAe;KAAf,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,gBAAgB;CAChB,YAAY;CACZ,wBAAwB;CACxB,aAAa;CACb,8BAAsB;SAAtB,sBAAsB;AACvB;;AAEA;CACC,kBAAkB;CAClB,8BAA8B;CAC9B,wBAAuB;KAAvB,qBAAuB;SAAvB,uBAAuB;CACvB,yBAAmB;KAAnB,sBAAmB;SAAnB,mBAAmB;AACpB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,YAAY;CACZ,iCAAiC;CACjC,yBAAyB;AAC1B;;AAEA;CACC,mBAAmB;CACnB,WAAW;CACX,SAAS;CACT,kBAAkB;AACnB;;AAEA;;CAEC,aAAa;AACd;;AAEA;CACC,qBAAqB;CACrB,mBAAmB;CACnB,gBAAgB;CAChB,eAAe;AAChB;;AAEA;CACC,yBAAyB;CACzB,kBAAkB;CAClB,yFAAyF;CACzF,wBAAgB;SAAhB,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;CACrB,mBAAmB;CACnB,eAAe;CACf,eAAe;CACf,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,qBAAqB;CACrB,WAAW;CACX;;EAEC;AACF;;AAEA;CACC,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,qBAAqB;CACrB,YAAY;AACb;;AAEA;CACC,mBAAmB;CACnB,2BAA2B;CAC3B,8BAA8B;CAC9B,WAAW;CACX,eAAe;CACf,yCAAyC;AAC1C;;AAEA;CACC,mBAAmB;CACnB,4BAA4B;CAC5B,+BAA+B;CAC/B,iBAAiB;AAClB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,WAAW;CACX,iBAAiB;AAClB;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,aAAa;AACd;;AAEA;CACC,gBAAgB;CAChB,WAAW;CACX,mBAAmB;CACnB,UAAU;AACX;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,mBAAmB;CACnB,WAAW;CACX,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,cAAc;CACd,qBAAqB;AACtB;;AAEA;CACC,WAAW;CACX,4BAAoB;CAApB,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;CAChB,eAAe;CACf,mBAAmB;CACnB,WAAW;CACX,iBAAiB;CACjB,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,UAAU;CACV,gBAAgB;AACjB;;AAEA;CACC,eAAe;CACf,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,eAAe;CACf,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,cAAc;CACd,qBAAqB;CACrB,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,sBAAsB;CACtB,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,gBAAgB;AACjB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,eAAe;AAChB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,eAAe;CACf,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;AAClB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;CACjB,cAAc;CACd,qBAAqB;CACrB,eAAe;CACf,YAAY;AACb;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;CAClB,yBAAyB;CACzB,wBAAwB;CACxB,WAAW;CACX,cAAc;AACf;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,aAAa;CACb,kBAAkB;CAClB,UAAU;AACX;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,iBAAiB;AAClB;;AAEA,qBAAqB;;AAErB,2BAA2B;;AAE3B;CACC,WAAW;CACX,YAAY;CACZ,WAAW;CACX,mBAAmB;AACpB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,gBAAgB;CAChB,eAAe;CACf,iBAAiB;CACjB,aAAa;CACb,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,kBAAkB;CAClB,UAAU;AACX;;AAEA;;CAEC,iBAAiB;CACjB,eAAe;CACf,mBAAmB;CACnB,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;CAChB,kBAAkB;CAClB,qBAAqB;AACtB;;AAEA;;CAEC,qBAAqB;CACrB,gBAAgB;AACjB;;AAEA;;;CAGC,wBAAwB;CACxB,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;;CAEC;;EAEC,qBAAqB;CACtB;;AAED;;AAEA;CACC,eAAe;CACf,eAAe;CACf,wBAAgB;SAAhB,gBAAgB;CAChB,cAAc;CACd,YAAY;CACZ,iBAAiB;AAClB;;AAEA;;;CAGC,cAAc;AACf;;AAEA;CACC,cAAc;CACd,iBAAiB;CACjB,eAAe;CACf,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;;CAEC,aAAa;CACb,aAAa;CACb,sBAAsB;CACtB,kBAAkB;AACnB;;AAEA;;;CAGC,YAAY;CACZ,gBAAgB;CAChB,YAAY;CACZ,uBAAuB;CACvB,kBAAkB;CAClB,QAAQ;CACR,UAAU;CACV,eAAe;AAChB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,qBAAqB;CACrB,eAAe;AAChB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,cAAc;CACd,wBAAwB;CACxB,kBAAkB;AACnB;;AAEA;CACC,WAAW;AACZ;;AAEA,kCAAkC;;AAElC;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;AAChB;;AAEA;;CAEC,yBAAyB;AAC1B;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,6BAA6B;CAC7B,YAAY;CACZ,cAAc;CACd,0BAA0B;CAC1B,eAAe;CACf,WAAW;CACX,WAAW;AACZ;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,2BAA2B;CAC3B,6BAA6B;CAC7B,0BAA0B;CAC1B,gBAAgB;CAChB,gBAAgB;AACjB;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,YAAY;CACZ,YAAY;CACZ,6BAA6B;AAC9B;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,YAAY;CACZ,iBAAiB;CACjB,iBAAiB;CACjB,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;CAChB,sBAAsB;AACvB;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,qBAAqB;AACtB;;AAEA;CACC,qBAAqB;CACrB,WAAW;CACX,YAAY;CACZ,gBAAgB;CAChB,cAAc;CACd,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,iDAAyC;SAAzC,yCAAyC;AAC1C;;AAEA;CACC,aAAa;CACb,kBAAkB;CAClB,YAAY;CACZ,gDAAwC;SAAxC,wCAAwC;CACxC,YAAY;CACZ,oBAAoB;AACrB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,aAAa;CACb,8BAA8B;CAC9B,sBAAsB;CACtB,sBAAsB;AACvB;;AAEA;CACC,aAAa;CACb,gBAAgB;CAChB,kBAAkB;CAClB,iDAAyC;SAAzC,yCAAyC;CACzC,cAAc;AACf;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,kCAAkC;AACnC;;AAEA;CACC,cAAc;CACd,eAAe;AAChB;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,WAAW;CACX,sBAAsB;CACtB,eAAe;AAChB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;AACtB;;AAEA,kBAAkB;;AAElB,mEAAmE;AACnE;;CAEC,uBAAuB;AACxB;;AAEA;;CAEC,+BAA+B;AAChC;;AAEA;;CAEC,8BAA8B;AAC/B;;AAEA;;CAEC,uBAAuB;AACxB;;AAEA,8BAA8B;AAC9B;CACC,kBAAkB;CAClB,aAAa;CACb,cAAc;AACf;;AAEA;CACC,kBAAkB;CAClB,YAAY;CACZ,WAAW;CACX,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,eAAe;AAChB;;AAEA;CACC,aAAa;CACb,cAAc;CACd,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,WAAW;CACX,WAAW;CACX,cAAc;AACf;;AAEA,6BAA6B;AAC7B;CACC,kBAAkB;CAClB,aAAa;CACb,WAAW;CACX,sBAAsB;CACtB,mBAAmB;CACnB,kBAAkB;CAClB,eAAe;CACf,gDAAwC;SAAxC,wCAAwC;AACzC;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,cAAc;CACd,mBAAmB;CACnB,kBAAkB;CAClB,MAAM;CACN,UAAU;CACV,0BAA0B;CAC1B,2BAA2B;CAC3B,iDAAyC;SAAzC,yCAAyC;AAC1C;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,aAAa;CACb,mBAAmB;AACpB;;AAEA;CACC,aAAa;CACb,WAAW;CACX,cAAc;AACf;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,0BAA0B;CAC1B,iBAAiB;AAClB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,iBAAiB;AAClB;;AAEA;;CAEC,eAAe;AAChB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,SAAS;CACT,UAAU;AACX;;AAEA;CACC,qBAAqB;CACrB,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,6BAA6B;CAC7B,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,eAAe;CACf,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,YAAY;CACZ,yBAAyB;CACzB,qBAAqB;CACrB,mCAA2B;SAA3B,2BAA2B;AAC5B;;AAEA;;CAEC,kBAAkB;CAClB,WAAW;CACX,gBAAgB;AACjB;;AAEA,kDAAkD;AAClD;CACC,cAAc;CACd,yBAAyB;CACzB,kBAAkB;CAClB,gCAAwB;SAAxB,wBAAwB;AACzB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,2BAAmB;SAAnB,mBAAmB;CACnB,kDAA0C;SAA1C,0CAA0C;AAC3C;;AAEA;CACC,uBAAuB;CACvB,aAAa;AACd;;AAEA;CACC,mBAAmB;CACnB,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,mBAAmB;CACnB,sBAAsB;CACtB,aAAa;AACd;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC;AACD;CACC,gBAAgB;CAChB,gBAAgB;CAChB,UAAU;CACV,8BAA8B;AAC/B;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,uBAAuB;CACvB,yBAAyB;CACzB,kBAAkB;AACnB;;AAEA;CACC,cAAc;CACd,eAAe;CACf,kBAAkB;CAClB,cAAc;AACf;;AAEA;CACC,WAAW;CACX,YAAY;AACb;;AAEA;CACC,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,yBAAmB;KAAnB,sBAAmB;SAAnB,mBAAmB;CACnB,yBAA8B;KAA9B,sBAA8B;SAA9B,8BAA8B;CAC9B,kBAAkB;AACnB;;AAEA;CACC,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,gBAAgB;CAChB,cAAc;CACd,SAAS;CACT,kBAAkB;CAClB,uBAAuB;CACvB,cAAc;AACf;;AAEA;CACC,WAAW;AACZ;;AAEA;;CAEC;EACC,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;EACtB,kBAAkB;EAClB,yBAAmB;MAAnB,sBAAmB;UAAnB,mBAAmB;CACpB;;CAEA;EACC,eAAe;EACf,mBAAmB;CACpB;;AAED;;AAEA;;CAEC;AACD;CACC,gBAAgB;CAChB,aAAa;CACb,gDAAwC;SAAxC,wCAAwC;CACxC,kBAAkB;AACnB;;AAEA;CACC,SAAS;AACV;;AAEA;CACC,2BAAkB;KAAlB,kBAAkB;CAClB,gBAAgB;CAChB,wBAAgB;SAAhB,gBAAgB;AACjB;;AAEA;;CAEC;AACD;CACC,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,8BAAmB;CAAnB,6BAAmB;KAAnB,uBAAmB;SAAnB,mBAAmB;CACnB,mBAAe;KAAf,eAAe;CACf,yBAA8B;KAA9B,sBAA8B;SAA9B,8BAA8B;CAC9B,eAAe;AAChB;;AAEA;CACC,cAAc;CACd,eAAe;CACf,qBAAqB;AACtB;;AAEA;CACC,8BAAsB;SAAtB,sBAAsB;CACtB,UAAU;AACX;;AAEA;CACC,gBAAgB;CAChB,iBAAiB;AAClB;;AAEA;;CAEC;AACD;CACC,gBAAgB;CAChB,SAAS;CACT,eAAe;AAChB;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,oCAAoC;CACpC,iBAAiB;AAClB;;AAEA;CACC,aAAa;CACb,gBAAgB;CAChB,2BAA2B;CAC3B,0BAA0B;CAC1B,8CAAsC;SAAtC,sCAAsC;CACtC,oBAAoB;CACpB,iBAAiB;AAClB;;AAEA;CACC,wBAAwB;AACzB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;CACZ,yBAAyB;CACzB,eAAe;CACf,uBAAuB;CACvB,kBAAkB;AACnB;;AAEA;CACC,yBAAyB;CACzB,yBAAyB;CACzB,eAAe;CACf,uBAAuB;CACvB,kBAAkB;CAClB,aAAa;AACd;;AAEA;CACC,wBAAwB;AACzB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,2CAA2C;CAC3C,YAAY;AACb;;AAEA;CACC,cAAc;CACd,cAAc;AACf;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,iBAAiB;CACjB,eAAe;CACf,eAAe;AAChB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,eAAe;CACf,cAAc;AACf;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,UAAU;AACX;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,aAAa;CACb,YAAY;AACb;;AAEA;CACC,YAAY;CACZ,uBAAuB;CACvB,WAAW;CACX,eAAe;CACf,UAAU;CACV,eAAe;AAChB;;AAEA;CACC,SAAS;CACT,mBAAmB;CACnB,WAAW;CACX,6BAAqB;CAArB,qBAAqB;AACtB;;AAEA;CACC,eAAe;CACf,WAAW;AACZ;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,UAAU;CACV,eAAe;CACf,iBAAiB;CACjB,WAAW;CACX,kBAAkB;CAClB,YAAY;CACZ,aAAa;CACb,qBAAqB;CACrB,qBAAqB;AACtB;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,gBAAgB;CAChB,eAAe;CACf,iBAAiB;CACjB,aAAa;CACb,WAAW;AACZ;;AAEA,oBAAoB;AACpB;CACC,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;CAClB,oBAAoB;AACrB;;AAEA;CACC,gBAAgB;CAChB,YAAY;CACZ,aAAa;CACb,kBAAkB;CAClB,YAAY;CACZ,kBAAkB;CAClB,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,qBAAqB;CACrB,eAAe;CACf,iBAAiB;CACjB,UAAU;CACV,kCAA0B;SAA1B,0BAA0B;AAC3B;;AAEA;CACC,iCAAyB;SAAzB,yBAAyB;CACzB,iCAAyB;SAAzB,yBAAyB;CACzB,2CAAmC;SAAnC,mCAAmC;CACnC,sCAA8B;SAA9B,8BAA8B;CAC9B,2CAAmC;SAAnC,mCAAmC;AACpC;;AAEA;CACC,aAAa;AACd;;AAEA;;CAEC;EACC,cAAc;EACd,WAAW;EACX,kBAAkB;CACnB;;AAED;;AAEA,mCAAmC;AACnC;CACC,UAAU;AACX;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,iBAAiB;CACjB,oBAAoB;AACrB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;AACb;;AAEA;;;;CAIC,gCAAgC;CAChC,6BAA6B;CAC7B,WAAW;AACZ;;AAEA;CACC,mBAAmB;CACnB,cAAc;AACf;;AAEA;CACC,wBAAgB;SAAhB,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,yBAAyB;CACzB,uCAAuC;CACvC,0BAA0B;CAC1B,wBAAwB;CACxB,mBAAmB;CACnB,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf,uBAAuB;CACvB,gBAAgB;CAChB,mBAAmB;CACnB,cAAc;CACd,qBAAqB;CACrB,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,8BAA8B;CAC9B,sBAAsB;CACtB,uBAAuB;AACxB;;AAEA;CACC,iBAAiB;CACjB,WAAW;CACX,wBAAwB;AACzB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,YAAY;CACZ,mBAAmB;CACnB,kBAAkB;CAClB,oDAA4C;SAA5C,4CAA4C;AAC7C;;AAEA;CACC,cAAc;CACd,YAAY;AACb;;AAEA;CACC,cAAc;CACd,cAAc;CACd,eAAe;CACf,WAAW;CACX,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;CACjB,WAAW;CACX,mBAAmB;AACpB;;AAEA;CACC,qBAAqB;CACrB,iBAAiB;CACjB,eAAe;AAChB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,yBAAyB;CACzB,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,iBAAiB;CACjB,cAAc;AACf;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,gBAAgB;CAChB,SAAS;CACT,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;CACjB,cAAc;AACf;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,sBAAsB;CACtB,YAAY;CACZ,WAAW;CACX,kBAAkB;AACnB;;AAEA;CACC,uBAAuB;CACvB,gBAAgB;CAChB,eAAe;CACf,mBAAmB;AACpB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,aAAa;CACb,8BAA8B;CAC9B,kBAAkB;CAClB,OAAO;CACP,SAAS;AACV;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,qBAAqB;CACrB,eAAe;AAChB;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;CACrB,YAAY;CACZ,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,0BAA0B;AAC3B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,eAAe;CACf,cAAc;AACf;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,uBAAuB;AACxB;;AAEA,8BAA8B;AAC9B;CACC,uBAAuB;CACvB,YAAY;AACb;;AAEA;CACC,iBAAiB;CACjB,cAAc;AACf;;AAEA;CACC,mBAAmB;CACnB,gBAAgB;CAChB,gBAAgB;AACjB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,YAAY;CACZ,YAAY;AACb;;AAEA;CACC,WAAW;CACX,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,oBAAoB;AACrB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,aAAa;AACd;;AAEA;CACC,aAAa;CACb,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,kBAAkB;CAClB,SAAS;CACT,QAAQ;CACR,kBAAkB;CAClB,yBAAyB;CACzB,8BAAsB;CAAtB,sBAAsB;AACvB;;AAEA;CACC,UAAU;CACV,kBAAkB;CAClB,eAAe;CACf,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;CAClB,WAAW;CACX,yBAAyB;CACzB,yCAAyC;AAC1C;;AAEA;CACC,qBAAqB;CACrB,UAAU;AACX;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,UAAU;CACV,WAAW;CACX,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,iBAAiB;AAClB;;AAEA;CACC,iBAAiB;CACjB,YAAY;AACb;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;CAChB,0BAA0B;AAC3B;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,8BAA8B;CAE9B,sBAAsB;CACtB,gBAAgB;CAChB,UAAU;AACX;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,SAAS;CACT,UAAU;AACX;;AAEA;CACC,WAAW;CACX,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,SAAS;CACT,UAAU;AACX;;AAEA;CACC,WAAW;CACX,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,iBAAiB;CACjB,WAAW;CACX,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,qBAAqB;AACtB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,YAAY;AACb;;AAEA;CACC,WAAW;CACX,sBAAsB;AACvB;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,2BAA2B;AAC5B;;AAEA;CACC,2BAA2B;AAC5B;;AAEA;CACC,2BAA2B;AAC5B;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,oBAAoB;AACrB;;AAEA;;EAEE;;AAEF,4BAA4B;AAC5B;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,eAAe;CACf,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,eAAe;AAChB;;AAEA,YAAY;AACZ,mHAAmH;;AAEnH;CACC,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,iBAAiB;CACjB,gBAAgB;CAChB,aAAa;CACb,YAAY;AACb;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,UAAU;AACX;;AAEA,gBAAgB;;AAEhB;CACC,yBAAyB;CACzB,aAAa;CACb,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,mBAAmB;CACnB,WAAW;CACX,kBAAkB;AACnB;;AAEA;CACC,qBAAqB;CACrB,cAAc;AACf;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,UAAU;CACV,WAAW;AACZ;;AAEA;CACC,UAAU;CACV,WAAW;CACX,kBAAkB;CAClB,YAAY;CACZ,gBAAgB;AACjB;;AAEA;CACC,4BAA4B;CAC5B,YAAY;CACZ,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA,oBAAoB;;AAEpB,gBAAgB;;AAEhB;CACC,WAAW;CACX,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,sBAAsB;CACtB,qBAAqB;CACrB,cAAc;CACd,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,aAAa;AACd;;AAEA;CACC,UAAU;CACV,eAAe;CACf,4BAA4B;AAC7B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,cAAc;CACd,kBAAkB;AACnB;;AAEA;CACC,WAAW;CACX,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,aAAa;CACb,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,eAAe;CACf,cAAc;CACd,qBAAqB;CACrB,4BAA4B;CAC5B,kBAAkB;CAClB,UAAU;CACV,UAAU;AACX;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,sBAAsB;CACtB,eAAe;AAChB;;AAEA,oBAAoB;;AAEpB,mBAAmB;;AAEnB;CACC,gBAAgB;CAChB,WAAW;CACX,cAAc;CACd,cAAc;AACf;;AAEA;CACC,uBAAuB;CACvB,cAAc;CACd,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,sBAAsB;CACtB,qBAAqB;CACrB,cAAc;CACd,kBAAkB;CAClB,gBAAgB;CAChB,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,eAAe;AAChB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,YAAY;CACZ,YAAY;AACb;;AAEA;CACC,UAAU;CACV,YAAY;AACb;;AAEA;CACC,eAAe;CACf,cAAc;CACd,qBAAqB;CACrB,4BAA4B;CAC5B,kBAAkB;CAClB,UAAU;CACV,UAAU;AACX;;AAEA;CACC,eAAe;CACf,sBAAsB;AACvB;;AAEA;CACC,WAAW;CACX,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;;CAEC,gBAAgB;AACjB;;AAEA;CACC,gBAAgB;AACjB;;AAEA,uBAAuB;;;AAGvB,kFAAkF;;AAElF;CACC,cAAc;AACf;;AAEA;CACC,kBAAkB;CAClB,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,cAAc;CACd,qBAAqB;CACrB,cAAc;CACd,cAAc;AACf;;AAEA;CACC,WAAW;CACX,kBAAkB;AACnB;;AAEA,+BAA+B;;AAE/B;CACC,kBAAkB;AACnB;;AAEA;CACC,WAAW;CACX,UAAU;CACV,kBAAkB;CAClB,oBAAoB;AACrB;;AAEA;CACC,YAAY;CACZ,iBAAiB;AAClB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,SAAS;CACT,UAAU;AACX;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,UAAU;CACV,kBAAkB;CAClB,iBAAiB;CACjB,qBAAqB;AACtB;;AAEA;CACC,eAAe;CACf,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,WAAW;CACX,eAAe;CACf,kBAAkB;AACnB;;AAEA,kCAAkC;AAClC;AACA,4BAA4B;AAC5B;gBACgB;AAChB,gBAAgB;CACf,WAAW;CACX,WAAW;CACX,YAAY;CACZ,aAAa;AACd;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,0BAA0B;CAC1B,UAAU;CACV,YAAY;CACZ,mBAAmB;AACpB;;AAEA;CACC,qBAAqB;CACrB,cAAc;CACd,mBAAmB;CACnB,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,eAAe;AAChB;;AAEA;CACC,gBAAgB;CAChB,yBAAyB;CACzB,kBAAkB;CAClB,cAAc;CACd,qBAAqB;CACrB,4BAA4B;CAC5B,6BAA6B;CAC7B,0BAA0B;CAC1B,iBAAiB;CACjB,gBAAgB;CAChB,2BAA2B;CAC3B,yBAAyB;CACzB,qBAAqB;AACtB;;AAEA;CACC,yBAAyB;CACzB,mBAAmB;CACnB,qBAAqB;CACrB,eAAe;CACf,iBAAiB;CACjB,gBAAgB;CAChB,WAAW;CACX,YAAY;CACZ,kBAAkB;AACnB;;AAEA,sCAAsC;AACtC,4CAA4C;AAC5C;CACC,YAAY;CACZ,gBAAgB;AACjB;;AAEA;CACC,WAAW;CACX,2CAA2C;AAC5C;;AAEA;CACC,gBAAgB;CAChB,WAAW;CACX,WAAW;CACX,cAAc;AACf;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,qBAAqB;CACrB,eAAe;CACf,YAAY;CACZ,WAAW;AACZ;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,yBAAyB;CACzB,WAAW;AACZ;;AAEA;CACC,yBAAyB;CACzB,WAAW;AACZ;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,UAAU;CACV,WAAW;CACX,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,iBAAiB;CACjB,kBAAkB;CAClB,oBAAoB;CACpB,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,sBAAsB;CACtB,eAAe;CACf,gBAAgB;CAChB,sBAAsB;AACvB;;AAEA;CACC,sBAAsB;CACtB,iBAAiB;CACjB,2BAA2B;CAC3B,sBAAsB;CACtB,mBAAmB;AACpB;;AAEA;CACC,sBAAsB;CACtB,iBAAiB;CACjB,8BAA8B;CAC9B,sBAAsB;CACtB,mBAAmB;AACpB;;AAEA;CACC,kBAAkB;CAClB,WAAW;AACZ;;AAEA;CACC,mBAAmB;CACnB,WAAW;AACZ;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;CACf,iBAAiB;CACjB,mBAAmB;AACpB;;AAEA;;CAEC,gBAAgB;AACjB;;AAEA;CACC,eAAe;CACf,mBAAmB;AACpB;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,uBAAuB;AACxB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,4BAAsB;CAAtB,6BAAsB;KAAtB,0BAAsB;SAAtB,sBAAsB;CACtB,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,cAAc;CACd,cAAc;CACd,kDAA0C;SAA1C,0CAA0C;AAC3C;;AAEA;CACC,mBAAmB;CACnB,kDAA0C;SAA1C,0CAA0C;AAC3C;;AAEA;CACC,uBAAuB;CACvB,UAAU;AACX;;AAEA;CACC,cAAc;CACd,gBAAgB;AACjB;;AAEA;CACC,0BAA0B;AAC3B;;AAEA,qBAAqB;;AAErB;CACC,cAAc;CACd,eAAe;CACf,MAAM;CACN,OAAO;CACP,QAAQ;CACR,SAAS;CACT,cAAc;CACd,iBAAiB;CACjB,mBAAmB;CACnB,cAAc;AACf;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,SAAS;AACV;;AAEA;CACC,8BAAsB;SAAtB,sBAAsB;CACtB,gBAAgB;CAChB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,cAAc;CACd,gBAAgB;CAChB,gBAAgB;CAChB,gDAAwC;SAAxC,wCAAwC;CACxC,kBAAkB;CAClB,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,mBAAe;KAAf,eAAe;CACf,8BAAsB;SAAtB,sBAAsB;AACvB;;AAEA;CACC,eAAe;CACf,iBAAiB;CACjB,kBAAkB;CAClB,iBAAiB;CACjB,iBAAiB;CACjB,WAAW;CACX,eAAe;CACf,mBAAmB;CACnB,kBAAkB;CAClB,8BAAsB;SAAtB,sBAAsB;AACvB;;AAEA;CACC,kBAAkB;CAClB,yBAAyB;CACzB,8BAAsB;SAAtB,sBAAsB;AACvB;;AAEA;CACC,aAAa;CACb,SAAS;AACV;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,YAAY;CACZ,aAAa;CACb,8BAAsB;SAAtB,sBAAsB;CACtB,mBAAmB;CACnB,iBAAiB;AAClB;;AAEA;CACC,mBAAmB;CACnB,cAAc;CACd,sBAAsB;CACtB,aAAa;CACb,cAAc;CACd,kBAAkB;CAClB,SAAS;CACT,SAAS;CACT,QAAQ;CACR,OAAO;AACR;;AAEA;CACC,mBAAmB;CACnB,gIAAgI;AACjI;;AAEA;CACC,yBAAyB;CACzB,kBAAkB;CAClB,mBAAmB;AACpB;;AAEA;CACC,cAAc;CACd,iBAAiB;CACjB,mBAAmB;AACpB;;AAEA;CACC,aAAa;CACb,2BAA2B;AAC5B;;AAEA;CACC,cAAc;CACd,eAAe;AAChB;;AAEA;;CAEC,iBAAiB;AAClB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,SAAS;CACT,qBAAqB;CACrB,kBAAkB;CAClB,2BAA2B;AAC5B;;AAEA;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,gBAAgB;CAChB,kBAAkB;AACnB;;AAEA;CACC,gBAAgB;CAChB,sBAAsB;CACtB,eAAe;CACf,sBAAsB;CACtB,qBAAqB;CACrB,iBAAiB;AAClB;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,gBAAgB;CAChB,gDAAwC;SAAxC,wCAAwC;AACzC;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,eAAe;CACf,gBAAgB;CAChB,kBAAkB;CAClB,sBAAsB;CACtB,aAAa;AACd;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,eAAe;CACf,YAAY;CACZ,iBAAiB;CACjB,WAAW;AACZ;;AAEA;CACC,sBAAsB;AACvB;;AAEA,kBAAkB;;AAElB;CACC,WAAW;AACZ;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC,kBAAkB;AACnB;;AAEA;CACC,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,6BAA6B;AAC9B;;AAEA;CACC,SAAS;CACT,UAAU;AACX;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,qBAAqB;CACrB,SAAS;CACT,YAAY;AACb;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,mBAAmB;CACnB,cAAc;CACd,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,0BAA0B;CAC1B,aAAa;CACb,kBAAkB;CAClB,gBAAgB;CAChB,SAAS;CACT,gBAAgB;CAChB,WAAW;CACX,8BAAsB;SAAtB,sBAAsB;CACtB,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,UAAU;CACV,SAAS;AACV;;AAEA;CACC,kBAAkB;CAClB,WAAW;CACX,SAAS;AACV;;AAEA;CACC,kBAAkB;CAClB,YAAY;CACZ,yBAAyB;CACzB,WAAW;CACX,+BAAqB;CACrB,YAAY;CACZ,8BAAsB;SAAtB,sBAAsB;CACtB,kBAAkB;CAClB,WAAW;CACX,kBAAkB;CAClB,aAAa;AACd;;AAEA;CACC,qBAAqB;AACtB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;AAClB;;AAEA,yCAAyC;AACzC;CACC,aAAa;AACd;;AAEA;CACC,gBAAgB;AACjB;;AAEA;CACC,gDAAwC;SAAxC,wCAAwC;AACzC;;AAEA,qBAAqB;;AAErB;CACC,gBAAgB;CAChB,mBAAmB;CACnB,YAAY;AACb;;AAEA;CACC,wBAAwB;CACxB,aAAa;AACd;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,WAAW;AACZ;;AAEA,gBAAgB;;AAEhB;CACC,cAAc;CACd,iBAAiB;AAClB;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,mBAAmB;CACnB,oBAAoB;AACrB;;AAEA;CACC,sBAAsB;AACvB;;AAEA;CACC,YAAY;AACb;;AAEA;CACC,cAAc;CACd,kBAAkB;CAClB,gBAAgB;AACjB;;AAEA;CACC,UAAU;CACV,SAAS;CACT,kBAAkB;AACnB;;AAEA;CACC,kBAAkB;CAClB,oBAAoB;AACrB;;AAEA;CACC,kBAAkB;CAClB,oBAAoB;AACrB;;AAEA;CACC,UAAU;CACV,cAAc;AACf;;AAEA;;CAEC,iBAAiB;CACjB,oBAAoB;CACpB,yBAAyB;CACzB,YAAY;CACZ,iBAAiB;AAClB;;AAEA;;;CAGC,SAAS;CACT,cAAc;AACf;;AAEA;CACC,cAAc;AACf;;AAEA;CACC,WAAW;AACZ;;AAEA;CACC,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,cAAc;AACf;;AAEA,+BAA+B;AAC/B;CACC,yBAAyB;CACzB,sBAAsB;CACtB,gDAAwC;SAAxC,wCAAwC;CACxC,gBAAgB;CAChB,oBAAoB;CACpB,iBAAiB;AAClB;;AAEA;CACC,cAAc;CACd,YAAY;AACb;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,0BAA0B;AAC3B;;AAEA;CACC,uBAAuB;CACvB,mBAAmB;CACnB,aAAa;AACd;;AAEA;CACC,mBAAmB;AACpB;;AAEA;;CAEC;EACC,oBAAa;EAAb,oBAAa;EAAb,aAAa;EACb,2BAAqB;MAArB,wBAAqB;UAArB,qBAAqB;CACtB;;CAEA;EACC,mBAAU;MAAV,cAAU;UAAV,UAAU;CACX;;CAEA;EACC,yBAAyB;CAC1B;;AAED;;AAEA;;CAEC;;;EAGC,wBAAwB;EACxB,iBAAiB;EACjB,4BAA4B;EAC5B,YAAY;EACZ,gBAAgB;EAChB,WAAW;CACZ;;CAEA;EACC,YAAY;CACb;;CAEA;EACC,eAAe;EACf,SAAS;EACT,WAAW;EACX,QAAQ;EACR,SAAS;EACT,gBAAgB;EAChB,UAAU;EACV,+CAAuC;UAAvC,uCAAuC;CACxC;;CAEA;EACC,SAAS;EACT,YAAY;CACb;;CAEA;EACC,UAAU;CACX;;CAEA;EACC,kBAAkB;CACnB;;CAEA;EACC,WAAW;CACZ;;AAED;;AAEA;;CAEC;EACC,UAAU;CACX;;AAED;;AAEA;;CAEC;EACC,eAAe;CAChB;;CAEA;EACC,gBAAgB;CACjB;;CAEA;EACC,kBAAkB;EAClB,eAAe;EACf,iBAAiB;CAClB;;CAEA;EACC,kBAAkB;EAClB,eAAe;EACf,sBAAsB;EACtB,YAAY;EACZ,mBAAmB;CACpB;;CAEA;EACC,kBAAkB;EAClB,QAAQ;EACR,QAAQ;CACT;;CAEA;EACC,cAAc;EACd,yBAAyB;CAC1B;;CAEA;EACC,kBAAkB;CACnB;;CAEA;EACC,SAAS;EACT,cAAc;EACd,WAAW;CACZ;;CAEA;EACC,cAAc;CACf;;CAEA;EACC,WAAW;EACX,8BAAsB;UAAtB,sBAAsB;EACtB,kBAAkB;CACnB;;CAEA;EACC,eAAe;EACf,SAAS;EACT,SAAS;EACT,WAAW;EACX,8BAAsB;UAAtB,sBAAsB;EACtB,kBAAkB;EAClB,mDAA2C;UAA3C,2CAA2C;EAC3C,gBAAgB;EAChB,UAAU;CACX;;CAEA;EACC,cAAc;EACd,kBAAkB;CACnB;;CAEA;EACC,cAAc;CACf;;AAED;;;;;;;;;GASG;;CAEF;EACC,mBAAmB;CACpB;;CAEA;EACC,qBAAqB;CACtB;;CAEA;EACC,SAAS;EACT,wBAAgB;UAAhB,gBAAgB;EAChB,uBAAuB;CACxB;;CAEA;EACC,YAAY;EACZ,mBAAmB;EACnB,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,UAAU;EACV,kBAAkB;EAClB,UAAU;EACV,UAAU;EACV,SAAS;CACV;;CAEA;EACC,cAAc;EACd,qBAAqB;EACrB,wBAAwB;EACxB,WAAW;EACX,UAAU;EACV,SAAS;EACT,mBAAmB;EACnB,gBAAgB;EAChB,gDAAwC;UAAxC,wCAAwC;CACzC;;CAEA;EACC,6BAA6B;EAC7B,cAAc;EACd,eAAe;EACf,gBAAgB;EAChB,WAAW;EACX,aAAa;EACb,SAAS;CACV;;CAEA;EACC;;;GAGC;EACD,yBAAyB;EACzB,iBAAiB;EACjB,cAAc;EACd,kBAAkB;EAClB,UAAU;EACV,oBAAoB;EACpB,WAAW;EACX,gBAAgB;CACjB;;CAEA;EACC,gBAAgB;CACjB;;CAEA;EACC,cAAc;EACd,eAAe;CAChB;;CAEA;EACC,gBAAgB;CACjB;;CAEA;EACC,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;CACvB;;CAEA;EACC,WAAW;CACZ;;CAEA;EACC,gBAAgB;CACjB;;CAEA;EACC,kBAAkB;CACnB;;CAEA;EACC,sBAAsB;EACtB,8BAA8B;CAC/B;;CAEA;EACC,iBAAiB;CAClB;;CAEA;EACC,sBAAsB;EACtB,kBAAkB;EAClB,OAAO;EACP,MAAM;EACN,8BAAsB;UAAtB,sBAAsB;EACtB,YAAY;EACZ,UAAU;EACV,YAAY;EACZ,2CAA2C;CAC5C;;CAEA;EACC,YAAY;CACb;;CAEA;EACC,cAAc;EACd,eAAe;EACf,WAAW;EACX,eAAe;CAChB;;CAEA;EACC,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;CACvB;;CAEA;EACC,WAAW;EACX,eAAe;EACf,eAAe;EACf,mBAAmB;CACpB;;CAEA;EACC,oBAAoB;CACrB;;CAEA;EACC,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;CACvB;;CAEA;EACC,mBAAe;MAAf,eAAe;EACf,4BAAsB;EAAtB,6BAAsB;MAAtB,0BAAsB;UAAtB,sBAAsB;CACvB;;CAEA;EACC,WAAW;EACX,aAAa;CACd;;CAEA;EACC,WAAW;CACZ;;CAEA;;EAEC,kBAAkB;EAClB,MAAM;EACN,YAAY;CACb;;CAEA;;EAEC,WAAW;CACZ;;CAEA;EACC,oBAAoB;EACpB,iBAAiB;CAClB;;AAED;;AAEA;;CAEC;CACA;;CAEA;EACC,WAAW;EACX,WAAW;EACX,kBAAkB;CACnB;;CAEA;EACC,aAAa;CACd;;CAEA;EACC,kBAAkB;CACnB;;CAEA;EACC,cAAc;EACd,WAAW;EACX,SAAS;EACT,mBAAmB;CACpB;;AAED;;AAEA;AACA;;AAEA;;CAEC;EACC,UAAU;CACX;;CAEA;EACC,mBAAmB,EAAE,YAAY;CAClC;;CAEA;EACC,mBAAmB;CACpB;;CAEA;EACC,kBAAkB;CACnB;;CAEA;EACC,iBAAiB;CAClB;;CAEA;EACC,kCAAkC;CACnC;;CAEA;EACC,0BAA0B;CAC3B;;AAED;;AAEA;;CAEC;EACC,WAAW;EACX,YAAY;EACZ,0CAA0C;EAC1C,mBAAmB;CACpB;;CAEA;EACC,kBAAkB;EAClB,gBAAgB;CACjB;;CAEA;EACC,cAAc;CACf;;AAED;;AAEA;;CAEC;EACC,uBAAuB;EACvB,mBAAmB;CACpB;;CAEA;EACC,YAAY;CACb;;AAED;;AAEA;;CAEC;EACC,WAAW;EACX,mBAAmB;CACpB;;CAEA;EACC,WAAW;CACZ;;CAEA;EACC,cAAc;CACf;;CAEA;EACC,oBAAa;EAAb,oBAAa;EAAb,aAAa;EACb,mBAAe;MAAf,eAAe;CAChB;;CAEA;EACC,cAAc;CACf;;CAEA;EACC,WAAW;EACX,mBAAmB;CACpB;;CAEA;EACC,UAAU;EACV,8BAAsB;UAAtB,sBAAsB;CACvB;;CAEA;EACC,aAAa;CACd;;CAEA;EACC,2BAA2B;EAC3B,iBAAiB;EACjB,WAAW;EACX,cAAc;CACf;;AAED","file":"updraftplus-admin-1-25-5.min.css","sourcesContent":["@keyframes udp_blink {\n\n\tfrom {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n\n\tto {\n\t\topacity: 0.4;\n\t\ttransform: scale(0.85);\n\t}\n\n}\n\n@keyframes udp_rotate {\n\n\tfrom {\n\t\ttransform: rotate(0);\n\t}\n\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n\n}\n\n/* Widths and sizing */\n.max-width-600 {\n\tmax-width: 600px;\n}\n\n.max-width-700 {\n\tmax-width: 700px;\n}\n\n.width-900 {\n\tmax-width: 900px;\n}\n\n.width-80 {\n\twidth: 80%;\n}\n\n.updraft--flex {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.updraft--flex > * {\n\tflex: 1;\n\tbox-sizing: border-box;\n}\n\n.updraft--flex > .updraft--one-half {\n\twidth: 50%;\n\tflex: auto;\n}\n\n.updraft--flex > .updraft--two-halves {\n\twidth: 100%;\n\tflex: auto;\n}\n\n.updraft-file-ready-label {\n\tpadding: 5px;\n}\n\n.updraft-color--very-light-grey {\n\tbackground: #F8F8F8;\n}\n\n/* End widths and sizing */\n\n/* Font styling */\n.no-decoration {\n\ttext-decoration: none;\n}\n\n.bold {\n\tfont-weight: bold;\n}\n\n/* End font styling */\n/* Alignment */\n.center-align-td {\n\ttext-align: center;\n}\n\n/* End of Alignment */\n/* Padding */\n.remove-padding {\n\tpadding: 0 !important;\n}\n\n/* End of padding */\n\n.updraft-text-center {\n\ttext-align: center;\n}\n\n.autobackup {\n\tpadding: 6px;\n\tmargin: 8px 0px;\n}\n\nul .disc {\n\tlist-style: disc inside;\n}\n\n.dashicons-log-fix {\n\tdisplay: inherit;\n}\n\n.udpdraft__lifted {\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n}\n\n#updraft-wrap a .dashicons {\n\ttext-decoration: none;\n}\n\n.updraft-field-description,\ntable.form-table td p.updraft-field-description {\n\tfont-size: 90%;\n\tline-height: 1.2;\n\tfont-style: italic;\n\tmargin-bottom: 5px;\n}\n\n/* Input boxes */\nlabel.updraft_checkbox {\n\tdisplay: block;\n\tmargin-bottom: 4px;\n\tmargin-left: 26px;\n}\n\nlabel.updraft_checkbox > input[type=checkbox] {\n\tmargin-left: -25px;\n}\n\ndiv[id*=\"updraft_include_\"] {\n\tmargin-bottom: 9px;\n}\n\n/* Input boxes */\n.settings_page_updraftplus input[type=\"file\"] {\n\tborder: none;\n}\n\n.settings_page_updraftplus .wipe_settings {\n\tpadding-bottom: 10px;\n}\n\n.settings_page_updraftplus input[type=\"text\"] {\n\tfont-size: 14px;\n}\n\n.settings_page_updraftplus select {\n\tborder-radius: 4px;\n\tmax-width: 100%;\n}\n\ninput.updraft_input--wide,\ntextarea.updraft_input--wide {\n\tmax-width: 442px;\n\twidth: 100%;\n}\n\n#updraft-wrap .button-large {\n\tfont-size: 1.3em;\n}\n\n/* End input boxes */\n\n/* Main Buttons */\n.main-dashboard-buttons {\n\tborder-width: 4px;\n\tborder-radius: 12px;\n\tletter-spacing: 0px;\n\tfont-size: 17px;\n\tfont-weight: bold;\n\tpadding-left: 0.7em;\n\tpadding-right: 2em;\n\tpadding: 0.3em 1em;\n\tline-height: 1.7em;\n\tbackground: transparent;\n\tposition: relative;\n\tborder: 2px solid;\n\ttransition: all 0.2s;\n\tvertical-align: baseline;\n\tbox-sizing: border-box;\n\ttext-align: center;\n\tline-height: 1.3em;\n\tmargin-left: .3em;\n\ttext-transform: none;\n\tline-height: 1;\n\ttext-decoration: none;\n}\n\n.button-restore {\n\tborder-color: rgb(98, 158, 192);\n\tcolor: rgb(98, 158, 192);\n}\n\n.button-ud-google {\n\ttext-decoration: none !important;\n\ttransition: background-color .3s, box-shadow .3s;\n\tpadding: 12px 16px 12px 42px !important;\n\tborder: none;\n\tborder-radius: 3px;\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 1px 1px rgba(0, 0, 0, .25);\n\tcolor: #757575;\n\tfont-size: 14px;\n\tfont-weight: 500;\n\tfont-family: \"Roboto\";\n\tbackground-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTcuNiA5LjJsLS4xLTEuOEg5djMuNGg0LjhDMTMuNiAxMiAxMyAxMyAxMiAxMy42djIuMmgzYTguOCA4LjggMCAwIDAgMi42LTYuNnoiIGZpbGw9IiM0Mjg1RjQiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik05IDE4YzIuNCAwIDQuNS0uOCA2LTIuMmwtMy0yLjJhNS40IDUuNCAwIDAgMS04LTIuOUgxVjEzYTkgOSAwIDAgMCA4IDV6IiBmaWxsPSIjMzRBODUzIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNNCAxMC43YTUuNCA1LjQgMCAwIDEgMC0zLjRWNUgxYTkgOSAwIDAgMCAwIDhsMy0yLjN6IiBmaWxsPSIjRkJCQzA1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNOSAzLjZjMS4zIDAgMi41LjQgMy40IDEuM0wxNSAyLjNBOSA5IDAgMCAwIDEgNWwzIDIuNGE1LjQgNS40IDAgMCAxIDUtMy43eiIgZmlsbD0iI0VBNDMzNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZD0iTTAgMGgxOHYxOEgweiIvPjwvZz48L3N2Zz4=);\n\tbackground-color: #FFF;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 12px 11px;\n}\n\n.button-ud-google:hover {\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 2px 4px rgba(0, 0, 0, .25);\n}\n\n.button-ud-google:active {\n\tbackground-color: #EEE;\n}\n\n.button-ud-google:focus {\n\toutline: none;\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 2px 4px rgba(0, 0, 0, .25), 0 0 0 3px #C8DAFC;\n}\n\n.button-ud-google:disabled {\n\tfilter: grayscale(100%);\n\tbackground-color: #EBEBEB;\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 1px 1px rgba(0, 0, 0, .25);\n\tcursor: not-allowed;\n}\n\n.dashboard-main-sizing {\n\tborder-width: 4px;\n\twidth: 190px;\n\tline-height: 1.7em;\n}\n\np.updraftplus-option {\n\tmargin-top: 0;\n\tmargin-bottom: 5px;\n}\n\np.updraftplus-option-inline {\n\tdisplay: inline-block;\n\tpadding-right: 20px;\n}\n\nspan.updraftplus-option-label {\n\tdisplay: block;\n}\n\n/*\n* MIGRATE - CLONE\n*/\n\n#updraft-navtab-migrate-content .postbox {\n\tpadding: 18px;\n}\n\n/* Clone Rows */\n\n.updraftclone-main-row {\n\tdisplay: flex;\n}\n\n.updraftclone-tokens {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tmargin-right: 20px;\n\tmax-width: 300px;\n}\n\n.updraftclone-tokens p {\n\tmargin: 0;\n}\n\n.updraftclone_action_box {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tflex: 1;\n}\n\n.updraftclone_action_box p:first-child {\n\tmargin-top: 0;\n}\n\n.updraftclone_action_box p:last-child {\n\tmargin-bottom: 0;\n}\n\n.updraftclone_action_box #ud_downloadstatus3 {\n\tmargin-top: 10px;\n}\n\nspan.tokens-number {\n\tfont-size: 46px;\n\tdisplay: block;\n}\n\n/* Clone header button */\n.button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\tborder-left: 1px solid #CCC;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box {\n\tmargin-right: 20px;\n\twidth: 100%;\n\tflex-basis: 100%;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\tfloat: none;\n}\n\n@media (min-width: 1024px) {\n\n\t.updraft_migrate_widget_temporary_clone_stage0_container {\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box {\n\t\tflex-basis: 45%;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n\t.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\t\tfloat: right;\n\t}\n\n}\n\n.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n}\n\n.opened .button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: inline-block;\n}\n\n.opened .updraft_migrate_widget_temporary_clone_stage0 {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 8px;\n\tmargin-bottom: 21px;\n}\n\n/* Clone list table */\n.clone-list {\n\tclear: both;\n\twidth: 100%;\n\tmargin-top: 40px;\n}\n\n.clone-list table {\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.clone-list table tr th {\n\tbackground: #E4E4E4;\n}\n\n.clone-list table tr td {\n\tbackground: #F5F5F5;\n\tword-break: break-word;\n}\n\n.clone-list table tr:nth-child(odd) td {\n\tbackground: #FAFAFA;\n}\n\n.clone-list table td,\n.clone-list table th {\n\tpadding: 6px;\n}\n\n/* Clone Progress */\n.updraftplus-clone .updraft_row {\n\tpadding-left: 0;\n\tpadding-right: 0;\n}\n\nbutton#updraft_migrate_createclone + .updraftplus_spinner {\n\tmargin-top: 13px;\n}\n\n/* Clone - Show step 1 info button */\n.button.button-hero.updraftclone_show_step_1 {\n\twhite-space: normal;\n\theight: auto;\n\tline-height: 14px;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n}\n\n.button.button-hero.updraftclone_show_step_1 span.dashicons {\n\theight: auto;\n}\n\n.updraftplus_clone_status {\n\tcolor: red;\n}\n\n/* MIGRATE */\n\na.updraft_migrate_add_site--trigger span.dashicons {\n\ttext-decoration: none;\n}\n\n.button-restore:hover, .button-migrate:hover, .button-backup:hover,\n.button-view-log:hover, .button-mass-selectors:hover,\n.button-delete:hover, .button-entity-backup:hover, .udp-button-primary:hover {\n\tborder-color: #DF6926;\n\tcolor: #DF6926;\n}\n\n.button-migrate {\n\tcolor: rgb(238, 169, 32);\n\tborder-color: rgb(238, 169, 32);\n}\n\n#updraft_migrate_tab_main {\n\tpadding: 8px;\n}\n\n.updraft_migrate_widget_module_content {\n\tbackground: #FFF;\n\tborder-radius: 0;\n\tposition: relative;\n}\n\nbody.js #updraft_migrate .updraft_migrate_widget_module_content {\n\tdisplay: none;\n}\n\n.updraft_migrate_widget_module_content > h3,\ndiv[class*=\"updraft_migrate_widget_temporary_clone_stage\"] > h3 {\n\tmargin-top: 0;\n}\n\n/* Migrate / Clone headers */\n.updraft_migrate_widget_module_content header,\n#updraft_migrate_tab_alt header {\n\tposition: relative;\n\tdisplay: flex;\n\talign-content: center;\n\tjustify-items: center;\n\tmargin-top: -18px;\n\tmargin-left: -18px;\n\tmargin-right: -18px;\n\tmargin-bottom: 15px;\n\tborder-bottom: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content header h3,\n.updraft_migrate_widget_module_content header button.button.close,\n#updraft_migrate_tab_alt header h3,\n#updraft_migrate_tab_alt header button.button.close {\n\tpadding: 10px;\n\tline-height: 20px;\n\theight: auto;\n\tmargin: 0;\n}\n\n.updraft_migrate_widget_module_content button.button.close,\n#updraft_migrate_tab_alt button.button.close {\n\ttext-decoration: none;\n\tpadding-left: 5px;\n\tborder-right: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content button.button.close .dashicons,\n#updraft_migrate_tab_alt button.button.close .dashicons {\n\tmargin-top: 1px;\n}\n\n.updraft_migrate_widget_module_content header h3,\n#updraft_migrate_tab_alt header h3 {\n\tmargin: 0;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero {\n\tmax-width: 235px;\n\tword-wrap: normal;\n\twhite-space: normal;\n\tline-height: 1;\n\theight: auto;\n\tpadding-top: 13px;\n\tpadding-bottom: 13px;\n\ttext-align: left;\n\tposition: relative;\n\tmargin-right: 10px;\n\tmargin-bottom: 10px;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero .dashicons {\n\tposition: absolute;\n\tleft: 10px;\n\ttop: calc(50% - 8px);\n}\n\n#updraft_migrate_tab_alt #updraft_migrate_send_existing_button {\n\tmargin-right: 6px;\n}\n\n/*\njquery UI Accordion module\n*/\n#updraft_migrate .ui-widget-content a {\n\tcolor: #1C94C4;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header {\n\tbackground: #F6F6F6;\n\tmargin: 0;\n\tborder-radius: 0;\n\tpadding-left: 0.5em;\n\tpadding-right: 0.7em;\n}\n\n#updraft-wrap .ui-widget {\n\tfont-family: inherit;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w {\n\tbackground-position: -96px 0px;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s {\n\tbackground-position: -64px 0;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tleft: auto;\n\tright: 5px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px rgba(91, 157, 217, 0.22), 0 0 2px 1px rgba(30, 140, 190, 0.3);\n\tbackground: #FFF;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons {\n\tcolor: #0572AA;\n\topacity: 1;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active {\n\tbackground: #F6F6F6;\n\tborder-bottom: 2px solid #0572AA;\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus {\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3), 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child) {\n\tborder-top: none;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .dashicons {\n\topacity: 0.4;\n\tmargin-right: 10px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n\tz-index: 1;\n}\n\nbutton.ui-dialog-titlebar-close:before {\n\tcontent: none!important;\n}\n\n.updraft_next_scheduled_backups_wrapper {\n\tdisplay: flex;\n\tbackground: #FFF;\n\tjustify-items: center;\n\tflex-wrap: wrap;\n}\n\n.updraft_next_scheduled_backups_wrapper > div {\n\twidth: 50%;\n\tbackground: #FFF;\n\theight: auto;\n\t/* padding: 18px 33px; */\n\tpadding: 33px;\n\tbox-sizing: border-box;\n}\n\n.updraft_backup_btn_wrapper {\n\ttext-align: center;\n\tborder-left: 1px solid #F1F1F1;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.incremental-backups-only {\n\tdisplay: none;\n}\n\n.incremental-free-only {\n\tdisplay: none;\n}\n\n.incremental-free-only p {\n\tpadding: 5px;\n\tbackground: rgba(255, 0, 0, 0.06);\n\tborder: 1px solid #BFBFBF;\n}\n\n#updraft-delete-waitwarning span.spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tmargin: 0;\n\tmargin-right: 10px;\n}\n\nbutton#updraft-backupnow-button .spinner,\nbutton#updraft-backupnow-button .dashicons-yes {\n\tdisplay: none;\n}\n\nbutton#updraft-backupnow-button.loading .spinner {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tmargin-top: 13px;\n\tmargin-right: 0;\n}\n\nbutton#updraft-backupnow-button.loading {\n\tbackground-color: #EFEFEF;\n\tborder-color: #CCC;\n\ttext-shadow: 0 -1px 1px #BBC3C7, 1px 0 1px #BBC3C7, 0 1px 1px #BBC3C7, -1px 0 1px #BBC3C7;\n\tbox-shadow: none;\n}\n\nbutton#updraft-backupnow-button.finished .dashicons-yes {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tfont-size: 42px;\n\tmargin-right: 0;\n\tmargin-top: 2px;\n}\n\n.updraft_next_scheduled_entity {\n\twidth: 50%;\n\tdisplay: inline-block;\n\tfloat: left;\n\t/*\n\tpadding: 20px 20px 10px 20px;\n\t*/\n}\n\n.updraft_next_scheduled_entity .dashicons {\n\tcolor: #CCC;\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_entity strong {\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_heading {\n\tmargin-bottom: 10px;\n}\n\n.updraft_next_scheduled_date_time {\n\tcolor: #46A84B;\n}\n\n.updraft_time_now_wrapper {\n\tmargin-top: 68px;\n\twidth: 100%;\n}\n\n.updraft_time_now_label, .updraft_time_now {\n\tdisplay: inline-block;\n\tpadding: 7px;\n}\n\n.updraft_time_now_label {\n\tbackground: #B7B7B7;\n\tborder-top-left-radius: 4px;\n\tborder-bottom-left-radius: 4px;\n\tcolor: #FFF;\n\tmargin-right: 0;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);\n}\n\n.updraft_time_now {\n\tbackground: #F1F1F1;\n\tborder-top-right-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n\tmargin-left: -3px;\n}\n\n#updraft_lastlogmessagerow {\n\tmargin: 6px 0;\n}\n\n#updraft_lastlogmessagerow {\n\tclear: both;\n\tpadding: 0.25px 0;\n}\n\n#updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: right;\n\tmargin-top: -2.5em;\n\tmargin-right: 2px;\n}\n\n#updraft_lastlogmessagerow > div {\n\tclear: both;\n\tbackground: #FFF;\n\tpadding: 18px;\n}\n\n#updraft_activejobs_table {\n\toverflow: hidden;\n\twidth: 100%;\n\tbackground: #FAFAFA;\n\tpadding: 0;\n}\n\n.updraft_requeststart {\n\tpadding: 15px 33px;\n\ttext-align: center;\n}\n\n.updraft_requeststart .spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tvertical-align: middle;\n\tmargin-top: -2px;\n}\n\na.updraft_jobinfo_delete.disabled {\n\topacity: 0.4;\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n.updraft_row {\n\tclear: both;\n\ttransition: 0.3s all;\n\tpadding: 15px 33px;\n}\n\n.updraft_row.deleting {\n\topacity: 0.4;\n}\n\n.updraft_progress_container {\n\t/* width: 83%; */\n}\n\n.updraft_existing_backups_count {\n\tpadding: 2px 8px;\n\tfont-size: 12px;\n\tbackground: #CA4A1E;\n\tcolor: #FFF;\n\tfont-weight: bold;\n\tborder-radius: 10px;\n}\n\n.form-table .existing-backups-table input[type=\"checkbox\"] {\n\tborder-radius: 0;\n}\n\n.form-table .existing-backups-table .check-column {\n\twidth: 40px;\n\tpadding: 0;\n\tpadding-top: 8px;\n}\n\n.existing-backups-buttons {\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 3px;\n}\n\n.existing-backups-restore-buttons {\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 3px;\n}\n\n.button-delete {\n\tcolor: #E23900;\n\tborder-color: #E23900;\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-right: 10px;\n}\n\n.button-view-log, .button-mass-selectors {\n\tcolor: darkgrey;\n\tborder-color: darkgrey;\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-top: -1px;\n}\n\n.button-view-log {\n\twidth: 120px;\n}\n\n.button-existing-restore {\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\twidth: 110px;\n}\n\n.main-restore {\n\tmargin-right: 3%;\n\tmargin-left: 3%;\n}\n\n.button-entity-backup {\n\tcolor: #555;\n\tborder-color: #555;\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-right: 5px;\n}\n\n.button-select-all {\n\twidth: 122px;\n}\n\n.button-deselect {\n\twidth: 92px;\n}\n\n#ud_massactions > .display-flex > .mass-selectors-margins, #updraft-delete-waitwarning > .display-flex > .mass-selectors-margins {\n\tmargin-right: -4px;\n}\n\n.udp-button-primary {\n\tborder-width: 4px;\n\tcolor: #0073AA;\n\tborder-color: #0073AA;\n\tfont-size: 14px;\n\theight: 40px;\n}\n\n#ud_massactions .button-delete {\n\tmargin-right: 0px;\n}\n\n.stored_local {\n\tborder-radius: 5px;\n\tbackground-color: #007FE7;\n\tpadding: 3px 5px 5px 5px;\n\tcolor: #FFF;\n\tfont-size: 75%;\n}\n\nspan#updraft_lastlogcontainer {\n\tword-break: break-all;\n}\n\n.stored_icon {\n\theight: 1.3em;\n\tposition: relative;\n\ttop: 0.2em;\n}\n\n.backup_date_label > * {\n\tvertical-align: middle;\n}\n\n.backup_date_label .dashicons {\n\tfont-size: 18px;\n}\n\n.backup_date_label .clear-right {\n\tclear: right;\n}\n\n.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\tfont-weight: bold;\n}\n\n/* End Main Buttons */\n\n/* End of common elements */\n\n.udp-logo-70 {\n\twidth: 70px;\n\theight: 70px;\n\tfloat: left;\n\tpadding-right: 25px;\n}\n\nh3 .thank-you {\n\tmargin-top: 0px;\n}\n\n.ws_advert {\n\tmax-width: 800px;\n\tfont-size: 140%;\n\tline-height: 140%;\n\tpadding: 14px;\n\tclear: left;\n}\n\n.dismiss-dash-notice {\n\tfloat: right;\n\tposition: relative;\n\ttop: -20px;\n}\n\n.updraft_exclude_container,\n.updraft_include_container {\n\tmargin-left: 24px;\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tpadding: 15px;\n\tborder: 1px solid #DDD;\n}\n\nlabel.updraft-exclude-label {\n\tfont-weight: 500;\n\tmargin-bottom: 5px;\n\tdisplay: inline-block;\n}\n\n.updraft_add_exclude_item,\n#updraft_include_more_paths_another {\n\tdisplay: inline-block;\n\tmargin-top: 10px;\n}\n\ninput.updraft_exclude_entity_field,\n.form-table td input.updraft_exclude_entity_field,\n.updraftplus-morefiles-row input[type=text] {\n\twidth: calc(100% - 70px);\n\tmax-width: 400px;\n}\n\n.updraft-fs-italic {\n\tfont-style: italic;\n}\n\n@media screen and (max-width: 782px) {\n\n\t.form-table td input.updraft_exclude_entity_field,\n\t.form-table td .updraftplus-morefiles-row input[type=text] {\n\t\tdisplay: inline-block;\n\t}\n\n}\n\n.updraft_exclude_entity_delete.dashicons, .updraft_exclude_entity_edit.dashicons, .updraft_exclude_entity_update.dashicons, .updraftplus-morefiles-row a.dashicons {\n\tmargin-top: 2px;\n\tfont-size: 20px;\n\tbox-shadow: none;\n\tline-height: 1;\n\tpadding: 3px;\n\tmargin-right: 4px;\n}\n\n.updraft_exclude_entity_delete,\n.updraft_exclude_entity_delete:hover,\n.updraftplus-morefiles-row-delete {\n\tcolor: #FF6347;\n}\n\n.updraft_exclude_entity_update.dashicons, .updraft_exclude_entity_update.dashicons:hover {\n\tcolor: #008000;\n\tfont-weight: bold;\n\tfont-size: 22px;\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_edit {\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete {\n\tdisplay: none;\n}\n\n.updraft-exclude-panel-heading {\n\tmargin-bottom: 8px;\n}\n\n.updraft-exclude-panel-heading h3 {\n\tmargin: 0.5em 0 0.5em 0;\n}\n\n.updraft-exclude-submit.button-primary {\n\tmargin-top: 5px;\n}\n\n.updraft_exclude_actions_list {\n\tfont-weight: bold;\n}\n\n.updraft-exclude-link {\n\tcursor: pointer;\n}\n\n#updraft_include_more_options {\n\tpadding-left: 25px;\n}\n\n#updraft_report_cell .updraft_reportbox,\n.updraft_small_box {\n\tpadding: 12px;\n\tmargin: 8px 0;\n\tborder: 1px solid #CCC;\n\tposition: relative;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete,\n.updraft_box_delete_button,\n.updraft_small_box .updraft_box_delete_button {\n\tpadding: 4px;\n\tpadding-top: 6px;\n\tborder: none;\n\tbackground: transparent;\n\tposition: absolute;\n\ttop: 4px;\n\tright: 4px;\n\tcursor: pointer;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete:hover {\n\tcolor: #DE3C3C;\n}\n\na.updraft_report_another .dashicons {\n\ttext-decoration: none;\n\tmargin-top: 2px;\n}\n\n.updraft_report_dbbackup.updraft_report_disabled {\n\tcolor: #CCC;\n}\n\n#updraft-navtab-settings-content .updraft-test-button {\n\tfont-size: 18px !important;\n}\n\n#updraft_report_cell .updraft_report_email {\n\tdisplay: block;\n\twidth: calc(100% - 50px);\n\tmargin-bottom: 9px;\n}\n\n#updraft_report_cell .updraft_report_another_p {\n\tclear: left;\n}\n\n/* Taken straight from admin.php */\n\n#updraft-navtab-settings-content table.form-table p {\n\tmax-width: 700px;\n}\n\n#updraft-navtab-settings-content table.form-table .notice p {\n\tmax-width: none;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected,\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td {\n\tbackground-color: #EFEFEF;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td {\n\tbackground-color: #E8E8E8;\n}\n\n.updraft_settings_sectionheading {\n\tdisplay: none;\n}\n\n.updraft-backupentitybutton-disabled {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #0074A2;\n\ttext-decoration: underline;\n\tcursor: pointer;\n\tclear: none;\n\tfloat: left;\n}\n\n.updraft-backupentitybutton {\n\tmargin-left: 8px;\n}\n\n.updraft-bigbutton {\n\tpadding: 2px 0px !important;\n\tmargin-right: 14px !important;\n\tfont-size: 22px !important;\n\tmin-height: 32px;\n\tmin-width: 180px;\n}\n\ntr[class*=\"_updraft_remote_storage_border\"] {\n\tborder-top: 1px solid #CCC;\n}\n\n.updraft_multi_storage_options {\n\tfloat: right;\n\tclear: right;\n\tmargin-bottom: 5px !important;\n}\n\n.updraft_toggle_instance_label {\n\tvertical-align: top !important;\n}\n\n.updraft_debugrow th {\n\tfloat: right;\n\ttext-align: right;\n\tfont-weight: bold;\n\tpadding-right: 8px;\n\tmin-width: 140px;\n}\n\n.updraft_debugrow td {\n\tmin-width: 300px;\n\tvertical-align: bottom;\n}\n\n.updraft_webdav_host_error, .onedrive_folder_error {\n\tcolor: red;\n}\n\nlabel[for=updraft_servicecheckbox_updraftvault] {\n\tposition: relative;\n}\n\n#updraft-wrap .udp-info {\n\tposition: absolute;\n\tright: 10px;\n\ttop: calc(50% - 10px);\n}\n\n#updraft-wrap span.info-trigger {\n\tdisplay: inline-block;\n\twidth: 20px;\n\theight: 20px;\n\tbackground: #FFF;\n\tcolor: #72777C;\n\tborder-radius: 30px;\n\ttext-align: center;\n\tline-height: 20px;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n#updraft-wrap .info-content-wrapper {\n\tdisplay: none;\n\tposition: absolute;\n\tbottom: 20px;\n\ttransform: translatex(calc(-50% + 10px));\n\twidth: 330px;\n\tpadding-bottom: 10px;\n}\n\n#updraft-wrap .info-content-wrapper::before {\n\tcontent: '';\n\tposition: absolute;\n\tbottom: -10px;\n\tborder: 10px solid transparent;\n\tborder-top-color: #FFF;\n\tleft: calc(50% - 10px);\n}\n\n#updraft-wrap .info-content {\n\tpadding: 20px;\n\tbackground: #FFF;\n\tborder-radius: 4px;\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);\n\tcolor: #72777C;\n}\n\n#updraft-wrap .info-content h3 {\n\tmargin-top: 0;\n}\n\n#updraft-wrap .info-content p {\n\tmargin-top: 10px;\n}\n\n#updraft-wrap .udp-info:hover .info-content-wrapper {\n\tdisplay: block;\n}\n\ndiv.conditional_remote_backup select.logic_type {\n\tvertical-align: inherit !important;\n}\n\ndiv.conditional_remote_backup label.updraft_toggle_instance_label.radio_group {\n\tdisplay: block;\n\tmargin-top: 7px;\n}\n\ndiv.conditional_remote_backup div.logic ul.rules input.rule_value {\n\tvertical-align: middle;\n}\n\ndiv.conditional_remote_backup p {\n\tmargin-bottom: 10px;\n}\n\ndiv.conditional_remote_backup div.logic ul.rules span svg {\n\twidth: 20px;\n\tvertical-align: middle;\n\tcursor: pointer;\n}\n\ndiv.conditional_remote_backup div.logic ul.rules span svg {\n\tmargin-left: 3px;\n}\n\ndiv.conditional_remote_backup div.logic select.logic_type {\n\tvertical-align: unset;\n}\n\n/* jstree styles */\n\n/* these styles hide the dots from the parent but keep the arrows */\n.updraft_jstree .jstree-container-ul > .jstree-node,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-node {\n\tbackground: transparent;\n}\n\n.updraft_jstree .jstree-container-ul > .jstree-open > .jstree-ocl,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-open > .jstree-ocl {\n\tbackground-position: -36px -4px;\n}\n\n.updraft_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-closed> .jstree-ocl {\n\tbackground-position: -4px -4px;\n}\n\n.updraft_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-leaf> .jstree-ocl {\n\tbackground: transparent;\n}\n\n/* zip browser jstree styles */\n#updraft_zip_files_container {\n\tposition: relative;\n\theight: 450px;\n\toverflow: none;\n}\n\n.updraft_jstree_info_container {\n\tposition: relative;\n\theight: auto;\n\twidth: 100%;\n\tborder: 1px dotted;\n\tmargin-bottom: 5px;\n}\n\n.updraft_jstree_info_container p {\n\tmargin: 1px;\n\tpadding-left: 10px;\n\tfont-size: 14px;\n}\n\n#updraft_zip_download_item {\n\tdisplay: none;\n\tcolor: #0073AA;\n\tpadding-left: 10px;\n}\n\n#updraft_zip_download_notice {\n\tpadding-left: 10px;\n}\n\n#updraft_exclude_files_folders_jstree, #updraft_exclude_files_folders_wildcards_jstree {\n\tmax-height: 200px;\n\toverflow-y: scroll;\n}\n\n.updraft_jstree {\n\tposition: relative;\n\tborder: 1px dotted;\n\theight: 80%;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n/* More files jstree styles */\ndiv[id^=\"updraft_more_files_container_\"], div.updraft_googledrive_container {\n\tposition: relative;\n\tdisplay: none;\n\twidth: 100%;\n\tborder: 1px solid #CCC;\n\tbackground: #FAFAFA;\n\tmargin-bottom: 5px;\n\tmargin-top: 4px;\n\tbox-shadow: 0 5px 8px rgba(0, 0, 0, 0.1);\n}\n\ndiv.updraft_googledrive_container ul.jstree-container-ul {\n\toverflow-y: scroll;\n\tmax-height: 200px;\n}\n\ndiv[id^=\"updraft_more_files_container_\"]::before, div.updraft_googledrive_container::before {\n\tcontent: ' ';\n\twidth: 11px;\n\theight: 11px;\n\tdisplay: block;\n\tbackground: #FAFAFA;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 20px;\n\tborder-top: 1px solid #CCC;\n\tborder-left: 1px solid #CCC;\n\ttransform: translatey(-7px) rotate(45deg);\n}\n\ninput.updraft_more_path_editing {\n\tborder-color: #0285BA;\n}\n\ninput.updraft_more_path_editing ~ a.dashicons {\n\tdisplay: none;\n}\n\ndiv[id^=\"updraft_jstree_buttons_\"] {\n\tpadding: 10px;\n\tbackground: #E6E6E6;\n}\n\ndiv[id^=\"updraft_jstree_container_\"] {\n\theight: 300px;\n\twidth: 100%;\n\toverflow: auto;\n}\n\ndiv[id^=\"updraft_more_files_container_\"] button {\n\tline-height: 20px;\n}\n\nbutton[id^=\"updraft_parent_directory_\"] {\n\tmargin: 10px 10px 4px 10px;\n\tpadding-left: 3px;\n}\n\nbutton[id^=\"updraft_jstree_confirm_\"], button[id^=\"updraft_jstree_cancel_\"] {\n\tdisplay: none;\n}\n\ninput[id^=\"updraft_include_more_path_restore_\"] {\n\ttext-align: right;\n}\n\n.updraftplus-morefiles-row-delete,\n.updraftplus-morefiles-row-edit {\n\tcursor: pointer;\n}\n\n#updraft_include_more_paths_error {\n\tcolor: #DE3C3C;\n}\n\np[id^=\"updraftplus_manual_authentication_error_\"] {\n\tcolor: #DE3C3C;\n}\n\n#updraft-wrap .form-table th {\n\twidth: 230px;\n}\n\n#updraft-wrap .form-table .existing-backups-table th {\n\twidth: auto;\n}\n\n.updraft-viewlogdiv form {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-viewlogdiv {\n\tdisplay: inline-block;\n\tmargin-left: 4px;\n}\n\n.updraft-viewlogdiv input, .updraft-viewlogdiv a {\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: #000;\n\tmargin: 0px;\n\tpadding: 3px 4px;\n\tfont-size: 16px;\n\tline-height: 26px;\n}\n\n.updraft-viewlogdiv input:hover, .updraft-viewlogdiv a:hover {\n\tcolor: #FFF;\n\tcursor: pointer;\n}\n\n.button.button-remove {\n\tcolor: white;\n\tbackground-color: #DE3C3C;\n\tborder-color: #C00000;\n\tbox-shadow: 0 1px 0 #C10100;\n}\n\n.button.button-remove:hover,\n.button.button-remove:focus {\n\tborder-color: #C00;\n\tcolor: #FFF;\n\tbackground: #C00;\n}\n\n/* button-remove colors for midnight admin theme */\nbody.admin-color-midnight .button.button-remove {\n\tcolor: #DE3C3C;\n\tbackground-color: #F7F7F7;\n\tborder-color: #CCC;\n\tbox-shadow: 0 1px 0 #CCC;\n}\n\nbody.admin-color-midnight .button.button-remove:hover, body.admin-color-midnight .button.button-remove:focus {\n\tborder-color: #BA281F;\n}\n\nbody.admin-color-midnight .button.button-remove:focus {\n\tbox-shadow: inherit;\n\tbox-shadow: 0 0 3px rgba(0, 115, 170, 0.8);\n}\n\n.drag-drop #drag-drop-area2 {\n\tborder: 4px dashed #DDD;\n\theight: 200px;\n}\n\n#drag-drop-area2 .drag-drop-inside {\n\tmargin: 36px auto 0;\n\twidth: 350px;\n}\n\n#filelist, #filelist2 {\n\tmargin-top: 30px;\n\twidth: 100%;\n}\n\n#filelist .file, #filelist2 .file, .ud_downloadstatus .file, #ud_downloadstatus2 .file, #ud_downloadstatus3 .file {\n\tpadding: 1px;\n\tbackground: #ECECEC;\n\tborder: solid 1px #CCC;\n\tmargin: 4px 0;\n}\n\n.updraft_premium section {\n\tmargin-bottom: 20px;\n}\n\n/*\n\tCall to action Premium\n*/\n.updraft_premium_cta {\n\tbackground: #FFF;\n\tmargin-top: 30px;\n\tpadding: 0;\n\tborder-left: 4px solid #DB6A03;\n}\n\n.updraft_premium_cta a {\n\tfont-weight: normal;\n}\n\n.updraft_premium_cta__action {\n\tposition: relative;\n\ttext-align: center;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero {\n\tfont-size: 1.3em;\n\tletter-spacing: 0.03rem;\n\ttext-transform: uppercase;\n\tmargin-bottom: 7px;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero + small {\n\tdisplay: block;\n\tmax-width: 100%;\n\ttext-align: center;\n\tcolor: #AFAFAF;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero + small .dashicons {\n\twidth: 12px;\n\theight: 12px;\n}\n\n.updraft_premium_cta__top {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 18px 30px;\n}\n\n.updraft_premium_cta__bottom {\n\tbackground: #F9F9F9;\n\tpadding: 5px 30px;\n}\n\n.updraft_premium_cta__summary {\n\tmargin-right: 60px;\n}\n\n.updraft_premium_cta h2 {\n\tfont-size: 28px;\n\tfont-weight: 200;\n\tline-height: 1;\n\tmargin: 0;\n\tmargin-bottom: 5px;\n\tletter-spacing: 0.05rem;\n\tcolor: #DB6A03;\n}\n\n.updraft_premium_cta ul li::after {\n\tcolor: #CCC;\n}\n\n@media only screen and (max-width: 768px) {\n\n\t.updraft_premium_cta__top {\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t\talign-items: center;\n\t}\n\n\t.updraft_premium_cta__summary {\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 30px;\n\t}\n\n}\n\n/*\n\tBox\n*/\n.udp-box {\n\tbackground: #FFF;\n\tpadding: 20px;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n\ttext-align: center;\n}\n\n.udp-box h3 {\n\tmargin: 0;\n}\n\n.udp-box__heading {\n\talign-self: center;\n\tbackground: none;\n\tbox-shadow: none;\n}\n\n/*\n\tOther Plugins\n*/\n.updraft-more-plugins {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tjustify-content: space-between;\n\tflex-wrap: wrap;\n}\n\n.updraft-more-plugins img {\n\tmax-width: 80%;\n\tmax-height: 30%;\n\tdisplay: inline-block;\n}\n\n.updraft-more-plugins .udp-box {\n\tbox-sizing: border-box;\n\twidth: 24%;\n}\n\n.updraft-more-plugins .udp-box p:last-child {\n\tmargin-bottom: 0;\n\tpadding-bottom: 0;\n}\n\n/*\n\tlinks list\n*/\n.updraft_premium_description_list {\n\ttext-align: left;\n\tmargin: 0;\n\tfont-size: 12px;\n}\n\nul.updraft_premium_description_list, ul#updraft_restore_warnings {\n\tlist-style: disc inside;\n}\n\nul.updraft_premium_description_list li {\n\tdisplay: inline;\n}\n\nul.updraft_premium_description_list li::after {\n\tcontent: \" | \";\n}\n\nul.updraft_premium_description_list li:last-child::after {\n\tcontent: \"\";\n}\n\n.updraft_feature_cell {\n\tbackground-color: #F7D9C9 !important;\n\tpadding: 5px 10px;\n}\n\n.updraftplus_com_login_status, .updraftplus_com_key_status {\n\tdisplay: none;\n\tbackground: #FFF;\n\tborder-left: 4px solid #FFF;\n\tborder-left-color: #DC3232;\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n\tmargin: 5px 0 15px 0;\n\tpadding: 5px 12px;\n}\n\n.updraftplus_com_login_status.success {\n\tborder-left-color: green;\n}\n\n#updraft-wrap strong.success {\n\tcolor: green;\n}\n\n.updraft_feat_table {\n\tborder: none;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n}\n\n.updraft_feat_th, .updraft_feat_table td {\n\tborder: 1px solid #F1F1F1;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n\tpadding: 15px;\n}\n\n.updraft_feat_table td {\n\tborder-bottom-width: 4px;\n}\n\n.updraft_feat_table td:first-child {\n\tborder-left: none;\n}\n\n.updraft_feat_table td:last-child {\n\tborder-right: none;\n}\n\n.updraft_feat_table tr:last-child td {\n\tborder-bottom: none;\n}\n\n.updraft_feat_table td:nth-child(2),\n.updraft_feat_table td:nth-child(3) {\n\tbackground-color: rgba(241, 241, 241, 0.38);\n\twidth: 190px;\n}\n\n.updraft_feat_table__header td img {\n\tdisplay: block;\n\tmargin: 0 auto;\n}\n\n.updraft_feat_table__header td {\n\ttext-align: center;\n}\n\n.updraft_feat_table .installed {\n\tfont-size: 14px;\n}\n\n.updraft_feat_table p {\n\tpadding: 0px 10px;\n\tmargin: 5px 0px;\n\tfont-size: 13px;\n}\n\n.updraft_feat_table h4 {\n\tmargin: 5px 0px;\n}\n\n.updraft_feat_table .dashicons {\n\twidth: 25px;\n\theight: 25px;\n\tfont-size: 25px;\n\tline-height: 1;\n}\n\n.updraft_feat_table .dashicons-yes, .updraft_feat_table .updraft-yes {\n\tcolor: green;\n}\n\n.updraft_feat_table .dashicons-no-alt, .updraft_feat_table .updraft-no {\n\tcolor: red;\n}\n\n.updraft_tick_cell {\n\ttext-align: center;\n}\n\n.updraft_tick_cell img {\n\tmargin: 4px 0;\n\theight: 24px;\n}\n\n.ud_downloadstatus__close {\n\tborder: none;\n\tbackground: transparent;\n\twidth: auto;\n\tfont-size: 20px;\n\tpadding: 0;\n\tcursor: pointer;\n}\n\n#filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress, #ud_downloadstatus3 .dlfileprogress {\n\twidth: 0%;\n\tbackground: #0572AA;\n\theight: 8px;\n\ttransition: width .3s;\n}\n\n.ud_downloadstatus .raw, #ud_downloadstatus2 .raw, #ud_downloadstatus3 .raw {\n\tmargin-top: 8px;\n\tclear: left;\n}\n\n.ud_downloadstatus .file, #ud_downloadstatus2 .file, #ud_downloadstatus3 .file {\n\tmargin-top: 8px;\n}\n\ndiv[class^=\"updraftplus_downloader_container_\"] {\n\tpadding: 10px;\n}\n\ntr.updraftplusmethod h3 {\n\tmargin: 0px;\n}\n\ntr.updraftplusmethod img {\n\tmax-width: 100%;\n}\n\n#updraft_retain_db_rules .updraft_retain_rules_delete, #updraft_retain_files_rules .updraft_retain_rules_delete {\n\tcursor: pointer;\n\tcolor: red;\n\tfont-size: 120%;\n\tfont-weight: bold;\n\tborder: 0px;\n\tborder-radius: 3px;\n\tpadding: 2px;\n\tmargin: 0 6px;\n\ttext-decoration: none;\n\tdisplay: inline-block;\n}\n\n#updraft_retain_db_rules .updraft_retain_rules_delete:hover, #updraft_retain_files_rules .updraft_retain_rules_delete:hover {\n\tcursor: pointer;\n\tcolor: white;\n\tbackground: red;\n}\n\n#updraft_backup_started {\n\tmax-width: 800px;\n\tfont-size: 140%;\n\tline-height: 140%;\n\tpadding: 14px;\n\tclear: left;\n}\n\n/* backup finished */\n.blockUI.blockOverlay.ui-widget-overlay {\n\tbackground: #000;\n}\n\n.updraft_success_popup {\n\ttext-align: center;\n\tpadding-bottom: 30px;\n}\n\n.updraft_success_popup > .dashicons {\n\tfont-size: 100px;\n\twidth: 100px;\n\theight: 100px;\n\tline-height: 100px;\n\tpadding: 0px;\n\tborder-radius: 50%;\n\tmargin-top: 30px;\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tbackground: #E2E6E5;\n}\n\n.updraft_success_popup > .dashicons.dashicons-yes {\n\ttext-indent: -5px;\n}\n\n.updraft_success_popup.success > .dashicons {\n\tcolor: green;\n}\n\n.updraft_success_popup.warning > .dashicons {\n\tcolor: #888;\n}\n\n.updraft_success_popup--message {\n\tpadding: 20px;\n}\n\n.button.updraft-close-overlay .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n\tmargin-left: -5px;\n\tpadding: 0;\n\ttransform: translatey(3px);\n}\n\n.updraft_saving_popup img {\n\tanimation-name: udp_blink;\n\tanimation-duration: 610ms;\n\tanimation-iteration-count: infinite;\n\tanimation-direction: alternate;\n\tanimation-timing-function: ease-out;\n}\n\n.udp-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t.udp-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding-right: 5px;\n\t}\n\n}\n\n/* End stuff already in admin.php */\n#plupload-upload-ui2 {\n\twidth: 80%;\n}\n\n.backup-restored {\n\tpadding: 8px;\n}\n\n.updated.backup-restored {\n\tpadding-top: 15px;\n\tpadding-bottom: 15px;\n}\n\n.backup-restored span {\n\tfont-size: 120%;\n}\n\n.memory-limit {\n\tpadding: 8px;\n}\n\n.updraft_list_errors {\n\tpadding: 8px;\n}\n\n.updraftplus-nav-tab.nav-tab-active,\n.updraftplus-nav-tab.nav-tab-active:hover,\n.updraftplus-nav-tab.nav-tab-active:focus,\n.updraftplus-nav-tab.nav-tab-active:focus:active {\n\tborder-bottom: 1px solid #F0F0F1;\n\tbackground: #F0F0F1!important;\n\tcolor: #000;\n}\n\n.updraftplus-nav-tab.nav-tab-active {\n\tmargin-bottom: -1px;\n\tcolor: #3C434A;\n}\n\n.updraftplus-nav-tab.nav-tab-active, .updraftplus-nav-tab:focus:active {\n\tbox-shadow: none;\n}\n\n.updraftplus-nav-tab {\n\tfloat: left;\n\tborder: 1px solid #C3C4C7;\n\tborder-bottom-color: rgb(195, 196, 199);\n\tborder-bottom-style: solid;\n\tborder-bottom-width: 1px;\n\tborder-bottom: none;\n\tmargin-left: 0.5em;\n\tpadding: 5px 10px;\n\tfont-size: 14px;\n\tline-height: 1.71428571;\n\tfont-weight: 600;\n\tbackground: #DCDCDE;\n\tcolor: #50575E;\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n\n.nav-tab-wrapper {\n\tmargin: 14px 0px;\n}\n\n#updraft-poplog-content {\n\twhite-space: pre-wrap;\n}\n\n.next-backup {\n\tborder: 0px;\n\tpadding: 0px;\n\tmargin: 0 10px 0 0;\n}\n\n.not-scheduled {\n\tvertical-align: top !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n}\n\n.next-backup .updraft_scheduled {\n\t/* width: 124px;*/\n\tmargin: 0px;\n\tpadding: 2px 4px 2px 0px;\n}\n\n#next-backup-table-inner td {\n\tvertical-align: top;\n}\n\n.updraft_all-files {\n\tcolor: blue;\n}\n\n.multisite-advert-width {\n\twidth: 800px;\n}\n\n.updraft_settings_sectionheading {\n\tmargin-top: 6px;\n}\n\n.premium-upgrade-prompt {\n\t/* font-size: 115%; */\n}\n\nsection.premium-upgrade-purchase-success {\n\tpadding: 2em;\n\tbackground: #FAFAFA;\n\ttext-align: center;\n\tbox-shadow: 0px 14px 40px rgba(0, 0, 0, 0.1);\n}\n\nsection.premium-upgrade-purchase-success h3 {\n\tfont-size: 2em;\n\tcolor: green;\n}\n\nsection.premium-upgrade-purchase-success h3 .dashicons {\n\tdisplay: block;\n\tmargin: 0 auto;\n\tfont-size: 60px;\n\twidth: 60px;\n\theight: 60px;\n\tborder-radius: 50%;\n\tbackground: green;\n\tcolor: #FFF;\n\tmargin-bottom: 20px;\n}\n\nsection.premium-upgrade-purchase-success h3 .dashicons::before {\n\tdisplay: inline-block;\n\tmargin-left: -4px;\n\tmargin-top: 2px;\n}\n\nsection.premium-upgrade-purchase-success p {\n\tfont-size: 120%;\n}\n\n.show_admin_restore_in_progress_notice {\n\tpadding: 8px;\n}\n\n.show_admin_restore_in_progress_notice .unfinished-restoration {\n\tfont-size: 120%;\n}\n\n#backupnow_includefiles_moreoptions, #backupnow_database_moreoptions, #backupnow_includecloud_moreoptions {\n\tmargin: 4px 16px 6px 16px;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n}\n\n#backupnow_database_moreoptions {\n\tmax-height: 250px;\n\toverflow: auto;\n}\n\n#backupnow_database_moreoptions div.backupnow-db-tables {\n\tmargin-bottom: 5px;\n}\n\n#backupnow_database_moreoptions div.backupnow-db-tables > a {\n\tcolor: #0073AA;\n}\n\n.form-table #updraft_activejobsrow .minimum-height {\n\tmin-height: 100px;\n}\n\n#updraft_activejobsrow th {\n\tmax-width: 112px;\n\tmargin: 0;\n\tpadding: 13px 0 0 0;\n}\n\n#updraft_lastlogmessagerow .last-message {\n\tpadding-top: 20px;\n\tdisplay: block;\n}\n\n.updraft_simplepie {\n\tvertical-align: top;\n}\n\n.download-backups {\n\tmargin-top: 8px;\n}\n\n.download-backups .updraft_download_button {\n\tmargin-right: 6px;\n}\n\n.download-backups .ud-whitespace-warning, .download-backups .ud-bom-warning {\n\tbackground-color: pink;\n\tpadding: 8px;\n\tmargin: 4px;\n\tborder: 1px dotted;\n}\n\n.download-backups .ul {\n\tlist-style: none inside;\n\tmax-width: 800px;\n\tmargin-top: 6px;\n\tmargin-bottom: 12px;\n}\n\n#updraft-plupload-modal {\n\tmargin: 16px 0;\n}\n\n.download-backups .upload {\n\tmax-width: 610px;\n}\n\n.download-backups #plupload-upload-ui {\n\twidth: 100%;\n}\n\n.ud_downloadstatus {\n\tpadding: 10px 0;\n}\n\n#ud_massactions, #updraft-delete-waitwarning {\n\tpadding: 14px;\n\tbackground: rgb(241, 241, 241);\n\tposition: absolute;\n\tleft: 0;\n\ttop: 100%;\n}\n\n#ud_massactions > *, #updraft-delete-waitwarning > * {\n\tvertical-align: middle;\n}\n\n#ud_massactions .updraftplus-remove {\n\tdisplay: inline-block;\n\tmargin-right: 0;\n}\n\n#ud_massactions .updraftplus-remove a {\n\ttext-decoration: none;\n}\n\n#ud_massactions .updraft-viewlogdiv a {\n\ttext-decoration: none;\n\tposition: relative;\n}\n\nsmall.ud_massactions-tip {\n\tdisplay: inline-block;\n\topacity: 0.5;\n\tfont-style: italic;\n\tmargin-left: 20px;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups {\n\tmargin-bottom: 35px;\n\tposition: relative;\n}\n\n#updraft-message-modal-innards {\n\tpadding: 4px;\n}\n\n#updraft-authenticate-modal {\n\ttext-align: center;\n\tfont-size: 16px !important;\n}\n\n#updraft-authenticate-modal p {\n\tfont-size: 16px;\n}\n\ndiv.ui-dialog.ui-widget.ui-widget-content {\n\tz-index: 99999 !important;\n}\n\n#updraft_delete_form p {\n\tmargin-top: 3px;\n\tpadding-top: 0;\n}\n\n#updraft_restore_form .cannot-restore {\n\tmargin: 8px 0;\n}\n\n.notice.updraft-restore-option {\n\tpadding: 12px;\n\tmargin: 8px 0 4px 0;\n\tborder-left-color: #CCC;\n}\n\n/* updraft_restore_crypteddb */\n#updraft_restorer_dboptions h4 {\n\tmargin: 0px 0px 6px 0px;\n\tpadding: 0px;\n}\n\n.updraftplus_restore_tables_options_container {\n\tmax-height: 250px;\n\toverflow: auto;\n}\n\n.updraft_debugrow th {\n\tvertical-align: top;\n\tpadding-top: 6px;\n\tmax-width: 140px;\n}\n\n.expertmode p {\n\tfont-size: 125%;\n}\n\n.expertmode .call-wp-action {\n\twidth: 300px;\n\theight: 22px;\n}\n\n.updraftplus-lock-advert {\n\tclear: left;\n\tmax-width: 600px;\n}\n\n.uncompressed-data {\n\tclear: left;\n\tmax-width: 600px;\n}\n\n.delete-old-directories {\n\tpadding: 8px;\n\tpadding-bottom: 12px;\n}\n\n.active-jobs {\n\twidth: 100%;\n\ttext-align: center;\n\tpadding: 33px;\n}\n\n.job-id {\n\tmargin-top: 0;\n\tmargin-bottom: 8px;\n}\n\n.next-resumption {\n\tfont-weight: bold;\n}\n\n.updraft_percentage {\n\tz-index: -1;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\ttext-align: center;\n\tbackground-color: #1D8EC2;\n\ttransition: width 0.3s;\n}\n\n.curstage {\n\tz-index: 1;\n\tborder-radius: 2px;\n\tmargin-top: 8px;\n\twidth: 100%;\n\theight: 26px;\n\tline-height: 26px;\n\tposition: relative;\n\ttext-align: center;\n\tfont-style: italic;\n\tcolor: #FFF;\n\tbackground-color: #B7B7B7;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n\n.curstage-info {\n\tdisplay: inline-block;\n\tz-index: 2;\n}\n\n.retain-files {\n\twidth: 48px;\n}\n\n.backup-interval-description tr td div {\n\tmax-width: 670px;\n}\n\n#updraft-manualdecrypt-modal {\n\twidth: 85%;\n\tmargin: 6px;\n\tmargin-left: 100px;\n}\n\n.directory-permissions {\n\tfont-size: 110%;\n\tfont-weight: bold;\n}\n\n.double-warning {\n\tborder: 1px solid;\n\tpadding: 6px;\n}\n\n.raw-backup-info {\n\tfont-style: italic;\n\tfont-weight: bold;\n\tfont-size: 120%;\n}\n\n.updraft_existingbackup_date {\n\twidth: 22%;\n\tmax-width: 140px;\n}\n\n.updraft_existing_backups_wrapper {\n\tmargin-top: 20px;\n\tborder-top: 1px solid #DDD;\n}\n\n.updraft-no-backups-msg {\n\tpadding: 10px 40px;\n\ttext-align: center;\n\tfont-style: italic;\n}\n\n.tr-bottom-4 {\n\tmargin-bottom: 4px;\n}\n\n.existing-backups-table th {\n\tpadding: 8px 10px;\n}\n\n.form-table .backup-date {\n\twidth: 172px;\n}\n\n.form-table .backup-data {\n\twidth: 426px;\n}\n\n.form-table .updraft_backup_actions {\n\twidth: 272px;\n}\n\n.existing-date {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tmax-width: 140px;\n\twidth: 25%;\n}\n\n.line-break-tr {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.line-break-td {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.td-line-color {\n\theight: 2px;\n\tbackground-color: #888;\n}\n\n.raw-backup {\n\tmax-width: 140px;\n}\n\n.existing-backups-actions {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.existing-backups-border {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.existing-backups-border > td {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.existing-backups-border > div {\n\theight: 2px;\n\tbackground-color: #AAA;\n}\n\n.updraft_existing_backup_date {\n\tmax-width: 140px;\n}\n\n.updraftplus-upload {\n\tmargin-right: 6px;\n\tfloat: left;\n\tclear: none;\n}\n\n.before-restore-button {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.before-restore-button div {\n\tfloat: none;\n\tdisplay: inline-block;\n}\n\n.table-separator-tr {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.table-separator-td {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n.end-of-table-div {\n\theight: 2px;\n\tbackground-color: #AAA;\n}\n\n.last-backup-job {\n\tpadding-top: 3% !important;\n}\n\n.line-height-03 {\n\tline-height: 0.3 !important;\n}\n\n.line-height-13 {\n\tline-height: 1.3 !important;\n}\n\n.line-height-23 {\n\tline-height: 2.3 !important;\n}\n\n#updraft_diskspaceused {\n\tcolor: #DF6926;\n}\n\n#updraft_delete_old_dirs_pagediv {\n\tpadding-bottom: 10px;\n}\n\n/*#updraft_lastlogmessagerow > td, #updraft_last_backup > td {\n\tpadding: 0;\n}*/\n\n/* Time + scheduling add-on*/\n.fix-time {\n\twidth: 70px;\n}\n\n.retain-files {\n\twidth: 70px;\n}\n\n.number-input {\n\tmin-width: 50px;\n\tmax-width: 70px;\n}\n\n.additional-rule-width {\n\tmin-width: 60px;\n\tmax-width: 70px;\n}\n\n/* Add-ons */\n/* Want to fix the WordPress icons so that they fit inline with the text, and don't push everything out of place. */\n\n#updraft-wrap .dashicons.dashicons-adapt-size {\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n\n#updraft-wrap .button span.dashicons:not(.dashicons-adapt-size) {\n\tvertical-align: middle;\n\tmargin-top: -3px;\n}\n\n.addon-logo-150 {\n\tmargin-left: 30px;\n\tmargin-top: 33px;\n\theight: 125px;\n\twidth: 150px;\n}\n\n.margin-bottom-50 {\n\tmargin-bottom: 50px;\n}\n\n.premium-container {\n\twidth: 80%;\n}\n\n/* Main Header */\n\n.main-header {\n\tbackground-color: #DF6926;\n\theight: 200px;\n\twidth: 100%;\n}\n\n.button-add-to-cart {\n\tcolor: white;\n\tborder-color: white;\n\tfloat: none;\n\tmargin-right: 17px;\n}\n\n.button-add-to-cart:hover, .button-add-to-cart:focus, .button-add-to-cart:active {\n\tborder-color: #A0A5AA;\n\tcolor: #A0A5AA;\n}\n\n.addon-title {\n\tmargin-top: 25px;\n}\n\n.addon-text {\n\tmargin-top: 75px;\n}\n\n.image-main-div {\n\twidth: 25%;\n\tfloat: left;\n}\n\n.text-main-div {\n\twidth: 60%;\n\tfloat: left;\n\ttext-align: center;\n\tcolor: white;\n\tmargin-top: 16px;\n}\n\n.text-main-div-title {\n\tfont-weight: bold !important;\n\tcolor: white;\n\ttext-align: center;\n}\n\n.text-main-div-paragraph {\n\tcolor: white;\n}\n\n/* End main header */\n\n/* Vault icons */\n\n.updraftplus-vault-cta {\n\twidth: 100%;\n\ttext-align: center;\n\tmargin-bottom: 50px;\n}\n\n.updraftplus-vault-cta h1 {\n\tfont-weight: bold;\n}\n\n.updraftvault-buy {\n\twidth: 225px;\n\theight: 225px;\n\tborder: 2px solid #777;\n\tdisplay: inline-table;\n\tmargin: 0 auto;\n\tmargin-right: 50px;\n\tposition: relative;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault {\n\twidth: 275px;\n\theight: 275px;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault > a {\n\tright: 21%;\n\tfont-size: 16px;\n\tborder-width: 4px !important;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault > p {\n\tfont-size: 16px;\n}\n\n.updraftvault-buy .button-purchase {\n\tright: 24%;\n\tmargin-left: 0;\n\tline-height: 1.7em;\n}\n\n.updraftvault-buy hr {\n\theight: 2px;\n\tbackground-color: #777;\n\tmargin-top: 18px;\n}\n\n.right {\n\tmargin-right: 0px;\n}\n\n.updraftvault-buy .addon-logo-100 {\n\theight: 100px;\n\twidth: 125px;\n\tmargin-top: 7px;\n}\n\n.updraftvault-buy .addon-logo-large {\n\tmargin-top: 7px;\n}\n\n.updraftvault-buy .button-buy-vault {\n\tfont-size: 12px;\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tborder-width: 2px !important;\n\tposition: absolute;\n\tright: 29%;\n\tbottom: 2%;\n}\n\n.premium-addon-div .button-purchase {\n\tline-height: 1.7em;\n}\n\n.updraftvault-buy .button-buy-vault:hover {\n\tborder-color: darkgrey;\n\tcolor: darkgrey;\n}\n\n/* End Vault icons */\n\n/* Premium addons */\n\n.premium-addons {\n\tmargin-top: 80px;\n\twidth: 100%;\n\tmargin: 0 auto;\n\tdisplay: table;\n}\n\n.addon-list {\n\t/* margin-left: 32px; */\n\tdisplay: table;\n\ttext-align: center;\n}\n\n.premium-addons h1 {\n\ttext-align: center;\n\tfont-weight: bold;\n}\n\n.premium-addons p {\n\ttext-align: center;\n}\n\n.premium-addons .premium-addon-div {\n\twidth: 200px;\n\theight: 250px;\n\tborder: 2px solid #777;\n\tdisplay: inline-table;\n\tmargin: 0 auto;\n\tmargin-right: 25px;\n\tmargin-top: 25px;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.premium-addons .premium-addon-div p {\n\tmargin-left: 2px;\n\tmargin-right: 2px;\n}\n\n.premium-addons .premium-addon-div img {\n\twidth: auto;\n\theight: 50px;\n\tmargin-top: 7px;\n}\n\n.premium-addons .premium-addon-div .hr-alignment {\n\tmargin-top: 44px;\n}\n\n.premium-addons .premium-addon-div .dropbox-logo {\n\theight: 39px;\n\twidth: 150px;\n}\n\n.premium-addons .premium-addon-div .azure-logo, .premium-addons .premium-addon-div .onedrive-logo {\n\twidth: 75%;\n\theight: 24px;\n}\n\n.button-purchase {\n\tfont-size: 12px;\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tborder-width: 2px !important;\n\tposition: absolute;\n\tright: 25%;\n\tbottom: 2%;\n}\n\n.button-purchase:hover {\n\tcolor: darkgrey;\n\tborder-color: darkgrey;\n}\n\n.premium-addons .premium-addon-div hr {\n\theight: 2px;\n\tbackground-color: #777;\n\tmargin-top: 18px;\n}\n\n.premium-addon-div p {\n\tfont-style: italic;\n}\n\n.addon-list > .premium-addon-div > .onedrive-fix,\n.addon-list > .premium-addon-div > .azure-logo {\n\tmargin-top: 33px;\n}\n\n.addon-list > .premium-addon-div > .dropbox-fix {\n\tmargin-top: 18px;\n}\n\n/* End premium addons */\n\n\n/* Forgotton something (that is the name of the div rather than a mental note!) */\n\n.premium-forgotton-something {\n\tmargin-top: 5%;\n}\n\n.premium-forgotton-something h1 {\n\ttext-align: center;\n\tfont-weight: bold;\n}\n\n.premium-forgotton-something p {\n\ttext-align: center;\n\tfont-weight: normal;\n}\n\n.premium-forgotton-something .button-faq {\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tmargin: 0 auto;\n\tdisplay: table;\n}\n\n.premium-forgotton-something .button-faq:hover {\n\tcolor: #777;\n\tborder-color: #777;\n}\n\n/* End of forgotton something */\n\n.updraftplusmethod.updraftvault #vaultlogo {\n\tpadding-left: 40px;\n}\n\n.updraftplusmethod.updraftvault .vault_primary_option {\n\tfloat: left;\n\twidth: 50%;\n\ttext-align: center;\n\tpadding-bottom: 20px;\n}\n\n.updraftplusmethod.updraftvault .vault_primary_option div {\n\tclear: right;\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .clear-left {\n\tclear: left;\n}\n\n.updraftplusmethod.updraftvault .padding-top-20px {\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .padding-top-14px {\n\tpadding-top: 14px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary, .updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary {\n\tfont-size: 18px !important;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_showoptions, .updraftplusmethod.updraftvault #updraftvault_connect {\n\tmargin-top: 8px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_connect input {\n\tmargin-right: 10px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_email {\n\twidth: 280px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_pass {\n\twidth: 200px;\n}\n\n.updraftplusmethod.updraftvault #vault-is-connected {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_default p {\n\tclear: left;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-container {\n\ttext-align: center;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option {\n\twidth: 40%;\n\ttext-align: center;\n\tpadding-top: 20px;\n\tdisplay: inline-block;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-size {\n\tfont-size: 200%;\n\tfont-weight: bold;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-link {\n\tclear: both;\n\tfont-size: 150%;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-or {\n\tclear: both;\n\tfont-size: 115%;\n\tfont-style: italic;\n}\n\n/* Automation Backup Advert by B */\n.autobackup-image {\n/* \tdisplay: inline-block; */\n/*\tmin-width: 10%;\n\tmax-width:25%;*/\n/*\tfloat: left;*/\n\tclear: left;\n\tfloat: left;\n\twidth: 110px;\n\theight: 110px;\n}\n\n.autobackup-description {\n\twidth: 100%;\n}\n\n.advert-description {\n\tfloat: left;\n\tclear: right;\n\tpadding: 4px 10px 8px 10px;\n\twidth: 70%;\n\tclear: right;\n\tvertical-align: top;\n}\n\n.advert-btn {\n\tdisplay: inline-block;\n\tmin-width: 10%;\n\tvertical-align: top;\n\tmargin-bottom: 8px;\n}\n\n.advert-btn:first-of-type {\n\tmargin-top: 25px;\n}\n\n.advert-btn a {\n\tdisplay: block;\n\tcursor: pointer;\n}\n\na.btn-get-started {\n\tbackground: #FFF;\n\tborder: 2px solid #DF6926;\n\tborder-radius: 4px;\n\tcolor: #DF6926;\n\tdisplay: inline-block;\n\tmargin-left: 10px !important;\n\tmargin-bottom: 7px !important;\n\tfont-size: 18px !important;\n\tline-height: 20px;\n\tmin-height: 28px;\n\tpadding: 11px 10px 5px 10px;\n\ttext-transform: uppercase;\n\ttext-decoration: none;\n}\n\n.circle-dblarrow {\n\tborder: 1px solid #DF6926;\n\tborder-radius: 100%;\n\tdisplay: inline-block;\n\tfont-size: 17px;\n\tline-height: 17px;\n\tmargin-left: 5px;\n\twidth: 20px;\n\theight: 20px;\n\ttext-align: center;\n}\n\n/* End Automation Backup Advert by B */\n/* New Responsive Pretty Advanced Settings */\n.expertmode .advanced_settings_container {\n\theight: auto;\n\toverflow: hidden;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu {\n\tfloat: none;\n\tborder-bottom: 1px solid rgb(204, 204, 204);\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content {\n\tpadding-top: 5px;\n\tfloat: none;\n\twidth: auto;\n\toverflow: auto;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content h3:first-child {\n\tmargin-top: 5px !important;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools {\n\tdisplay: none;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content .site_info {\n\tdisplay: block;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tpadding: 5px;\n\tcolor: #000;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text {\n\tfont-size: 16px;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover {\n\tbackground-color: #EAEAEA;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .active {\n\tbackground-color: #3498DB;\n\tcolor: #FFF;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .active:hover {\n\tbackground-color: #72C5FD;\n\tcolor: #FFF;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content input#import_settings {\n\theight: auto !important;\n}\n\ndiv#updraft-wrap a {\n\tcursor: pointer !important;\n}\n\n.updraftcentral_wizard_option {\n\twidth: 45%;\n\tfloat: left;\n\ttext-align: center;\n}\n\n.updraftcentral_wizard_option label {\n\tmargin-bottom: 8px;\n}\n\n#updraftcentral_keys_table {\n\tdisplay: none;\n}\n\n.create_key_container {\n\tborder: 1px solid;\n\tborder-radius: 4px;\n\tpadding: 0 0 6px 6px;\n\tmargin-bottom: 8px;\n}\n\n.updraftcentral_cloud_connect {\n\tborder-radius: 4px;\n\tborder: 1px solid #000;\n\tpadding: 0 20px;\n\tmargin-top: 30px;\n\tbackground-color: #FFF;\n}\n\n.updraftcentral_cloud_error {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #F00;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_info {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #EF8F31;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftplus_spinner.spinner {\n\tpadding-left: 25px;\n\tfloat: none;\n}\n\n.updraftplus_spinner.spinner.visible {\n\tvisibility: visible;\n\twidth: auto;\n}\n\n.updraftcentral_cloud_notices .updraftplus_spinner {\n\tmargin-top: -5px;\n}\n\n.updraftcentral-subheading {\n\tfont-size: 14px;\n\tmargin-top: -10px;\n\tmargin-bottom: 20px;\n}\n\n#updraftcentral_cloud_form input#email,\n#updraftcentral_cloud_form input#password {\n\tmin-width: 250px;\n}\n\n.updraftcentral-data-consent {\n\tfont-size: 13px;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_wizard_image {\n\tfloat: left;\n\tmin-width: 100px;\n\tmargin-right: 25px;\n}\n\n.updraftcentral_cloud_wizard {\n\tfloat: left;\n}\n\n.updraftcentral_cloud_clear {\n\tclear: both;\n}\n\n.updraftplus-settings-footer {\n\tmargin-top: 30px;\n}\n\n.updraftplus-top-menu {\n\tpadding: 0.5em;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\tbackground: transparent;\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: none;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_row {\n\tflex-direction: column;\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container {\n\twidth: 100%;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\toverflow: inherit;\n}\n\n#updraft_inpage_backup span#updraft_lastlogcontainer {\n\tpadding: 18px;\n\tbackground: #FAFAFA;\n\tdisplay: block;\n\tfont-size: 90%;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup div#updraft_activejobsrow {\n\tbackground: #FAFAFA;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow > div {\n\tbackground: transparent;\n\tpadding: 0;\n}\n\n#updraft_inpage_backup .last-message > strong {\n\tdisplay: block;\n\tmargin-top: 13px;\n}\n\nbody.update-core-php #updraft_inpage_backup h2:nth-child(1) {\n\tmargin-top: 1em !important;\n}\n\n/* Restoration page */\n\n.updraft_restore_container {\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tz-index: 99999;\n\tpadding-top: 30px;\n\tbackground: #F1F1F1;\n\toverflow: auto;\n}\n\n.updraft-modal-is-opened .select2-container {\n\tz-index: 99999;\n}\n\nbody.updraft-modal-is-opened {\n\toverflow: hidden;\n}\n\n.updraft_restore_container h2 {\n\tmargin: 0;\n}\n\n.updraft_restore_container .updraftmessage {\n\tbox-sizing: border-box;\n\tmax-width: 860px;\n\tmargin-left: auto;\n\tmargin-right: auto;\n}\n\n.updraft_restore_main {\n\tmax-width: 860px;\n\tmargin: 0 auto;\n\tmargin-top: 20px;\n\tbackground: #FFF;\n\tbox-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);\n\tposition: relative;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tbox-sizing: border-box;\n}\n\n.updraft_restore_main--header {\n\tfont-size: 20px;\n\tfont-weight: bold;\n\ttext-align: center;\n\tpadding-top: 16px;\n\tline-height: 20px;\n\twidth: 100%;\n\tmax-width: 100%;\n\tpadding-right: 30px;\n\tpadding-left: 30px;\n\tbox-sizing: border-box;\n}\n\n.updraft_restore_main--activity {\n\tposition: relative;\n\twidth: calc(100% - 350px);\n\tbox-sizing: border-box;\n}\n\n.updraft_restore_main--activity-title {\n\tpadding: 20px;\n\tmargin: 0;\n}\n\n.show-credentials-form.updraft_restore_main .updraft_restore_main--activity-title {\n\tdisplay: none;\n}\n\n.updraft_restore_main--components {\n\twidth: 350px;\n\tpadding: 20px;\n\tbox-sizing: border-box;\n\tbackground: #F8F8F8;\n\tmin-height: 350px;\n}\n\n.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output {\n\tbackground: #23282D;\n\tcolor: #E3E3E3;\n\tfont-family: monospace;\n\tpadding: 19px;\n\toverflow: auto;\n\tposition: absolute;\n\ttop: 60px;\n\tbottom: 0;\n\tright: 0;\n\tleft: 0;\n}\n\n#updraftplus_ajax_restore_output form {\n\twhite-space: normal;\n\tfont-family: -apple-system, blinkmacsystemfont, \"Segoe UI\", roboto, oxygen-sans, ubuntu, cantarell, \"Helvetica Neue\", sans-serif;\n}\n\n#updraftplus_ajax_restore_output .updraft_restore_errors {\n\tborder: 1px solid #DC3232;\n\tpadding: 10px 20px;\n\twhite-space: normal;\n}\n\n.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output h2 {\n\tcolor: #00A0D2;\n\tpadding-top: 10px;\n\tpadding-bottom: 5px;\n}\n\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output {\n\tpadding: 20px;\n\tborder-left: 1px solid #EEE;\n}\n\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output #message {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table td,\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table th {\n\tpadding-bottom: 0;\n}\n\n.updraft_restore_main.show-credentials-form .updraft_restore_main--components {\n\topacity: 0.2;\n}\n\n.updraft_restore_main.show-credentials-form div.error .restore-credential-errors--list p {\n\tmargin: 0;\n\tlist-style-type: disc;\n\tdisplay: list-item;\n\tlist-style-position: inside;\n}\n\n.restore-credential-errors > :first-child {\n\tmargin-top: 0;\n}\n\n.restore-credential-errors > :last-child {\n\tmargin-bottom: 0;\n}\n\nul.updraft_restore_components_list li {\n\tcolor: #BABABA;\n\tfont-size: 1.2em;\n\tmargin-bottom: 1em;\n}\n\nul.updraft_restore_components_list li::before {\n\tcontent: '\\f469';\n\tfont-family: dashicons;\n\tfont-size: 20px;\n\tvertical-align: middle;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\nul.updraft_restore_components_list li span {\n\tvertical-align: middle;\n}\n\nul.updraft_restore_components_list li.done {\n\tcolor: green;\n}\n\nul.updraft_restore_components_list li.done::before {\n\tcontent: \"\\f147\";\n}\n\nul.updraft_restore_components_list li.active {\n\tcolor: inherit;\n}\n\nul.updraft_restore_components_list li.active::before {\n\tcontent: \"\\f463\";\n\tanimation: udp_rotate 1s linear infinite;\n}\n\nul.updraft_restore_components_list li.error {\n\tcolor: #DC3232;\n}\n\nul.updraft_restore_components_list li.error::before {\n\tcontent: \"\\f335\";\n}\n\n.updraft_restore_result {\n\tpadding: 10px 0;\n\tfont-size: 1.3em;\n\tmargin-bottom: 1em;\n\tvertical-align: middle;\n\tdisplay: none;\n}\n\n.updraft_restore_result.restore-error {\n\tcolor: #DC3232;\n}\n\n.updraft_restore_result.restore-success {\n\tcolor: green;\n}\n\n.updraft_restore_result .dashicons {\n\tfont-size: 35px;\n\theight: 35px;\n\tline-height: 33px;\n\twidth: 35px;\n}\n\n.updraft_restore_result span {\n\tvertical-align: middle;\n}\n\n/* Restore modal */\n\n#updraft-restore-modal {\n\twidth: 100%;\n}\n\ndiv#updraft-restore-modal .notice {\n\tbackground: #F8F8F8;\n}\n\n.updraft-restore-modal--stage .updraft--two-halves,\n.updraft-restore-modal--stage .updraft--one-half {\n\tpadding: 20px 30px;\n}\n\n.updraft-restore-modal--header {\n\tpadding: 20px;\n\tpadding-bottom: 0px;\n\ttext-align: center;\n\tborder-bottom: 1px solid #EEE;\n}\n\n.updraft-restore-modal--header h3 {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-restore-item {\n\tpadding-bottom: 4px;\n}\n\n.updraft-restore-buttons {\n\tpadding-top: 10px;\n}\n\nul.updraft-restore--stages {\n\tdisplay: inline-block;\n\tmargin: 0;\n\theight: 28px;\n}\n\nul.updraft-restore--stages li {\n\tdisplay: inline-block;\n\tposition: relative;\n\twidth: 12px;\n\theight: 12px;\n\tbackground: #D2D2D2;\n\tborder-radius: 20px;\n\tline-height: 1;\n\tmargin: 0 4px;\n\tvertical-align: middle;\n}\n\nul.updraft-restore--stages li.active {\n\tbackground: #444;\n}\n\n.updraft-restore--footer {\n\tborder-top: 1px solid #EEE;\n\tpadding: 20px;\n\ttext-align: center;\n\tposition: sticky;\n\tbottom: 0;\n\tbackground: #FFF;\n\twidth: 100%;\n\tbox-sizing: border-box;\n\tz-index: 999999;\n}\n\n.updraft-restore--footer .updraft-restore--cancel {\n\tposition: absolute;\n\tleft: 20px;\n\ttop: auto;\n}\n\n.updraft-restore--footer .updraft-restore--next-step {\n\tposition: absolute;\n\tright: 20px;\n\ttop: auto;\n}\n\nul.updraft-restore--stages li span {\n\tposition: absolute;\n\twidth: 120px;\n\tbottom: calc(100% + 14px);\n\tleft: -55px;\n\tbackground: #000000DB;\n\tpadding: 5px;\n\tbox-sizing: border-box;\n\tborder-radius: 4px;\n\tcolor: #FFF;\n\ttext-align: center;\n\tdisplay: none;\n}\n\nul.updraft-restore--stages li:hover span {\n\tdisplay: inline-block;\n}\n\n.updraft-restore-item input[type=checkbox] {\n\tmargin-bottom: -5px;\n}\n\n.updraft-restore-item input[type=checkbox]:checked + label {\n\tfont-weight: bold;\n}\n\n/* Hide close button on download window */\ndiv#updraft-restore-modal .ud_downloadstatus__close {\n\tdisplay: none;\n}\n\n#ud_downloadstatus2:not(:empty) {\n\tmargin-top: 15px;\n}\n\n.dashicons.rotate {\n\tanimation: udp_rotate 1s linear infinite;\n}\n\n/* Activity stalled */\n\nspan#updraftplus_ajax_restore_last_activity {\n\tfont-size: .8rem;\n\tfont-weight: normal;\n\tfloat: right;\n}\n\n.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice {\n\tmargin: -20px -20px 20px;\n\tpadding: 19px;\n}\n\n.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice button {\n\tmargin-right: 5px;\n}\n\n#updraft_migrate_receivingsites .updraftplus-remote-sites-selector .button-primary, .updraft_migrate_add_site .input-field input, .updraft_migrate_add_site button {\n\tvertical-align: middle;\n}\n\n#updraft_migrate_receivingsites .text-link-menu a:not(:last-child) {\n\tpadding-right: 10px;\n}\n\n#updraft_migrate_receivingsites a.updraft_migrate_clear_sites span.dashicons-trash:before {\n\tfont-size: 17px;\n}\n\n#updraft_migrate_receivingsites .updraft_migrate_add_site {\n\tclear: both;\n}\n\n/* RTL Support */\n\n.rtl .advanced_tools.total_size table td {\n\tdirection: ltr;\n\ttext-align: right;\n}\n\n.rtl #plupload-upload-ui2.drag-drop #drag-drop-area2 {\n\tmargin-bottom: 20px;\n}\n\n.rtl #updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: left;\n}\n\n.rtl label.updraft_checkbox > input[type=checkbox] {\n\tmargin-right: -25px;\n\tmargin-left: inherit;\n}\n\n.rtl .ud_downloadstatus__close {\n\tfloat: left !important;\n}\n\n.rtl #updraft_backupextradbs_another_container {\n\tfloat: right;\n}\n\n.rtl input.labelauty + label {\n\tdirection: ltr;\n\tposition: relative;\n\tmin-height: 29px;\n}\n\n.rtl input.labelauty + label > span.labelauty-checked-image, .rtl input.labelauty + label > span.labelauty-unchecked-image {\n\tright: 8px;\n\ttop: 11px;\n\tposition: absolute;\n}\n\n.rtl .button.updraft-close-overlay .dashicons {\n\tmargin-right: -5px;\n\tmargin-left: inherit;\n}\n\n.rtl label.updraft_checkbox {\n\tmargin-right: 26px;\n\tmargin-left: inherit;\n}\n\n.rtl #updraft-wrap .udp-info {\n\tleft: 10px;\n\tright: inherit;\n}\n\n.rtl input.labelauty + label > span.labelauty-unchecked-image + span.labelauty-unchecked,\n.rtl input.labelauty + label > span.labelauty-checked-image + span.labelauty-checked {\n\tmargin-right: 7px;\n\tmargin-left: inherit;\n\tpadding: 7px 7px 7px 26px;\n\twidth: 141px;\n\ttext-align: right;\n}\n\n.rtl #updraft_report_cell button.updraft_reportbox_delete,\n.rtl .updraft_box_delete_button,\n.rtl .updraft_small_box .updraft_box_delete_button {\n\tleft: 4px;\n\tright: inherit;\n}\n\n#updraft_exclude_modal .clause-input-container {\n\toverflow: auto;\n}\n\n#updraft_exclude_modal .clause-input-container select, #updraft_exclude_modal .clause-input-container input {\n\tfloat: left;\n}\n\n#updraft_exclude_modal .clause-input-container .wildcards-input {\n\tmargin: 7px 7px 0 0;\n}\n\n#updraft_exclude_modal .updraft-exclude-panel .contain-clause-sub-label {\n\tmargin-top: 10px;\n\tdisplay: block;\n}\n\n/* UpdraftPlus Notice Styling */\n.udp-notice {\n\tborder: 1px solid #C3C4C7;\n\tborder-left-width: 4px;\n\tbox-shadow: 0 1px 1px rgba(0, 0, 0, .04);\n\tbackground: #FFF;\n\tmargin: 5px 0 15px 0;\n\tpadding: 1px 12px;\n}\n\n.udp-notice p {\n\tmargin: .5em 0;\n\tpadding: 2px;\n}\n\n.udp-notice.notice-warning {\n\tborder-left-color: #DBA617;\n}\n\n.udp-notice.notice-error {\n\tborder-left-color: #D63638;\n}\n\n.udp-notice.updraft-restore-option {\n\tborder-left-color: #CCC;\n\tmargin: 8px 0 4px 0;\n\tpadding: 12px;\n}\n\ndiv#updraft-restore-modal .udp-notice, .udp-notice.updraft-restore-option {\n\tbackground: #F8F8F8;\n}\n\n@media only screen and (min-width: 1024px) {\n\n\t#updraft_activejobsrow .updraft_row {\n\t\tdisplay: flex;\n\t\talign-items: baseline;\n\t}\n\n\t#updraft_activejobsrow .updraft_row .updraft_col {\n\t\tflex: auto;\n\t}\n\n\t#updraft_activejobsrow .updraft_progress_container {\n\t\twidth: calc(100% - 230px);\n\t}\n\n}\n\n@media only screen and (min-width: 782px) {\n\n\t.settings_page_updraftplus input[type=text],\n\t.settings_page_updraftplus input[type=password],\n\t.settings_page_updraftplus input[type=number] {\n\t\t/* border-radius: 4px; */\n\t\tline-height: 1.42;\n\t\t/* border: 1px solid #CCC; */\n\t\theight: 27px;\n\t\tpadding: 2px 6px;\n\t\tcolor: #555;\n\t}\n\n\t.settings_page_updraftplus input[type=\"number\"] {\n\t\theight: 31px;\n\t}\n\n\t#ud_massactions.active, #updraft-delete-waitwarning.active {\n\t\tposition: fixed;\n\t\tbottom: 0;\n\t\tleft: 160px;\n\t\tright: 0;\n\t\ttop: auto;\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t\tbox-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t}\n\t\n\t.rtl #ud_massactions.active, .rtl #updraft-delete-waitwarning.active {\n\t\tleft: 0px;\n\t\tright: 160px;\n\t}\n\n\tbody.folded #ud_massactions.active, body.folded #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n\t.updraft-after-form-table {\n\t\tmargin-left: 250px;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.range-selection:not(.backuprowselected) .updraft_existingbackup_date .backup_date_label {\n\t\tcolor: #FFF;\n\t}\n\n}\n\n@media only screen and (min-width: 782px) and (max-width: 960px) {\n\n\tbody.auto-fold #ud_massactions.active, body.auto-fold #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n}\n\n@media only screen and (max-width: 782px) {\n\n\t#updraft-wrap {\n\t\tmargin-right: 0;\n\t}\n\n\t#updraft-wrap .form-table td {\n\t\tpadding-right: 0;\n\t}\n\n\tlabel.updraft_checkbox {\n\t\tmargin-bottom: 8px;\n\t\tmargin-top: 8px;\n\t\tmargin-left: 36px;\n\t}\n\n\t.updraft_retain_rules {\n\t\tposition: relative;\n\t\tmargin-right: 0;\n\t\tborder: 1px solid #CCC;\n\t\tpadding: 5px;\n\t\tmargin-bottom: -1px;\n\t}\n\n\t.updraft_retain_rules_delete {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 5px;\n\t}\n\n\ta[id*=updraft_retain_] {\n\t\tdisplay: block;\n\t\tpadding: 15px 15px 15px 0;\n\t}\n\n\tlabel.updraft_checkbox > input[type=checkbox] {\n\t\tmargin-left: -33px;\n\t}\n\n\t#updraft-backupnow-button {\n\t\tmargin: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > .updraft_backup_btn_wrapper {\n\t\tpadding-top: 0;\n\t}\n\n\t#ud_massactions, #updraft-delete-waitwarning {\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t}\n\n\t#ud_massactions.active {\n\t\tposition: fixed;\n\t\ttop: auto;\n\t\tbottom: 0;\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t\tbox-shadow: 0 -3px 15px rgba(0, 0, 0, 0.08);\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t}\n\n\t#ud_massactions strong {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n\n\tsmall.ud_massactions-tip {\n\t\tdisplay: block;\n\t}\n\n/*\t.advert-description {\n\t\tmin-width: 75%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.advert-btn {\n\t\tmargin-top: 15px;\n\t\tmargin-left:86px;\n\t\tmin-width: 100%;\n\t}*/\n\n\t.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\t\tfont-weight: normal;\n\t}\n\n\t.existing-backups-table .backup_date_label .clear-right {\n\t\tdisplay: inline-block;\n\t}\n\n\ttable.widefat.existing-backups-table {\n\t\tborder: 0;\n\t\tbox-shadow: none;\n\t\tbackground: transparent;\n\t}\n\n\t.existing-backups-table thead {\n\t\tborder: none;\n\t\tclip: rect(0 0 0 0);\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t}\n\n\t.existing-backups-table tr {\n\t\tdisplay: block;\n\t\tmargin-bottom: .625em;\n\t\tpadding-bottom: 16.625px;\n\t\twidth: 100%;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);\n\t}\n\n\t.existing-backups-table td {\n\t\tborder-bottom: 1px solid #DDD;\n\t\tdisplay: block;\n\t\tfont-size: .9em;\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tpadding: 10px;\n\t\tmargin: 0;\n\t}\n\n\t.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before {\n\t\t/*\n\t\t* aria-label has no advantage, it won't be read inside a table\n\t\tcontent: attr(aria-label);\n\t\t*/\n\t\tcontent: attr(data-label);\n\t\tfont-weight: bold;\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tleft: auto;\n\t\tpadding-bottom: 10px;\n\t\twidth: auto;\n\t\ttext-align: left;\n\t}\n\n\t.existing-backups-table td:last-child {\n\t\tborder-bottom: 0;\n\t}\n\n\t.form-table td.updraft_existingbackup_date {\n\t\twidth: inherit;\n\t\tmax-width: 100%;\n\t}\n\n\t.existing-backups-table td.before-restore-button {\n\t\tmin-height: 36px;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper {\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t\twidth: 100%;\n\t}\n\n\t.updraft_progress_container {\n\t\t/* width: 77%; */\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row {\n\t\tposition: relative;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {\n\t\tbackground-color: #FFF;\n\t\tborder-left: 4px solid #0572AA;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select) {\n\t\tmargin-left: 50px;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select {\n\t\twidth: 50px !important;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tbox-sizing: border-box;\n\t\theight: 100%;\n\t\tz-index: 1;\n\t\tborder: none;\n\t\tborder-right: 1px solid rgba(0, 0, 0, 0.05);\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups input[type=\"checkbox\"] {\n\t\theight: 25px;\n\t}\n\n\t.updraft_migrate_intro button.button.button-primary.button-hero {\n\t\tdisplay: block;\n\t\tmargin-right: 0;\n\t\twidth: 100%;\n\t\tmax-width: 100%;\n\t}\n\n\t.updraftclone-main-row {\n\t\tflex-direction: column;\n\t}\n\n\t.updraftclone-main-row > div {\n\t\twidth: auto;\n\t\tmax-width: none;\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.form-table th {\n\t\tpadding-bottom: 10px;\n\t}\n\n\t.updraft--flex {\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_restore_main {\n\t\tflex-wrap: wrap;\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_restore_main--components {\n\t\twidth: 100%;\n\t\tmin-height: 0;\n\t}\n\n\t.updraft_restore_main--activity {\n\t\twidth: 100%;\n\t}\n\n\tdiv#updraftplus_ajax_restore_output,\n\t.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output {\n\t\tposition: relative;\n\t\ttop: 0;\n\t\tbottom: auto;\n\t}\n\n\t.updraft--flex > .updraft--two-halves,\n\t.updraft--flex > .updraft--one-half {\n\t\twidth: 100%;\n\t}\n\n\t.updraft-restore-item {\n\t\tpadding-bottom: 10px;\n\t\tpadding-top: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 600px) {\n\t\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t}\n\n\t.updraft_next_scheduled_entity {\n\t\tfloat: none;\n\t\twidth: 100%;\n\t\tmargin-bottom: 2em;\n\t}\n\n\t.updraft_time_now_wrapper {\n\t\tmargin-top: 0;\n\t}\n\n\t#updraft_lastlogmessagerow h3 {\n\t\tmargin-bottom: 5px;\n\t}\n\n\t#updraft_lastlogmessagerow .updraft-log-link {\n\t\tdisplay: block;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 520px) {\n}\n\n@media only screen and (min-width: 768px) {\n\n\t.addon-activation-notice {\n\t\tleft: 20em;\n\t}\n\n\t.existing-backups-table tbody tr.range-selection:hover, .existing-backups-table tbody tr.range-selection {\n\t\tbackground: #0572AA; /* #2b7fd9 */\n\t}\n\n\t.existing-backups-table tbody tr:hover {\n\t\tbackground: #F1F1F1;\n\t}\n\n\t.existing-backups-table tbody tr td.before-restore-button {\n\t\tposition: relative;\n\t}\n\n\t.form-table .existing-backups-table thead th.check-column {\n\t\tpadding-left: 6px;\n\t}\n\n\t.existing-backups-table tr td:first-child {\n\t\tborder-left: 4px solid transparent;\n\t}\n\n\t.existing-backups-table tr.backuprowselected td:first-child {\n\t\tborder-left-color: #0572AA;\n\t}\n\n}\n\n@media screen and (min-width: 670px) {\n\t\n\t.expertmode .advanced_settings_container .advanced_settings_menu {\n\t\tfloat: left;\n\t\twidth: 215px;\n\t\tborder-right: 1px solid rgb(204, 204, 204);\n\t\tborder-bottom: none;\n\t}\n\n\t.expertmode .advanced_settings_container .advanced_settings_content {\n\t\tpadding-left: 10px;\n\t\tpadding-top: 0px;\n\t}\n\n\t.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {\n\t\tdisplay: block;\n\t}\n\n}\n\n@media only screen and (max-width: 1068px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: calc(50% - 10px);\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: 100px;\n\t}\n\n}\n\n@media only screen and (max-width: 600px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: 100%;\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: auto;\n\t}\n\n\ttable.updraft_feat_table {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table tr {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\ttable.updraft_feat_table td {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table td:first-child {\n\t\twidth: 100%;\n\t\tborder-bottom: none;\n\t}\n\n\ttable.updraft_feat_table td:not(:first-child) {\n\t\twidth: 50%;\n\t\tbox-sizing: border-box;\n\t}\n\n\ttable.updraft_feat_table td:first-child:empty {\n\t\tdisplay: none;\n\t}\n\n\ttd[data-colname]::before {\n\t\tcontent: attr(data-colname);\n\t\tfont-size: 0.8rem;\n\t\tcolor: #CCC;\n\t\tline-height: 1;\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css b/wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css deleted file mode 100644 index 6231deae..00000000 --- a/wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css +++ /dev/null @@ -1,2 +0,0 @@ -@-webkit-keyframes udp_blink{from{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:.4;-webkit-transform:scale(0.85);transform:scale(0.85)}}@keyframes udp_blink{from{opacity:1;-webkit-transform:scale(1);transform:scale(1)}to{opacity:.4;-webkit-transform:scale(0.85);transform:scale(0.85)}}@-webkit-keyframes udp_rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes udp_rotate{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.max-width-600{max-width:600px}.max-width-700{max-width:700px}.width-900{max-width:900px}.width-80{width:80%}.updraft--flex{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft--flex>*{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft--flex>.updraft--one-half{width:50%;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.updraft--flex>.updraft--two-halves{width:100%;-webkit-box-flex:1;-ms-flex:auto;flex:auto}.updraft-color--very-light-grey{background:#f8f8f8}.no-decoration{text-decoration:none}.bold{font-weight:bold}.center-align-td{text-align:center}.remove-padding{padding:0 !important}.updraft-text-center{text-align:center}.autobackup{padding:6px;margin:8px 0}ul .disc{list-style:disc inside}.dashicons-log-fix{display:inherit}.udpdraft__lifted{-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#updraft-wrap a .dashicons{text-decoration:none}.updraft-field-description,table.form-table td p.updraft-field-description{font-size:90%;line-height:1.2;font-style:italic;margin-bottom:5px}label.updraft_checkbox{display:block;margin-bottom:4px;margin-left:26px}label.updraft_checkbox>input[type=checkbox]{margin-left:-25px}div[id*="updraft_include_"]{margin-bottom:9px}.settings_page_updraftplus input[type="file"]{border:0}.settings_page_updraftplus .wipe_settings{padding-bottom:10px}.settings_page_updraftplus input[type="text"]{font-size:14px}.settings_page_updraftplus select{border-radius:4px;max-width:100%}input.updraft_input--wide,textarea.updraft_input--wide{max-width:442px;width:100%}#updraft-wrap .button-large{font-size:1.3em}.main-dashboard-buttons{border-width:4px;border-radius:12px;letter-spacing:0;font-size:17px;font-weight:bold;padding-left:.7em;padding-right:2em;padding:.3em 1em;line-height:1.7em;background:transparent;position:relative;border:2px solid;-webkit-transition:all .2s;transition:all .2s;vertical-align:baseline;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;line-height:1.3em;margin-left:.3em;text-transform:none;line-height:1;text-decoration:none}.button-restore{border-color:#629ec0;color:#629ec0}.button-ud-google{text-decoration:none !important;-webkit-transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,box-shadow .3s;transition:background-color .3s,box-shadow .3s,-webkit-box-shadow .3s;padding:12px 16px 12px 42px !important;border:0;border-radius:3px;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);color:#757575;font-size:14px;font-weight:500;font-family:"Roboto";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTcuNiA5LjJsLS4xLTEuOEg5djMuNGg0LjhDMTMuNiAxMiAxMyAxMyAxMiAxMy42djIuMmgzYTguOCA4LjggMCAwIDAgMi42LTYuNnoiIGZpbGw9IiM0Mjg1RjQiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik05IDE4YzIuNCAwIDQuNS0uOCA2LTIuMmwtMy0yLjJhNS40IDUuNCAwIDAgMS04LTIuOUgxVjEzYTkgOSAwIDAgMCA4IDV6IiBmaWxsPSIjMzRBODUzIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNNCAxMC43YTUuNCA1LjQgMCAwIDEgMC0zLjRWNUgxYTkgOSAwIDAgMCAwIDhsMy0yLjN6IiBmaWxsPSIjRkJCQzA1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNOSAzLjZjMS4zIDAgMi41LjQgMy40IDEuM0wxNSAyLjNBOSA5IDAgMCAwIDEgNWwzIDIuNGE1LjQgNS40IDAgMCAxIDUtMy43eiIgZmlsbD0iI0VBNDMzNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZD0iTTAgMGgxOHYxOEgweiIvPjwvZz48L3N2Zz4=);background-color:#FFF;background-repeat:no-repeat;background-position:12px 11px}.button-ud-google:hover{-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25);box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25)}.button-ud-google:active{background-color:#EEE}.button-ud-google:focus{outline:0;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25),0 0 0 3px #c8dafc;box-shadow:0 -1px 0 rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.25),0 0 0 3px #c8dafc}.button-ud-google:disabled{-webkit-filter:grayscale(100%);filter:grayscale(100%);background-color:#ebebeb;-webkit-box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);box-shadow:0 -1px 0 rgba(0,0,0,.04),0 1px 1px rgba(0,0,0,.25);cursor:not-allowed}.dashboard-main-sizing{border-width:4px;width:190px;line-height:1.7em}p.updraftplus-option{margin-top:0;margin-bottom:5px}p.updraftplus-option-inline{display:inline-block;padding-right:20px}span.updraftplus-option-label{display:block}#updraft-navtab-migrate-content .postbox{padding:18px}.updraftclone-main-row{display:-webkit-box;display:-ms-flexbox;display:flex}.updraftclone-tokens{background:#f5f5f5;padding:20px;border-radius:10px;margin-right:20px;max-width:300px}.updraftclone-tokens p{margin:0}.updraftclone_action_box{background:#f5f5f5;padding:20px;border-radius:10px;-webkit-box-flex:1;-ms-flex:1;flex:1}.updraftclone_action_box p:first-child{margin-top:0}.updraftclone_action_box p:last-child{margin-bottom:0}.updraftclone_action_box #ud_downloadstatus3{margin-top:10px}span.tokens-number{font-size:46px;display:block}.button.updraft_migrate_widget_temporary_clone_show_stage0{display:none;position:absolute;right:0;top:0;height:100%;border-left:1px solid #CCC;padding-left:10px;padding-right:10px}.updraft_migrate_widget_temporary_clone_stage0_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_migrate_widget_temporary_clone_stage0_box{margin-right:20px;width:100%;-ms-flex-preferred-size:100%;flex-basis:100%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:none}@media(min-width:1024px){.updraft_migrate_widget_temporary_clone_stage0_container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_migrate_widget_temporary_clone_stage0_box{-ms-flex-preferred-size:45%;flex-basis:45%}.updraft_migrate_widget_temporary_clone_stage0_box iframe,.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js{float:right}}.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons{text-decoration:none;font-size:20px}.opened .button.updraft_migrate_widget_temporary_clone_show_stage0{display:inline-block}.opened .updraft_migrate_widget_temporary_clone_stage0{background:#f5f5f5;padding:20px;border-radius:8px;margin-bottom:21px}.clone-list{clear:both;width:100%;margin-top:40px}.clone-list table{width:100%;text-align:left}.clone-list table tr th{background:#e4e4e4}.clone-list table tr td{background:#f5f5f5;word-break:break-word}.clone-list table tr:nth-child(odd) td{background:#fafafa}.clone-list table td,.clone-list table th{padding:6px}.updraftplus-clone .updraft_row{padding-left:0;padding-right:0}button#updraft_migrate_createclone+.updraftplus_spinner{margin-top:13px}.button.button-hero.updraftclone_show_step_1{white-space:normal;height:auto;line-height:14px;padding-top:10px;padding-bottom:10px}.button.button-hero.updraftclone_show_step_1 span.dashicons{height:auto}.updraftplus_clone_status{color:red}a.updraft_migrate_add_site--trigger span.dashicons{text-decoration:none}.button-restore:hover,.button-migrate:hover,.button-backup:hover,.button-view-log:hover,.button-mass-selectors:hover,.button-delete:hover,.button-entity-backup:hover,.udp-button-primary:hover{border-color:#df6926;color:#df6926}.button-migrate{color:#eea920;border-color:#eea920}#updraft_migrate_tab_main{padding:8px}.updraft_migrate_widget_module_content{background:#FFF;border-radius:0;position:relative}body.js #updraft_migrate .updraft_migrate_widget_module_content{display:none}.updraft_migrate_widget_module_content>h3,div[class*="updraft_migrate_widget_temporary_clone_stage"]>h3{margin-top:0}.updraft_migrate_widget_module_content header,#updraft_migrate_tab_alt header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;justify-items:center;margin-top:-18px;margin-left:-18px;margin-right:-18px;margin-bottom:15px;border-bottom:1px solid #CCC}.updraft_migrate_widget_module_content header h3,.updraft_migrate_widget_module_content header button.button.close,#updraft_migrate_tab_alt header h3,#updraft_migrate_tab_alt header button.button.close{padding:10px;line-height:20px;height:auto;margin:0}.updraft_migrate_widget_module_content button.button.close,#updraft_migrate_tab_alt button.button.close{text-decoration:none;padding-left:5px;border-right:1px solid #CCC}.updraft_migrate_widget_module_content button.button.close .dashicons,#updraft_migrate_tab_alt button.button.close .dashicons{margin-top:1px}.updraft_migrate_widget_module_content header h3,#updraft_migrate_tab_alt header h3{margin:0}.updraft_migrate_intro button.button.button-primary.button-hero{max-width:235px;word-wrap:normal;white-space:normal;line-height:1;height:auto;padding-top:13px;padding-bottom:13px;text-align:left;position:relative;margin-right:10px;margin-bottom:10px}.updraft_migrate_intro button.button.button-primary.button-hero .dashicons{position:absolute;left:10px;top:calc(50% - 8px)}#updraft_migrate_tab_alt #updraft_migrate_send_existing_button{margin-right:6px}#updraft_migrate .ui-widget-content a{color:#1c94c4}#updraft-wrap .ui-accordion .ui-accordion-header{background:#f6f6f6;margin:0;border-radius:0;padding-left:.5em;padding-right:.7em}#updraft-wrap .ui-widget{font-family:inherit}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w{background-position:-96px 0}.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s{background-position:-64px 0}#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon{left:auto;right:5px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;-webkit-box-shadow:0 0 0 1px rgba(91,157,217,0.22),0 0 2px 1px rgba(30,140,190,0.3);box-shadow:0 0 0 1px rgba(91,157,217,0.22),0 0 2px 1px rgba(30,140,190,0.3);background:#FFF}#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons{color:#0572aa;opacity:1}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active{background:#f6f6f6;border-bottom:2px solid #0572aa;-webkit-box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3);box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3)}#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus{-webkit-box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:1px 6px 12px -5px rgba(0,0,0,0.3),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child){border-top:0}#updraft-wrap .ui-accordion .ui-accordion-header .dashicons{opacity:.4;margin-right:10px}#updraft-wrap .ui-accordion .ui-accordion-header:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);z-index:1}button.ui-dialog-titlebar-close:before{content:none !important}.updraft_next_scheduled_backups_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;background:#FFF;justify-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.updraft_next_scheduled_backups_wrapper>div{width:50%;background:#FFF;height:auto;padding:33px;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_backup_btn_wrapper{text-align:center;border-left:1px solid #f1f1f1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.incremental-backups-only{display:none}.incremental-free-only{display:none}.incremental-free-only p{padding:5px;background:rgba(255,0,0,0.06);border:1px solid #bfbfbf}#updraft-delete-waitwarning span.spinner{visibility:visible;float:none;margin:0;margin-right:10px}button#updraft-backupnow-button .spinner,button#updraft-backupnow-button .dashicons-yes{display:none}button#updraft-backupnow-button.loading .spinner{display:inline-block;visibility:visible;margin-top:13px;margin-right:0}button#updraft-backupnow-button.loading{background-color:#efefef;border-color:#CCC;text-shadow:0 -1px 1px #bbc3c7,1px 0 1px #bbc3c7,0 1px 1px #bbc3c7,-1px 0 1px #bbc3c7;-webkit-box-shadow:none;box-shadow:none}button#updraft-backupnow-button.finished .dashicons-yes{display:inline-block;visibility:visible;font-size:42px;margin-right:0;margin-top:2px}.updraft_next_scheduled_entity{width:50%;display:inline-block;float:left}.updraft_next_scheduled_entity .dashicons{color:#CCC;font-size:20px}.updraft_next_scheduled_entity strong{font-size:20px}.updraft_next_scheduled_heading{margin-bottom:10px}.updraft_next_scheduled_date_time{color:#46a84b}.updraft_time_now_wrapper{margin-top:68px;width:100%}.updraft_time_now_label,.updraft_time_now{display:inline-block;padding:7px}.updraft_time_now_label{background:#b7b7b7;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#FFF;margin-right:0;text-shadow:0 1px 2px rgba(0,0,0,0.4)}.updraft_time_now{background:#f1f1f1;border-top-right-radius:4px;border-bottom-right-radius:4px;margin-left:-3px}#updraft_lastlogmessagerow{margin:6px 0}#updraft_lastlogmessagerow{clear:both;padding:.25px 0}#updraft_lastlogmessagerow .updraft-log-link{float:right;margin-top:-2.5em;margin-right:2px}#updraft_lastlogmessagerow>div{clear:both;background:#FFF;padding:18px}#updraft_activejobs_table{overflow:hidden;width:100%;background:#fafafa;padding:0}.updraft_requeststart{padding:15px 33px;text-align:center}.updraft_requeststart .spinner{visibility:visible;float:none;vertical-align:middle;margin-top:-2px}a.updraft_jobinfo_delete.disabled{opacity:.4;color:inherit;text-decoration:none}.updraft_row{clear:both;-webkit-transition:.3s all;transition:.3s all;padding:15px 33px}.updraft_row.deleting{opacity:.4}.updraft_existing_backups_count{padding:2px 8px;font-size:12px;background:#ca4a1e;color:#FFF;font-weight:bold;border-radius:10px}.form-table .existing-backups-table input[type="checkbox"]{border-radius:0}.form-table .existing-backups-table .check-column{width:40px;padding:0;padding-top:8px}.existing-backups-buttons{font-size:11px;line-height:1.4em;border-width:3px}.existing-backups-restore-buttons{font-size:11px;line-height:1.4em;border-width:3px}.button-delete{color:#e23900;border-color:#e23900;font-size:14px;line-height:1.4em;border-width:2px;margin-right:10px}.button-view-log,.button-mass-selectors{color:darkgrey;border-color:darkgrey;font-size:14px;line-height:1.4em;border-width:2px;margin-top:-1px}.button-view-log{width:120px}.button-existing-restore{font-size:14px;line-height:1.4em;border-width:2px;width:110px}.main-restore{margin-right:3%;margin-left:3%}.button-entity-backup{color:#555;border-color:#555;font-size:11px;line-height:1.4em;border-width:2px;margin-right:5px}.button-select-all{width:122px}.button-deselect{width:92px}#ud_massactions>.display-flex>.mass-selectors-margins,#updraft-delete-waitwarning>.display-flex>.mass-selectors-margins{margin-right:-4px}.udp-button-primary{border-width:4px;color:#0073aa;border-color:#0073aa;font-size:14px;height:40px}#ud_massactions .button-delete{margin-right:0}.stored_local{border-radius:5px;background-color:#007fe7;padding:3px 5px 5px 5px;color:#FFF;font-size:75%}span#updraft_lastlogcontainer{word-break:break-all}.stored_icon{height:1.3em;position:relative;top:.2em}.backup_date_label>*{vertical-align:middle}.backup_date_label .dashicons{font-size:18px}.backup_date_label .clear-right{clear:right}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:bold}.udp-logo-70{width:70px;height:70px;float:left;padding-right:25px}h3 .thank-you{margin-top:0}.ws_advert{max-width:800px;font-size:140%;line-height:140%;padding:14px;clear:left}.dismiss-dash-notice{float:right;position:relative;top:-20px}.updraft_exclude_container,.updraft_include_container{margin-left:24px;margin-top:5px;margin-bottom:10px;padding:15px;border:1px solid #DDD}label.updraft-exclude-label{font-weight:500;margin-bottom:5px;display:inline-block}.updraft_add_exclude_item,#updraft_include_more_paths_another{display:inline-block;margin-top:10px}input.updraft_exclude_entity_field,.form-table td input.updraft_exclude_entity_field,.updraftplus-morefiles-row input[type=text]{width:calc(100% - 70px);max-width:400px}.updraft-fs-italic{font-style:italic}@media screen and (max-width:782px){.form-table td input.updraft_exclude_entity_field,.form-table td .updraftplus-morefiles-row input[type=text]{display:inline-block}}.updraft_exclude_entity_delete.dashicons,.updraft_exclude_entity_edit.dashicons,.updraft_exclude_entity_update.dashicons,.updraftplus-morefiles-row a.dashicons{margin-top:2px;font-size:20px;-webkit-box-shadow:none;box-shadow:none;line-height:1;padding:3px;margin-right:4px}.updraft_exclude_entity_delete,.updraft_exclude_entity_delete:hover,.updraftplus-morefiles-row-delete{color:#ff6347}.updraft_exclude_entity_update.dashicons,.updraft_exclude_entity_update.dashicons:hover{color:#008000;font-weight:bold;font-size:22px;margin-left:4px}.updraft_exclude_entity_edit{margin-left:4px}.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete{display:none}.updraft-exclude-panel-heading{margin-bottom:8px}.updraft-exclude-panel-heading h3{margin:.5em 0 .5em 0}.updraft-exclude-submit.button-primary{margin-top:5px}.updraft_exclude_actions_list{font-weight:bold}.updraft-exclude-link{cursor:pointer}#updraft_include_more_options{padding-left:25px}#updraft_report_cell .updraft_reportbox,.updraft_small_box{padding:12px;margin:8px 0;border:1px solid #CCC;position:relative}#updraft_report_cell button.updraft_reportbox_delete,.updraft_box_delete_button,.updraft_small_box .updraft_box_delete_button{padding:4px;padding-top:6px;border:0;background:transparent;position:absolute;top:4px;right:4px;cursor:pointer}#updraft_report_cell button.updraft_reportbox_delete:hover{color:#de3c3c}a.updraft_report_another .dashicons{text-decoration:none;margin-top:2px}.updraft_report_dbbackup.updraft_report_disabled{color:#CCC}#updraft-navtab-settings-content .updraft-test-button{font-size:18px !important}#updraft_report_cell .updraft_report_email{display:block;width:calc(100% - 50px);margin-bottom:9px}#updraft_report_cell .updraft_report_another_p{clear:left}#updraft-navtab-settings-content table.form-table p{max-width:700px}#updraft-navtab-settings-content table.form-table .notice p{max-width:none}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected,#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td{background-color:#efefef}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td{background-color:#e8e8e8}.updraft_settings_sectionheading{display:none}.updraft-backupentitybutton-disabled{background-color:transparent;border:0;color:#0074a2;text-decoration:underline;cursor:pointer;clear:none;float:left}.updraft-backupentitybutton{margin-left:8px}.updraft-bigbutton{padding:2px 0 !important;margin-right:14px !important;font-size:22px !important;min-height:32px;min-width:180px}tr[class*="_updraft_remote_storage_border"]{border-top:1px solid #CCC}.updraft_multi_storage_options{float:right;clear:right;margin-bottom:5px !important}.updraft_toggle_instance_label{vertical-align:top !important}.updraft_debugrow th{float:right;text-align:right;font-weight:bold;padding-right:8px;min-width:140px}.updraft_debugrow td{min-width:300px;vertical-align:bottom}.updraft_webdav_host_error,.onedrive_folder_error{color:red}label[for=updraft_servicecheckbox_updraftvault]{position:relative}#updraft-wrap .udp-info{position:absolute;right:10px;top:calc(50% - 10px)}#updraft-wrap span.info-trigger{display:inline-block;width:20px;height:20px;background:#FFF;color:#72777c;border-radius:30px;text-align:center;line-height:20px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.15);box-shadow:0 1px 3px rgba(0,0,0,0.15)}#updraft-wrap .info-content-wrapper{display:none;position:absolute;bottom:20px;-webkit-transform:translatex(calc(-50% + 10px));transform:translatex(calc(-50% + 10px));width:330px;padding-bottom:10px}#updraft-wrap .info-content-wrapper::before{content:'';position:absolute;bottom:-10px;border:10px solid transparent;border-top-color:#FFF;left:calc(50% - 10px)}#updraft-wrap .info-content{padding:20px;background:#FFF;border-radius:4px;-webkit-box-shadow:0 3px 10px rgba(0,0,0,0.1);box-shadow:0 3px 10px rgba(0,0,0,0.1);color:#72777c}#updraft-wrap .info-content h3{margin-top:0}#updraft-wrap .info-content p{margin-top:10px}#updraft-wrap .udp-info:hover .info-content-wrapper{display:block}div.conditional_remote_backup select.logic_type{vertical-align:inherit !important}div.conditional_remote_backup label.updraft_toggle_instance_label.radio_group{display:block;margin-top:7px}div.conditional_remote_backup div.logic ul.rules input.rule_value{vertical-align:middle}div.conditional_remote_backup p{margin-bottom:10px}div.conditional_remote_backup div.logic ul.rules span svg{width:20px;vertical-align:middle;cursor:pointer}div.conditional_remote_backup div.logic ul.rules span svg{margin-left:3px}div.conditional_remote_backup div.logic select.logic_type{vertical-align:unset}.updraft_jstree .jstree-container-ul>.jstree-node,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-node{background:transparent}.updraft_jstree .jstree-container-ul>.jstree-open>.jstree-ocl,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-open>.jstree-ocl{background-position:-36px -4px}.updraft_jstree .jstree-container-ul>.jstree-closed>.jstree-ocl,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-closed>.jstree-ocl{background-position:-4px -4px}.updraft_jstree .jstree-container-ul>.jstree-leaf>.jstree-ocl,div[id^="updraft_more_files_jstree_"] .jstree-container-ul>.jstree-leaf>.jstree-ocl{background:transparent}#updraft_zip_files_container{position:relative;height:450px;overflow:none}.updraft_jstree_info_container{position:relative;height:auto;width:100%;border:1px dotted;margin-bottom:5px}.updraft_jstree_info_container p{margin:1px;padding-left:10px;font-size:14px}#updraft_zip_download_item{display:none;color:#0073aa;padding-left:10px}#updraft_zip_download_notice{padding-left:10px}#updraft_exclude_files_folders_jstree,#updraft_exclude_files_folders_wildcards_jstree{max-height:200px;overflow-y:scroll}.updraft_jstree{position:relative;border:1px dotted;height:80%;width:100%;overflow:auto}div[id^="updraft_more_files_container_"]{position:relative;display:none;width:100%;border:1px solid #CCC;background:#fafafa;margin-bottom:5px;margin-top:4px;-webkit-box-shadow:0 5px 8px rgba(0,0,0,0.1);box-shadow:0 5px 8px rgba(0,0,0,0.1)}div[id^="updraft_more_files_container_"]::before{content:' ';width:11px;height:11px;display:block;background:#fafafa;position:absolute;top:0;left:20px;border-top:1px solid #CCC;border-left:1px solid #CCC;-webkit-transform:translatey(-7px) rotate(45deg);transform:translatey(-7px) rotate(45deg)}input.updraft_more_path_editing{border-color:#0285ba}input.updraft_more_path_editing ~ a.dashicons{display:none}div[id^="updraft_jstree_buttons_"]{padding:10px;background:#e6e6e6}div[id^="updraft_jstree_container_"]{height:300px;width:100%;overflow:auto}div[id^="updraft_more_files_container_"] button{line-height:20px}button[id^="updraft_parent_directory_"]{margin:10px 10px 4px 10px;padding-left:3px}button[id^="updraft_jstree_confirm_"],button[id^="updraft_jstree_cancel_"]{display:none}input[id^="updraft_include_more_path_restore_"]{text-align:right}.updraftplus-morefiles-row-delete,.updraftplus-morefiles-row-edit{cursor:pointer}#updraft_include_more_paths_error{color:#de3c3c}p[id^="updraftplus_manual_authentication_error_"]{color:#de3c3c}#updraft-wrap .form-table th{width:230px}#updraft-wrap .form-table .existing-backups-table th{width:auto}.updraft-viewlogdiv form{margin:0;padding:0}.updraft-viewlogdiv{display:inline-block}.updraft-viewlogdiv input,.updraft-viewlogdiv a{border:0;background-color:transparent;color:#000;margin:0;padding:3px 4px;font-size:16px;line-height:26px}.updraft-viewlogdiv input:hover,.updraft-viewlogdiv a:hover{color:#FFF;cursor:pointer}.button.button-remove{color:white;background-color:#de3c3c;border-color:#c00000;-webkit-box-shadow:0 1px 0 #c10100;box-shadow:0 1px 0 #c10100}.button.button-remove:hover,.button.button-remove:focus{border-color:#C00;color:#FFF;background:#C00}body.admin-color-midnight .button.button-remove{color:#de3c3c;background-color:#f7f7f7;border-color:#CCC;-webkit-box-shadow:0 1px 0 #CCC;box-shadow:0 1px 0 #CCC}body.admin-color-midnight .button.button-remove:hover,body.admin-color-midnight .button.button-remove:focus{border-color:#ba281f}body.admin-color-midnight .button.button-remove:focus{-webkit-box-shadow:inherit;box-shadow:inherit;-webkit-box-shadow:0 0 3px rgba(0,115,170,0.8);box-shadow:0 0 3px rgba(0,115,170,0.8)}.drag-drop #drag-drop-area2{border:4px dashed #DDD;height:200px}#drag-drop-area2 .drag-drop-inside{margin:36px auto 0;width:350px}#filelist,#filelist2{width:100%}#filelist .file,#filelist2 .file,.ud_downloadstatus .file,#ud_downloadstatus2 .file,#ud_downloadstatus3 .file{padding:1px;background:#ececec;border:solid 1px #CCC;margin:4px 0}.updraft_premium section{margin-bottom:20px}.updraft_premium_cta{background:#FFF;margin-top:30px;padding:0;border-left:4px solid #db6a03}.updraft_premium_cta a{font-weight:normal}.updraft_premium_cta__action{position:relative;text-align:center}.updraft_premium_cta a.button.button-primary.button-hero{font-size:1.3em;letter-spacing:.03rem;text-transform:uppercase;margin-bottom:7px}.updraft_premium_cta a.button.button-primary.button-hero+small{display:block;max-width:100%;text-align:center;color:#afafaf}.updraft_premium_cta a.button.button-primary.button-hero+small .dashicons{width:12px;height:12px}.updraft_premium_cta__top{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;padding:18px 30px}.updraft_premium_cta__bottom{background:#f9f9f9;padding:5px 30px}.updraft_premium_cta__summary{margin-right:60px}.updraft_premium_cta h2{font-size:28px;font-weight:200;line-height:1;margin:0;margin-bottom:5px;letter-spacing:.05rem;color:#db6a03}.updraft_premium_cta ul li::after{color:#CCC}@media only screen and (max-width:768px){.updraft_premium_cta__top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updraft_premium_cta__summary{margin-right:0;margin-bottom:30px}}.udp-box{background:#FFF;padding:20px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1);text-align:center}.udp-box h3{margin:0}.udp-box__heading{-ms-flex-item-align:center;align-self:center;background:0;-webkit-box-shadow:none;box-shadow:none}.updraft-more-plugins{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;flex-wrap:wrap}.updraft-more-plugins img{max-width:80%;max-height:30%;display:inline-block}.updraft-more-plugins .udp-box{-webkit-box-sizing:border-box;box-sizing:border-box;width:24%}.updraft-more-plugins .udp-box p:last-child{margin-bottom:0;padding-bottom:0}.updraft_premium_description_list{text-align:left;margin:0;font-size:12px}ul.updraft_premium_description_list,ul#updraft_restore_warnings{list-style:disc inside}ul.updraft_premium_description_list li{display:inline}ul.updraft_premium_description_list li::after{content:" | "}ul.updraft_premium_description_list li:last-child::after{content:""}.updraft_feature_cell{background-color:#f7d9c9 !important;padding:5px 10px}.updraftplus_com_login_status,.updraftplus_com_key_status{display:none;background:#FFF;border-left:4px solid #FFF;border-left-color:#dc3232;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 0 15px 0;padding:5px 12px}.updraftplus_com_login_status.success{border-left-color:green}#updraft-wrap strong.success{color:green}.updraft_feat_table{border:0;border-collapse:collapse;font-size:120%;background-color:white;text-align:center}.updraft_feat_th,.updraft_feat_table td{border:1px solid #f1f1f1;border-collapse:collapse;font-size:120%;background-color:white;text-align:center;padding:15px}.updraft_feat_table td{border-bottom-width:4px}.updraft_feat_table td:first-child{border-left:0}.updraft_feat_table td:last-child{border-right:0}.updraft_feat_table tr:last-child td{border-bottom:0}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){background-color:rgba(241,241,241,0.38);width:190px}.updraft_feat_table__header td img{display:block;margin:0 auto}.updraft_feat_table__header td{text-align:center}.updraft_feat_table .installed{font-size:14px}.updraft_feat_table p{padding:0 10px;margin:5px 0;font-size:13px}.updraft_feat_table h4{margin:5px 0}.updraft_feat_table .dashicons{width:25px;height:25px;font-size:25px;line-height:1}.updraft_feat_table .dashicons-yes,.updraft_feat_table .updraft-yes{color:green}.updraft_feat_table .dashicons-no-alt,.updraft_feat_table .updraft-no{color:red}.updraft_tick_cell{text-align:center}.updraft_tick_cell img{margin:4px 0;height:24px}.ud_downloadstatus__close{border:0;background:transparent;width:auto;font-size:20px;padding:0;cursor:pointer}#filelist .fileprogress,#filelist2 .fileprogress,.ud_downloadstatus .dlfileprogress,#ud_downloadstatus2 .dlfileprogress,#ud_downloadstatus3 .dlfileprogress{width:0;background:#0572aa;height:8px;-webkit-transition:width .3s;transition:width .3s}.ud_downloadstatus .raw,#ud_downloadstatus2 .raw,#ud_downloadstatus3 .raw{margin-top:8px;clear:left}.ud_downloadstatus .file,#ud_downloadstatus2 .file,#ud_downloadstatus3 .file{margin-top:8px}div[class^="updraftplus_downloader_container_"]{padding:10px}tr.updraftplusmethod h3{margin:0}tr.updraftplusmethod img{max-width:100%}#updraft_retain_db_rules .updraft_retain_rules_delete,#updraft_retain_files_rules .updraft_retain_rules_delete{cursor:pointer;color:red;font-size:120%;font-weight:bold;border:0;border-radius:3px;padding:2px;margin:0 6px;text-decoration:none;display:inline-block}#updraft_retain_db_rules .updraft_retain_rules_delete:hover,#updraft_retain_files_rules .updraft_retain_rules_delete:hover{cursor:pointer;color:white;background:red}#updraft_backup_started{max-width:800px;font-size:140%;line-height:140%;padding:14px;clear:left}.blockUI.blockOverlay.ui-widget-overlay{background:#000}.updraft_success_popup{text-align:center;padding-bottom:30px}.updraft_success_popup>.dashicons{font-size:100px;width:100px;height:100px;line-height:100px;padding:0;border-radius:50%;margin-top:30px;display:block;margin-left:auto;margin-right:auto;background:#e2e6e5}.updraft_success_popup>.dashicons.dashicons-yes{text-indent:-5px}.updraft_success_popup.success>.dashicons{color:green}.updraft_success_popup.warning>.dashicons{color:#888}.updraft_success_popup--message{padding:20px}.button.updraft-close-overlay .dashicons{text-decoration:none;font-size:20px;margin-left:-5px;padding:0;-webkit-transform:translatey(3px);transform:translatey(3px)}.updraft_saving_popup img{-webkit-animation-name:udp_blink;animation-name:udp_blink;-webkit-animation-duration:610ms;animation-duration:610ms;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-direction:alternate;animation-direction:alternate;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}.udp-premium-image{display:none}@media screen and (min-width:720px){.udp-premium-image{display:block;float:left;padding-right:5px}}#plupload-upload-ui2{width:80%}.backup-restored{padding:8px}.updated.backup-restored{padding-top:15px;padding-bottom:15px}.backup-restored span{font-size:120%}.memory-limit{padding:8px}.updraft_list_errors{padding:8px}.nav-tab-wrapper{margin:14px 0}#updraft-poplog-content{white-space:pre-wrap}.next-backup{border:0;padding:0;margin:0 10px 0 0}.not-scheduled{vertical-align:top !important;margin:0 !important;padding:0 !important}.next-backup .updraft_scheduled{margin:0;padding:2px 4px 2px 0}#next-backup-table-inner td{vertical-align:top}.updraft_all-files{color:blue}.multisite-advert-width{width:800px}.updraft_settings_sectionheading{margin-top:6px}section.premium-upgrade-purchase-success{padding:2em;background:#fafafa;text-align:center;-webkit-box-shadow:0 14px 40px rgba(0,0,0,0.1);box-shadow:0 14px 40px rgba(0,0,0,0.1)}section.premium-upgrade-purchase-success h3{font-size:2em;color:green}section.premium-upgrade-purchase-success h3 .dashicons{display:block;margin:0 auto;font-size:60px;width:60px;height:60px;border-radius:50%;background:green;color:#FFF;margin-bottom:20px}section.premium-upgrade-purchase-success h3 .dashicons::before{display:inline-block;margin-left:-4px;margin-top:2px}section.premium-upgrade-purchase-success p{font-size:120%}.show_admin_restore_in_progress_notice{padding:8px}.show_admin_restore_in_progress_notice .unfinished-restoration{font-size:120%}#backupnow_includefiles_moreoptions,#backupnow_database_moreoptions,#backupnow_includecloud_moreoptions{margin:4px 16px 6px 16px;border:1px dotted;padding:6px 10px}#backupnow_database_moreoptions{max-height:250px;overflow:auto}#backupnow_database_moreoptions div.backupnow-db-tables{margin-bottom:5px}#backupnow_database_moreoptions div.backupnow-db-tables>a{color:#0073aa}.form-table #updraft_activejobsrow .minimum-height{min-height:100px}#updraft_activejobsrow th{max-width:112px;margin:0;padding:13px 0 0 0}#updraft_lastlogmessagerow .last-message{padding-top:20px;display:block}.updraft_simplepie{vertical-align:top}.download-backups{margin-top:8px}.download-backups .updraft_download_button{margin-right:6px}.download-backups .ud-whitespace-warning,.download-backups .ud-bom-warning{background-color:pink;padding:8px;margin:4px;border:1px dotted}.download-backups .ul{list-style:none inside;max-width:800px;margin-top:6px;margin-bottom:12px}#updraft-plupload-modal{margin:16px 0}.download-backups .upload{max-width:610px}.download-backups #plupload-upload-ui{width:100%}.ud_downloadstatus{padding:10px 0}#ud_massactions,#updraft-delete-waitwarning{padding:14px;background:#f1f1f1;position:absolute;left:0;top:100%}#ud_massactions>*,#updraft-delete-waitwarning>*{vertical-align:middle}#ud_massactions .updraftplus-remove{display:inline-block;margin-right:0}#ud_massactions .updraftplus-remove a{text-decoration:none}#ud_massactions .updraft-viewlogdiv a{text-decoration:none;position:relative}small.ud_massactions-tip{display:inline-block;opacity:.5;font-style:italic;margin-left:20px}#updraft-navtab-backups-content .updraft_existing_backups{margin-bottom:35px;position:relative}#updraft-message-modal-innards{padding:4px}#updraft-authenticate-modal{text-align:center;font-size:16px !important}#updraft-authenticate-modal p{font-size:16px}div.ui-dialog.ui-widget.ui-widget-content{z-index:99999 !important}#updraft_delete_form p{margin-top:3px;padding-top:0}#updraft_restore_form .cannot-restore{margin:8px 0}.notice.updraft-restore-option{padding:12px;margin:8px 0 4px 0;border-left-color:#CCC}#updraft_restorer_dboptions h4{margin:0 0 6px 0;padding:0}.updraftplus_restore_tables_options_container{max-height:250px;overflow:auto}.updraft_debugrow th{vertical-align:top;padding-top:6px;max-width:140px}.expertmode p{font-size:125%}.expertmode .call-wp-action{width:300px;height:22px}.updraftplus-lock-advert{clear:left;max-width:600px}.uncompressed-data{clear:left;max-width:600px}.delete-old-directories{padding:8px;padding-bottom:12px}.active-jobs{width:100%;text-align:center;padding:33px}.job-id{margin-top:0;margin-bottom:8px}.next-resumption{font-weight:bold}.updraft_percentage{z-index:-1;position:absolute;left:0;top:0;text-align:center;background-color:#1d8ec2;-webkit-transition:width .3s;transition:width .3s}.curstage{z-index:1;border-radius:2px;margin-top:8px;width:100%;height:26px;line-height:26px;position:relative;text-align:center;font-style:italic;color:#FFF;background-color:#b7b7b7;text-shadow:0 1px 2px rgba(0,0,0,0.3)}.curstage-info{display:inline-block;z-index:2}.retain-files{width:48px}.backup-interval-description tr td div{max-width:670px}#updraft-manualdecrypt-modal{width:85%;margin:6px;margin-left:100px}.directory-permissions{font-size:110%;font-weight:bold}.double-warning{border:1px solid;padding:6px}.raw-backup-info{font-style:italic;font-weight:bold;font-size:120%}.updraft_existingbackup_date{width:22%;max-width:140px}.updraft_existing_backups_wrapper{margin-top:20px;border-top:1px solid #DDD}.updraft-no-backups-msg{padding:10px 40px;text-align:center;font-style:italic}.tr-bottom-4{margin-bottom:4px}.existing-backups-table th{padding:8px 10px}.form-table .backup-date{width:172px}.form-table .backup-data{width:426px}.form-table .updraft_backup_actions{width:272px}.existing-date{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:140px;width:25%}.line-break-tr{height:2px;padding:1px;margin:0}.line-break-td{margin:0;padding:0}.td-line-color{height:2px;background-color:#888}.raw-backup{max-width:140px}.existing-backups-actions{padding:1px;margin:0}.existing-backups-border{height:2px;padding:1px;margin:0}.existing-backups-border>td{margin:0;padding:0}.existing-backups-border>div{height:2px;background-color:#AAA}.updraft_existing_backup_date{max-width:140px}.updraftplus-upload{margin-right:6px;float:left;clear:none}.before-restore-button{padding:1px;margin:0}.before-restore-button div{float:none;display:inline-block}.table-separator-tr{height:2px;padding:1px;margin:0}.table-separator-td{margin:0;padding:0}.end-of-table-div{height:2px;background-color:#AAA}.last-backup-job{padding-top:3% !important}.line-height-03{line-height:.3 !important}.line-height-13{line-height:1.3 !important}.line-height-23{line-height:2.3 !important}#updraft_diskspaceused{color:#df6926}#updraft_delete_old_dirs_pagediv{padding-bottom:10px}.fix-time{width:70px}.retain-files{width:70px}.number-input{min-width:50px;max-width:70px}.additional-rule-width{min-width:60px;max-width:70px}#updraft-wrap .dashicons.dashicons-adapt-size{line-height:inherit;font-size:inherit}#updraft-wrap .button span.dashicons:not(.dashicons-adapt-size){vertical-align:middle;margin-top:-3px}.addon-logo-150{margin-left:30px;margin-top:33px;height:125px;width:150px}.margin-bottom-50{margin-bottom:50px}.premium-container{width:80%}.main-header{background-color:#df6926;height:200px;width:100%}.button-add-to-cart{color:white;border-color:white;float:none;margin-right:17px}.button-add-to-cart:hover,.button-add-to-cart:focus,.button-add-to-cart:active{border-color:#a0a5aa;color:#a0a5aa}.addon-title{margin-top:25px}.addon-text{margin-top:75px}.image-main-div{width:25%;float:left}.text-main-div{width:60%;float:left;text-align:center;color:white;margin-top:16px}.text-main-div-title{font-weight:bold !important;color:white;text-align:center}.text-main-div-paragraph{color:white}.updraftplus-vault-cta{width:100%;text-align:center;margin-bottom:50px}.updraftplus-vault-cta h1{font-weight:bold}.updraftvault-buy{width:225px;height:225px;border:2px solid #777;display:inline-table;margin:0 auto;margin-right:50px;position:relative}.updraftplus-vault-cta>.vault-options>.center-vault{width:275px;height:275px}.updraftplus-vault-cta>.vault-options>.center-vault>a{right:21%;font-size:16px;border-width:4px !important}.updraftplus-vault-cta>.vault-options>.center-vault>p{font-size:16px}.updraftvault-buy .button-purchase{right:24%;margin-left:0;line-height:1.7em}.updraftvault-buy hr{height:2px;background-color:#777;margin-top:18px}.right{margin-right:0}.updraftvault-buy .addon-logo-100{height:100px;width:125px;margin-top:7px}.updraftvault-buy .addon-logo-large{margin-top:7px}.updraftvault-buy .button-buy-vault{font-size:12px;color:#df6926;border-color:#df6926;border-width:2px !important;position:absolute;right:29%;bottom:2%}.premium-addon-div .button-purchase{line-height:1.7em}.updraftvault-buy .button-buy-vault:hover{border-color:darkgrey;color:darkgrey}.premium-addons{margin-top:80px;width:100%;margin:0 auto;display:table}.addon-list{display:table;text-align:center}.premium-addons h1{text-align:center;font-weight:bold}.premium-addons p{text-align:center}.premium-addons .premium-addon-div{width:200px;height:250px;border:2px solid #777;display:inline-table;margin:0 auto;margin-right:25px;margin-top:25px;text-align:center;position:relative}.premium-addons .premium-addon-div p{margin-left:2px;margin-right:2px}.premium-addons .premium-addon-div img{width:auto;height:50px;margin-top:7px}.premium-addons .premium-addon-div .hr-alignment{margin-top:44px}.premium-addons .premium-addon-div .dropbox-logo{height:39px;width:150px}.premium-addons .premium-addon-div .azure-logo,.premium-addons .premium-addon-div .onedrive-logo{width:75%;height:24px}.button-purchase{font-size:12px;color:#df6926;border-color:#df6926;border-width:2px !important;position:absolute;right:25%;bottom:2%}.button-purchase:hover{color:darkgrey;border-color:darkgrey}.premium-addons .premium-addon-div hr{height:2px;background-color:#777;margin-top:18px}.premium-addon-div p{font-style:italic}.addon-list>.premium-addon-div>.onedrive-fix,.addon-list>.premium-addon-div>.azure-logo{margin-top:33px}.addon-list>.premium-addon-div>.dropbox-fix{margin-top:18px}.premium-forgotton-something{margin-top:5%}.premium-forgotton-something h1{text-align:center;font-weight:bold}.premium-forgotton-something p{text-align:center;font-weight:normal}.premium-forgotton-something .button-faq{color:#df6926;border-color:#df6926;margin:0 auto;display:table}.premium-forgotton-something .button-faq:hover{color:#777;border-color:#777}.updraftplusmethod.updraftvault #vaultlogo{padding-left:40px}.updraftplusmethod.updraftvault .vault_primary_option{float:left;width:50%;text-align:center;padding-bottom:20px}.updraftplusmethod.updraftvault .vault_primary_option div{clear:right;padding-top:20px}.updraftplusmethod.updraftvault .clear-left{clear:left}.updraftplusmethod.updraftvault .padding-top-20px{padding-top:20px}.updraftplusmethod.updraftvault .padding-top-14px{padding-top:14px}.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary,.updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary{font-size:18px !important}.updraftplusmethod.updraftvault #updraftvault_showoptions,.updraftplusmethod.updraftvault #updraftvault_connect{margin-top:8px}.updraftplusmethod.updraftvault #updraftvault_settings_connect input{margin-right:10px}.updraftplusmethod.updraftvault #updraftvault_email{width:280px}.updraftplusmethod.updraftvault #updraftvault_pass{width:200px}.updraftplusmethod.updraftvault #vault-is-connected{margin:0;padding:0}.updraftplusmethod.updraftvault #updraftvault_settings_default p{clear:left}.updraftplusmethod.updraftvault .vault-purchase-option-container{text-align:center}.updraftplusmethod.updraftvault .vault-purchase-option{width:40%;text-align:center;padding-top:20px;display:inline-block}.updraftplusmethod.updraftvault .vault-purchase-option-size{font-size:200%;font-weight:bold}.updraftplusmethod.updraftvault .vault-purchase-option-link{clear:both;font-size:150%}.updraftplusmethod.updraftvault .vault-purchase-option-or{clear:both;font-size:115%;font-style:italic}.autobackup-image{clear:left;float:left;width:110px;height:110px}.autobackup-description{width:100%}.advert-description{float:left;clear:right;padding:4px 10px 8px 10px;width:70%;clear:right;vertical-align:top}.advert-btn{display:inline-block;min-width:10%;vertical-align:top;margin-bottom:8px}.advert-btn:first-of-type{margin-top:25px}.advert-btn a{display:block;cursor:pointer}a.btn-get-started{background:#FFF;border:2px solid #df6926;border-radius:4px;color:#df6926;display:inline-block;margin-left:10px !important;margin-bottom:7px !important;font-size:18px !important;line-height:20px;min-height:28px;padding:11px 10px 5px 10px;text-transform:uppercase;text-decoration:none}.circle-dblarrow{border:1px solid #df6926;border-radius:100%;display:inline-block;font-size:17px;line-height:17px;margin-left:5px;width:20px;height:20px;text-align:center}.expertmode .advanced_settings_container{height:auto;overflow:hidden}.expertmode .advanced_settings_container .advanced_settings_menu{float:none;border-bottom:1px solid #ccc}.expertmode .advanced_settings_container .advanced_settings_content{padding-top:5px;float:none;width:auto;overflow:auto}.expertmode .advanced_settings_container .advanced_settings_content h3:first-child{margin-top:5px !important}.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools{display:none}.expertmode .advanced_settings_container .advanced_settings_content .site_info{display:block}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{display:inline-block;cursor:pointer;padding:5px;color:#000}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text{font-size:16px}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover{background-color:#eaeaea}.expertmode .advanced_settings_container .advanced_settings_menu .active{background-color:#3498db;color:#FFF}.expertmode .advanced_settings_container .advanced_settings_menu .active:hover{background-color:#72c5fd;color:#FFF}.expertmode .advanced_settings_container .advanced_settings_content input#import_settings{height:auto !important}div#updraft-wrap a{cursor:pointer !important}.updraftcentral_wizard_option{width:45%;float:left;text-align:center}.updraftcentral_wizard_option label{margin-bottom:8px}#updraftcentral_keys_table{display:none}.create_key_container{border:1px solid;border-radius:4px;padding:0 0 6px 6px;margin-bottom:8px}.updraftcentral_cloud_connect{border-radius:4px;border:1px solid #000;padding:0 20px;margin-top:30px;background-color:#FFF}.updraftcentral_cloud_error{border:1px solid #000;padding:3px 10px;border-left:3px solid #F00;background-color:#FFF;margin-bottom:10px}.updraftcentral_cloud_info{border:1px solid #000;padding:3px 10px;border-left:3px solid #ef8f31;background-color:#FFF;margin-bottom:10px}.updraftplus_spinner.spinner{padding-left:25px;float:none}.updraftplus_spinner.spinner.visible{visibility:visible;width:auto}.updraftcentral_cloud_notices .updraftplus_spinner{margin-top:-5px}.updraftcentral-subheading{font-size:14px;margin-top:-10px;margin-bottom:20px}#updraftcentral_cloud_form input#email,#updraftcentral_cloud_form input#password{min-width:250px}.updraftcentral-data-consent{font-size:13px;margin-bottom:10px}.updraftcentral_cloud_wizard_image{float:left;min-width:100px;margin-right:25px}.updraftcentral_cloud_wizard{float:left}.updraftcentral_cloud_clear{clear:both}.updraftplus-settings-footer{margin-top:30px}.updraftplus-top-menu{padding:.5em}#updraft_inpage_backup #updraft_activejobs_table{background:transparent}#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link{float:none}#updraft_inpage_backup #updraft_activejobsrow .updraft_row{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:20px;padding-right:20px}#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container{width:100%}#updraft_inpage_backup #updraft_activejobs_table{overflow:inherit}#updraft_inpage_backup span#updraft_lastlogcontainer{padding:18px;background:#fafafa;display:block;font-size:90%;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup div#updraft_activejobsrow{background:#fafafa;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.1);box-shadow:0 1px 2px rgba(0,0,0,0.1)}#updraft_inpage_backup #updraft_lastlogmessagerow>div{background:transparent;padding:0}#updraft_inpage_backup .last-message>strong{display:block;margin-top:13px}body.update-core-php #updraft_inpage_backup h2:nth-child(1){margin-top:1em !important}.updraft_restore_container{display:block;position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999;padding-top:30px;background:#f1f1f1;overflow:auto}.updraft-modal-is-opened .select2-container{z-index:99999}body.updraft-modal-is-opened{overflow:hidden}.updraft_restore_container h2{margin:0}.updraft_restore_container .updraftmessage{-webkit-box-sizing:border-box;box-sizing:border-box;max-width:860px;margin-left:auto;margin-right:auto}.updraft_restore_main{max-width:860px;margin:0 auto;margin-top:20px;background:#FFF;-webkit-box-shadow:0 3px 3px rgba(0,0,0,0.1);box-shadow:0 3px 3px rgba(0,0,0,0.1);position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_restore_main--header{font-size:20px;font-weight:bold;text-align:center;padding-top:16px;line-height:20px;width:100%;max-width:100%;padding-right:30px;padding-left:30px;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_restore_main--activity{position:relative;width:calc(100% - 350px);-webkit-box-sizing:border-box;box-sizing:border-box}.updraft_restore_main--activity-title{padding:20px;margin:0}.show-credentials-form.updraft_restore_main .updraft_restore_main--activity-title{display:none}.updraft_restore_main--components{width:350px;padding:20px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#f8f8f8;min-height:350px}.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output{background:#23282d;color:#e3e3e3;font-family:monospace;padding:19px;overflow:auto;position:absolute;top:60px;bottom:0;right:0;left:0}#updraftplus_ajax_restore_output form{white-space:normal;font-family:-apple-system,blinkmacsystemfont,"Segoe UI",roboto,oxygen-sans,ubuntu,cantarell,"Helvetica Neue",sans-serif}#updraftplus_ajax_restore_output .updraft_restore_errors{border:1px solid #dc3232;padding:10px 20px;white-space:normal}.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output h2{color:#00a0d2;padding-top:10px;padding-bottom:5px}.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output{padding:20px;border-left:1px solid #EEE}.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output #message{margin-left:0;margin-right:0}.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table td,.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table th{padding-bottom:0}.updraft_restore_main.show-credentials-form .updraft_restore_main--components{opacity:.2}.updraft_restore_main.show-credentials-form div.error .restore-credential-errors--list p{margin:0;list-style-type:disc;display:list-item;list-style-position:inside}.restore-credential-errors>:first-child{margin-top:0}.restore-credential-errors>:last-child{margin-bottom:0}ul.updraft_restore_components_list li{color:#bababa;font-size:1.2em;margin-bottom:1em}ul.updraft_restore_components_list li::before{content:'\f469';font-family:dashicons;font-size:20px;vertical-align:middle;display:inline-block;margin-right:7px}ul.updraft_restore_components_list li span{vertical-align:middle}ul.updraft_restore_components_list li.done{color:green}ul.updraft_restore_components_list li.done::before{content:"\f147"}ul.updraft_restore_components_list li.active{color:inherit}ul.updraft_restore_components_list li.active::before{content:"\f463";-webkit-animation:udp_rotate 1s linear infinite;animation:udp_rotate 1s linear infinite}ul.updraft_restore_components_list li.error{color:#dc3232}ul.updraft_restore_components_list li.error::before{content:"\f335"}.updraft_restore_result{padding:10px 0;font-size:1.3em;margin-bottom:1em;vertical-align:middle;display:none}.updraft_restore_result.restore-error{color:#dc3232}.updraft_restore_result.restore-success{color:green}.updraft_restore_result .dashicons{font-size:35px;height:35px;line-height:33px;width:35px}.updraft_restore_result span{vertical-align:middle}#updraft-restore-modal{width:100%}div#updraft-restore-modal .notice{background:#f8f8f8}.updraft-restore-modal--stage .updraft--two-halves,.updraft-restore-modal--stage .updraft--one-half{padding:20px 30px}.updraft-restore-modal--header{padding:20px;padding-bottom:0;text-align:center;border-bottom:1px solid #EEE}.updraft-restore-modal--header h3{margin:0;padding:0}.updraft-restore-item{padding-bottom:4px}.updraft-restore-buttons{padding-top:10px}ul.updraft-restore--stages{display:inline-block;margin:0;height:28px}ul.updraft-restore--stages li{display:inline-block;position:relative;width:12px;height:12px;background:#d2d2d2;border-radius:20px;line-height:1;margin:0 4px;vertical-align:middle}ul.updraft-restore--stages li.active{background:#444}.updraft-restore--footer{border-top:1px solid #EEE;padding:20px;text-align:center;position:sticky;bottom:0;background:#FFF;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.updraft-restore--footer .updraft-restore--cancel{position:absolute;left:20px;top:auto}.updraft-restore--footer .updraft-restore--next-step{position:absolute;right:20px;top:auto}ul.updraft-restore--stages li span{position:absolute;width:120px;bottom:calc(100% + 14px);left:-55px;background:rgba(0,0,0,0.85882);padding:5px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;color:#FFF;text-align:center;display:none}ul.updraft-restore--stages li:hover span{display:inline-block}.updraft-restore-item input[type=checkbox]{margin-bottom:-5px}.updraft-restore-item input[type=checkbox]:checked+label{font-weight:bold}div#updraft-restore-modal .ud_downloadstatus__close{display:none}#ud_downloadstatus2:not(:empty){margin-top:15px}.dashicons.rotate{-webkit-animation:udp_rotate 1s linear infinite;animation:udp_rotate 1s linear infinite}span#updraftplus_ajax_restore_last_activity{font-size:.8rem;font-weight:normal;float:right}.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice{margin:-20px -20px 20px;padding:19px}.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice button{margin-right:5px}#updraft_migrate_receivingsites .updraftplus-remote-sites-selector .button-primary,.updraft_migrate_add_site .input-field input,.updraft_migrate_add_site button{vertical-align:middle}#updraft_migrate_receivingsites .text-link-menu a:not(:last-child){padding-right:10px}#updraft_migrate_receivingsites a.updraft_migrate_clear_sites span.dashicons-trash:before{font-size:17px}#updraft_migrate_receivingsites .updraft_migrate_add_site{clear:both}.rtl .advanced_tools.total_size table td{direction:ltr;text-align:right}.rtl #plupload-upload-ui2.drag-drop #drag-drop-area2{margin-bottom:20px}.rtl #updraft_lastlogmessagerow .updraft-log-link{float:left}.rtl label.updraft_checkbox>input[type=checkbox]{margin-right:-25px;margin-left:inherit}.rtl .ud_downloadstatus__close{float:left !important}.rtl #updraft_backupextradbs_another_container{float:right}.rtl input.labelauty+label{direction:ltr;position:relative;min-height:29px}.rtl input.labelauty+label>span.labelauty-checked-image,.rtl input.labelauty+label>span.labelauty-unchecked-image{right:8px;top:11px;position:absolute}.rtl .button.updraft-close-overlay .dashicons{margin-right:-5px;margin-left:inherit}.rtl label.updraft_checkbox{margin-right:26px;margin-left:inherit}.rtl #updraft-wrap .udp-info{left:10px;right:inherit}.rtl input.labelauty+label>span.labelauty-unchecked-image+span.labelauty-unchecked,.rtl input.labelauty+label>span.labelauty-checked-image+span.labelauty-checked{margin-right:7px;margin-left:inherit;padding:7px 7px 7px 26px;width:141px;text-align:right}.rtl #updraft_report_cell button.updraft_reportbox_delete,.rtl .updraft_box_delete_button,.rtl .updraft_small_box .updraft_box_delete_button{left:4px;right:inherit}#updraft_exclude_modal .clause-input-container{overflow:auto}#updraft_exclude_modal .clause-input-container select,#updraft_exclude_modal .clause-input-container input{float:left}#updraft_exclude_modal .clause-input-container .wildcards-input{margin:7px 7px 0 0}#updraft_exclude_modal .updraft-exclude-panel .contain-clause-sub-label{margin-top:10px;display:block}@media only screen and (min-width:1024px){#updraft_activejobsrow .updraft_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}#updraft_activejobsrow .updraft_row .updraft_col{-webkit-box-flex:1;-ms-flex:auto;flex:auto}#updraft_activejobsrow .updraft_progress_container{width:calc(100% - 230px)}}@media only screen and (min-width:782px){.settings_page_updraftplus input[type=text],.settings_page_updraftplus input[type=password],.settings_page_updraftplus input[type=number]{line-height:1.42;height:27px;padding:2px 6px;color:#555}.settings_page_updraftplus input[type="number"]{height:31px}#ud_massactions.active,#updraft-delete-waitwarning.active{position:fixed;bottom:0;left:160px;right:0;top:auto;background:#FFF;z-index:3;-webkit-box-shadow:0 0 10px rgba(0,0,0,0.2);box-shadow:0 0 10px rgba(0,0,0,0.2)}.rtl #ud_massactions.active,.rtl #updraft-delete-waitwarning.active{left:0;right:160px}body.folded #ud_massactions.active,body.folded #updraft-delete-waitwarning.active{left:36px}.updraft-after-form-table{margin-left:250px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.range-selection:not(.backuprowselected) .updraft_existingbackup_date .backup_date_label{color:#FFF}}@media only screen and (min-width:782px) and (max-width:960px){body.auto-fold #ud_massactions.active,body.auto-fold #updraft-delete-waitwarning.active{left:36px}}@media only screen and (max-width:782px){#updraft-wrap{margin-right:0}#updraft-wrap .form-table td{padding-right:0}label.updraft_checkbox{margin-bottom:8px;margin-top:8px;margin-left:36px}.updraft_retain_rules{position:relative;margin-right:0;border:1px solid #CCC;padding:5px;margin-bottom:-1px}.updraft_retain_rules_delete{position:absolute;right:0;top:5px}a[id*=updraft_retain_]{display:block;padding:15px 15px 15px 0}label.updraft_checkbox>input[type=checkbox]{margin-left:-33px}#updraft-backupnow-button{margin:0;display:block;width:100%}.updraft_next_scheduled_backups_wrapper>.updraft_backup_btn_wrapper{padding-top:0}#ud_massactions,#updraft-delete-waitwarning{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}#ud_massactions.active{position:fixed;top:auto;bottom:0;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;-webkit-box-shadow:0 -3px 15px rgba(0,0,0,0.08);box-shadow:0 -3px 15px rgba(0,0,0,0.08);background:#FFF;z-index:3}#ud_massactions strong{display:block;margin-bottom:5px}small.ud_massactions-tip{display:block}.existing-backups-table .backup_date_label>div,.existing-backups-table .backup_date_label span>div{font-weight:normal}.existing-backups-table .backup_date_label .clear-right{display:inline-block}table.widefat.existing-backups-table{border:0;-webkit-box-shadow:none;box-shadow:none;background:transparent}.existing-backups-table thead{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;padding:0;margin:0}.existing-backups-table tr{display:block;margin-bottom:.625em;padding-bottom:16.625px;width:100%;padding:0;margin:0;margin-bottom:10px;background:#FFF;-webkit-box-shadow:0 2px 3px rgba(0,0,0,0.1);box-shadow:0 2px 3px rgba(0,0,0,0.1)}.existing-backups-table td{border-bottom:1px solid #DDD;display:block;font-size:.9em;text-align:left;width:100%;padding:10px;margin:0}.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{content:attr(data-label);font-weight:bold;display:block;position:relative;left:auto;padding-bottom:10px;width:auto;text-align:left}.existing-backups-table td:last-child{border-bottom:0}.form-table td.updraft_existingbackup_date{width:inherit;max-width:100%}.existing-backups-table td.before-restore-button{min-height:36px}.updraft_next_scheduled_backups_wrapper{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_next_scheduled_backups_wrapper>div{width:100%}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row{position:relative}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected{background-color:#FFF;border-left:4px solid #0572aa}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select){margin-left:50px}#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select{width:50px !important;position:absolute;left:0;top:0;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%;z-index:1;border:0;border-right:1px solid rgba(0,0,0,0.05)}#updraft-navtab-backups-content .updraft_existing_backups input[type="checkbox"]{height:25px}.updraft_migrate_intro button.button.button-primary.button-hero{display:block;margin-right:0;width:100%;max-width:100%}.updraftclone-main-row{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraftclone-main-row>div{width:auto;max-width:none;margin-right:0;margin-bottom:10px}.form-table th{padding-bottom:10px}.updraft--flex{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_restore_main{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.updraft_restore_main--components{width:100%;min-height:0}.updraft_restore_main--activity{width:100%}div#updraftplus_ajax_restore_output,.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output{position:relative;top:0;bottom:auto}.updraft--flex>.updraft--two-halves,.updraft--flex>.updraft--one-half{width:100%}.updraft-restore-item{padding-bottom:10px;padding-top:10px}}@media screen and (max-width:600px){.updraft_next_scheduled_entity{float:none;width:100%;margin-bottom:2em}.updraft_time_now_wrapper{margin-top:0}#updraft_lastlogmessagerow h3{margin-bottom:5px}#updraft_lastlogmessagerow .updraft-log-link{display:block;float:none;margin:0;margin-bottom:10px}}@media only screen and (min-width:768px){.addon-activation-notice{left:20em}.existing-backups-table tbody tr.range-selection:hover,.existing-backups-table tbody tr.range-selection{background:#0572aa}.existing-backups-table tbody tr:hover{background:#f1f1f1}.existing-backups-table tbody tr td.before-restore-button{position:relative}.form-table .existing-backups-table thead th.check-column{padding-left:6px}.existing-backups-table tr td:first-child{border-left:4px solid transparent}.existing-backups-table tr.backuprowselected td:first-child{border-left-color:#0572aa}}@media screen and (min-width:670px){.expertmode .advanced_settings_container .advanced_settings_menu{float:left;width:215px;border-right:1px solid #ccc;border-bottom:0}.expertmode .advanced_settings_container .advanced_settings_content{padding-left:10px;padding-top:0}.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button{display:block}}@media only screen and (max-width:1068px){.updraft-more-plugins .udp-box{width:calc(50% - 10px);margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:100px}}@media only screen and (max-width:600px){.updraft-more-plugins .udp-box{width:100%;margin-bottom:20px}.updraft_feat_table td:nth-child(2),.updraft_feat_table td:nth-child(3){width:auto}table.updraft_feat_table{display:block}table.updraft_feat_table tr{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}table.updraft_feat_table td{display:block}table.updraft_feat_table td:first-child{width:100%;border-bottom:0}table.updraft_feat_table td:not(:first-child){width:50%;-webkit-box-sizing:border-box;box-sizing:border-box}table.updraft_feat_table td:first-child:empty{display:none}td[data-colname]::before{content:attr(data-colname);font-size:.8rem;color:#CCC;line-height:1}} -/*# sourceMappingURL=updraftplus-admin-2-23-3.min.css.map */ diff --git a/wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css.map b/wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css.map deleted file mode 100644 index 3c47e7b5..00000000 --- a/wp-content/plugins/updraftplus/css/updraftplus-admin-2-23-3.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/updraftplus-admin.css"],"names":[],"mappings":"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","file":"updraftplus-admin-2-23-3.min.css","sourcesContent":["@keyframes udp_blink {\n\n\tfrom {\n\t\topacity: 1;\n\t\ttransform: scale(1);\n\t}\n\n\tto {\n\t\topacity: 0.4;\n\t\ttransform: scale(0.85);\n\t}\n\n}\n\n@keyframes udp_rotate {\n\n\tfrom {\n\t\ttransform: rotate(0);\n\t}\n\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n\n}\n\n/* Widths and sizing */\n.max-width-600 {\n\tmax-width: 600px;\n}\n\n.max-width-700 {\n\tmax-width: 700px;\n}\n\n.width-900 {\n\tmax-width: 900px;\n}\n\n.width-80 {\n\twidth: 80%;\n}\n\n.updraft--flex {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n\n.updraft--flex > * {\n\tflex: 1;\n\tbox-sizing: border-box;\n}\n\n.updraft--flex > .updraft--one-half {\n\twidth: 50%;\n\tflex: auto;\n}\n\n.updraft--flex > .updraft--two-halves {\n\twidth: 100%;\n\tflex: auto;\n}\n\n.updraft-color--very-light-grey {\n\tbackground: #F8F8F8;\n}\n\n/* End widths and sizing */\n\n/* Font styling */\n.no-decoration {\n\ttext-decoration: none;\n}\n\n.bold {\n\tfont-weight: bold;\n}\n\n/* End font styling */\n/* Alignment */\n.center-align-td {\n\ttext-align: center;\n}\n\n/* End of Alignment */\n/* Padding */\n.remove-padding {\n\tpadding: 0 !important;\n}\n\n/* End of padding */\n\n.updraft-text-center {\n\ttext-align: center;\n}\n\n.autobackup {\n\tpadding: 6px;\n\tmargin: 8px 0px;\n}\n\nul .disc {\n\tlist-style: disc inside;\n}\n\n.dashicons-log-fix {\n\tdisplay: inherit;\n}\n\n.udpdraft__lifted {\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n}\n\n#updraft-wrap a .dashicons {\n\ttext-decoration: none;\n}\n\n.updraft-field-description,\ntable.form-table td p.updraft-field-description {\n\tfont-size: 90%;\n\tline-height: 1.2;\n\tfont-style: italic;\n\tmargin-bottom: 5px;\n}\n\n/* Input boxes */\nlabel.updraft_checkbox {\n\tdisplay: block;\n\tmargin-bottom: 4px;\n\tmargin-left: 26px;\n}\n\nlabel.updraft_checkbox > input[type=checkbox] {\n\tmargin-left: -25px;\n}\n\ndiv[id*=\"updraft_include_\"] {\n\tmargin-bottom: 9px;\n}\n\n/* Input boxes */\n.settings_page_updraftplus input[type=\"file\"] {\n\tborder: none;\n}\n\n.settings_page_updraftplus .wipe_settings {\n\tpadding-bottom: 10px;\n}\n\n.settings_page_updraftplus input[type=\"text\"] {\n\tfont-size: 14px;\n}\n\n.settings_page_updraftplus select {\n\tborder-radius: 4px;\n\tmax-width: 100%;\n}\n\ninput.updraft_input--wide,\ntextarea.updraft_input--wide {\n\tmax-width: 442px;\n\twidth: 100%;\n}\n\n#updraft-wrap .button-large {\n\tfont-size: 1.3em;\n}\n\n/* End input boxes */\n\n/* Main Buttons */\n.main-dashboard-buttons {\n\tborder-width: 4px;\n\tborder-radius: 12px;\n\tletter-spacing: 0px;\n\tfont-size: 17px;\n\tfont-weight: bold;\n\tpadding-left: 0.7em;\n\tpadding-right: 2em;\n\tpadding: 0.3em 1em;\n\tline-height: 1.7em;\n\tbackground: transparent;\n\tposition: relative;\n\tborder: 2px solid;\n\ttransition: all 0.2s;\n\tvertical-align: baseline;\n\tbox-sizing: border-box;\n\ttext-align: center;\n\tline-height: 1.3em;\n\tmargin-left: .3em;\n\ttext-transform: none;\n\tline-height: 1;\n\ttext-decoration: none;\n}\n\n.button-restore {\n\tborder-color: rgb(98, 158, 192);\n\tcolor: rgb(98, 158, 192);\n}\n\n.button-ud-google {\n\ttext-decoration: none !important;\n\ttransition: background-color .3s, box-shadow .3s;\n\tpadding: 12px 16px 12px 42px !important;\n\tborder: none;\n\tborder-radius: 3px;\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 1px 1px rgba(0, 0, 0, .25);\n\tcolor: #757575;\n\tfont-size: 14px;\n\tfont-weight: 500;\n\tfont-family: \"Roboto\";\n\tbackground-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTcuNiA5LjJsLS4xLTEuOEg5djMuNGg0LjhDMTMuNiAxMiAxMyAxMyAxMiAxMy42djIuMmgzYTguOCA4LjggMCAwIDAgMi42LTYuNnoiIGZpbGw9IiM0Mjg1RjQiIGZpbGwtcnVsZT0ibm9uemVybyIvPjxwYXRoIGQ9Ik05IDE4YzIuNCAwIDQuNS0uOCA2LTIuMmwtMy0yLjJhNS40IDUuNCAwIDAgMS04LTIuOUgxVjEzYTkgOSAwIDAgMCA4IDV6IiBmaWxsPSIjMzRBODUzIiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNNCAxMC43YTUuNCA1LjQgMCAwIDEgMC0zLjRWNUgxYTkgOSAwIDAgMCAwIDhsMy0yLjN6IiBmaWxsPSIjRkJCQzA1IiBmaWxsLXJ1bGU9Im5vbnplcm8iLz48cGF0aCBkPSJNOSAzLjZjMS4zIDAgMi41LjQgMy40IDEuM0wxNSAyLjNBOSA5IDAgMCAwIDEgNWwzIDIuNGE1LjQgNS40IDAgMCAxIDUtMy43eiIgZmlsbD0iI0VBNDMzNSIgZmlsbC1ydWxlPSJub256ZXJvIi8+PHBhdGggZD0iTTAgMGgxOHYxOEgweiIvPjwvZz48L3N2Zz4=);\n\tbackground-color: #FFF;\n\tbackground-repeat: no-repeat;\n\tbackground-position: 12px 11px;\n}\n\n.button-ud-google:hover {\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 2px 4px rgba(0, 0, 0, .25);\n}\n\n.button-ud-google:active {\n\tbackground-color: #EEE;\n}\n\n.button-ud-google:focus {\n\toutline: none;\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 2px 4px rgba(0, 0, 0, .25), 0 0 0 3px #C8DAFC;\n}\n\n.button-ud-google:disabled {\n\tfilter: grayscale(100%);\n\tbackground-color: #EBEBEB;\n\tbox-shadow: 0 -1px 0 rgba(0, 0, 0, .04), 0 1px 1px rgba(0, 0, 0, .25);\n\tcursor: not-allowed;\n}\n\n.dashboard-main-sizing {\n\tborder-width: 4px;\n\twidth: 190px;\n\tline-height: 1.7em;\n}\n\np.updraftplus-option {\n\tmargin-top: 0;\n\tmargin-bottom: 5px;\n}\n\np.updraftplus-option-inline {\n\tdisplay: inline-block;\n\tpadding-right: 20px;\n}\n\nspan.updraftplus-option-label {\n\tdisplay: block;\n}\n\n/*\n* MIGRATE - CLONE\n*/\n\n#updraft-navtab-migrate-content .postbox {\n\tpadding: 18px;\n}\n\n/* Clone Rows */\n\n.updraftclone-main-row {\n\tdisplay: flex;\n}\n\n.updraftclone-tokens {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tmargin-right: 20px;\n\tmax-width: 300px;\n}\n\n.updraftclone-tokens p {\n\tmargin: 0;\n}\n\n.updraftclone_action_box {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 10px;\n\tflex: 1;\n}\n\n.updraftclone_action_box p:first-child {\n\tmargin-top: 0;\n}\n\n.updraftclone_action_box p:last-child {\n\tmargin-bottom: 0;\n}\n\n.updraftclone_action_box #ud_downloadstatus3 {\n\tmargin-top: 10px;\n}\n\nspan.tokens-number {\n\tfont-size: 46px;\n\tdisplay: block;\n}\n\n/* Clone header button */\n.button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0;\n\ttop: 0;\n\theight: 100%;\n\tborder-left: 1px solid #CCC;\n\tpadding-left: 10px;\n\tpadding-right: 10px;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_container {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box {\n\tmargin-right: 20px;\n\twidth: 100%;\n\tflex-basis: 100%;\n}\n\n.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\tfloat: none;\n}\n\n@media (min-width: 1024px) {\n\n\t.updraft_migrate_widget_temporary_clone_stage0_container {\n\t\tflex-direction: row;\n\t\tflex-wrap: wrap;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box {\n\t\tflex-basis: 45%;\n\t}\n\n\t.updraft_migrate_widget_temporary_clone_stage0_box iframe,\n\t.updraft_migrate_widget_temporary_clone_stage0_box a.udp-replace-with-iframe--js {\n\t\tfloat: right;\n\t}\n\n}\n\n.updraft_migrate_widget_temporary_clone_show_stage0 .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n}\n\n.opened .button.updraft_migrate_widget_temporary_clone_show_stage0 {\n\tdisplay: inline-block;\n}\n\n.opened .updraft_migrate_widget_temporary_clone_stage0 {\n\tbackground: #F5F5F5;\n\tpadding: 20px;\n\tborder-radius: 8px;\n\tmargin-bottom: 21px;\n}\n\n/* Clone list table */\n.clone-list {\n\tclear: both;\n\twidth: 100%;\n\tmargin-top: 40px;\n}\n\n.clone-list table {\n\twidth: 100%;\n\ttext-align: left;\n}\n\n.clone-list table tr th {\n\tbackground: #E4E4E4;\n}\n\n.clone-list table tr td {\n\tbackground: #F5F5F5;\n\tword-break: break-word;\n}\n\n.clone-list table tr:nth-child(odd) td {\n\tbackground: #FAFAFA;\n}\n\n.clone-list table td,\n.clone-list table th {\n\tpadding: 6px;\n}\n\n/* Clone Progress */\n.updraftplus-clone .updraft_row {\n\tpadding-left: 0;\n\tpadding-right: 0;\n}\n\nbutton#updraft_migrate_createclone + .updraftplus_spinner {\n\tmargin-top: 13px;\n}\n\n/* Clone - Show step 1 info button */\n.button.button-hero.updraftclone_show_step_1 {\n\twhite-space: normal;\n\theight: auto;\n\tline-height: 14px;\n\tpadding-top: 10px;\n\tpadding-bottom: 10px;\n}\n\n.button.button-hero.updraftclone_show_step_1 span.dashicons {\n\theight: auto;\n}\n\n.updraftplus_clone_status {\n\tcolor: red;\n}\n\n/* MIGRATE */\n\na.updraft_migrate_add_site--trigger span.dashicons {\n\ttext-decoration: none;\n}\n\n.button-restore:hover, .button-migrate:hover, .button-backup:hover,\n.button-view-log:hover, .button-mass-selectors:hover,\n.button-delete:hover, .button-entity-backup:hover, .udp-button-primary:hover {\n\tborder-color: #DF6926;\n\tcolor: #DF6926;\n}\n\n.button-migrate {\n\tcolor: rgb(238, 169, 32);\n\tborder-color: rgb(238, 169, 32);\n}\n\n#updraft_migrate_tab_main {\n\tpadding: 8px;\n}\n\n.updraft_migrate_widget_module_content {\n\tbackground: #FFF;\n\tborder-radius: 0;\n\tposition: relative;\n}\n\nbody.js #updraft_migrate .updraft_migrate_widget_module_content {\n\tdisplay: none;\n}\n\n.updraft_migrate_widget_module_content > h3,\ndiv[class*=\"updraft_migrate_widget_temporary_clone_stage\"] > h3 {\n\tmargin-top: 0;\n}\n\n/* Migrate / Clone headers */\n.updraft_migrate_widget_module_content header,\n#updraft_migrate_tab_alt header {\n\tposition: relative;\n\tdisplay: flex;\n\talign-content: center;\n\tjustify-items: center;\n\tmargin-top: -18px;\n\tmargin-left: -18px;\n\tmargin-right: -18px;\n\tmargin-bottom: 15px;\n\tborder-bottom: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content header h3,\n.updraft_migrate_widget_module_content header button.button.close,\n#updraft_migrate_tab_alt header h3,\n#updraft_migrate_tab_alt header button.button.close {\n\tpadding: 10px;\n\tline-height: 20px;\n\theight: auto;\n\tmargin: 0;\n}\n\n.updraft_migrate_widget_module_content button.button.close,\n#updraft_migrate_tab_alt button.button.close {\n\ttext-decoration: none;\n\tpadding-left: 5px;\n\tborder-right: 1px solid #CCC;\n}\n\n.updraft_migrate_widget_module_content button.button.close .dashicons,\n#updraft_migrate_tab_alt button.button.close .dashicons {\n\tmargin-top: 1px;\n}\n\n.updraft_migrate_widget_module_content header h3,\n#updraft_migrate_tab_alt header h3 {\n\tmargin: 0;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero {\n\tmax-width: 235px;\n\tword-wrap: normal;\n\twhite-space: normal;\n\tline-height: 1;\n\theight: auto;\n\tpadding-top: 13px;\n\tpadding-bottom: 13px;\n\ttext-align: left;\n\tposition: relative;\n\tmargin-right: 10px;\n\tmargin-bottom: 10px;\n}\n\n.updraft_migrate_intro button.button.button-primary.button-hero .dashicons {\n\tposition: absolute;\n\tleft: 10px;\n\ttop: calc(50% - 8px);\n}\n\n#updraft_migrate_tab_alt #updraft_migrate_send_existing_button {\n\tmargin-right: 6px;\n}\n\n/*\njquery UI Accordion module\n*/\n#updraft_migrate .ui-widget-content a {\n\tcolor: #1C94C4;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header {\n\tbackground: #F6F6F6;\n\tmargin: 0;\n\tborder-radius: 0;\n\tpadding-left: 0.5em;\n\tpadding-right: 0.7em;\n}\n\n#updraft-wrap .ui-widget {\n\tfont-family: inherit;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-w {\n\tbackground-position: -96px 0px;\n}\n\n.ui-accordion-header .ui-accordion-header-icon.ui-icon-caret-1-s {\n\tbackground-position: -64px 0;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .ui-accordion-header-icon {\n\tleft: auto;\n\tright: 5px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px rgba(91, 157, 217, 0.22), 0 0 2px 1px rgba(30, 140, 190, 0.3);\n\tbackground: #FFF;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus .dashicons {\n\tcolor: #0572AA;\n\topacity: 1;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active {\n\tbackground: #F6F6F6;\n\tborder-bottom: 2px solid #0572AA;\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header.ui-state-active:focus {\n\tbox-shadow: 1px 6px 12px -5px rgba(0, 0, 0, 0.3), 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:not(:first-child) {\n\tborder-top: none;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header .dashicons {\n\topacity: 0.4;\n\tmargin-right: 10px;\n}\n\n#updraft-wrap .ui-accordion .ui-accordion-header:focus {\n\toutline: none;\n\tbox-shadow: 0 0 0 1px #5B9DD9, 0 0 2px 1px rgba(30, 140, 190, .8);\n\tz-index: 1;\n}\n\nbutton.ui-dialog-titlebar-close:before {\n\tcontent: none!important;\n}\n\n.updraft_next_scheduled_backups_wrapper {\n\tdisplay: flex;\n\tbackground: #FFF;\n\tjustify-items: center;\n\tflex-wrap: wrap;\n}\n\n.updraft_next_scheduled_backups_wrapper > div {\n\twidth: 50%;\n\tbackground: #FFF;\n\theight: auto;\n\t/* padding: 18px 33px; */\n\tpadding: 33px;\n\tbox-sizing: border-box;\n}\n\n.updraft_backup_btn_wrapper {\n\ttext-align: center;\n\tborder-left: 1px solid #F1F1F1;\n\tjustify-content: center;\n\talign-items: center;\n}\n\n.incremental-backups-only {\n\tdisplay: none;\n}\n\n.incremental-free-only {\n\tdisplay: none;\n}\n\n.incremental-free-only p {\n\tpadding: 5px;\n\tbackground: rgba(255, 0, 0, 0.06);\n\tborder: 1px solid #BFBFBF;\n}\n\n#updraft-delete-waitwarning span.spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tmargin: 0;\n\tmargin-right: 10px;\n}\n\nbutton#updraft-backupnow-button .spinner,\nbutton#updraft-backupnow-button .dashicons-yes {\n\tdisplay: none;\n}\n\nbutton#updraft-backupnow-button.loading .spinner {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tmargin-top: 13px;\n\tmargin-right: 0;\n}\n\nbutton#updraft-backupnow-button.loading {\n\tbackground-color: #EFEFEF;\n\tborder-color: #CCC;\n\ttext-shadow: 0 -1px 1px #BBC3C7, 1px 0 1px #BBC3C7, 0 1px 1px #BBC3C7, -1px 0 1px #BBC3C7;\n\tbox-shadow: none;\n}\n\nbutton#updraft-backupnow-button.finished .dashicons-yes {\n\tdisplay: inline-block;\n\tvisibility: visible;\n\tfont-size: 42px;\n\tmargin-right: 0;\n\tmargin-top: 2px;\n}\n\n.updraft_next_scheduled_entity {\n\twidth: 50%;\n\tdisplay: inline-block;\n\tfloat: left;\n\t/*\n\tpadding: 20px 20px 10px 20px;\n\t*/\n}\n\n.updraft_next_scheduled_entity .dashicons {\n\tcolor: #CCC;\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_entity strong {\n\tfont-size: 20px;\n}\n\n.updraft_next_scheduled_heading {\n\tmargin-bottom: 10px;\n}\n\n.updraft_next_scheduled_date_time {\n\tcolor: #46A84B;\n}\n\n.updraft_time_now_wrapper {\n\tmargin-top: 68px;\n\twidth: 100%;\n}\n\n.updraft_time_now_label, .updraft_time_now {\n\tdisplay: inline-block;\n\tpadding: 7px;\n}\n\n.updraft_time_now_label {\n\tbackground: #B7B7B7;\n\tborder-top-left-radius: 4px;\n\tborder-bottom-left-radius: 4px;\n\tcolor: #FFF;\n\tmargin-right: 0;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);\n}\n\n.updraft_time_now {\n\tbackground: #F1F1F1;\n\tborder-top-right-radius: 4px;\n\tborder-bottom-right-radius: 4px;\n\tmargin-left: -3px;\n}\n\n#updraft_lastlogmessagerow {\n\tmargin: 6px 0;\n}\n\n#updraft_lastlogmessagerow {\n\tclear: both;\n\tpadding: 0.25px 0;\n}\n\n#updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: right;\n\tmargin-top: -2.5em;\n\tmargin-right: 2px;\n}\n\n#updraft_lastlogmessagerow > div {\n\tclear: both;\n\tbackground: #FFF;\n\tpadding: 18px;\n}\n\n#updraft_activejobs_table {\n\toverflow: hidden;\n\twidth: 100%;\n\tbackground: #FAFAFA;\n\tpadding: 0;\n}\n\n.updraft_requeststart {\n\tpadding: 15px 33px;\n\ttext-align: center;\n}\n\n.updraft_requeststart .spinner {\n\tvisibility: visible;\n\tfloat: none;\n\tvertical-align: middle;\n\tmargin-top: -2px;\n}\n\na.updraft_jobinfo_delete.disabled {\n\topacity: 0.4;\n\tcolor: inherit;\n\ttext-decoration: none;\n}\n\n.updraft_row {\n\tclear: both;\n\ttransition: 0.3s all;\n\tpadding: 15px 33px;\n}\n\n.updraft_row.deleting {\n\topacity: 0.4;\n}\n\n.updraft_progress_container {\n\t/* width: 83%; */\n}\n\n.updraft_existing_backups_count {\n\tpadding: 2px 8px;\n\tfont-size: 12px;\n\tbackground: #CA4A1E;\n\tcolor: #FFF;\n\tfont-weight: bold;\n\tborder-radius: 10px;\n}\n\n.form-table .existing-backups-table input[type=\"checkbox\"] {\n\tborder-radius: 0;\n}\n\n.form-table .existing-backups-table .check-column {\n\twidth: 40px;\n\tpadding: 0;\n\tpadding-top: 8px;\n}\n\n.existing-backups-buttons {\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 3px;\n}\n\n.existing-backups-restore-buttons {\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 3px;\n}\n\n.button-delete {\n\tcolor: #E23900;\n\tborder-color: #E23900;\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-right: 10px;\n}\n\n.button-view-log, .button-mass-selectors {\n\tcolor: darkgrey;\n\tborder-color: darkgrey;\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-top: -1px;\n}\n\n.button-view-log {\n\twidth: 120px;\n}\n\n.button-existing-restore {\n\tfont-size: 14px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\twidth: 110px;\n}\n\n.main-restore {\n\tmargin-right: 3%;\n\tmargin-left: 3%;\n}\n\n.button-entity-backup {\n\tcolor: #555;\n\tborder-color: #555;\n\tfont-size: 11px;\n\tline-height: 1.4em;\n\tborder-width: 2px;\n\tmargin-right: 5px;\n}\n\n.button-select-all {\n\twidth: 122px;\n}\n\n.button-deselect {\n\twidth: 92px;\n}\n\n#ud_massactions > .display-flex > .mass-selectors-margins, #updraft-delete-waitwarning > .display-flex > .mass-selectors-margins {\n\tmargin-right: -4px;\n}\n\n.udp-button-primary {\n\tborder-width: 4px;\n\tcolor: #0073AA;\n\tborder-color: #0073AA;\n\tfont-size: 14px;\n\theight: 40px;\n}\n\n#ud_massactions .button-delete {\n\tmargin-right: 0px;\n}\n\n.stored_local {\n\tborder-radius: 5px;\n\tbackground-color: #007FE7;\n\tpadding: 3px 5px 5px 5px;\n\tcolor: #FFF;\n\tfont-size: 75%;\n}\n\nspan#updraft_lastlogcontainer {\n\tword-break: break-all;\n}\n\n.stored_icon {\n\theight: 1.3em;\n\tposition: relative;\n\ttop: 0.2em;\n}\n\n.backup_date_label > * {\n\tvertical-align: middle;\n}\n\n.backup_date_label .dashicons {\n\tfont-size: 18px;\n}\n\n.backup_date_label .clear-right {\n\tclear: right;\n}\n\n.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\tfont-weight: bold;\n}\n\n/* End Main Buttons */\n\n/* End of common elements */\n\n.udp-logo-70 {\n\twidth: 70px;\n\theight: 70px;\n\tfloat: left;\n\tpadding-right: 25px;\n}\n\nh3 .thank-you {\n\tmargin-top: 0px;\n}\n\n.ws_advert {\n\tmax-width: 800px;\n\tfont-size: 140%;\n\tline-height: 140%;\n\tpadding: 14px;\n\tclear: left;\n}\n\n.dismiss-dash-notice {\n\tfloat: right;\n\tposition: relative;\n\ttop: -20px;\n}\n\n.updraft_exclude_container,\n.updraft_include_container {\n\tmargin-left: 24px;\n\tmargin-top: 5px;\n\tmargin-bottom: 10px;\n\tpadding: 15px;\n\tborder: 1px solid #DDD;\n}\n\nlabel.updraft-exclude-label {\n\tfont-weight: 500;\n\tmargin-bottom: 5px;\n\tdisplay: inline-block;\n}\n\n.updraft_add_exclude_item,\n#updraft_include_more_paths_another {\n\tdisplay: inline-block;\n\tmargin-top: 10px;\n}\n\ninput.updraft_exclude_entity_field,\n.form-table td input.updraft_exclude_entity_field,\n.updraftplus-morefiles-row input[type=text] {\n\twidth: calc(100% - 70px);\n\tmax-width: 400px;\n}\n\n.updraft-fs-italic {\n\tfont-style: italic;\n}\n\n@media screen and (max-width: 782px) {\n\n\t.form-table td input.updraft_exclude_entity_field,\n\t.form-table td .updraftplus-morefiles-row input[type=text] {\n\t\tdisplay: inline-block;\n\t}\n\n}\n\n.updraft_exclude_entity_delete.dashicons, .updraft_exclude_entity_edit.dashicons, .updraft_exclude_entity_update.dashicons, .updraftplus-morefiles-row a.dashicons {\n\tmargin-top: 2px;\n\tfont-size: 20px;\n\tbox-shadow: none;\n\tline-height: 1;\n\tpadding: 3px;\n\tmargin-right: 4px;\n}\n\n.updraft_exclude_entity_delete,\n.updraft_exclude_entity_delete:hover,\n.updraftplus-morefiles-row-delete {\n\tcolor: #FF6347;\n}\n\n.updraft_exclude_entity_update.dashicons, .updraft_exclude_entity_update.dashicons:hover {\n\tcolor: #008000;\n\tfont-weight: bold;\n\tfont-size: 22px;\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_edit {\n\tmargin-left: 4px;\n}\n\n.updraft_exclude_entity_update.is-active ~ .updraft_exclude_entity_delete {\n\tdisplay: none;\n}\n\n.updraft-exclude-panel-heading {\n\tmargin-bottom: 8px;\n}\n\n.updraft-exclude-panel-heading h3 {\n\tmargin: 0.5em 0 0.5em 0;\n}\n\n.updraft-exclude-submit.button-primary {\n\tmargin-top: 5px;\n}\n\n.updraft_exclude_actions_list {\n\tfont-weight: bold;\n}\n\n.updraft-exclude-link {\n\tcursor: pointer;\n}\n\n#updraft_include_more_options {\n\tpadding-left: 25px;\n}\n\n#updraft_report_cell .updraft_reportbox,\n.updraft_small_box {\n\tpadding: 12px;\n\tmargin: 8px 0;\n\tborder: 1px solid #CCC;\n\tposition: relative;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete,\n.updraft_box_delete_button,\n.updraft_small_box .updraft_box_delete_button {\n\tpadding: 4px;\n\tpadding-top: 6px;\n\tborder: none;\n\tbackground: transparent;\n\tposition: absolute;\n\ttop: 4px;\n\tright: 4px;\n\tcursor: pointer;\n}\n\n#updraft_report_cell button.updraft_reportbox_delete:hover {\n\tcolor: #DE3C3C;\n}\n\na.updraft_report_another .dashicons {\n\ttext-decoration: none;\n\tmargin-top: 2px;\n}\n\n.updraft_report_dbbackup.updraft_report_disabled {\n\tcolor: #CCC;\n}\n\n#updraft-navtab-settings-content .updraft-test-button {\n\tfont-size: 18px !important;\n}\n\n#updraft_report_cell .updraft_report_email {\n\tdisplay: block;\n\twidth: calc(100% - 50px);\n\tmargin-bottom: 9px;\n}\n\n#updraft_report_cell .updraft_report_another_p {\n\tclear: left;\n}\n\n/* Taken straight from admin.php */\n\n#updraft-navtab-settings-content table.form-table p {\n\tmax-width: 700px;\n}\n\n#updraft-navtab-settings-content table.form-table .notice p {\n\tmax-width: none;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected,\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected td {\n\tbackground-color: #EFEFEF;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected:nth-child(even) td {\n\tbackground-color: #E8E8E8;\n}\n\n.updraft_settings_sectionheading {\n\tdisplay: none;\n}\n\n.updraft-backupentitybutton-disabled {\n\tbackground-color: transparent;\n\tborder: none;\n\tcolor: #0074A2;\n\ttext-decoration: underline;\n\tcursor: pointer;\n\tclear: none;\n\tfloat: left;\n}\n\n.updraft-backupentitybutton {\n\tmargin-left: 8px;\n}\n\n.updraft-bigbutton {\n\tpadding: 2px 0px !important;\n\tmargin-right: 14px !important;\n\tfont-size: 22px !important;\n\tmin-height: 32px;\n\tmin-width: 180px;\n}\n\ntr[class*=\"_updraft_remote_storage_border\"] {\n\tborder-top: 1px solid #CCC;\n}\n\n.updraft_multi_storage_options {\n\tfloat: right;\n\tclear: right;\n\tmargin-bottom: 5px !important;\n}\n\n.updraft_toggle_instance_label {\n\tvertical-align: top !important;\n}\n\n.updraft_debugrow th {\n\tfloat: right;\n\ttext-align: right;\n\tfont-weight: bold;\n\tpadding-right: 8px;\n\tmin-width: 140px;\n}\n\n.updraft_debugrow td {\n\tmin-width: 300px;\n\tvertical-align: bottom;\n}\n\n.updraft_webdav_host_error, .onedrive_folder_error {\n\tcolor: red;\n}\n\nlabel[for=updraft_servicecheckbox_updraftvault] {\n\tposition: relative;\n}\n\n#updraft-wrap .udp-info {\n\tposition: absolute;\n\tright: 10px;\n\ttop: calc(50% - 10px);\n}\n\n#updraft-wrap span.info-trigger {\n\tdisplay: inline-block;\n\twidth: 20px;\n\theight: 20px;\n\tbackground: #FFF;\n\tcolor: #72777C;\n\tborder-radius: 30px;\n\ttext-align: center;\n\tline-height: 20px;\n\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n\n#updraft-wrap .info-content-wrapper {\n\tdisplay: none;\n\tposition: absolute;\n\tbottom: 20px;\n\ttransform: translatex(calc(-50% + 10px));\n\twidth: 330px;\n\tpadding-bottom: 10px;\n}\n\n#updraft-wrap .info-content-wrapper::before {\n\tcontent: '';\n\tposition: absolute;\n\tbottom: -10px;\n\tborder: 10px solid transparent;\n\tborder-top-color: #FFF;\n\tleft: calc(50% - 10px);\n}\n\n#updraft-wrap .info-content {\n\tpadding: 20px;\n\tbackground: #FFF;\n\tborder-radius: 4px;\n\tbox-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);\n\tcolor: #72777C;\n}\n\n#updraft-wrap .info-content h3 {\n\tmargin-top: 0;\n}\n\n#updraft-wrap .info-content p {\n\tmargin-top: 10px;\n}\n\n#updraft-wrap .udp-info:hover .info-content-wrapper {\n\tdisplay: block;\n}\n\ndiv.conditional_remote_backup select.logic_type {\n\tvertical-align: inherit !important;\n}\n\ndiv.conditional_remote_backup label.updraft_toggle_instance_label.radio_group {\n\tdisplay: block;\n\tmargin-top: 7px;\n}\n\ndiv.conditional_remote_backup div.logic ul.rules input.rule_value {\n\tvertical-align: middle;\n}\n\ndiv.conditional_remote_backup p {\n\tmargin-bottom: 10px;\n}\n\ndiv.conditional_remote_backup div.logic ul.rules span svg {\n\twidth: 20px;\n\tvertical-align: middle;\n\tcursor: pointer;\n}\n\ndiv.conditional_remote_backup div.logic ul.rules span svg {\n\tmargin-left: 3px;\n}\n\ndiv.conditional_remote_backup div.logic select.logic_type {\n\tvertical-align: unset;\n}\n\n/* jstree styles */\n\n/* these styles hide the dots from the parent but keep the arrows */\n.updraft_jstree .jstree-container-ul > .jstree-node,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-node {\n\tbackground: transparent;\n}\n\n.updraft_jstree .jstree-container-ul > .jstree-open > .jstree-ocl,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-open > .jstree-ocl {\n\tbackground-position: -36px -4px;\n}\n\n.updraft_jstree .jstree-container-ul > .jstree-closed> .jstree-ocl,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-closed> .jstree-ocl {\n\tbackground-position: -4px -4px;\n}\n\n.updraft_jstree .jstree-container-ul > .jstree-leaf> .jstree-ocl,\ndiv[id^=\"updraft_more_files_jstree_\"] .jstree-container-ul > .jstree-leaf> .jstree-ocl {\n\tbackground: transparent;\n}\n\n/* zip browser jstree styles */\n#updraft_zip_files_container {\n\tposition: relative;\n\theight: 450px;\n\toverflow: none;\n}\n\n.updraft_jstree_info_container {\n\tposition: relative;\n\theight: auto;\n\twidth: 100%;\n\tborder: 1px dotted;\n\tmargin-bottom: 5px;\n}\n\n.updraft_jstree_info_container p {\n\tmargin: 1px;\n\tpadding-left: 10px;\n\tfont-size: 14px;\n}\n\n#updraft_zip_download_item {\n\tdisplay: none;\n\tcolor: #0073AA;\n\tpadding-left: 10px;\n}\n\n#updraft_zip_download_notice {\n\tpadding-left: 10px;\n}\n\n#updraft_exclude_files_folders_jstree, #updraft_exclude_files_folders_wildcards_jstree {\n\tmax-height: 200px;\n\toverflow-y: scroll;\n}\n\n.updraft_jstree {\n\tposition: relative;\n\tborder: 1px dotted;\n\theight: 80%;\n\twidth: 100%;\n\toverflow: auto;\n}\n\n/* More files jstree styles */\ndiv[id^=\"updraft_more_files_container_\"] {\n\tposition: relative;\n\tdisplay: none;\n\twidth: 100%;\n\tborder: 1px solid #CCC;\n\tbackground: #FAFAFA;\n\tmargin-bottom: 5px;\n\tmargin-top: 4px;\n\tbox-shadow: 0 5px 8px rgba(0, 0, 0, 0.1);\n}\n\ndiv[id^=\"updraft_more_files_container_\"]::before {\n\tcontent: ' ';\n\twidth: 11px;\n\theight: 11px;\n\tdisplay: block;\n\tbackground: #FAFAFA;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 20px;\n\tborder-top: 1px solid #CCC;\n\tborder-left: 1px solid #CCC;\n\ttransform: translatey(-7px) rotate(45deg);\n}\n\ninput.updraft_more_path_editing {\n\tborder-color: #0285BA;\n}\n\ninput.updraft_more_path_editing ~ a.dashicons {\n\tdisplay: none;\n}\n\ndiv[id^=\"updraft_jstree_buttons_\"] {\n\tpadding: 10px;\n\tbackground: #E6E6E6;\n}\n\ndiv[id^=\"updraft_jstree_container_\"] {\n\theight: 300px;\n\twidth: 100%;\n\toverflow: auto;\n}\n\ndiv[id^=\"updraft_more_files_container_\"] button {\n\tline-height: 20px;\n}\n\nbutton[id^=\"updraft_parent_directory_\"] {\n\tmargin: 10px 10px 4px 10px;\n\tpadding-left: 3px;\n}\n\nbutton[id^=\"updraft_jstree_confirm_\"], button[id^=\"updraft_jstree_cancel_\"] {\n\tdisplay: none;\n}\n\ninput[id^=\"updraft_include_more_path_restore_\"] {\n\ttext-align: right;\n}\n\n.updraftplus-morefiles-row-delete,\n.updraftplus-morefiles-row-edit {\n\tcursor: pointer;\n}\n\n#updraft_include_more_paths_error {\n\tcolor: #DE3C3C;\n}\n\np[id^=\"updraftplus_manual_authentication_error_\"] {\n\tcolor: #DE3C3C;\n}\n\n#updraft-wrap .form-table th {\n\twidth: 230px;\n}\n\n#updraft-wrap .form-table .existing-backups-table th {\n\twidth: auto;\n}\n\n.updraft-viewlogdiv form {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-viewlogdiv {\n\tdisplay: inline-block;\n}\n\n.updraft-viewlogdiv input, .updraft-viewlogdiv a {\n\tborder: none;\n\tbackground-color: transparent;\n\tcolor: #000;\n\tmargin: 0px;\n\tpadding: 3px 4px;\n\tfont-size: 16px;\n\tline-height: 26px;\n}\n\n.updraft-viewlogdiv input:hover, .updraft-viewlogdiv a:hover {\n\tcolor: #FFF;\n\tcursor: pointer;\n}\n\n.button.button-remove {\n\tcolor: white;\n\tbackground-color: #DE3C3C;\n\tborder-color: #C00000;\n\tbox-shadow: 0 1px 0 #C10100;\n}\n\n.button.button-remove:hover,\n.button.button-remove:focus {\n\tborder-color: #C00;\n\tcolor: #FFF;\n\tbackground: #C00;\n}\n\n/* button-remove colors for midnight admin theme */\nbody.admin-color-midnight .button.button-remove {\n\tcolor: #DE3C3C;\n\tbackground-color: #F7F7F7;\n\tborder-color: #CCC;\n\tbox-shadow: 0 1px 0 #CCC;\n}\n\nbody.admin-color-midnight .button.button-remove:hover, body.admin-color-midnight .button.button-remove:focus {\n\tborder-color: #BA281F;\n}\n\nbody.admin-color-midnight .button.button-remove:focus {\n\tbox-shadow: inherit;\n\tbox-shadow: 0 0 3px rgba(0, 115, 170, 0.8);\n}\n\n.drag-drop #drag-drop-area2 {\n\tborder: 4px dashed #DDD;\n\theight: 200px;\n}\n\n#drag-drop-area2 .drag-drop-inside {\n\tmargin: 36px auto 0;\n\twidth: 350px;\n}\n\n#filelist, #filelist2 {\n\twidth: 100%;\n}\n\n#filelist .file, #filelist2 .file, .ud_downloadstatus .file, #ud_downloadstatus2 .file, #ud_downloadstatus3 .file {\n\tpadding: 1px;\n\tbackground: #ECECEC;\n\tborder: solid 1px #CCC;\n\tmargin: 4px 0;\n}\n\n.updraft_premium section {\n\tmargin-bottom: 20px;\n}\n\n/*\n\tCall to action Premium\n*/\n.updraft_premium_cta {\n\tbackground: #FFF;\n\tmargin-top: 30px;\n\tpadding: 0;\n\tborder-left: 4px solid #DB6A03;\n}\n\n.updraft_premium_cta a {\n\tfont-weight: normal;\n}\n\n.updraft_premium_cta__action {\n\tposition: relative;\n\ttext-align: center;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero {\n\tfont-size: 1.3em;\n\tletter-spacing: 0.03rem;\n\ttext-transform: uppercase;\n\tmargin-bottom: 7px;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero + small {\n\tdisplay: block;\n\tmax-width: 100%;\n\ttext-align: center;\n\tcolor: #AFAFAF;\n}\n\n.updraft_premium_cta a.button.button-primary.button-hero + small .dashicons {\n\twidth: 12px;\n\theight: 12px;\n}\n\n.updraft_premium_cta__top {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: space-between;\n\tpadding: 18px 30px;\n}\n\n.updraft_premium_cta__bottom {\n\tbackground: #F9F9F9;\n\tpadding: 5px 30px;\n}\n\n.updraft_premium_cta__summary {\n\tmargin-right: 60px;\n}\n\n.updraft_premium_cta h2 {\n\tfont-size: 28px;\n\tfont-weight: 200;\n\tline-height: 1;\n\tmargin: 0;\n\tmargin-bottom: 5px;\n\tletter-spacing: 0.05rem;\n\tcolor: #DB6A03;\n}\n\n.updraft_premium_cta ul li::after {\n\tcolor: #CCC;\n}\n\n@media only screen and (max-width: 768px) {\n\n\t.updraft_premium_cta__top {\n\t\tflex-direction: column;\n\t\ttext-align: center;\n\t\talign-items: center;\n\t}\n\n\t.updraft_premium_cta__summary {\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 30px;\n\t}\n\n}\n\n/*\n\tBox\n*/\n.udp-box {\n\tbackground: #FFF;\n\tpadding: 20px;\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n\ttext-align: center;\n}\n\n.udp-box h3 {\n\tmargin: 0;\n}\n\n.udp-box__heading {\n\talign-self: center;\n\tbackground: none;\n\tbox-shadow: none;\n}\n\n/*\n\tOther Plugins\n*/\n.updraft-more-plugins {\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: wrap;\n\tjustify-content: space-between;\n\tflex-wrap: wrap;\n}\n\n.updraft-more-plugins img {\n\tmax-width: 80%;\n\tmax-height: 30%;\n\tdisplay: inline-block;\n}\n\n.updraft-more-plugins .udp-box {\n\tbox-sizing: border-box;\n\twidth: 24%;\n}\n\n.updraft-more-plugins .udp-box p:last-child {\n\tmargin-bottom: 0;\n\tpadding-bottom: 0;\n}\n\n/*\n\tlinks list\n*/\n.updraft_premium_description_list {\n\ttext-align: left;\n\tmargin: 0;\n\tfont-size: 12px;\n}\n\nul.updraft_premium_description_list, ul#updraft_restore_warnings {\n\tlist-style: disc inside;\n}\n\nul.updraft_premium_description_list li {\n\tdisplay: inline;\n}\n\nul.updraft_premium_description_list li::after {\n\tcontent: \" | \";\n}\n\nul.updraft_premium_description_list li:last-child::after {\n\tcontent: \"\";\n}\n\n.updraft_feature_cell {\n\tbackground-color: #F7D9C9 !important;\n\tpadding: 5px 10px;\n}\n\n.updraftplus_com_login_status, .updraftplus_com_key_status {\n\tdisplay: none;\n\tbackground: #FFF;\n\tborder-left: 4px solid #FFF;\n\tborder-left-color: #DC3232;\n\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,.1);\n\tmargin: 5px 0 15px 0;\n\tpadding: 5px 12px;\n}\n\n.updraftplus_com_login_status.success {\n\tborder-left-color: green;\n}\n\n#updraft-wrap strong.success {\n\tcolor: green;\n}\n\n.updraft_feat_table {\n\tborder: none;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n}\n\n.updraft_feat_th, .updraft_feat_table td {\n\tborder: 1px solid #F1F1F1;\n\tborder-collapse: collapse;\n\tfont-size: 120%;\n\tbackground-color: white;\n\ttext-align: center;\n\tpadding: 15px;\n}\n\n.updraft_feat_table td {\n\tborder-bottom-width: 4px;\n}\n\n.updraft_feat_table td:first-child {\n\tborder-left: none;\n}\n\n.updraft_feat_table td:last-child {\n\tborder-right: none;\n}\n\n.updraft_feat_table tr:last-child td {\n\tborder-bottom: none;\n}\n\n.updraft_feat_table td:nth-child(2),\n.updraft_feat_table td:nth-child(3) {\n\tbackground-color: rgba(241, 241, 241, 0.38);\n\twidth: 190px;\n}\n\n.updraft_feat_table__header td img {\n\tdisplay: block;\n\tmargin: 0 auto;\n}\n\n.updraft_feat_table__header td {\n\ttext-align: center;\n}\n\n.updraft_feat_table .installed {\n\tfont-size: 14px;\n}\n\n.updraft_feat_table p {\n\tpadding: 0px 10px;\n\tmargin: 5px 0px;\n\tfont-size: 13px;\n}\n\n.updraft_feat_table h4 {\n\tmargin: 5px 0px;\n}\n\n.updraft_feat_table .dashicons {\n\twidth: 25px;\n\theight: 25px;\n\tfont-size: 25px;\n\tline-height: 1;\n}\n\n.updraft_feat_table .dashicons-yes, .updraft_feat_table .updraft-yes {\n\tcolor: green;\n}\n\n.updraft_feat_table .dashicons-no-alt, .updraft_feat_table .updraft-no {\n\tcolor: red;\n}\n\n.updraft_tick_cell {\n\ttext-align: center;\n}\n\n.updraft_tick_cell img {\n\tmargin: 4px 0;\n\theight: 24px;\n}\n\n.ud_downloadstatus__close {\n\tborder: none;\n\tbackground: transparent;\n\twidth: auto;\n\tfont-size: 20px;\n\tpadding: 0;\n\tcursor: pointer;\n}\n\n#filelist .fileprogress, #filelist2 .fileprogress, .ud_downloadstatus .dlfileprogress, #ud_downloadstatus2 .dlfileprogress, #ud_downloadstatus3 .dlfileprogress {\n\twidth: 0%;\n\tbackground: #0572AA;\n\theight: 8px;\n\ttransition: width .3s;\n}\n\n.ud_downloadstatus .raw, #ud_downloadstatus2 .raw, #ud_downloadstatus3 .raw {\n\tmargin-top: 8px;\n\tclear: left;\n}\n\n.ud_downloadstatus .file, #ud_downloadstatus2 .file, #ud_downloadstatus3 .file {\n\tmargin-top: 8px;\n}\n\ndiv[class^=\"updraftplus_downloader_container_\"] {\n\tpadding: 10px;\n}\n\ntr.updraftplusmethod h3 {\n\tmargin: 0px;\n}\n\ntr.updraftplusmethod img {\n\tmax-width: 100%;\n}\n\n#updraft_retain_db_rules .updraft_retain_rules_delete, #updraft_retain_files_rules .updraft_retain_rules_delete {\n\tcursor: pointer;\n\tcolor: red;\n\tfont-size: 120%;\n\tfont-weight: bold;\n\tborder: 0px;\n\tborder-radius: 3px;\n\tpadding: 2px;\n\tmargin: 0 6px;\n\ttext-decoration: none;\n\tdisplay: inline-block;\n}\n\n#updraft_retain_db_rules .updraft_retain_rules_delete:hover, #updraft_retain_files_rules .updraft_retain_rules_delete:hover {\n\tcursor: pointer;\n\tcolor: white;\n\tbackground: red;\n}\n\n#updraft_backup_started {\n\tmax-width: 800px;\n\tfont-size: 140%;\n\tline-height: 140%;\n\tpadding: 14px;\n\tclear: left;\n}\n\n/* backup finished */\n.blockUI.blockOverlay.ui-widget-overlay {\n\tbackground: #000;\n}\n\n.updraft_success_popup {\n\ttext-align: center;\n\tpadding-bottom: 30px;\n}\n\n.updraft_success_popup > .dashicons {\n\tfont-size: 100px;\n\twidth: 100px;\n\theight: 100px;\n\tline-height: 100px;\n\tpadding: 0px;\n\tborder-radius: 50%;\n\tmargin-top: 30px;\n\tdisplay: block;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tbackground: #E2E6E5;\n}\n\n.updraft_success_popup > .dashicons.dashicons-yes {\n\ttext-indent: -5px;\n}\n\n.updraft_success_popup.success > .dashicons {\n\tcolor: green;\n}\n\n.updraft_success_popup.warning > .dashicons {\n\tcolor: #888;\n}\n\n.updraft_success_popup--message {\n\tpadding: 20px;\n}\n\n.button.updraft-close-overlay .dashicons {\n\ttext-decoration: none;\n\tfont-size: 20px;\n\tmargin-left: -5px;\n\tpadding: 0;\n\ttransform: translatey(3px);\n}\n\n.updraft_saving_popup img {\n\tanimation-name: udp_blink;\n\tanimation-duration: 610ms;\n\tanimation-iteration-count: infinite;\n\tanimation-direction: alternate;\n\tanimation-timing-function: ease-out;\n}\n\n.udp-premium-image {\n\tdisplay: none;\n}\n\n@media screen and (min-width: 720px) {\n\n\t.udp-premium-image {\n\t\tdisplay: block;\n\t\tfloat: left;\n\t\tpadding-right: 5px;\n\t}\n\n}\n\n/* End stuff already in admin.php */\n#plupload-upload-ui2 {\n\twidth: 80%;\n}\n\n.backup-restored {\n\tpadding: 8px;\n}\n\n.updated.backup-restored {\n\tpadding-top: 15px;\n\tpadding-bottom: 15px;\n}\n\n.backup-restored span {\n\tfont-size: 120%;\n}\n\n.memory-limit {\n\tpadding: 8px;\n}\n\n.updraft_list_errors {\n\tpadding: 8px;\n}\n\n/*.nav-tab {\n\tborder-radius: 20px 20px 0 0;\n\tborder-color: grey;\n\tborder-width: 2px;\n\tmargin-top: 34px;\n}\n\n.nav-tab:hover {\n\tborder-bottom: 0;\n}\n\n.nav-tab-active, .nav-tab-active:active {\n\tcolor: #df6926;\n\tborder-color: #D3D3D3;\n\tborder-width: 1px;\n\tborder-bottom: 0;\n}\n\n.nav-tab-active:focus {\n\tcolor: #df6926;\n}*/\n\n.nav-tab-wrapper {\n\tmargin: 14px 0px;\n}\n\n#updraft-poplog-content {\n\twhite-space: pre-wrap;\n}\n\n.next-backup {\n\tborder: 0px;\n\tpadding: 0px;\n\tmargin: 0 10px 0 0;\n}\n\n.not-scheduled {\n\tvertical-align: top !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n}\n\n.next-backup .updraft_scheduled {\n\t/* width: 124px;*/\n\tmargin: 0px;\n\tpadding: 2px 4px 2px 0px;\n}\n\n#next-backup-table-inner td {\n\tvertical-align: top;\n}\n\n.updraft_all-files {\n\tcolor: blue;\n}\n\n.multisite-advert-width {\n\twidth: 800px;\n}\n\n.updraft_settings_sectionheading {\n\tmargin-top: 6px;\n}\n\n.premium-upgrade-prompt {\n\t/* font-size: 115%; */\n}\n\nsection.premium-upgrade-purchase-success {\n\tpadding: 2em;\n\tbackground: #FAFAFA;\n\ttext-align: center;\n\tbox-shadow: 0px 14px 40px rgba(0, 0, 0, 0.1);\n}\n\nsection.premium-upgrade-purchase-success h3 {\n\tfont-size: 2em;\n\tcolor: green;\n}\n\nsection.premium-upgrade-purchase-success h3 .dashicons {\n\tdisplay: block;\n\tmargin: 0 auto;\n\tfont-size: 60px;\n\twidth: 60px;\n\theight: 60px;\n\tborder-radius: 50%;\n\tbackground: green;\n\tcolor: #FFF;\n\tmargin-bottom: 20px;\n}\n\nsection.premium-upgrade-purchase-success h3 .dashicons::before {\n\tdisplay: inline-block;\n\tmargin-left: -4px;\n\tmargin-top: 2px;\n}\n\nsection.premium-upgrade-purchase-success p {\n\tfont-size: 120%;\n}\n\n.show_admin_restore_in_progress_notice {\n\tpadding: 8px;\n}\n\n.show_admin_restore_in_progress_notice .unfinished-restoration {\n\tfont-size: 120%;\n}\n\n#backupnow_includefiles_moreoptions, #backupnow_database_moreoptions, #backupnow_includecloud_moreoptions {\n\tmargin: 4px 16px 6px 16px;\n\tborder: 1px dotted;\n\tpadding: 6px 10px;\n}\n\n#backupnow_database_moreoptions {\n\tmax-height: 250px;\n\toverflow: auto;\n}\n\n#backupnow_database_moreoptions div.backupnow-db-tables {\n\tmargin-bottom: 5px;\n}\n\n#backupnow_database_moreoptions div.backupnow-db-tables > a {\n\tcolor: #0073AA;\n}\n\n.form-table #updraft_activejobsrow .minimum-height {\n\tmin-height: 100px;\n}\n\n#updraft_activejobsrow th {\n\tmax-width: 112px;\n\tmargin: 0;\n\tpadding: 13px 0 0 0;\n}\n\n#updraft_lastlogmessagerow .last-message {\n\tpadding-top: 20px;\n\tdisplay: block;\n}\n\n.updraft_simplepie {\n\tvertical-align: top;\n}\n\n.download-backups {\n\tmargin-top: 8px;\n}\n\n.download-backups .updraft_download_button {\n\tmargin-right: 6px;\n}\n\n.download-backups .ud-whitespace-warning, .download-backups .ud-bom-warning {\n\tbackground-color: pink;\n\tpadding: 8px;\n\tmargin: 4px;\n\tborder: 1px dotted;\n}\n\n.download-backups .ul {\n\tlist-style: none inside;\n\tmax-width: 800px;\n\tmargin-top: 6px;\n\tmargin-bottom: 12px;\n}\n\n#updraft-plupload-modal {\n\tmargin: 16px 0;\n}\n\n.download-backups .upload {\n\tmax-width: 610px;\n}\n\n.download-backups #plupload-upload-ui {\n\twidth: 100%;\n}\n\n.ud_downloadstatus {\n\tpadding: 10px 0;\n}\n\n#ud_massactions, #updraft-delete-waitwarning {\n\tpadding: 14px;\n\tbackground: rgb(241, 241, 241);\n\tposition: absolute;\n\tleft: 0;\n\ttop: 100%;\n}\n\n#ud_massactions > *, #updraft-delete-waitwarning > * {\n\tvertical-align: middle;\n}\n\n#ud_massactions .updraftplus-remove {\n\tdisplay: inline-block;\n\tmargin-right: 0;\n}\n\n#ud_massactions .updraftplus-remove a {\n\ttext-decoration: none;\n}\n\n#ud_massactions .updraft-viewlogdiv a {\n\ttext-decoration: none;\n\tposition: relative;\n}\n\nsmall.ud_massactions-tip {\n\tdisplay: inline-block;\n\topacity: 0.5;\n\tfont-style: italic;\n\tmargin-left: 20px;\n}\n\n#updraft-navtab-backups-content .updraft_existing_backups {\n\tmargin-bottom: 35px;\n\tposition: relative;\n}\n\n#updraft-message-modal-innards {\n\tpadding: 4px;\n}\n\n#updraft-authenticate-modal {\n\ttext-align: center;\n\tfont-size: 16px !important;\n}\n\n#updraft-authenticate-modal p {\n\tfont-size: 16px;\n}\n\ndiv.ui-dialog.ui-widget.ui-widget-content {\n\tz-index: 99999 !important;\n}\n\n#updraft_delete_form p {\n\tmargin-top: 3px;\n\tpadding-top: 0;\n}\n\n#updraft_restore_form .cannot-restore {\n\tmargin: 8px 0;\n}\n\n.notice.updraft-restore-option {\n\tpadding: 12px;\n\tmargin: 8px 0 4px 0;\n\tborder-left-color: #CCC;\n}\n\n/* updraft_restore_crypteddb */\n#updraft_restorer_dboptions h4 {\n\tmargin: 0px 0px 6px 0px;\n\tpadding: 0px;\n}\n\n.updraftplus_restore_tables_options_container {\n\tmax-height: 250px;\n\toverflow: auto;\n}\n\n.updraft_debugrow th {\n\tvertical-align: top;\n\tpadding-top: 6px;\n\tmax-width: 140px;\n}\n\n.expertmode p {\n\tfont-size: 125%;\n}\n\n.expertmode .call-wp-action {\n\twidth: 300px;\n\theight: 22px;\n}\n\n.updraftplus-lock-advert {\n\tclear: left;\n\tmax-width: 600px;\n}\n\n.uncompressed-data {\n\tclear: left;\n\tmax-width: 600px;\n}\n\n.delete-old-directories {\n\tpadding: 8px;\n\tpadding-bottom: 12px;\n}\n\n.active-jobs {\n\twidth: 100%;\n\ttext-align: center;\n\tpadding: 33px;\n}\n\n.job-id {\n\tmargin-top: 0;\n\tmargin-bottom: 8px;\n}\n\n.next-resumption {\n\tfont-weight: bold;\n}\n\n.updraft_percentage {\n\tz-index: -1;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 0px;\n\ttext-align: center;\n\tbackground-color: #1D8EC2;\n\ttransition: width 0.3s;\n}\n\n.curstage {\n\tz-index: 1;\n\tborder-radius: 2px;\n\tmargin-top: 8px;\n\twidth: 100%;\n\theight: 26px;\n\tline-height: 26px;\n\tposition: relative;\n\ttext-align: center;\n\tfont-style: italic;\n\tcolor: #FFF;\n\tbackground-color: #B7B7B7;\n\ttext-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n}\n\n.curstage-info {\n\tdisplay: inline-block;\n\tz-index: 2;\n}\n\n.retain-files {\n\twidth: 48px;\n}\n\n.backup-interval-description tr td div {\n\tmax-width: 670px;\n}\n\n#updraft-manualdecrypt-modal {\n\twidth: 85%;\n\tmargin: 6px;\n\tmargin-left: 100px;\n}\n\n.directory-permissions {\n\tfont-size: 110%;\n\tfont-weight: bold;\n}\n\n.double-warning {\n\tborder: 1px solid;\n\tpadding: 6px;\n}\n\n.raw-backup-info {\n\tfont-style: italic;\n\tfont-weight: bold;\n\tfont-size: 120%;\n}\n\n.updraft_existingbackup_date {\n\twidth: 22%;\n\tmax-width: 140px;\n}\n\n.updraft_existing_backups_wrapper {\n\tmargin-top: 20px;\n\tborder-top: 1px solid #DDD;\n}\n\n.updraft-no-backups-msg {\n\tpadding: 10px 40px;\n\ttext-align: center;\n\tfont-style: italic;\n}\n\n.tr-bottom-4 {\n\tmargin-bottom: 4px;\n}\n\n.existing-backups-table th {\n\tpadding: 8px 10px;\n}\n\n.form-table .backup-date {\n\twidth: 172px;\n}\n\n.form-table .backup-data {\n\twidth: 426px;\n}\n\n.form-table .updraft_backup_actions {\n\twidth: 272px;\n}\n\n.existing-date {\n\t-webkit-box-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tmax-width: 140px;\n\twidth: 25%;\n}\n\n.line-break-tr {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.line-break-td {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.td-line-color {\n\theight: 2px;\n\tbackground-color: #888;\n}\n\n.raw-backup {\n\tmax-width: 140px;\n}\n\n.existing-backups-actions {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.existing-backups-border {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.existing-backups-border > td {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.existing-backups-border > div {\n\theight: 2px;\n\tbackground-color: #AAA;\n}\n\n.updraft_existing_backup_date {\n\tmax-width: 140px;\n}\n\n.updraftplus-upload {\n\tmargin-right: 6px;\n\tfloat: left;\n\tclear: none;\n}\n\n.before-restore-button {\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.before-restore-button div {\n\tfloat: none;\n\tdisplay: inline-block;\n}\n\n.table-separator-tr {\n\theight: 2px;\n\tpadding: 1px;\n\tmargin: 0px;\n}\n\n.table-separator-td {\n\tmargin: 0px;\n\tpadding: 0px;\n}\n\n.end-of-table-div {\n\theight: 2px;\n\tbackground-color: #AAA;\n}\n\n.last-backup-job {\n\tpadding-top: 3% !important;\n}\n\n.line-height-03 {\n\tline-height: 0.3 !important;\n}\n\n.line-height-13 {\n\tline-height: 1.3 !important;\n}\n\n.line-height-23 {\n\tline-height: 2.3 !important;\n}\n\n#updraft_diskspaceused {\n\tcolor: #DF6926;\n}\n\n#updraft_delete_old_dirs_pagediv {\n\tpadding-bottom: 10px;\n}\n\n/*#updraft_lastlogmessagerow > td, #updraft_last_backup > td {\n\tpadding: 0;\n}*/\n\n/* Time + scheduling add-on*/\n.fix-time {\n\twidth: 70px;\n}\n\n.retain-files {\n\twidth: 70px;\n}\n\n.number-input {\n\tmin-width: 50px;\n\tmax-width: 70px;\n}\n\n.additional-rule-width {\n\tmin-width: 60px;\n\tmax-width: 70px;\n}\n\n/* Add-ons */\n/* Want to fix the WordPress icons so that they fit inline with the text, and don't push everything out of place. */\n\n#updraft-wrap .dashicons.dashicons-adapt-size {\n\tline-height: inherit;\n\tfont-size: inherit;\n}\n\n#updraft-wrap .button span.dashicons:not(.dashicons-adapt-size) {\n\tvertical-align: middle;\n\tmargin-top: -3px;\n}\n\n.addon-logo-150 {\n\tmargin-left: 30px;\n\tmargin-top: 33px;\n\theight: 125px;\n\twidth: 150px;\n}\n\n.margin-bottom-50 {\n\tmargin-bottom: 50px;\n}\n\n.premium-container {\n\twidth: 80%;\n}\n\n/* Main Header */\n\n.main-header {\n\tbackground-color: #DF6926;\n\theight: 200px;\n\twidth: 100%;\n}\n\n.button-add-to-cart {\n\tcolor: white;\n\tborder-color: white;\n\tfloat: none;\n\tmargin-right: 17px;\n}\n\n.button-add-to-cart:hover, .button-add-to-cart:focus, .button-add-to-cart:active {\n\tborder-color: #A0A5AA;\n\tcolor: #A0A5AA;\n}\n\n.addon-title {\n\tmargin-top: 25px;\n}\n\n.addon-text {\n\tmargin-top: 75px;\n}\n\n.image-main-div {\n\twidth: 25%;\n\tfloat: left;\n}\n\n.text-main-div {\n\twidth: 60%;\n\tfloat: left;\n\ttext-align: center;\n\tcolor: white;\n\tmargin-top: 16px;\n}\n\n.text-main-div-title {\n\tfont-weight: bold !important;\n\tcolor: white;\n\ttext-align: center;\n}\n\n.text-main-div-paragraph {\n\tcolor: white;\n}\n\n/* End main header */\n\n/* Vault icons */\n\n.updraftplus-vault-cta {\n\twidth: 100%;\n\ttext-align: center;\n\tmargin-bottom: 50px;\n}\n\n.updraftplus-vault-cta h1 {\n\tfont-weight: bold;\n}\n\n.updraftvault-buy {\n\twidth: 225px;\n\theight: 225px;\n\tborder: 2px solid #777;\n\tdisplay: inline-table;\n\tmargin: 0 auto;\n\tmargin-right: 50px;\n\tposition: relative;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault {\n\twidth: 275px;\n\theight: 275px;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault > a {\n\tright: 21%;\n\tfont-size: 16px;\n\tborder-width: 4px !important;\n}\n\n.updraftplus-vault-cta > .vault-options > .center-vault > p {\n\tfont-size: 16px;\n}\n\n.updraftvault-buy .button-purchase {\n\tright: 24%;\n\tmargin-left: 0;\n\tline-height: 1.7em;\n}\n\n.updraftvault-buy hr {\n\theight: 2px;\n\tbackground-color: #777;\n\tmargin-top: 18px;\n}\n\n.right {\n\tmargin-right: 0px;\n}\n\n.updraftvault-buy .addon-logo-100 {\n\theight: 100px;\n\twidth: 125px;\n\tmargin-top: 7px;\n}\n\n.updraftvault-buy .addon-logo-large {\n\tmargin-top: 7px;\n}\n\n.updraftvault-buy .button-buy-vault {\n\tfont-size: 12px;\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tborder-width: 2px !important;\n\tposition: absolute;\n\tright: 29%;\n\tbottom: 2%;\n}\n\n.premium-addon-div .button-purchase {\n\tline-height: 1.7em;\n}\n\n.updraftvault-buy .button-buy-vault:hover {\n\tborder-color: darkgrey;\n\tcolor: darkgrey;\n}\n\n/* End Vault icons */\n\n/* Premium addons */\n\n.premium-addons {\n\tmargin-top: 80px;\n\twidth: 100%;\n\tmargin: 0 auto;\n\tdisplay: table;\n}\n\n.addon-list {\n\t/* margin-left: 32px; */\n\tdisplay: table;\n\ttext-align: center;\n}\n\n.premium-addons h1 {\n\ttext-align: center;\n\tfont-weight: bold;\n}\n\n.premium-addons p {\n\ttext-align: center;\n}\n\n.premium-addons .premium-addon-div {\n\twidth: 200px;\n\theight: 250px;\n\tborder: 2px solid #777;\n\tdisplay: inline-table;\n\tmargin: 0 auto;\n\tmargin-right: 25px;\n\tmargin-top: 25px;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.premium-addons .premium-addon-div p {\n\tmargin-left: 2px;\n\tmargin-right: 2px;\n}\n\n.premium-addons .premium-addon-div img {\n\twidth: auto;\n\theight: 50px;\n\tmargin-top: 7px;\n}\n\n.premium-addons .premium-addon-div .hr-alignment {\n\tmargin-top: 44px;\n}\n\n.premium-addons .premium-addon-div .dropbox-logo {\n\theight: 39px;\n\twidth: 150px;\n}\n\n.premium-addons .premium-addon-div .azure-logo, .premium-addons .premium-addon-div .onedrive-logo {\n\twidth: 75%;\n\theight: 24px;\n}\n\n.button-purchase {\n\tfont-size: 12px;\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tborder-width: 2px !important;\n\tposition: absolute;\n\tright: 25%;\n\tbottom: 2%;\n}\n\n.button-purchase:hover {\n\tcolor: darkgrey;\n\tborder-color: darkgrey;\n}\n\n.premium-addons .premium-addon-div hr {\n\theight: 2px;\n\tbackground-color: #777;\n\tmargin-top: 18px;\n}\n\n.premium-addon-div p {\n\tfont-style: italic;\n}\n\n.addon-list > .premium-addon-div > .onedrive-fix,\n.addon-list > .premium-addon-div > .azure-logo {\n\tmargin-top: 33px;\n}\n\n.addon-list > .premium-addon-div > .dropbox-fix {\n\tmargin-top: 18px;\n}\n\n/* End premium addons */\n\n\n/* Forgotton something (that is the name of the div rather than a mental note!) */\n\n.premium-forgotton-something {\n\tmargin-top: 5%;\n}\n\n.premium-forgotton-something h1 {\n\ttext-align: center;\n\tfont-weight: bold;\n}\n\n.premium-forgotton-something p {\n\ttext-align: center;\n\tfont-weight: normal;\n}\n\n.premium-forgotton-something .button-faq {\n\tcolor: #DF6926;\n\tborder-color: #DF6926;\n\tmargin: 0 auto;\n\tdisplay: table;\n}\n\n.premium-forgotton-something .button-faq:hover {\n\tcolor: #777;\n\tborder-color: #777;\n}\n\n/* End of forgotton something */\n\n.updraftplusmethod.updraftvault #vaultlogo {\n\tpadding-left: 40px;\n}\n\n.updraftplusmethod.updraftvault .vault_primary_option {\n\tfloat: left;\n\twidth: 50%;\n\ttext-align: center;\n\tpadding-bottom: 20px;\n}\n\n.updraftplusmethod.updraftvault .vault_primary_option div {\n\tclear: right;\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .clear-left {\n\tclear: left;\n}\n\n.updraftplusmethod.updraftvault .padding-top-20px {\n\tpadding-top: 20px;\n}\n\n.updraftplusmethod.updraftvault .padding-top-14px {\n\tpadding-top: 14px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_default .button-primary, .updraftplusmethod.updraftvault #updraftvault_settings_showoptions .button-primary {\n\tfont-size: 18px !important;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_showoptions, .updraftplusmethod.updraftvault #updraftvault_connect {\n\tmargin-top: 8px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_connect input {\n\tmargin-right: 10px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_email {\n\twidth: 280px;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_pass {\n\twidth: 200px;\n}\n\n.updraftplusmethod.updraftvault #vault-is-connected {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraftplusmethod.updraftvault #updraftvault_settings_default p {\n\tclear: left;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-container {\n\ttext-align: center;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option {\n\twidth: 40%;\n\ttext-align: center;\n\tpadding-top: 20px;\n\tdisplay: inline-block;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-size {\n\tfont-size: 200%;\n\tfont-weight: bold;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-link {\n\tclear: both;\n\tfont-size: 150%;\n}\n\n.updraftplusmethod.updraftvault .vault-purchase-option-or {\n\tclear: both;\n\tfont-size: 115%;\n\tfont-style: italic;\n}\n\n/* Automation Backup Advert by B */\n.autobackup-image {\n/* \tdisplay: inline-block; */\n/*\tmin-width: 10%;\n\tmax-width:25%;*/\n/*\tfloat: left;*/\n\tclear: left;\n\tfloat: left;\n\twidth: 110px;\n\theight: 110px;\n}\n\n.autobackup-description {\n\twidth: 100%;\n}\n\n.advert-description {\n\tfloat: left;\n\tclear: right;\n\tpadding: 4px 10px 8px 10px;\n\twidth: 70%;\n\tclear: right;\n\tvertical-align: top;\n}\n\n.advert-btn {\n\tdisplay: inline-block;\n\tmin-width: 10%;\n\tvertical-align: top;\n\tmargin-bottom: 8px;\n}\n\n.advert-btn:first-of-type {\n\tmargin-top: 25px;\n}\n\n.advert-btn a {\n\tdisplay: block;\n\tcursor: pointer;\n}\n\na.btn-get-started {\n\tbackground: #FFF;\n\tborder: 2px solid #DF6926;\n\tborder-radius: 4px;\n\tcolor: #DF6926;\n\tdisplay: inline-block;\n\tmargin-left: 10px !important;\n\tmargin-bottom: 7px !important;\n\tfont-size: 18px !important;\n\tline-height: 20px;\n\tmin-height: 28px;\n\tpadding: 11px 10px 5px 10px;\n\ttext-transform: uppercase;\n\ttext-decoration: none;\n}\n\n.circle-dblarrow {\n\tborder: 1px solid #DF6926;\n\tborder-radius: 100%;\n\tdisplay: inline-block;\n\tfont-size: 17px;\n\tline-height: 17px;\n\tmargin-left: 5px;\n\twidth: 20px;\n\theight: 20px;\n\ttext-align: center;\n}\n\n/* End Automation Backup Advert by B */\n/* New Responsive Pretty Advanced Settings */\n.expertmode .advanced_settings_container {\n\theight: auto;\n\toverflow: hidden;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu {\n\tfloat: none;\n\tborder-bottom: 1px solid rgb(204, 204, 204);\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content {\n\tpadding-top: 5px;\n\tfloat: none;\n\twidth: auto;\n\toverflow: auto;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content h3:first-child {\n\tmargin-top: 5px !important;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content .advanced_tools {\n\tdisplay: none;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content .site_info {\n\tdisplay: block;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {\n\tdisplay: inline-block;\n\tcursor: pointer;\n\tpadding: 5px;\n\tcolor: #000;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_text {\n\tfont-size: 16px;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button:hover {\n\tbackground-color: #EAEAEA;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .active {\n\tbackground-color: #3498DB;\n\tcolor: #FFF;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_menu .active:hover {\n\tbackground-color: #72C5FD;\n\tcolor: #FFF;\n}\n\n.expertmode .advanced_settings_container .advanced_settings_content input#import_settings {\n\theight: auto !important;\n}\n\ndiv#updraft-wrap a {\n\tcursor: pointer !important;\n}\n\n.updraftcentral_wizard_option {\n\twidth: 45%;\n\tfloat: left;\n\ttext-align: center;\n}\n\n.updraftcentral_wizard_option label {\n\tmargin-bottom: 8px;\n}\n\n#updraftcentral_keys_table {\n\tdisplay: none;\n}\n\n.create_key_container {\n\tborder: 1px solid;\n\tborder-radius: 4px;\n\tpadding: 0 0 6px 6px;\n\tmargin-bottom: 8px;\n}\n\n.updraftcentral_cloud_connect {\n\tborder-radius: 4px;\n\tborder: 1px solid #000;\n\tpadding: 0 20px;\n\tmargin-top: 30px;\n\tbackground-color: #FFF;\n}\n\n.updraftcentral_cloud_error {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #F00;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_info {\n\tborder: 1px solid #000;\n\tpadding: 3px 10px;\n\tborder-left: 3px solid #EF8F31;\n\tbackground-color: #FFF;\n\tmargin-bottom: 10px;\n}\n\n.updraftplus_spinner.spinner {\n\tpadding-left: 25px;\n\tfloat: none;\n}\n\n.updraftplus_spinner.spinner.visible {\n\tvisibility: visible;\n\twidth: auto;\n}\n\n.updraftcentral_cloud_notices .updraftplus_spinner {\n\tmargin-top: -5px;\n}\n\n.updraftcentral-subheading {\n\tfont-size: 14px;\n\tmargin-top: -10px;\n\tmargin-bottom: 20px;\n}\n\n#updraftcentral_cloud_form input#email,\n#updraftcentral_cloud_form input#password {\n\tmin-width: 250px;\n}\n\n.updraftcentral-data-consent {\n\tfont-size: 13px;\n\tmargin-bottom: 10px;\n}\n\n.updraftcentral_cloud_wizard_image {\n\tfloat: left;\n\tmin-width: 100px;\n\tmargin-right: 25px;\n}\n\n.updraftcentral_cloud_wizard {\n\tfloat: left;\n}\n\n.updraftcentral_cloud_clear {\n\tclear: both;\n}\n\n.updraftplus-settings-footer {\n\tmargin-top: 30px;\n}\n\n.updraftplus-top-menu {\n\tpadding: 0.5em;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\tbackground: transparent;\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: none;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_row {\n\tflex-direction: column;\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n}\n\n#updraft_inpage_backup #updraft_activejobsrow .updraft_progress_container {\n\twidth: 100%;\n}\n\n#updraft_inpage_backup #updraft_activejobs_table {\n\toverflow: inherit;\n}\n\n#updraft_inpage_backup span#updraft_lastlogcontainer {\n\tpadding: 18px;\n\tbackground: #FAFAFA;\n\tdisplay: block;\n\tfont-size: 90%;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup div#updraft_activejobsrow {\n\tbackground: #FAFAFA;\n\tbox-shadow: 0px 1px 2px rgba(0, 0, 0, 0.1);\n}\n\n#updraft_inpage_backup #updraft_lastlogmessagerow > div {\n\tbackground: transparent;\n\tpadding: 0;\n}\n\n#updraft_inpage_backup .last-message > strong {\n\tdisplay: block;\n\tmargin-top: 13px;\n}\n\nbody.update-core-php #updraft_inpage_backup h2:nth-child(1) {\n\tmargin-top: 1em !important;\n}\n\n/* Restoration page */\n\n.updraft_restore_container {\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tz-index: 99999;\n\tpadding-top: 30px;\n\tbackground: #F1F1F1;\n\toverflow: auto;\n}\n\n.updraft-modal-is-opened .select2-container {\n\tz-index: 99999;\n}\n\nbody.updraft-modal-is-opened {\n\toverflow: hidden;\n}\n\n.updraft_restore_container h2 {\n\tmargin: 0;\n}\n\n.updraft_restore_container .updraftmessage {\n\tbox-sizing: border-box;\n\tmax-width: 860px;\n\tmargin-left: auto;\n\tmargin-right: auto;\n}\n\n.updraft_restore_main {\n\tmax-width: 860px;\n\tmargin: 0 auto;\n\tmargin-top: 20px;\n\tbackground: #FFF;\n\tbox-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);\n\tposition: relative;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tbox-sizing: border-box;\n}\n\n.updraft_restore_main--header {\n\tfont-size: 20px;\n\tfont-weight: bold;\n\ttext-align: center;\n\tpadding-top: 16px;\n\tline-height: 20px;\n\twidth: 100%;\n\tmax-width: 100%;\n\tpadding-right: 30px;\n\tpadding-left: 30px;\n\tbox-sizing: border-box;\n}\n\n.updraft_restore_main--activity {\n\tposition: relative;\n\twidth: calc(100% - 350px);\n\tbox-sizing: border-box;\n}\n\n.updraft_restore_main--activity-title {\n\tpadding: 20px;\n\tmargin: 0;\n}\n\n.show-credentials-form.updraft_restore_main .updraft_restore_main--activity-title {\n\tdisplay: none;\n}\n\n.updraft_restore_main--components {\n\twidth: 350px;\n\tpadding: 20px;\n\tbox-sizing: border-box;\n\tbackground: #F8F8F8;\n\tmin-height: 350px;\n}\n\n.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output {\n\tbackground: #23282D;\n\tcolor: #E3E3E3;\n\tfont-family: monospace;\n\tpadding: 19px;\n\toverflow: auto;\n\tposition: absolute;\n\ttop: 60px;\n\tbottom: 0;\n\tright: 0;\n\tleft: 0;\n}\n\n#updraftplus_ajax_restore_output form {\n\twhite-space: normal;\n\tfont-family: -apple-system, blinkmacsystemfont, \"Segoe UI\", roboto, oxygen-sans, ubuntu, cantarell, \"Helvetica Neue\", sans-serif;\n}\n\n#updraftplus_ajax_restore_output .updraft_restore_errors {\n\tborder: 1px solid #DC3232;\n\tpadding: 10px 20px;\n\twhite-space: normal;\n}\n\n.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output h2 {\n\tcolor: #00A0D2;\n\tpadding-top: 10px;\n\tpadding-bottom: 5px;\n}\n\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output {\n\tpadding: 20px;\n\tborder-left: 1px solid #EEE;\n}\n\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output #message {\n\tmargin-left: 0;\n\tmargin-right: 0;\n}\n\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table td,\n.updraft_restore_main.show-credentials-form div#updraftplus_ajax_restore_output .form-table th {\n\tpadding-bottom: 0;\n}\n\n.updraft_restore_main.show-credentials-form .updraft_restore_main--components {\n\topacity: 0.2;\n}\n\n.updraft_restore_main.show-credentials-form div.error .restore-credential-errors--list p {\n\tmargin: 0;\n\tlist-style-type: disc;\n\tdisplay: list-item;\n\tlist-style-position: inside;\n}\n\n.restore-credential-errors > :first-child {\n\tmargin-top: 0;\n}\n\n.restore-credential-errors > :last-child {\n\tmargin-bottom: 0;\n}\n\nul.updraft_restore_components_list li {\n\tcolor: #BABABA;\n\tfont-size: 1.2em;\n\tmargin-bottom: 1em;\n}\n\nul.updraft_restore_components_list li::before {\n\tcontent: '\\f469';\n\tfont-family: dashicons;\n\tfont-size: 20px;\n\tvertical-align: middle;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\nul.updraft_restore_components_list li span {\n\tvertical-align: middle;\n}\n\nul.updraft_restore_components_list li.done {\n\tcolor: green;\n}\n\nul.updraft_restore_components_list li.done::before {\n\tcontent: \"\\f147\";\n}\n\nul.updraft_restore_components_list li.active {\n\tcolor: inherit;\n}\n\nul.updraft_restore_components_list li.active::before {\n\tcontent: \"\\f463\";\n\tanimation: udp_rotate 1s linear infinite;\n}\n\nul.updraft_restore_components_list li.error {\n\tcolor: #DC3232;\n}\n\nul.updraft_restore_components_list li.error::before {\n\tcontent: \"\\f335\";\n}\n\n.updraft_restore_result {\n\tpadding: 10px 0;\n\tfont-size: 1.3em;\n\tmargin-bottom: 1em;\n\tvertical-align: middle;\n\tdisplay: none;\n}\n\n.updraft_restore_result.restore-error {\n\tcolor: #DC3232;\n}\n\n.updraft_restore_result.restore-success {\n\tcolor: green;\n}\n\n.updraft_restore_result .dashicons {\n\tfont-size: 35px;\n\theight: 35px;\n\tline-height: 33px;\n\twidth: 35px;\n}\n\n.updraft_restore_result span {\n\tvertical-align: middle;\n}\n\n/* Restore modal */\n\n#updraft-restore-modal {\n\twidth: 100%;\n}\n\ndiv#updraft-restore-modal .notice {\n\tbackground: #F8F8F8;\n}\n\n.updraft-restore-modal--stage .updraft--two-halves,\n.updraft-restore-modal--stage .updraft--one-half {\n\tpadding: 20px 30px;\n}\n\n.updraft-restore-modal--header {\n\tpadding: 20px;\n\tpadding-bottom: 0px;\n\ttext-align: center;\n\tborder-bottom: 1px solid #EEE;\n}\n\n.updraft-restore-modal--header h3 {\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.updraft-restore-item {\n\tpadding-bottom: 4px;\n}\n\n.updraft-restore-buttons {\n\tpadding-top: 10px;\n}\n\nul.updraft-restore--stages {\n\tdisplay: inline-block;\n\tmargin: 0;\n\theight: 28px;\n}\n\nul.updraft-restore--stages li {\n\tdisplay: inline-block;\n\tposition: relative;\n\twidth: 12px;\n\theight: 12px;\n\tbackground: #D2D2D2;\n\tborder-radius: 20px;\n\tline-height: 1;\n\tmargin: 0 4px;\n\tvertical-align: middle;\n}\n\nul.updraft-restore--stages li.active {\n\tbackground: #444;\n}\n\n.updraft-restore--footer {\n\tborder-top: 1px solid #EEE;\n\tpadding: 20px;\n\ttext-align: center;\n\tposition: sticky;\n\tbottom: 0;\n\tbackground: #FFF;\n\twidth: 100%;\n\tbox-sizing: border-box;\n}\n\n.updraft-restore--footer .updraft-restore--cancel {\n\tposition: absolute;\n\tleft: 20px;\n\ttop: auto;\n}\n\n.updraft-restore--footer .updraft-restore--next-step {\n\tposition: absolute;\n\tright: 20px;\n\ttop: auto;\n}\n\nul.updraft-restore--stages li span {\n\tposition: absolute;\n\twidth: 120px;\n\tbottom: calc(100% + 14px);\n\tleft: -55px;\n\tbackground: #000000DB;\n\tpadding: 5px;\n\tbox-sizing: border-box;\n\tborder-radius: 4px;\n\tcolor: #FFF;\n\ttext-align: center;\n\tdisplay: none;\n}\n\nul.updraft-restore--stages li:hover span {\n\tdisplay: inline-block;\n}\n\n.updraft-restore-item input[type=checkbox] {\n\tmargin-bottom: -5px;\n}\n\n.updraft-restore-item input[type=checkbox]:checked + label {\n\tfont-weight: bold;\n}\n\n/* Hide close button on download window */\ndiv#updraft-restore-modal .ud_downloadstatus__close {\n\tdisplay: none;\n}\n\n#ud_downloadstatus2:not(:empty) {\n\tmargin-top: 15px;\n}\n\n.dashicons.rotate {\n\tanimation: udp_rotate 1s linear infinite;\n}\n\n/* Activity stalled */\n\nspan#updraftplus_ajax_restore_last_activity {\n\tfont-size: .8rem;\n\tfont-weight: normal;\n\tfloat: right;\n}\n\n.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice {\n\tmargin: -20px -20px 20px;\n\tpadding: 19px;\n}\n\n.updraft_restore_main--components .updated.show_admin_restore_in_progress_notice button {\n\tmargin-right: 5px;\n}\n\n#updraft_migrate_receivingsites .updraftplus-remote-sites-selector .button-primary, .updraft_migrate_add_site .input-field input, .updraft_migrate_add_site button {\n\tvertical-align: middle;\n}\n\n#updraft_migrate_receivingsites .text-link-menu a:not(:last-child) {\n\tpadding-right: 10px;\n}\n\n#updraft_migrate_receivingsites a.updraft_migrate_clear_sites span.dashicons-trash:before {\n\tfont-size: 17px;\n}\n\n#updraft_migrate_receivingsites .updraft_migrate_add_site {\n\tclear: both;\n}\n\n/* RTL Support */\n\n.rtl .advanced_tools.total_size table td {\n\tdirection: ltr;\n\ttext-align: right;\n}\n\n.rtl #plupload-upload-ui2.drag-drop #drag-drop-area2 {\n\tmargin-bottom: 20px;\n}\n\n.rtl #updraft_lastlogmessagerow .updraft-log-link {\n\tfloat: left;\n}\n\n.rtl label.updraft_checkbox > input[type=checkbox] {\n\tmargin-right: -25px;\n\tmargin-left: inherit;\n}\n\n.rtl .ud_downloadstatus__close {\n\tfloat: left !important;\n}\n\n.rtl #updraft_backupextradbs_another_container {\n\tfloat: right;\n}\n\n.rtl input.labelauty + label {\n\tdirection: ltr;\n\tposition: relative;\n\tmin-height: 29px;\n}\n\n.rtl input.labelauty + label > span.labelauty-checked-image, .rtl input.labelauty + label > span.labelauty-unchecked-image {\n\tright: 8px;\n\ttop: 11px;\n\tposition: absolute;\n}\n\n.rtl .button.updraft-close-overlay .dashicons {\n\tmargin-right: -5px;\n\tmargin-left: inherit;\n}\n\n.rtl label.updraft_checkbox {\n\tmargin-right: 26px;\n\tmargin-left: inherit;\n}\n\n.rtl #updraft-wrap .udp-info {\n\tleft: 10px;\n\tright: inherit;\n}\n\n.rtl input.labelauty + label > span.labelauty-unchecked-image + span.labelauty-unchecked,\n.rtl input.labelauty + label > span.labelauty-checked-image + span.labelauty-checked {\n\tmargin-right: 7px;\n\tmargin-left: inherit;\n\tpadding: 7px 7px 7px 26px;\n\twidth: 141px;\n\ttext-align: right;\n}\n\n.rtl #updraft_report_cell button.updraft_reportbox_delete,\n.rtl .updraft_box_delete_button,\n.rtl .updraft_small_box .updraft_box_delete_button {\n\tleft: 4px;\n\tright: inherit;\n}\n\n#updraft_exclude_modal .clause-input-container {\n\toverflow: auto;\n}\n\n#updraft_exclude_modal .clause-input-container select, #updraft_exclude_modal .clause-input-container input {\n\tfloat: left;\n}\n\n#updraft_exclude_modal .clause-input-container .wildcards-input {\n\tmargin: 7px 7px 0 0;\n}\n\n#updraft_exclude_modal .updraft-exclude-panel .contain-clause-sub-label {\n\tmargin-top: 10px;\n\tdisplay: block;\n}\n\n@media only screen and (min-width: 1024px) {\n\n\t#updraft_activejobsrow .updraft_row {\n\t\tdisplay: flex;\n\t\talign-items: baseline;\n\t}\n\n\t#updraft_activejobsrow .updraft_row .updraft_col {\n\t\tflex: auto;\n\t}\n\n\t#updraft_activejobsrow .updraft_progress_container {\n\t\twidth: calc(100% - 230px);\n\t}\n\n}\n\n@media only screen and (min-width: 782px) {\n\n\t.settings_page_updraftplus input[type=text],\n\t.settings_page_updraftplus input[type=password],\n\t.settings_page_updraftplus input[type=number] {\n\t\t/* border-radius: 4px; */\n\t\tline-height: 1.42;\n\t\t/* border: 1px solid #CCC; */\n\t\theight: 27px;\n\t\tpadding: 2px 6px;\n\t\tcolor: #555;\n\t}\n\n\t.settings_page_updraftplus input[type=\"number\"] {\n\t\theight: 31px;\n\t}\n\n\t#ud_massactions.active, #updraft-delete-waitwarning.active {\n\t\tposition: fixed;\n\t\tbottom: 0;\n\t\tleft: 160px;\n\t\tright: 0;\n\t\ttop: auto;\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t\tbox-shadow: 0 0 10px rgba(0, 0, 0, 0.2);\n\t}\n\t\n\t.rtl #ud_massactions.active, .rtl #updraft-delete-waitwarning.active {\n\t\tleft: 0px;\n\t\tright: 160px;\n\t}\n\n\tbody.folded #ud_massactions.active, body.folded #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n\t.updraft-after-form-table {\n\t\tmargin-left: 250px;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.range-selection:not(.backuprowselected) .updraft_existingbackup_date .backup_date_label {\n\t\tcolor: #FFF;\n\t}\n\n}\n\n@media only screen and (min-width: 782px) and (max-width: 960px) {\n\n\tbody.auto-fold #ud_massactions.active, body.auto-fold #updraft-delete-waitwarning.active {\n\t\tleft: 36px;\n\t}\n\n}\n\n@media only screen and (max-width: 782px) {\n\n\t#updraft-wrap {\n\t\tmargin-right: 0;\n\t}\n\n\t#updraft-wrap .form-table td {\n\t\tpadding-right: 0;\n\t}\n\n\tlabel.updraft_checkbox {\n\t\tmargin-bottom: 8px;\n\t\tmargin-top: 8px;\n\t\tmargin-left: 36px;\n\t}\n\n\t.updraft_retain_rules {\n\t\tposition: relative;\n\t\tmargin-right: 0;\n\t\tborder: 1px solid #CCC;\n\t\tpadding: 5px;\n\t\tmargin-bottom: -1px;\n\t}\n\n\t.updraft_retain_rules_delete {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\ttop: 5px;\n\t}\n\n\ta[id*=updraft_retain_] {\n\t\tdisplay: block;\n\t\tpadding: 15px 15px 15px 0;\n\t}\n\n\tlabel.updraft_checkbox > input[type=checkbox] {\n\t\tmargin-left: -33px;\n\t}\n\n\t#updraft-backupnow-button {\n\t\tmargin: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > .updraft_backup_btn_wrapper {\n\t\tpadding-top: 0;\n\t}\n\n\t#ud_massactions, #updraft-delete-waitwarning {\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t}\n\n\t#ud_massactions.active {\n\t\tposition: fixed;\n\t\ttop: auto;\n\t\tbottom: 0;\n\t\twidth: 100%;\n\t\tbox-sizing: border-box;\n\t\ttext-align: center;\n\t\tbox-shadow: 0 -3px 15px rgba(0, 0, 0, 0.08);\n\t\tbackground: #FFF;\n\t\tz-index: 3;\n\t}\n\n\t#ud_massactions strong {\n\t\tdisplay: block;\n\t\tmargin-bottom: 5px;\n\t}\n\n\tsmall.ud_massactions-tip {\n\t\tdisplay: block;\n\t}\n\n/*\t.advert-description {\n\t\tmin-width: 75%;\n\t\tmargin-bottom: 5px;\n\t}\n\n\t.advert-btn {\n\t\tmargin-top: 15px;\n\t\tmargin-left:86px;\n\t\tmin-width: 100%;\n\t}*/\n\n\t.existing-backups-table .backup_date_label > div, .existing-backups-table .backup_date_label span > div {\n\t\tfont-weight: normal;\n\t}\n\n\t.existing-backups-table .backup_date_label .clear-right {\n\t\tdisplay: inline-block;\n\t}\n\n\ttable.widefat.existing-backups-table {\n\t\tborder: 0;\n\t\tbox-shadow: none;\n\t\tbackground: transparent;\n\t}\n\n\t.existing-backups-table thead {\n\t\tborder: none;\n\t\tclip: rect(0 0 0 0);\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\toverflow: hidden;\n\t\tpadding: 0;\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t}\n\n\t.existing-backups-table tr {\n\t\tdisplay: block;\n\t\tmargin-bottom: .625em;\n\t\tpadding-bottom: 16.625px;\n\t\twidth: 100%;\n\t\tpadding: 0;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t\tbackground: #FFF;\n\t\tbox-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);\n\t}\n\n\t.existing-backups-table td {\n\t\tborder-bottom: 1px solid #DDD;\n\t\tdisplay: block;\n\t\tfont-size: .9em;\n\t\ttext-align: left;\n\t\twidth: 100%;\n\t\tpadding: 10px;\n\t\tmargin: 0;\n\t}\n\n\t.wp-list-table.existing-backups-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before {\n\t\t/*\n\t\t* aria-label has no advantage, it won't be read inside a table\n\t\tcontent: attr(aria-label);\n\t\t*/\n\t\tcontent: attr(data-label);\n\t\tfont-weight: bold;\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tleft: auto;\n\t\tpadding-bottom: 10px;\n\t\twidth: auto;\n\t\ttext-align: left;\n\t}\n\n\t.existing-backups-table td:last-child {\n\t\tborder-bottom: 0;\n\t}\n\n\t.form-table td.updraft_existingbackup_date {\n\t\twidth: inherit;\n\t\tmax-width: 100%;\n\t}\n\n\t.existing-backups-table td.before-restore-button {\n\t\tmin-height: 36px;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper {\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t\twidth: 100%;\n\t}\n\n\t.updraft_progress_container {\n\t\t/* width: 77%; */\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row {\n\t\tposition: relative;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected {\n\t\tbackground-color: #FFF;\n\t\tborder-left: 4px solid #0572AA;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td:not(.backup-select) {\n\t\tmargin-left: 50px;\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row td.backup-select {\n\t\twidth: 50px !important;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 0;\n\t\tbox-sizing: border-box;\n\t\theight: 100%;\n\t\tz-index: 1;\n\t\tborder: none;\n\t\tborder-right: 1px solid rgba(0, 0, 0, 0.05);\n\t}\n\n\t#updraft-navtab-backups-content .updraft_existing_backups input[type=\"checkbox\"] {\n\t\theight: 25px;\n\t}\n\n\t.updraft_migrate_intro button.button.button-primary.button-hero {\n\t\tdisplay: block;\n\t\tmargin-right: 0;\n\t\twidth: 100%;\n\t\tmax-width: 100%;\n\t}\n\n\t.updraftclone-main-row {\n\t\tflex-direction: column;\n\t}\n\n\t.updraftclone-main-row > div {\n\t\twidth: auto;\n\t\tmax-width: none;\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.form-table th {\n\t\tpadding-bottom: 10px;\n\t}\n\n\t.updraft--flex {\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_restore_main {\n\t\tflex-wrap: wrap;\n\t\tflex-direction: column;\n\t}\n\n\t.updraft_restore_main--components {\n\t\twidth: 100%;\n\t\tmin-height: 0;\n\t}\n\n\t.updraft_restore_main--activity {\n\t\twidth: 100%;\n\t}\n\n\tdiv#updraftplus_ajax_restore_output,\n\t.updraft_restore_main:not(.show-credentials-form) div#updraftplus_ajax_restore_output {\n\t\tposition: relative;\n\t\ttop: 0;\n\t\tbottom: auto;\n\t}\n\n\t.updraft--flex > .updraft--two-halves,\n\t.updraft--flex > .updraft--one-half {\n\t\twidth: 100%;\n\t}\n\n\t.updraft-restore-item {\n\t\tpadding-bottom: 10px;\n\t\tpadding-top: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 600px) {\n\t\n\t.updraft_next_scheduled_backups_wrapper > div {\n\t}\n\n\t.updraft_next_scheduled_entity {\n\t\tfloat: none;\n\t\twidth: 100%;\n\t\tmargin-bottom: 2em;\n\t}\n\n\t.updraft_time_now_wrapper {\n\t\tmargin-top: 0;\n\t}\n\n\t#updraft_lastlogmessagerow h3 {\n\t\tmargin-bottom: 5px;\n\t}\n\n\t#updraft_lastlogmessagerow .updraft-log-link {\n\t\tdisplay: block;\n\t\tfloat: none;\n\t\tmargin: 0;\n\t\tmargin-bottom: 10px;\n\t}\n\n}\n\n@media screen and (max-width: 520px) {\n}\n\n@media only screen and (min-width: 768px) {\n\n\t.addon-activation-notice {\n\t\tleft: 20em;\n\t}\n\n\t.existing-backups-table tbody tr.range-selection:hover, .existing-backups-table tbody tr.range-selection {\n\t\tbackground: #0572AA; /* #2b7fd9 */\n\t}\n\n\t.existing-backups-table tbody tr:hover {\n\t\tbackground: #F1F1F1;\n\t}\n\n\t.existing-backups-table tbody tr td.before-restore-button {\n\t\tposition: relative;\n\t}\n\n\t.form-table .existing-backups-table thead th.check-column {\n\t\tpadding-left: 6px;\n\t}\n\n\t.existing-backups-table tr td:first-child {\n\t\tborder-left: 4px solid transparent;\n\t}\n\n\t.existing-backups-table tr.backuprowselected td:first-child {\n\t\tborder-left-color: #0572AA;\n\t}\n\n}\n\n@media screen and (min-width: 670px) {\n\t\n\t.expertmode .advanced_settings_container .advanced_settings_menu {\n\t\tfloat: left;\n\t\twidth: 215px;\n\t\tborder-right: 1px solid rgb(204, 204, 204);\n\t\tborder-bottom: none;\n\t}\n\n\t.expertmode .advanced_settings_container .advanced_settings_content {\n\t\tpadding-left: 10px;\n\t\tpadding-top: 0px;\n\t}\n\n\t.expertmode .advanced_settings_container .advanced_settings_menu .advanced_tools_button {\n\t\tdisplay: block;\n\t}\n\n}\n\n@media only screen and (max-width: 1068px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: calc(50% - 10px);\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: 100px;\n\t}\n\n}\n\n@media only screen and (max-width: 600px) {\n\n\t.updraft-more-plugins .udp-box {\n\t\twidth: 100%;\n\t\tmargin-bottom: 20px;\n\t}\n\n\t.updraft_feat_table td:nth-child(2), .updraft_feat_table td:nth-child(3) {\n\t\twidth: auto;\n\t}\n\n\ttable.updraft_feat_table {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table tr {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\ttable.updraft_feat_table td {\n\t\tdisplay: block;\n\t}\n\n\ttable.updraft_feat_table td:first-child {\n\t\twidth: 100%;\n\t\tborder-bottom: none;\n\t}\n\n\ttable.updraft_feat_table td:not(:first-child) {\n\t\twidth: 50%;\n\t\tbox-sizing: border-box;\n\t}\n\n\ttable.updraft_feat_table td:first-child:empty {\n\t\tdisplay: none;\n\t}\n\n\ttd[data-colname]::before {\n\t\tcontent: attr(data-colname);\n\t\tfont-size: 0.8rem;\n\t\tcolor: #CCC;\n\t\tline-height: 1;\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/css/updraftplus-admin.css b/wp-content/plugins/updraftplus/css/updraftplus-admin.css index 7982008b..a8fade57 100644 --- a/wp-content/plugins/updraftplus/css/updraftplus-admin.css +++ b/wp-content/plugins/updraftplus/css/updraftplus-admin.css @@ -105,6 +105,10 @@ flex: auto; } +.updraft-file-ready-label { + padding: 5px; +} + .updraft-color--very-light-grey { background: #F8F8F8; } @@ -1411,7 +1415,7 @@ div[id^="updraft_more_files_jstree_"] .jstree-container-ul > .jstree-leaf> .jstr } /* More files jstree styles */ -div[id^="updraft_more_files_container_"] { +div[id^="updraft_more_files_container_"], div.updraft_googledrive_container { position: relative; display: none; width: 100%; @@ -1423,7 +1427,12 @@ div[id^="updraft_more_files_container_"] { box-shadow: 0 5px 8px rgba(0, 0, 0, 0.1); } -div[id^="updraft_more_files_container_"]::before { +div.updraft_googledrive_container ul.jstree-container-ul { + overflow-y: scroll; + max-height: 200px; +} + +div[id^="updraft_more_files_container_"]::before, div.updraft_googledrive_container::before { content: ' '; width: 11px; height: 11px; @@ -1502,6 +1511,7 @@ p[id^="updraftplus_manual_authentication_error_"] { .updraft-viewlogdiv { display: inline-block; + margin-left: 4px; } .updraft-viewlogdiv input, .updraft-viewlogdiv a { @@ -1565,6 +1575,7 @@ body.admin-color-midnight .button.button-remove:focus { } #filelist, #filelist2 { + margin-top: 30px; width: 100%; } @@ -2034,27 +2045,42 @@ tr.updraftplusmethod img { padding: 8px; } -/*.nav-tab { - border-radius: 20px 20px 0 0; - border-color: grey; - border-width: 2px; - margin-top: 34px; +.updraftplus-nav-tab.nav-tab-active, +.updraftplus-nav-tab.nav-tab-active:hover, +.updraftplus-nav-tab.nav-tab-active:focus, +.updraftplus-nav-tab.nav-tab-active:focus:active { + border-bottom: 1px solid #F0F0F1; + background: #F0F0F1!important; + color: #000; } -.nav-tab:hover { - border-bottom: 0; +.updraftplus-nav-tab.nav-tab-active { + margin-bottom: -1px; + color: #3C434A; } -.nav-tab-active, .nav-tab-active:active { - color: #df6926; - border-color: #D3D3D3; - border-width: 1px; - border-bottom: 0; +.updraftplus-nav-tab.nav-tab-active, .updraftplus-nav-tab:focus:active { + -webkit-box-shadow: none; + box-shadow: none; } -.nav-tab-active:focus { - color: #df6926; -}*/ +.updraftplus-nav-tab { + float: left; + border: 1px solid #C3C4C7; + border-bottom-color: rgb(195, 196, 199); + border-bottom-style: solid; + border-bottom-width: 1px; + border-bottom: none; + margin-left: 0.5em; + padding: 5px 10px; + font-size: 14px; + line-height: 1.71428571; + font-weight: 600; + background: #DCDCDE; + color: #50575E; + text-decoration: none; + white-space: nowrap; +} .nav-tab-wrapper { margin: 14px 0px; @@ -3530,6 +3556,7 @@ ul.updraft-restore--stages li.active { width: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; + z-index: 999999; } .updraft-restore--footer .updraft-restore--cancel { @@ -3706,6 +3733,40 @@ span#updraftplus_ajax_restore_last_activity { display: block; } +/* UpdraftPlus Notice Styling */ +.udp-notice { + border: 1px solid #C3C4C7; + border-left-width: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04); + box-shadow: 0 1px 1px rgba(0, 0, 0, .04); + background: #FFF; + margin: 5px 0 15px 0; + padding: 1px 12px; +} + +.udp-notice p { + margin: .5em 0; + padding: 2px; +} + +.udp-notice.notice-warning { + border-left-color: #DBA617; +} + +.udp-notice.notice-error { + border-left-color: #D63638; +} + +.udp-notice.updraft-restore-option { + border-left-color: #CCC; + margin: 8px 0 4px 0; + padding: 12px; +} + +div#updraft-restore-modal .udp-notice, .udp-notice.updraft-restore-option { + background: #F8F8F8; +} + @media only screen and (min-width: 1024px) { #updraft_activejobsrow .updraft_row { diff --git a/wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css b/wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css new file mode 100644 index 00000000..edbbc3cc --- /dev/null +++ b/wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css @@ -0,0 +1,2 @@ +.updraft_notice_container{height:auto;overflow:hidden}.updraft_review_notice_container{padding:12px;display:-webkit-box;display:-ms-flexbox;display:flex}.updraft_advert_button_container{margin-bottom:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updraft_advert_button_container .dashicons{margin-left:10px}.updraft_advert_content_left{float:none;width:80px;padding-top:9px;margin-right:9px}.updraft_advert_content_left_extra{float:none;width:100px;padding-right:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updraft_advert_content_left img{min-height:72px;min-width:72px}.updraft_advert_content_right{float:none;width:auto;overflow:hidden;font-size:16px}.updraft_advert_content_right p{font-size:16px !important}.updraft_advert_bottom{margin:10px 0;padding:10px;font-size:140%;background-color:white;border-color:#e6db55;border:1px solid;border-radius:4px}.updraft-advert-dismiss{float:right;font-size:13px;font-weight:normal}h3.updraft_advert_heading{margin-top:5px !important;margin-bottom:5px !important}h4.updraft_advert_heading{margin-top:2px !important;margin-bottom:3px !important}.updraft_center_content{text-align:center;margin-bottom:5px}.updraft_notice_link{padding-left:5px}.updraft_text_center{text-align:center}@media screen and (min-width:560px){.updraft_advert_content_left,.updraft_advert_content_left_extra{float:left}} +/*# sourceMappingURL=updraftplus-notices-1-25-5.min.css.map */ diff --git a/wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css.map b/wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css.map new file mode 100644 index 00000000..41b9deaf --- /dev/null +++ b/wp-content/plugins/updraftplus/css/updraftplus-notices-1-25-5.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["css/updraftplus-notices.css"],"names":[],"mappings":"AAAA,oBAAoB;;AAEpB;CACC,YAAY;CACZ,gBAAgB;AACjB;;AAEA;CACC,aAAa;CACb,oBAAa;CAAb,oBAAa;CAAb,aAAa;AACd;;AAEA;CACC,mBAAmB;CACnB,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,yBAAmB;KAAnB,sBAAmB;SAAnB,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,yBAAmB;KAAnB,sBAAmB;SAAnB,mBAAmB;AACpB;;AAEA;CACC,gBAAgB;CAChB,eAAe;AAChB;;AAEA;CACC,WAAW;CACX,WAAW;CACX,gBAAgB;CAChB,eAAe;AAChB;;AAEA;CACC,yBAAyB;AAC1B;;AAEA;CACC,cAAc;CACd,aAAa;CACb,eAAe;CACf,uBAAuB;CACvB,qBAAqB;CACrB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;AACpB;;AAEA;CACC,0BAA0B;CAC1B,6BAA6B;AAC9B;;AAEA;CACC,0BAA0B;CAC1B,6BAA6B;AAC9B;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;;CAEC;EACC,WAAW;CACZ;;AAED","file":"updraftplus-notices-1-25-5.min.css","sourcesContent":["/* CSS for adverts */\n\n.updraft_notice_container {\n\theight: auto;\n\toverflow: hidden;\n}\n\n.updraft_review_notice_container {\n\tpadding: 12px;\n\tdisplay: flex;\n}\n\n.updraft_advert_button_container {\n\tmargin-bottom: 10px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.updraft_advert_button_container .dashicons {\n\tmargin-left: 10px;\n}\n\n.updraft_advert_content_left {\n\tfloat: none;\n\twidth: 80px;\n\tpadding-top: 9px;\n\tmargin-right: 9px;\n}\n\n.updraft_advert_content_left_extra {\n\tfloat: none;\n\twidth: 100px;\n\tpadding-right: 15px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.updraft_advert_content_left img {\n\tmin-height: 72px;\n\tmin-width: 72px;\n}\n\n.updraft_advert_content_right {\n\tfloat: none;\n\twidth: auto;\n\toverflow: hidden;\n\tfont-size: 16px;\n}\n\n.updraft_advert_content_right p {\n\tfont-size: 16px!important;\n}\n\n.updraft_advert_bottom {\n\tmargin: 10px 0;\n\tpadding: 10px;\n\tfont-size: 140%;\n\tbackground-color: white;\n\tborder-color: #E6DB55;\n\tborder: 1px solid;\n\tborder-radius: 4px;\n}\n\n.updraft-advert-dismiss {\n\tfloat: right;\n\tfont-size: 13px;\n\tfont-weight: normal;\n}\n\nh3.updraft_advert_heading {\n\tmargin-top: 5px !important;\n\tmargin-bottom: 5px !important;\n}\n\nh4.updraft_advert_heading {\n\tmargin-top: 2px !important;\n\tmargin-bottom: 3px !important;\n}\n\n.updraft_center_content {\n\ttext-align: center;\n\tmargin-bottom: 5px;\n}\n\n.updraft_notice_link {\n\tpadding-left: 5px;\n}\n\n.updraft_text_center {\n\ttext-align: center;\n}\n\n@media screen and (min-width: 560px) {\n\n\t.updraft_advert_content_left, .updraft_advert_content_left_extra {\n\t\tfloat: left;\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css b/wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css deleted file mode 100644 index 4952c0a6..00000000 --- a/wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.updraft_notice_container{height:auto;overflow:hidden}.updraft_review_notice_container{padding:12px;display:-webkit-box;display:-ms-flexbox;display:flex}.updraft_advert_button_container{margin-bottom:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updraft_advert_button_container .dashicons{margin-left:10px}.updraft_advert_content_left{float:none;width:65px}.updraft_advert_content_left_extra{float:none;width:100px;padding-right:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.updraft_advert_content_right{float:none;width:auto;overflow:hidden}.updraft_advert_bottom{margin:10px 0;padding:10px;font-size:140%;background-color:white;border-color:#e6db55;border:1px solid;border-radius:4px}.updraft-advert-dismiss{float:right;font-size:13px;font-weight:normal}h3.updraft_advert_heading{margin-top:5px !important;margin-bottom:5px !important}h4.updraft_advert_heading{margin-top:2px !important;margin-bottom:3px !important}.updraft_center_content{text-align:center;margin-bottom:5px}.updraft_notice_link{padding-left:5px}.updraft_text_center{text-align:center}@media screen and (min-width:560px){.updraft_advert_content_left,.updraft_advert_content_left_extra{float:left}} -/*# sourceMappingURL=updraftplus-notices-2-23-3.min.css.map */ diff --git a/wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css.map b/wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css.map deleted file mode 100644 index 12ab3f46..00000000 --- a/wp-content/plugins/updraftplus/css/updraftplus-notices-2-23-3.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["css/updraftplus-notices.css"],"names":[],"mappings":"AAAA,oBAAoB;;AAEpB;CACC,YAAY;CACZ,gBAAgB;AACjB;;AAEA;CACC,aAAa;CACb,oBAAa;CAAb,oBAAa;CAAb,aAAa;AACd;;AAEA;CACC,mBAAmB;CACnB,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,yBAAmB;KAAnB,sBAAmB;SAAnB,mBAAmB;AACpB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,WAAW;CACX,WAAW;AACZ;;AAEA;CACC,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB,oBAAa;CAAb,oBAAa;CAAb,aAAa;CACb,yBAAmB;KAAnB,sBAAmB;SAAnB,mBAAmB;AACpB;;AAEA;CACC,WAAW;CACX,WAAW;CACX,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,aAAa;CACb,eAAe;CACf,uBAAuB;CACvB,qBAAqB;CACrB,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,YAAY;CACZ,eAAe;CACf,mBAAmB;AACpB;;AAEA;CACC,0BAA0B;CAC1B,6BAA6B;AAC9B;;AAEA;CACC,0BAA0B;CAC1B,6BAA6B;AAC9B;;AAEA;CACC,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,iBAAiB;AAClB;;AAEA;CACC,kBAAkB;AACnB;;AAEA;;CAEC;EACC,WAAW;CACZ;;AAED","file":"updraftplus-notices-2-23-3.min.css","sourcesContent":["/* CSS for adverts */\n\n.updraft_notice_container {\n\theight: auto;\n\toverflow: hidden;\n}\n\n.updraft_review_notice_container {\n\tpadding: 12px;\n\tdisplay: flex;\n}\n\n.updraft_advert_button_container {\n\tmargin-bottom: 10px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.updraft_advert_button_container .dashicons {\n\tmargin-left: 10px;\n}\n\n.updraft_advert_content_left {\n\tfloat: none;\n\twidth: 65px;\n}\n\n.updraft_advert_content_left_extra {\n\tfloat: none;\n\twidth: 100px;\n\tpadding-right: 15px;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.updraft_advert_content_right {\n\tfloat: none;\n\twidth: auto;\n\toverflow: hidden;\n}\n\n.updraft_advert_bottom {\n\tmargin: 10px 0;\n\tpadding: 10px;\n\tfont-size: 140%;\n\tbackground-color: white;\n\tborder-color: #E6DB55;\n\tborder: 1px solid;\n\tborder-radius: 4px;\n}\n\n.updraft-advert-dismiss {\n\tfloat: right;\n\tfont-size: 13px;\n\tfont-weight: normal;\n}\n\nh3.updraft_advert_heading {\n\tmargin-top: 5px !important;\n\tmargin-bottom: 5px !important;\n}\n\nh4.updraft_advert_heading {\n\tmargin-top: 2px !important;\n\tmargin-bottom: 3px !important;\n}\n\n.updraft_center_content {\n\ttext-align: center;\n\tmargin-bottom: 5px;\n}\n\n.updraft_notice_link {\n\tpadding-left: 5px;\n}\n\n.updraft_text_center {\n\ttext-align: center;\n}\n\n@media screen and (min-width: 560px) {\n\n\t.updraft_advert_content_left, .updraft_advert_content_left_extra {\n\t\tfloat: left;\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/css/updraftplus-notices.css b/wp-content/plugins/updraftplus/css/updraftplus-notices.css index 4081afce..8d52abc7 100644 --- a/wp-content/plugins/updraftplus/css/updraftplus-notices.css +++ b/wp-content/plugins/updraftplus/css/updraftplus-notices.css @@ -28,7 +28,9 @@ .updraft_advert_content_left { float: none; - width: 65px; + width: 80px; + padding-top: 9px; + margin-right: 9px; } .updraft_advert_content_left_extra { @@ -43,10 +45,20 @@ align-items: center; } +.updraft_advert_content_left img { + min-height: 72px; + min-width: 72px; +} + .updraft_advert_content_right { float: none; width: auto; overflow: hidden; + font-size: 16px; +} + +.updraft_advert_content_right p { + font-size: 16px!important; } .updraft_advert_bottom { diff --git a/wp-content/plugins/updraftplus/css/updraftplus-tour-2-23-3.min.css b/wp-content/plugins/updraftplus/css/updraftplus-tour-1-25-5.min.css similarity index 98% rename from wp-content/plugins/updraftplus/css/updraftplus-tour-2-23-3.min.css rename to wp-content/plugins/updraftplus/css/updraftplus-tour-1-25-5.min.css index 47801ee9..3bbe0665 100644 --- a/wp-content/plugins/updraftplus/css/updraftplus-tour-2-23-3.min.css +++ b/wp-content/plugins/updraftplus/css/updraftplus-tour-1-25-5.min.css @@ -1,2 +1,2 @@ .shepherd-theme-arrows-plain-buttons{z-index:9999;max-width:390px !important}.shepherd-theme-arrows-plain-buttons.super-index{z-index:999999}.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content{border-radius:3px;-webkit-filter:none;filter:none;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.15),0 10px 40px rgba(0,0,0,0.15);box-shadow:0 1px 3px rgba(0,0,0,0.15),0 10px 40px rgba(0,0,0,0.15)}.shepherd-element-attached-bottom.shepherd-element-attached-right.shepherd-target-attached-top.shepherd-target-attached-left .shepherd-content:before,.shepherd-element-attached-bottom.shepherd-element-attached-left.shepherd-target-attached-top.shepherd-target-attached-right .shepherd-content:before,.shepherd-element-attached-top.shepherd-element-attached-right.shepherd-target-attached-bottom.shepherd-target-attached-left .shepherd-content:before,.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-bottom.shepherd-target-attached-right .shepherd-content:before{display:none}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-center.shepherd-has-title .shepherd-content:before,.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-right.shepherd-target-attached-bottom.shepherd-has-title .shepherd-content:before,.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-bottom.shepherd-has-title .shepherd-content:before{border-bottom-color:#dd6823}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header{background-color:#dd6823;border-radius:3px 3px 0 0;padding-right:90px}.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content header h3{color:#FFF;font-size:1.2em;float:none}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link{opacity:.7;color:rgba(255,255,255,0);font-size:.8em;border:1px solid #FFF;border-radius:50%;width:22px;height:22px;line-height:20px;padding:0;text-align:center;float:none;position:absolute;right:11px;top:12px}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link::before{color:#FFF;content:attr(data-btntext);position:absolute;right:20px;padding-right:10px}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link::after{content:"\f335";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:dashicons;color:#FFF;position:absolute;left:2px;line-height:21px;font-size:16px}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:hover,.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:focus{border:1px solid #a04e00;opacity:1}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:hover::before,.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:focus::before{color:#a04e00}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:hover::after,.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:focus::after{color:#a04e00}.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-right .shepherd-content:before{top:44px}.shepherd-content .ud-notice{background:#f0f0f0;padding:14px;border-radius:4px;font-size:90% !important;line-height:1.5}.shepherd-content .ud-notice h3{margin-top:0;padding-top:0;margin-bottom:.5em}.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content .shepherd-text p{margin-top:.5em;margin-bottom:1.3em}.ud-notice span.ud-special-offer{font-weight:bold;display:inline-block;padding:1px 6px;border-radius:3px;background:rgba(217,105,0,0.09)}label[for=updraft_servicecheckbox_updraftvault]{border:1px solid rgba(204,204,204,0.4);-webkit-transition:border .5s;transition:border .5s}label[for=updraft_servicecheckbox_updraftvault].emphasize{border-color:#dd6823}.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-back,.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-end{float:left;position:relative;padding-left:10px}.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-end{padding-left:0;color:#b7b7b7}.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-back::before{content:' ';width:6px;height:6px;display:block;border-left:1px solid;border-bottom:1px solid;position:absolute;left:0;top:8px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}a.shepherd-button.udp-tour-end::before{display:inline-block;position:relative;content:"\f335";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:dashicons;font-size:20px;line-height:20px;vertical-align:middle;margin-top:-2px}.updraftplus-welcome-logo{display:block;width:70px;float:left;margin-top:-11px;margin-right:12px}.updraftplus-welcome-logo img{display:block;width:auto;max-width:100%}.highlight-udp .plugins #the-list tr:not([data-slug="updraftplus"]){opacity:.3}@media(max-width:790px){.shepherd-element.shepherd-theme-arrows-plain-buttons{display:none}} -/*# sourceMappingURL=updraftplus-tour-2-23-3.min.css.map */ +/*# sourceMappingURL=updraftplus-tour-1-25-5.min.css.map */ diff --git a/wp-content/plugins/updraftplus/css/updraftplus-tour-2-23-3.min.css.map b/wp-content/plugins/updraftplus/css/updraftplus-tour-1-25-5.min.css.map similarity index 99% rename from wp-content/plugins/updraftplus/css/updraftplus-tour-2-23-3.min.css.map rename to wp-content/plugins/updraftplus/css/updraftplus-tour-1-25-5.min.css.map index a42e3724..981af98c 100644 --- a/wp-content/plugins/updraftplus/css/updraftplus-tour-2-23-3.min.css.map +++ b/wp-content/plugins/updraftplus/css/updraftplus-tour-1-25-5.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["css/updraftplus-tour.scss"],"names":[],"mappings":"AAEA;CACC,aAAa;CACb,0BAA0B;AAC3B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,oBAAY;SAAZ,YAAY;CACZ,sFAA8E;SAA9E,8EAA8E;AAC/E;;AAEA;;;;CAIC,aAAa;AACd;;AAEA;;;CAGC,4BAAiC;AAClC;;AAEA;CACC,yBAA8B;CAC9B,0BAA0B;CAC1B,mBAAmB;AACpB;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,6BAA6B;CAC7B,gBAAgB;CAChB,sBAAsB;CACtB,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,UAAU;CACV,kBAAkB;CAClB,WAAW;CACX,kBAAkB;CAClB,WAAW;CACX;AAoBD;;AAlBC;EACC,WAAW;EACX,2BAA2B;EAC3B,kBAAkB;EAClB,WAAW;EACX,mBAAmB;CACpB;;AACA;EACC,gBAAgB;EAChB,mCAAmC;EACnC,kCAAkC;EAClC,sBAAsB;EACtB,WAAW;EACX,kBAAkB;EAClB,SAAS;EACT,iBAAiB;EACjB,eAAe;CAChB;;AAGD;;CAEC,yBAAyB;CACzB;AAOD;;AANC;EACC,cAAc;CACf;;AACA;EACC,cAAc;CACf;;AAGD;CACC,SAAS;AACV;;AAEA;;CAEC,mBAAmB;CACnB,aAAa;CACb,kBAAkB;CAClB,yBAAyB;CACzB,gBAAgB;;AAOjB;;AANC;EACC,aAAa;EACb,cAAc;EACd,mBAAmB;CACpB;;AAID;CACC,iBAAiB;CACjB,oBAAoB;AACrB;;AAEA;CACC,iBAAiB;CACjB,qBAAqB;CACrB,gBAAgB;CAChB,kBAAkB;CAClB,mCAAmC;AACpC;;AAEA;;CAEC,0CAA0C;CAC1C,8BAAsB;CAAtB;;AAKD;;AAJC;EACC,qBAA0B;CAC3B;;AAID;;CAEC,WAAW;CACX,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,cAAc;AACf;;AAEA;CACC,YAAY;CACZ,UAAU;CACV,WAAW;CACX,cAAc;CACd,sBAAsB;CACtB,wBAAwB;CACxB,kBAAkB;CAClB,SAAS;CACT,QAAQ;CACR,gCAAwB;SAAxB,wBAAwB;AACzB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,gBAAgB;CAChB,mCAAmC;CACnC,kCAAkC;CAClC,sBAAsB;CACtB,eAAe;CACf,iBAAiB;CACjB,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,WAAW;CACX,WAAW;CACX,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,cAAc;CACd,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;;AAEA;;CAEC;EACC,aAAa;CACd;;AAED","file":"updraftplus-tour-2-23-3.min.css","sourcesContent":["$udp_primary: #DD6823;\n$wp_blue: #0073AA;\n.shepherd-theme-arrows-plain-buttons {\n\tz-index: 9999;\n\tmax-width: 390px!important;\n}\n\n.shepherd-theme-arrows-plain-buttons.super-index {\n\tz-index: 999999;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content {\n\tborder-radius: 3px;\n\tfilter: none;\n\tbox-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 10px 40px rgba(0, 0, 0, 0.15);\n}\n\n.shepherd-element-attached-bottom.shepherd-element-attached-right.shepherd-target-attached-top.shepherd-target-attached-left .shepherd-content:before,\n.shepherd-element-attached-bottom.shepherd-element-attached-left.shepherd-target-attached-top.shepherd-target-attached-right .shepherd-content:before,\n.shepherd-element-attached-top.shepherd-element-attached-right.shepherd-target-attached-bottom.shepherd-target-attached-left .shepherd-content:before,\n.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-bottom.shepherd-target-attached-right .shepherd-content:before {\n\tdisplay: none;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-center.shepherd-has-title .shepherd-content:before,\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-right.shepherd-target-attached-bottom.shepherd-has-title .shepherd-content:before,\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-bottom.shepherd-has-title .shepherd-content:before {\n\tborder-bottom-color: $udp_primary;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header {\n\tbackground-color: $udp_primary;\n\tborder-radius: 3px 3px 0 0;\n\tpadding-right: 90px;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content header h3 {\n\tcolor: #FFF;\n\tfont-size: 1.2em;\n\tfloat: none;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link {\n\topacity: 0.7;\n\tcolor: rgba(255, 255, 255, 0);\n\tfont-size: 0.8em;\n\tborder: 1px solid #FFF;\n\tborder-radius: 50%;\n\twidth: 22px;\n\theight: 22px;\n\tline-height: 20px;\n\tpadding: 0;\n\ttext-align: center;\n\tfloat: none;\n\tposition: absolute;\n\tright: 11px;\n\ttop: 12px;\n\n\t&::before {\n\t\tcolor: #FFF;\n\t\tcontent: attr(data-btntext);\n\t\tposition: absolute;\n\t\tright: 20px;\n\t\tpadding-right: 10px;\n\t}\n\t&::after {\n\t\tcontent: \"\\f335\";\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tfont-family: dashicons;\n\t\tcolor: #FFF;\n\t\tposition: absolute;\n\t\tleft: 2px;\n\t\tline-height: 21px;\n\t\tfont-size: 16px;\n\t}\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:hover,\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:focus {\n\tborder: 1px solid #A04E00;\n\topacity: 1;\n\t&::before {\n\t\tcolor: #A04E00;\n\t}\n\t&::after {\n\t\tcolor: #A04E00;\n\t}\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-right .shepherd-content:before {\n\ttop: 44px;\n}\n\n.shepherd-content .ud-notice {\n\n\tbackground: #F0F0F0;\n\tpadding: 14px;\n\tborder-radius: 4px;\n\tfont-size: 90% !important;\n\tline-height: 1.5;\n\th3 {\n\t\tmargin-top: 0;\n\t\tpadding-top: 0;\n\t\tmargin-bottom: .5em;\n\t}\n\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content .shepherd-text p {\n\tmargin-top: 0.5em;\n\tmargin-bottom: 1.3em;\n}\n\n.ud-notice span.ud-special-offer {\n\tfont-weight: bold;\n\tdisplay: inline-block;\n\tpadding: 1px 6px;\n\tborder-radius: 3px;\n\tbackground: rgba(217, 105, 0, 0.09);\n}\n\nlabel[for=updraft_servicecheckbox_updraftvault] {\n\n\tborder: 1px solid rgba(204, 204, 204, 0.4);\n\ttransition: border .5s;\n\t&.emphasize {\n\t\tborder-color: $udp_primary;\n\t}\n\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-back,\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-end {\n\tfloat: left;\n\tposition: relative;\n\tpadding-left: 10px;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-end {\n\tpadding-left: 0;\n\tcolor: #B7B7B7;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-back::before {\n\tcontent: ' ';\n\twidth: 6px;\n\theight: 6px;\n\tdisplay: block;\n\tborder-left: 1px solid;\n\tborder-bottom: 1px solid;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 8px;\n\ttransform: rotate(45deg);\n}\n\na.shepherd-button.udp-tour-end::before {\n\tdisplay: inline-block;\n\tposition: relative;\n\tcontent: \"\\f335\";\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-family: dashicons;\n\tfont-size: 20px;\n\tline-height: 20px;\n\tvertical-align: middle;\n\tmargin-top: -2px;\n}\n\n.updraftplus-welcome-logo {\n\tdisplay: block;\n\twidth: 70px;\n\tfloat: left;\n\tmargin-top: -11px;\n\tmargin-right: 12px;\n}\n\n.updraftplus-welcome-logo img {\n\tdisplay: block;\n\twidth: auto;\n\tmax-width: 100%;\n}\n\n.highlight-udp .plugins #the-list tr:not([data-slug=\"updraftplus\"]) {\n\topacity: 0.3;\n}\n\n@media(max-width: 790px) {\n\n\t.shepherd-element.shepherd-theme-arrows-plain-buttons {\n\t\tdisplay: none;\n\t}\n\n}\n"]} \ No newline at end of file +{"version":3,"sources":["css/updraftplus-tour.scss"],"names":[],"mappings":"AAEA;CACC,aAAa;CACb,0BAA0B;AAC3B;;AAEA;CACC,eAAe;AAChB;;AAEA;CACC,kBAAkB;CAClB,oBAAY;SAAZ,YAAY;CACZ,sFAA8E;SAA9E,8EAA8E;AAC/E;;AAEA;;;;CAIC,aAAa;AACd;;AAEA;;;CAGC,4BAAiC;AAClC;;AAEA;CACC,yBAA8B;CAC9B,0BAA0B;CAC1B,mBAAmB;AACpB;;AAEA;CACC,WAAW;CACX,gBAAgB;CAChB,WAAW;AACZ;;AAEA;CACC,YAAY;CACZ,6BAA6B;CAC7B,gBAAgB;CAChB,sBAAsB;CACtB,kBAAkB;CAClB,WAAW;CACX,YAAY;CACZ,iBAAiB;CACjB,UAAU;CACV,kBAAkB;CAClB,WAAW;CACX,kBAAkB;CAClB,WAAW;CACX;AAoBD;;AAlBC;EACC,WAAW;EACX,2BAA2B;EAC3B,kBAAkB;EAClB,WAAW;EACX,mBAAmB;CACpB;;AACA;EACC,gBAAgB;EAChB,mCAAmC;EACnC,kCAAkC;EAClC,sBAAsB;EACtB,WAAW;EACX,kBAAkB;EAClB,SAAS;EACT,iBAAiB;EACjB,eAAe;CAChB;;AAGD;;CAEC,yBAAyB;CACzB;AAOD;;AANC;EACC,cAAc;CACf;;AACA;EACC,cAAc;CACf;;AAGD;CACC,SAAS;AACV;;AAEA;;CAEC,mBAAmB;CACnB,aAAa;CACb,kBAAkB;CAClB,yBAAyB;CACzB,gBAAgB;;AAOjB;;AANC;EACC,aAAa;EACb,cAAc;EACd,mBAAmB;CACpB;;AAID;CACC,iBAAiB;CACjB,oBAAoB;AACrB;;AAEA;CACC,iBAAiB;CACjB,qBAAqB;CACrB,gBAAgB;CAChB,kBAAkB;CAClB,mCAAmC;AACpC;;AAEA;;CAEC,0CAA0C;CAC1C,8BAAsB;CAAtB;;AAKD;;AAJC;EACC,qBAA0B;CAC3B;;AAID;;CAEC,WAAW;CACX,kBAAkB;CAClB,kBAAkB;AACnB;;AAEA;CACC,eAAe;CACf,cAAc;AACf;;AAEA;CACC,YAAY;CACZ,UAAU;CACV,WAAW;CACX,cAAc;CACd,sBAAsB;CACtB,wBAAwB;CACxB,kBAAkB;CAClB,SAAS;CACT,QAAQ;CACR,gCAAwB;SAAxB,wBAAwB;AACzB;;AAEA;CACC,qBAAqB;CACrB,kBAAkB;CAClB,gBAAgB;CAChB,mCAAmC;CACnC,kCAAkC;CAClC,sBAAsB;CACtB,eAAe;CACf,iBAAiB;CACjB,sBAAsB;CACtB,gBAAgB;AACjB;;AAEA;CACC,cAAc;CACd,WAAW;CACX,WAAW;CACX,iBAAiB;CACjB,kBAAkB;AACnB;;AAEA;CACC,cAAc;CACd,WAAW;CACX,eAAe;AAChB;;AAEA;CACC,YAAY;AACb;;AAEA;;CAEC;EACC,aAAa;CACd;;AAED","file":"updraftplus-tour-1-25-5.min.css","sourcesContent":["$udp_primary: #DD6823;\n$wp_blue: #0073AA;\n.shepherd-theme-arrows-plain-buttons {\n\tz-index: 9999;\n\tmax-width: 390px!important;\n}\n\n.shepherd-theme-arrows-plain-buttons.super-index {\n\tz-index: 999999;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content {\n\tborder-radius: 3px;\n\tfilter: none;\n\tbox-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 10px 40px rgba(0, 0, 0, 0.15);\n}\n\n.shepherd-element-attached-bottom.shepherd-element-attached-right.shepherd-target-attached-top.shepherd-target-attached-left .shepherd-content:before,\n.shepherd-element-attached-bottom.shepherd-element-attached-left.shepherd-target-attached-top.shepherd-target-attached-right .shepherd-content:before,\n.shepherd-element-attached-top.shepherd-element-attached-right.shepherd-target-attached-bottom.shepherd-target-attached-left .shepherd-content:before,\n.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-bottom.shepherd-target-attached-right .shepherd-content:before {\n\tdisplay: none;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-center.shepherd-has-title .shepherd-content:before,\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-right.shepherd-target-attached-bottom.shepherd-has-title .shepherd-content:before,\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-bottom.shepherd-has-title .shepherd-content:before {\n\tborder-bottom-color: $udp_primary;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header {\n\tbackground-color: $udp_primary;\n\tborder-radius: 3px 3px 0 0;\n\tpadding-right: 90px;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content header h3 {\n\tcolor: #FFF;\n\tfont-size: 1.2em;\n\tfloat: none;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link {\n\topacity: 0.7;\n\tcolor: rgba(255, 255, 255, 0);\n\tfont-size: 0.8em;\n\tborder: 1px solid #FFF;\n\tborder-radius: 50%;\n\twidth: 22px;\n\theight: 22px;\n\tline-height: 20px;\n\tpadding: 0;\n\ttext-align: center;\n\tfloat: none;\n\tposition: absolute;\n\tright: 11px;\n\ttop: 12px;\n\n\t&::before {\n\t\tcolor: #FFF;\n\t\tcontent: attr(data-btntext);\n\t\tposition: absolute;\n\t\tright: 20px;\n\t\tpadding-right: 10px;\n\t}\n\t&::after {\n\t\tcontent: \"\\f335\";\n\t\t-webkit-font-smoothing: antialiased;\n\t\t-moz-osx-font-smoothing: grayscale;\n\t\tfont-family: dashicons;\n\t\tcolor: #FFF;\n\t\tposition: absolute;\n\t\tleft: 2px;\n\t\tline-height: 21px;\n\t\tfont-size: 16px;\n\t}\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:hover,\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-has-title .shepherd-content header a.shepherd-cancel-link:focus {\n\tborder: 1px solid #A04E00;\n\topacity: 1;\n\t&::before {\n\t\tcolor: #A04E00;\n\t}\n\t&::after {\n\t\tcolor: #A04E00;\n\t}\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons.shepherd-element-attached-top.shepherd-element-attached-left.shepherd-target-attached-right .shepherd-content:before {\n\ttop: 44px;\n}\n\n.shepherd-content .ud-notice {\n\n\tbackground: #F0F0F0;\n\tpadding: 14px;\n\tborder-radius: 4px;\n\tfont-size: 90% !important;\n\tline-height: 1.5;\n\th3 {\n\t\tmargin-top: 0;\n\t\tpadding-top: 0;\n\t\tmargin-bottom: .5em;\n\t}\n\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content .shepherd-text p {\n\tmargin-top: 0.5em;\n\tmargin-bottom: 1.3em;\n}\n\n.ud-notice span.ud-special-offer {\n\tfont-weight: bold;\n\tdisplay: inline-block;\n\tpadding: 1px 6px;\n\tborder-radius: 3px;\n\tbackground: rgba(217, 105, 0, 0.09);\n}\n\nlabel[for=updraft_servicecheckbox_updraftvault] {\n\n\tborder: 1px solid rgba(204, 204, 204, 0.4);\n\ttransition: border .5s;\n\t&.emphasize {\n\t\tborder-color: $udp_primary;\n\t}\n\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-back,\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-end {\n\tfloat: left;\n\tposition: relative;\n\tpadding-left: 10px;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-end {\n\tpadding-left: 0;\n\tcolor: #B7B7B7;\n}\n\n.shepherd-element.shepherd-theme-arrows-plain-buttons .shepherd-content footer .shepherd-buttons li .shepherd-button.udp-tour-back::before {\n\tcontent: ' ';\n\twidth: 6px;\n\theight: 6px;\n\tdisplay: block;\n\tborder-left: 1px solid;\n\tborder-bottom: 1px solid;\n\tposition: absolute;\n\tleft: 0px;\n\ttop: 8px;\n\ttransform: rotate(45deg);\n}\n\na.shepherd-button.udp-tour-end::before {\n\tdisplay: inline-block;\n\tposition: relative;\n\tcontent: \"\\f335\";\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n\tfont-family: dashicons;\n\tfont-size: 20px;\n\tline-height: 20px;\n\tvertical-align: middle;\n\tmargin-top: -2px;\n}\n\n.updraftplus-welcome-logo {\n\tdisplay: block;\n\twidth: 70px;\n\tfloat: left;\n\tmargin-top: -11px;\n\tmargin-right: 12px;\n}\n\n.updraftplus-welcome-logo img {\n\tdisplay: block;\n\twidth: auto;\n\tmax-width: 100%;\n}\n\n.highlight-udp .plugins #the-list tr:not([data-slug=\"updraftplus\"]) {\n\topacity: 0.3;\n}\n\n@media(max-width: 790px) {\n\n\t.shepherd-element.shepherd-theme-arrows-plain-buttons {\n\t\tdisplay: none;\n\t}\n\n}\n"]} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/example-decrypt.php b/wp-content/plugins/updraftplus/example-decrypt.php index fb2e8079..edea174d 100644 --- a/wp-content/plugins/updraftplus/example-decrypt.php +++ b/wp-content/plugins/updraftplus/example-decrypt.php @@ -38,6 +38,6 @@ function rijndael_decrypt_file($file, $key) { $ciphertext = file_get_contents($file); - print $rijndael->decrypt($ciphertext); + print $rijndael->decrypt($ciphertext);// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- intentional binary output } diff --git a/wp-content/plugins/updraftplus/images/dashicon-white.png b/wp-content/plugins/updraftplus/images/dashicon-white.png new file mode 100644 index 0000000000000000000000000000000000000000..0729c18869339437d09488645404a5ee7f2b2ab4 GIT binary patch literal 785 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mUKs7M+SzC{oH>NS%G|oWRD45bDP46hOx7_4S6Fo+k-*%fF5l;AAzh%9DckZl8D#@I!| zjX*)BByV>YhX3vTXZ8bm>?NMQuI$gbB$+f=em2;D1`4T`xJHzuB$lLFB^RXvDF!10 zBV%1d16?E25CbDCV+$)2V{HQiD+7atx>kQsH00)|WTsW()^MSq$pPpB7Ec$)5DWjQ zQ|!HE0!5DAKa<1bVzOX@Q>Pox4Hj#2QN7t)GMoN-?A}I=m`IV`R5bnuHnc^ zU74UH7U&`zFuP;-X5sqhXYZy=pQ~E&;EnD3d&TefnAcxRRrH*+&}-=?uKEKmESIv6 zaBlu9Uno=mBYDBa&0;)vw5NJ0r+w$p%@WV8_+!O$INmOjIcu3s)MAaO<>|++y;NBC z+;E-J{0v^EZr%gikGHyYvhFyzVPTeH!fMxwu5Zm6dW&pJbS{1oeDl4xVII>TCr$BB zpJ!?JOx{1qa;u5!p}(&u9gt#m{J`;ZTa4cG(k+#u4mle&Gh|LYEjoOOCri<1bEnw5 z>vPIXmL6g*ST5i8iebCm<2y^ruFTDvz9Qq-`^#q<)@O1lPGpPq3hVzeBP!+Btt93h zH^bGgu71oZs=Lo~@R|64OcN8Q)uZ0;-w$&*=T{np(55Ing@oa%kR(+BRXG_>N0Y>;?aJYcD8IT;A*H zxQ{*AaO;wUwfiT`KelT>16$6)xa{@pt!7eoLSOHuHvN)}IdnNMS8is!<+Ah^Lkqw6 q-cKvMs${o4*fwuf(f_|9@pF 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%0A!mit*A0(>KZKFP8f=GJc{cpnO=V1};~>GoMH)8_ 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 BmNNhV literal 0 HcmV?d00001 diff --git a/wp-content/plugins/updraftplus/images/notices/collection_sale_24.png b/wp-content/plugins/updraftplus/images/notices/collection_sale_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e1bf1a2e19bf37b92ce3c8ddb40be62dd91d6a84 GIT binary patch literal 56645 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

;cgjVr#e#oF_+>DoV%P>a!;Qof{W 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 D4&kUi literal 0 HcmV?d00001 diff --git a/wp-content/plugins/updraftplus/images/notices/spring_sale_24.png b/wp-content/plugins/updraftplus/images/notices/spring_sale_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a4fbdd81f982b018847874569e5fccb0f4e3f8 GIT binary patch literal 51840 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 P00000NkvXXu0mjfTZp@E literal 0 HcmV?d00001 diff --git a/wp-content/plugins/updraftplus/images/notices/summer_sale_24.png b/wp-content/plugins/updraftplus/images/notices/summer_sale_24.png new file mode 100644 index 0000000000000000000000000000000000000000..0f50faf13d0d37cf881fe1d536bd43264eef301a GIT binary patch literal 51058 zcmbUIWmKF^6E=zt?l3^GFa!+b1ksj9B7zN+r(@2bi&Sm^K30RRA&oUD{O002J)0KhS$!ozATWAM3Q z4>T89J$C>A1Mj~t+{{|wGXOvVkdqSE^vV90gW^xR_wshuT71HAmecPFvR=}Q|I|xQ zIdyLTgdm^Kf+TPlVyw`H@|M~p_Sr^KFO(*f9Zy=80s$VJ6n{iR^Wh@-E}ms2ydSxAsOMY%O$wmck57{M z8_u_wU+l5lEZ(gZsH_In59>reWE{C}1!DcMII3MBlW zIK{?;YW_^ayZ6J0xIjh0x&H&uU@Sxmc@O0K-A4fE_$nGf{GUv#e8hwi06@Rr;s41O z@HHLbe}evhSdf$$<^TX#DFg@sUy0#;VH^X$dgJ^jOCgf~qeJ~9umz{4Dfmb{z0??I%eMFpXK-Co>~Y`&4LYvI)}yosc6Z&E)B*A3S4nF&=5Zvao_Ja{@NO=Z{5qk z*%cG{Boq0lA0Ai6J+0e$h0*H}0AI@xK4}CUN<6z(+N+1T|(nteA!JnNB)KaP& zJe$#FXz(ya$f= z$S8HjhAa3(a1lpbnBNflamOwv>M(awi2^sllXcA7dFjMs4_>d3m zF6G6C%a!OqX=mxi_FbhS9Wm$Phu;rRgY+@nlH*wr^(26ZJC@XUuaUsX)@LM!NH6fe zeC4Um+P7NzOs_vDy}ZwR7@ogEoNAbde0`Z1Q5BU!wY7hA7Dynf!K4lpcL9y@XA@)8 zvrNmVl0K8G+gTOW)AYvv;Q#81kj9W+d~A1~oM{!a7I_R~v~0Bed`dvv@t`2{cFgCi&$25AyD;&-d|6pUMsN784+X_*eQz(#`rs z9q)TzBq33G3bk!_uXQ}SsT87<{5$BuTJj-or%I2t43u?!?9&tZ?yETJ$B!RV2=*;W z1x~`(O=BL#7V!%l3MKkYYdbbeZC_>f5I!4hu>e=_ux6Y(b%0ofw604^*p50IlS;2x zs(+aodGPz#WgyLQ$!K+q>M$+Dr~Qf?cREeJ#&sK2z-V0lQ}^Qt)1a=^=1z0r3@wo0 z{9zH)Guzy8zHpESIduVpiKxTXU8RPyMxx7XA|k{Je;j(Ex?u?;Si6+(it2|`t4fiq z8R37T@QaQ!x@ctv$0`)hAYl+bpLhA~duc7PeaK@x5F{Y6{DA$sxSb<}n&ul1BbpeO zi5^Hh^K5qW=qKaa2zpryHUO$tcYB{78bQ|L8=h(N15T=xL?UU1f6C_1XIv&C5r<_Q zPe#9_K_4d1@Ke_}ALJ{ziXR5_?w;ZM&=ht;Pjz1R^**vO=!`SoEv;#Ow!FQxXZUm8 z&|x7y5x_LK&ha(9dD}O}^J-tlACokfZ;e8SKHD)E-(k~xA_bB77sqr?@FAM%$hrRA zDK(#T)gIO3Z@+B9eXzgO*P1C~e8e`9*9FwPJrPnL@&M*bC;12oxV)-I1Cl(9ku z(IXZDU#@MmwC2s@gquqGP2&c4Fn}M?zjp&;sX+&*!8i_ZIB{wT7xQ`1X3djIkfz3Y zB8NZpMTfxQuDiv|Aqcp(l*_B=VZf=e$2C{a-Jm3yF!{duSGv|I+v40Yhy7>C;~i0p z@j*FAn+BReLd`}(gYVT2WvN;(jsI9sGdvKogY$zoWP&653UW+fzzY_|0XPq^ccl5v znC?pKI-lR2H62>NWrT>a+%w;C=-=zg`xAzl7o_W_MiZOzWzAk*c}?NHR;Q}$z-0(giDeoy6C+cZZ5Hx{GK5X0eVBOJG8SqdRUlOTTS<>R zI;t@0=y($p=4dKCDD;zp@FRsVSnO0%{at>VT9@SPA?%X*^kbxcuw!T zPwcqU#6gnxj7KxY3gVLt>eT+Sj$5K?RU_T~M-8$k??q0>~o<9jWDxPdj z_k(&GA{EFl`tT<>l?*k1XDCkatd$I*2bYwp*(KzKy+p_8OO^`1tJnaNb*EiN;*Jscki8Gxz{h6H(>it3-r`H= z^^?jnQu4(>HK1a8zJVM@8$b)wCWo)I6>ynMpd>LuJcAb8i`pMqyX8dc4K@}%ea%H2 z^<8_yVwQ8V9=&4D^%(xtOdEJ>r^hGm6FrS8b!)5D z2Yjsu`MzK+9iJjhDu()b#)z=p-QCH_Nx3NoKmDUF*B+ z?=7YJ9Y?tO&EDkA%Qnz;nw%HIJ}ma^%;y!inPp1{>U%A}p)8_Hd$Qm+-`r+q?PV03 zbK%jqyfF3r1k5G*KDLM^FwXn)m?DCJa(5{IDa$Y!y=lnEuNG#B`amDLg_3QngH>=T`w2X4ON-^bi4epAMs3fDq^|kd32+X%`h)&)yYYh`40^mb z58tb2oaqq3u#<#%oE_4NBa5u&25eNjL9U5j5`_2L813za-yIR0OW7f2SRVSF)aIL? znS-RQRTR3P(q@8ZF3#uxCLrrG$9mpu%N)wfj5c%~EG!7(cM#K{mWxTRMr09Ct_`nP zl3fAykBuMZW?+5Ns{$gk63@CZmR7jBQ;SkOXUp74wrLd^Znl}wU3pCm&cgotypMzK zd0!x8hVfB2umfpbLm~FnsV}3i&?}cmn~Zbuf*0>7rvrj!&w>46sbcM6Cgrp*h%ycV zMa1CxH>sZr6KjHDY`k@L$xnn9MY+<0B|m+=C^dcXin{Tq5)1Wmy>-Dl?5vA%Iy8la z$9pY-2C}9Ffq~$8)FGCb1HGsOMdi|&D{y#BJYDpn9)d<{p;aQ~f}6CZ zkIavfXN)nqIt-Z)O!%Z+kA;3H;Yys?j)#@yB6PCR4QL!zh5NPS>VKJi`t z8+45}{VG59F5X~4>=My2&! z!2SwJMx|m?HF%bD!AbJn$)O{4^7jxbS9QbvO}&|+u1*w{rpvNsAv?YmwV}0$58m%4 z2Nw3Dmc4WL=aGlx&=vHuuq27O$}CxsF)1w{8i|MgEFY5vkoDf8l6v_gBgl-W)Aw*- zN<lT zI`HdIL~Z3fCME6dGD!#i+3t?Vi6UrEe?_$$AMzV~Vk(}L*AGl;{I%|~Ut_dVEE;(f zcgpbCXQeeT%4FnXP=&Scyk&y?R5?K;R6GNez;>id$+iCZ8r}HbkS+66-RZW9@FYv+ zW7T7%<$=50BE-?Boqoj^>Sqy%>VAv@%Wkih<>Yb^c#vzpd(VX-3$i)hVIlisT>=m7GL=ykA@+@;BF& ztoFKku7h#b+NBfeLfhAlrS)!Q`_Dr^ls8JrhM{Ao{JfOnzDMd;+n=s(B#{fJlQT23 z6SKLwEq=QilxzCj$yAVm-LCuRb=YQ(!->OsT-V7|WIxX=E_VAbnSJYt04B;8)5!VU zx(Vd?-D%0wTz9nAf5g-0E2ER^b!d{M!TZ*eo>28+?kb500pXjDapROj6WGxDU~TIa zZq4s30PL-7>tsYYgp!<$X5QLkGu?XjghI&t^+)?si}BjmKO zKFAIc-rTAHDO}JKWdN7Py4f%zmTaL3Ij;rpq0+7AsAo^=A#s!8DCVx_03V-;`>?(r zrVpL%N~qEkU1vHBiva^Zr)6%hZp~7gU_X`it?>vU{D=Y!$VvDTDxUA1s6asyjHf|8)<8Lq=z0}Gu-YHcUD({5pem~*Y?vfvb(!&5Ocw-Xy!7+u`F7M(w6#7OIG?{rZ6R{gn*;dXq&UAH*dxy znY@8}dxMSgP}0W1PP$WTUfy(t=(mJ-Vbl^C$#thjI~gj;1dD%hIxKC$3dIMM!Di6{ z&0kD&H1%UO7W?#-l1{Aixh@kFdoXV~UJMgEGHxenC8`SQBiVx+=CU=Dt8bSA2QEJ% ze;YAty0%48*GOWU=PNFv*#bK?3r0(8SXs4ASlQeBGiY$>x-+7YOMRyz1O7XEOB%D^ zBmUCSN}X*Ljhr;%Ag8G5d3QZ(QTG~{qeyG2*Hm0QQB0{S@0MsJYQdgv1*I@ zQwq)2q2J~HwB+cOv@|ofIttF{cy`FpWGpKtRC-Drpk6PxiOkd!nlP)i<38!^eBm?b zb~7DV-QA@roVMW1a^w}P*bNJdwyNjhXHY98?Pu?z84dcDSEcVczo*^tF511!_-Rr) zJ9SC_n0@htp3N{=fgrVwt4F;MFm1Js6b^VhhXpjo&gVC)YC6dFml?@>@)?bfH~{JP z6)^ltzZbTG6sKVS`J2~)!UtEe;gp||DX&Tu|Dla_{du}9oC#K!s7jpBWj|lXP&SNfES7FO4C{&8 zIP}|bj`pSB`kRGv+aX2s^I?D*t;C&IE;4K<7#jRE@lcKZ51p+<<}nwsY%ZzTi-s_#5sJiBn{gMyz|#jK0e8Pc$# zh%4r46J!as@0Aw`q4aJLdR9EvUaZA9pBr@+ql#*e1I&g-!@9;r>g-L>vpq{rZgqek z^$;g&w|{>8FdfCHB4H1Q0Wekyaq!^8-!Vb%#s^S2XhkA>7B#79 zLBD?8WQs!A&fZ>69p^VKL%i2(etUF3OYIxJ9jtM@zH3<9Z>zukv5&IBU$XFJ!d!G) z(%L#@_OD{nF}j~|Gt8^xnb*F!l42zyabH{N%3%xTx5S6GfRGT6n{DJSl0ENk9ehJn zKbEIfNzyF6oz{mXkz2go8&{?OZRjv|s=aF}wj@|uIo|sir8(x5Ki3*!AXj3s?M7hF zwSz~(sv&nNZ!vH+vWwZJIvK1Lk-GnU%|G~qI*cqE?Gsgw7X3(;t$l?;+igXQqV23^ z1>vU>;~l)ng1K_jB@F7|5{5;{QN(SceBbB=%~U z&)lgx5|{9had{s@R(2b7OlRH=j_phY38DwSHgp#v=Ph3ro0PNEpFMeQyKO|?`d5t) z1rsZush1okumsy|y2m#!j9I5BTt&ig>8CXvVI{qlzpx$gAsnyAS_9^c zOC2ohf0D0lVH{58vMOw?8qGhsY*9sh*-~im;o0l1raL8)`t1`u_O80ru+w!%I%y<1 zD{EzHQ_y#4qq+1Jr{k@lvmygh3e8FQa(qW{GO9R>1o)~Vg;7>sxb7V$G{Gtm$(l_49>2=XL^yR$3tYwHSPF- zzC#fpLcAa|uPkP;-89x{=%TweJ`wnWC?mT{Q8}C(HG-i-(tgXq)>L;vgLBK6xC9PE zM)7-x&k8sg7<(U`S~aCd+cC9N&i`WN_-pZWb@vRjN09gRoDGK6-5pcd0XuFfV}B`f zI}BWcKxwQ9I<%%K=sO37&sL8B6V4s24V1uAT@F1K5VcrD5kIrg1c&8WN|!gE+F#~3 z20U@E2-Z7sh==n=d*Q{8Ypcz^lLq#*=|wELL%PHfh8&p%TFW1-)Ic`GpPw+L5*R4K z25gGSA=HMSHn$gR3$F%b3|l!Q>@gtMGI!|hakwwIWn)78>Df?W?5pY(Y`_H~M5ix+ zjC8oxSfAVI%Y6`ywV!MyX8H>Q?@`VS&8lSA+}+gr-N8HU8?+ z{LJHHfg>Ap2w%-hwF#z@3)umM)e;lYTo3^i4TbKwFlb}b#g*661iJnRi@Pw79Z1E= z+_#-nw`!y_bub2`Q(PgkivSVbGPuKV25bB55CGel)${}{1LgzCdBLB+vD4gV^SFy& zhXI46iTyIEgzn${XRf%BF;IXiJ{Z`6+aEM#Fe6a%*hD0MNkwwF9?!!8c2FcDDA=>b z0tZY2)ZcyG1Z<)bCVN_8k#1AhB_h2f-N%j;fo3xF#Y9ybbnc$F^2 zB_5ZjI5?I@9dlq_4(@l$S0GD|tw8b`m2Tsokv_k(vmpZ!y6VnH-VMW2$7B2U<-cqn z1WPZ@3QLN4o@)odQ;X|d!~7?oH~x_9vsNm-Z7klR=lSu(czj#Zv=9khlC(tk75l!neoHzx}}n3Gz?R@e!Yli}}5TKVkEF zkY?If@Y`NaeT4y>9kD&!wfGFzKPvuS+Y*jZzBcCrZyj!@4m^FAeLn{*g#6EKK9??- zfo2*!jVqmMJ}aUy;dtNt4RI^X>v%h5TDiTszBMkh2YWtis=NWiObvf!BFHH7XP-v2 zc2!Nri3kYUu$vQm-_F@8DXe7tm5#MkCKFWCS^07FFGG(P#XCLs@rf%>hwok5gtAVB z;+M4{a`Mwfk{oS!clW1h>LC;?!a-9}_wBjROj^u7JJtpC9g%|?BRd;GuWMZyD8RT` zZ`SSbkR)tRKwnURXM(Q64vfh~dQA@TC{wX^XmdH8I+8Ay;D9KP9QC0Xue}DwX>Tmg z`JA82wfE(GY-%n%N%}UVMEF!bI=U||h>*xqR_TR`Ka zVI>yy*x>!!gyj8PgVzV4^P|nLr(%0*_48`#ymZ2P>(lF7crK3Fv+JvW{C`}Q1rGaM z54+aSKMb(_dRqwa&IP;K%t#Y_3GQ4I0f}KoD3}8z5WmlIv!<9K($KF({kB2s? zQW)|;FBa@;p4g4VYOHxVy#>8H6*-?$Ia_Hy_}v<%WM6F@X?m!>R=i8|kjmn0=hx<< zUiWm9RD1d(Mj99AjFC^E0z_qTgSU&Sc-lB`Rp`fw`}Xzg-Q6{I ztV^VGhi0{`?DA#r*vSNz;Oz&Eu_dMIe-9=@lRu?Tju6O=rVfoZ9=%M(PfM(gxR>;T zf1eD#F0NPh1I;-4`I)P`y6C7sP0vF~X_yfVvy4_Ml;edi`ni;`3+a1>7pOcg>!Ds9 z_3h=*WJO|Lk*iEj@y3fh=*JRRwBT)fAd1M?-!U%R+uQfu$jjJp#dY2XF*L&wx)5paUZ(Fp+tHzUN$j)(+*D%ReA6zgs@8+|V*7NJm z)w_$mjj8@TYJeguu%NHr&S&cdlsg`5{<=LdB(l1;>YT?1$<42?Qn8j-*c=m^{G|)- z_76gI*VfU>dFklcYFN>g)3>_}eyB%X7Y-G?Hnj{eZy&Mn;#~c=bcJ4@DA10)@>#!> z0Qwt@xwYHyJU*V?5k1$RyxI{OMOY?V+1$8hQ`_W;m7J`25H}%!rRO>S?8}9O5>%8tCspi!TWR~uHyEjacQBrjLSI^`>||wY`)R;` z(AKG}yh^~BuZXYX-0kT9&IQP1@j5G&?YSno+E2AA-}AgtqK*1hxX2Ef^vI^rsWdPU zs4%e^o}2yUXg4#?l$Vv0lacu|SG1J4PgPAVP+Qr{N_&uJZ2xraNliva)Ohqq1yjAv zV8z?30z1SoDr_bApYn`>4boa&bjYZ{sFCa;?X8+1B>dCMd8!X)H!jS>&@2 z9QiPd;ZDS=x5=HgwhxyNVdc>2`3BMWN3KluJ*3&LzuaT6_$PB~r^kp}$ds1lL#4z?j&YA= zZcj9A;lMvJ)G;|Nk=r{W58C#zqaJ<>ZvO1-vB$5nw!HR zvoro^*WtaC2zm556_J<7q#YOe3|alxtGr**+6Bp*%uIjOeauJWryc5bIYQ>pu0OY9 zn^dWFzHTqEuyvLkc~|P!&T-5wuCFhZlHw_&@91Jumnx0f*`8HZ%mTraekLszmTq4b z9#rD~y&VpRDmZdx)-B(scU>peO-7aGLiRt|>WjpH*}So0i)_mk_j3i^S-RQ^8k%Yw zZ`G-lDHe*s4<`wN!Wa_6w#}k%&rF$BJ!AOz%o|LxmN~q$T?nPL|H4oaHfnS!2#H!B z+ZT-~7gKh0qfNo7F=M+$03hLMLw^5Z6=81CdNhI1+w&D+RB=N?!%w@*l5kT!ZDM95 zIvtQq@aAt^Gd;qgguX2rR0(3MY-~EYgx*2rQoq(3qCr>e@NX1y{(s*0gLC{_uzOuV z-aMi1%*QTZhGnwNzDpNyEUZcZ1Qx9w!-5d{kFDaX=bB&KWRPLowP<3+QgCh1X#=uw!l>Cr>Z|=+npF!R@zlxy= zE!|JPdcq8umk$5*PS-Q5DJA{#K5l8%DchiLfm!l9iM}9f&#b+_eDwFd>}kijK35BI zLPzK>HLqHe8#nC7+qynq!XjS|aO*?4y&i%!Jmr`3LsRZTQnBw7Ex(I9-lK@_U`;-@ zIUN)xy}I#QCF-$H*|18&b;dyH1u9nd2QzU5Cquup!a>wG<*5Yh5c^GG=U6jtrQmJIp!&rPf&7+>P3kv`{xnW;2hgpBmP%h&A)ES>AmB6;+f z2Uu~HeX$(lG>5nVDIAatZhyNprY`ua4}7-t5L~+UW)DMVAIanqabfv4<*`)4)TyJT z(WR)+kD6b2b5b4KhTE;VtiBZ&FL+!e7Z|ON)zR zMa^y)2H&xxnaCbC{0sSLZxLFL+A9CoZev-UE_-b1yS$(Afv$eZO#MsR)k$1_A7G#H zI#R=9t~$hfMh*xPGk_1K_WHW%vcu>V=dK)Po*~<(iyF%4d-E7Fu=r)rkNllwR0tAU z)S^lAg`JqUN$KhDDvrN^n+b0^W+O>@%>w(Q28XSd=n;00I`wux`=afys%4x`eiXhp zU#4eaG}G=hp?IKp-E=(sJ5;8*LxEg(o85LzK88D!f3p8d8Z70XET)J_x~_&y0h3Oz zAPq|3A6RZnA89|-%iJH%NraX$dPO<@{a;V-sMyD#AG38_PJUvYr%orizn0gkV+#sL zDi*C*Z^hD4$QC5+sRXhsYl=3vN+mu>*yvsLe@n=8Ow_3+nzzpR{2{K4Y?JdDB>zrG z@*CGjyK;b7Q8eawP_O|99BTz?hXMmjkHo{$M`k09=lk1plt6OCCvj8aZ*4eBcMii{ z){;ejXyIe9Czy2Bc4?~&OJxiRNAy$acg0x5v*m1Ue|I{>n$5uWGqbPkDv{0p-k{ORF`}Kj#~&lD@iwwvsx& z1b{QC)x}}rZ56#Yms$fll8=+(?p$K-xgX&bj_)A>zUIx+8ziIyf~kr9BgtUy!YH1{$3(p@On;9}-FA=*Cd?2HVo#wiN zAg)YldGjksTTlOQu%d67GhqU5LDoYSA8}It!Gv|+64`G9ae6hmT>=Kspi+urApnR= zjSuPRB*WkC(0AZ|YgGpcdg!d3J zdU@m|}l~$FZcqHVr?X2B@JFXi@=8 zBN{VTavuk-WsGTe;f4Y!G3VD;C=s22{$HZ?VDFd^y(`|$7-Hs>VK(r#poKI89UxwZ z7RBribj*55b&m@aT-47UBmX|V?xPPlTp0cf$XUKy!)2AEWAwCamwHO7xz|^4uW?D? zt{r)IHVEfx(CW%YWSCXB-2Q?qv-T8h-4O7;{hEW&T-;i~7O9Tqi zOi&q$CQ^xP06puFlywFkPJ!9+6~VG7wwu!ezDi=<==qk@4-vU1P{vV0q#0l@ zBe|%O<&xQS3=2!+x-o*U8{!@BM2n%&y9MI{xODcQV0?f1HaX2X(%eEZe@;$$%W;S+ zdtD@)a$#XmAN$LZq~Yg0yj!06Y}+r_e#^qup$n+3sBAw+ol2xHxT{{sj%SM+cUkbmlF z+9Cwz;Rcm_t1!3UO<92%)Zj`i5fd(2$#|?@X!8~u+w(_RAbjW_M7{?DS0Gqg0hq_` zk@#x*MJE&RpR*p_l1Dd9V`Tsni&|J5b-XNpYM*Wxo9~%UJQ5CQ`Tg)cB@6oDis{)g zW(M<^&xOUgON#Cav4Q8llzPk!Oc_Tl9}@{u?~TXBj^t27M>oO;*B5Oat4Lk9QHNam zVXAf=$GnUc6|x_R~3SxW~?@7k*?oW0NV-{tFK}|Hi9`wxZ{kgOooV}S`CY)s!-N~40E!` z56JClg!k$azu}+&H`s9rF;RLE5oHuzmFj?q2QKFev8rl?1xPyIpkIjDaxs_QHjSva zbZo9{=_1MpNk1)7sV!=roR%jaMOBMm{Q@2xbk0lngaMCiPCChmKeZMOCckgOHQUm| zltLYHrL7;Z;BW`grHv$`BZ)lB{q#;oR|dMI4Z#CJJAk}`WNO`LOZ-$L(p?vk{L*Qv z`{?g=4z=Fg)y2ii9!1H7srL=|Hexp%Z4sG#_aPq(e~yV#{%1Aj!d?4n+swAyTnSk%33`vOd|uOB&S0Sjswi2{ zKgq=`S%kFOIe^8Md~h7Ny}O#P`d%={_N^?dy6kMl zos_k|ycdtp5f(mKTeD`ztp)ffHx3l3AJ$^2EkJ=h>hyNr5)wT3G^tYmQ_ z*=c-usIk+vJKu1C+g$zifgkqF;VxJ^eRQ19GNOpmSasQh=zO}GZjV^laIi_7I;`eB z$I_J8hVQzx;qo$z$;`{$5^nJfN5Lv-XJSK+tklEMng znU~}-XBDHjse3OkM6YoCz8aFyR-CoBd3xT8qr<@MRvlak>~QMH3F*;kjncP^?Gnt! z$FuGSEh8^jnkKG<-qBI>M%`&x${0E1G_J}DJ5$`*#wGY@a3C(aG|;bpoimw zEJkGgX(0P>P{Y%@$@t)(8=B|uiDKB~65z6$RMj&0iT6H?%}D5>{~bQ%wmLOiBQEGK z7;Qxwul-V=8t=V1Wd(R3F+3jost%6?hP~=IAYR|dX4lxNun^L2$pgeO^__1Qe^w^f zQ!kE;U1Sqwm6S1CNru22sROc%yYnAFZlYoZc6{HXceJeEZhND2QrPZCI`3pZ;^p%# zbn(6n6sArhw^z{x?Uof`GP<`_dXQuoMF8cM6`yCJug+Il&Tn@ou)Hj`>Q2|*FK0+{ z>R#+_{Qw|{BRrnTz56PQB8j0Slk0`N>$?rwo6DBDjZ7t$dMaU`bXNXycY-M~^%)GY z_axkXd!rk7qN&znd%r@JJVGE+;oLd~A=UZm*<5XND~uCf$SY(4IX3+d603*7%!6jz zXDr>%e+N00@Lh~Wa>AUWnd~F;lR?%Yrp}2W18&5$BTPwzQKTzUwMLKQOI!?yGP2;T z`I=*r<0BmY_E1?i)ygizrt5u*3?n*!pShzO(zmD44!w_}FSh|SBXP{Br>P5$aag$( z@7g9ziN)PR*j;;E>-5GF7e(nAGF5>60p6>F?Biq3XX&|lq7bj6kZaM=Moj>Rm`gvQ zL>05oIfp*kRKsw3jN#|E?`U^|au?--y0LNjmJelwuQviN3)RFNs;vr|E-f=jQN%1l zFjQj^jod>+VFy2b8aRI%X^Qrai8TA4--oKVC9;ImV*1a?byl4)C=~~&ySu#nq|?e2 zVbAD1rbq2Y6-t_W{knX$fRVa@98Hm2PejYAe^T!{^V2hO#to{YU>|TM$oAsoV$LoMcr>oSBOExt#%MDzKg*NjX6_CQi3>43~g`CpkP3Nr4*~!;#HnsF^Ccv=h?rN6p`+B97oyG)Tg}`YM>rLr|0wT zeOXF%>u;> zDmD{vBqim%^x{IPB9AqE^#Q&Q@$qCV1S-fUihC3-3B5fKTELj*Flv9&%2yH)7K}$F z7EoKd{3Ge8^2QoJFFvJMkEtCwfH9Ton2-$SSsnF!(wLf%*BFVQvTPO1LHxtrn*7& zMR3~jUjF3>4!_fHQ&|0lTMB3q`VmPK!Z{uT7bIu0wJA*vroBV$t*t!T(aE6vRoECd zZ7)2gR~RcRPgh^+o(g0Y-+9CKZ)z*4hHO?Gcgt?J7%t8}?r*@akro6CYG&aipq2JX8e*!`ZVl zoTH+VbW9knRqj{#y*f86-rv!Ka~+|+A}E&xH`o%jcV5Vm->|H!=$<~~JXK(sDi0A% z>mOAY!+5Z({{CS>%W{#WAbk zbq-L#?9FlvX1GzDX<9FJJhK>>HNzW=%C@Z~SXR?7HED?}y~n7{0yjhNoz3ERetb+p z-_s6Fs*$nn1FV(xz(fw5Ps{KJHMh=h_(QJcBXT-A$$3KFBD}&_gQ%s`TTvsV0`%zA zrMiuUau_zvhg?;52spMhwR9>3+gw&nJ>JI(}Z+(mE5xe=Ms#Bl1Ru# zsad{tW>U3m?Od@1o}8Yo)c3Sze&VGaZdir!B3b56Muw$1iJ7+ajpWNQdG;FPXAh0T z)S<=x9%4@b6<-H1I72SlIX+*Y6| zy}m-T$M_;lx%Qn&%tb1rtRiMpk6~|iO!4Nx*V!%>s!N?55fvf!(N5T>dktr-4~0*-cFVA8J|jC*hoeHNI(suneb1r zv?|5Z?i-D_eiq5it0=5l2e3WY%$b3MQf>ru220#4`*`I)j=HA)EqoDB>|H)}^qLjkn9iY;}@Rq=26mfE}%3e%%4M0 zgW1*)?IbbJ3bgU4%#*Z-Y+=g(Z$e^^hwInVNNLTv3dlNz=!ZQ06_yL-l+ z<`$e|`|R`Wk{|-VRV6Qco8PEQ9ivsZ_r5wjLk|IwdG=0%Bw}+*y564C-IojJ zW>JB)E~xHI+$VXKC=sYNE>bbX6Ggf_X~C5P1YHmPKxGr~*62acc`8mA8h0qA2}qKW z#aU`T%)9cROZdQiTz7>O#a%)?AvQ#bdgk4>c^u10j7U^564y7rz|bAXWnz^cQ%+d! z!14=Wsfp72yich4BuGejXcMjm0q#+T+%+9g@An)mJRc>05iYqIpqj94AM%eK@sF`V zaHfdz@`6a&X1m>g%uX)`3-Q;1W6}1e-WP}mu%&X3&HJrK^-gb?irm$jnG)B_PK(Wj z_Yox`QV;0@dT_~tE3gI~=7etCq1+HDb}MRgUSxSq#xWcq>NlYAOZMiQ&tYYUZeHLI zDWhD~KdzFRu?D=gEgs0ycpc1r?4Pr$H~)*wri;D8aOG^CF{;eA3#i#?;_sRNNrj9` zPT=;#+ve6B$pN@r>hf=QE~fpCjmE~*>dlhOa3P*c^d#|C`_zCc?Wx;PcIEg##S4F> zWL4wNSH`Y`9jEP0V_TuglxZ~e{SJs}NW8ntb0lN9yEi51fF93Xs}D{Z4mFk@DA-78 zGH;-stQ}E>{vbU`3eV*h>;N3rqN0+*_g(T66#hOwgmr;N6p2?92Icx#a$~=Z7lMzU z7~W^X8Q^>Jx3MBEZ1pncPNZqsp`)U%hayex?Pge#Qds$K*2>%Ma|LYIL~PmwLXP1l z!gFiir)~dzrg5eoXkX}8*4}>j>Ah=<$s}y7w=y-eFnJW(y0dIcWMRje@WTr0<@5|B zEjyS@`7Vu)3e#6PX9q0zn$6+OWfq)PDnm0s39485ZJ+{z#RV$+^&L@fJ|UoCOH?Hj zzC&>~=2!4HhO_s>7v&gyiWij5rcd)x#??RPqwALBW`S;w5mFaut!?ZLu zUVF*Eg=d6(E9OZj4R_P_1&ZS6=Md1mrE6(GmnR}h*rT_vj?r9M{ohF-#<5SU>Qa+) zKYf35^D_>&p^mKkB;pPo1;|MR9N2^?o`Zu7crh1DvAPe$iYOL$bcuV1G+aW?(%9YF zYy7~juho+cy;WAr)Jd)=PK!zFlbl}!ovc{zpnpxWX_F3^Z23xQXrpahL3xLxACJpn zcMa}xd+ilLVGN}c2Xsu-zF&Mc!P)}u43CwWI~(t1A7c@Ccrrd77i8jI$<}oYiU&b+DU3g-&W13!>xf6wbwv26Oz5XTH^Y=3r5P7r`TdH zt)|qbnp+_Cl~2Y+^{)FD zX`7LIU3l7_vZsjBK<40CN6M1~r+v0jv-w}QA)wtz2 z>*cs>_bBKM*tFnmygP4Lu9^5lv%jUjC;r{|#Qm1ShRs>cpUPy$kDf;pFL|AOkzPey zglbCzmRw|Kr^Tdi-a9-M)#Tmo=aOYMq-Gf35#0rRmf#G!7%6knD8SMqE#+82`Liep zWU<=T<<1?Fn(kA7E9V-GvDPc^(J665@8D~Hxs*!;jIF(npq|9FD|I%0bU47P z75yFk_QFefhvjZLJ{a`kyoL9D7`xZ?GpQ6(xPyLqW8ugZ&y=F-IoPzvVW-|1rg;J! zJqZn?cZtE9sMrS?su>YNAkN4RYg@VC5cxy}WW^@U&?3hvZWgWLA9ArfyWFz)Zn$ZX}W_D6y7^y&yJMa`&G5WWU34| z5LdK*qeX(Q_+aC5e=x+$)@m6sgx(JWo7Mp#4`0J7_d~_3YJa?xb1h!Trq?TCkyjlgu@Sg_82x{_}Oxg zWcxf{EWPtD`d^zdVo%bwzZFKe)97eOHP3lFgIGhY0iFN+vX zuIDX!*d5R33|c08rc!78_kZUCsAxeRRbe`GXIw@9OV)5~3|^v2@$K@Zz;0xH(Grc| z(%hZI&!1Zf)+n>akh0464jK*D!x`D;x-)JOUVj(d6(lS8R5(GXalJAgZ%_g^P( zjK}3wW<5Nl0|-MXB2uD=nD)#gm159+jUPFBRRyd0gAH|!95pMI+V9R#>6o>TKl|OL zrlqi?lZoH{q2F%8!6J&p>NX9*j~LX;ax^PxESc*=LL5r&(R7!FAGUB`@gu;he4_0@w;60@An_! zC`DS`LxSpbOl}Z?APuyWF1~lg1h3Wm2?cA-j?t6oOJ@66Q6)x1x$_pAQ>U9-Tm}Ch zn!Y(a?&f6Q?8aaZHd6_EyR`+`$g(=>f-%AJkR{tg#cfj7nT`-oLaxD|81uP$LmA|LsP zch>l7MT6k}n}~@)&cm72F(=?C^xq8es?ebJ^S&lev?tk{rL?4~y(F^TZKr#!1K=Jcm9_OeMBVC#8ZN2b z+$`sIuyJ&FJ!!tG%24MHdH>=_?$msY@Hm7aOZLOqL2Gyl69GJSltFuY-@8{>bRl7W zfk@A-rf-#~;I1a916H#VC69lbx>9PJ8i z&KAnJw!Ho*N-$)>6qROmv~=;0jAMFNd}^GdXB5*;PZ2f_KW!>R6i zX~yFis3JHAyIvG*rgo1G(HeM)^y_gRW+TQzQuf@hX98Qd?mhOv%k|HhbjLUGgby&w z;_fbUaFKf|=~4K_eDUrCadbqds!n@Ngp51?hl!3yz`NvvKR(yP!)jjnmDL4KA!Hc& z>+aeEpKDwWuMKd;QjyX3$!|-QHuCCdxVpf(P-blg8ZZ+_n$4+9I>^$W1&&51)jp*SV6|@?hd$GWH!(3c5p#xxHxAJ3j|3BO z{!wxxQrC^?pAF6|Pc6+mKEGnm_O#y9e4Vv9@K@D+bxx!Vvow6HVdfEH3sHA1^48~F zwx(JTO{o%HkUTibND1El3D1=EQgL}}eRWp<7{WSWZe_|5J17LsQD+z>kiIbSZEAW} z8ldodX!M6eTRfVK#8OLbyMxZ z&h%dgv@buPuiY4z=dU}WFtuNv!DT-XB$KT7DU(WMc3ff%dQzcx;lN}Tl2F0NH&T@E zE(qWCT&eTO>iYdJdzM3hG?!usQ5^~7R}j67?^uv7VMB=gIO+@}Pf3hKUIT|m!Sr8^ zHJtykPJa4Km3U*%%^yNvt7s%ogv>lN=x{PNJ z0!y~cPa?sp*W9R4Li>p#k4s(fs+CR(NriUAKXnWRBF&*5CrY=a$kLyp<8 z^mOCjbgI$dYB~d%@cVR%N9qI4>}+g76qEpUeM1ekRRcE~t3&_xu5=)WYiX~wm4M#b z7xt4Z&{CeDXHw6JWR!$cIT4e#--jD*+Y0yc((+Q3D`9VK22ppnw3v#W{GJLiJC|xt zP8w^>t&y%`Rb;HQ=2cJC)bV~u?wmt8=aPT^Ww($|Y=dWv7&9W9dNwgRf8KGL9C^f) zp{>3pgsT;cz?O7$prhv5p(0%f`0T;WW zY=^ga$p%$Qy-06jRRPzQ%dS@cuU-sM#Jv~j@uUWHAM4QBc2JeZy~veOW9`x^@c7)5 zP)Nta<*=%dExWa_5CA+q&neYju|EtE+xxX359U#?D!z!7ZFAS1zEGv&1yHvM&+H8bR#pbxGey`X(Zt+!>ofwd+5dSv4CiGcZYS~aoM_aff z?x0_%N>SbpH(DnN3&@G0LE+5s_me%zVxM<^Wb?Jq1=TU`g^wyzOBxmHYu-@7J zkj~OJYRQdq=c&a6;O->zy54OCX3w~_(hc~VySFDAncODzKQfjn{&0kVVB;f0$U(Ax zk{rQ@7l5m(s=^dMI5=otca?X4HPA?Tz5WP|WhQnzny9F7%*abO+L#8~>xL_2CS;MR zm($Rel+l;WrtF8UP(RZu=hQ8^*BSs}$hE47M<>S^h9`$7C-->;RYUk+P+G&EGfySc zOzP{|Q=?>&=u@+@*qwGd8itfX?r1Ff>^wru3$~owSh|5?g%$<+c`0cEoy*k@4H!|# zmbldAG}uJhd9@^ch~#ktV11;kYdu1gTpYe1oI)mk1z&6Hm%sQ5iyd$N9+m`ADoWr7 z_8F8(-eA?)w;U7?DVmU$_3DzcS~2`^>heM=!os_8c@~*$LMG^O)>*Ly$CpfE>)ooaly;XOS9)7 z#Fsoguvo3Z(KMay@S(iF&~{6%hgQbHg+we8EtQWO_7ytwTbdjH1v7qn@B%x z^d0N{HEWiyrJFO({MpddcIvLD<*8(;CnsfToAfqkb_8b7_7(H%U2S!L_D5k84b|uX zO@$r2(C(ywE~?%WVi<4xsD7m_YDLJ8(yg3u5DG-wP(s{K%`E)G?Ub5=pI$>*n}M$m zVbh&p-M~1UBDLa7hWQn z-$qpqPSoo4N&CBjB8juBtBLvfeap-ahA+K8#$9-kQTn*;m;ZnjU1=6U*UATCA2WdnDyzd$-U z`dXDRZyU|S5s%uqmqtV+vKcf}-wUN1)6NQY^+l+wnVS?XVy{D9y5ql!S`-qU4{qjdGyUpDgq_`L}ocY~?UlN{>f68~{N*UJs88|tGVRsN#^kJ5-$ZXKU{xG|nw$VjI z)~2^gS3hOqXCB*JI+*rE4A+lTBF?I`f;GrYkmR)u?KGvy4q*hBS)2Pw=ADjK9_rQ) zNJD$Phxz+Wj=jq@9~``GzRucooU5d0{YyLp@Sx@L&p(f4|0rCVgPjAu(Y9_M;)+-cL}RlJTstS%1o6Vc0@E1M znj4YVwdsYGG-Eumh>2O4)OswET{v}TK&OMl#g0`zC;CH9r*}nDS=)=6P^b$N;cxZy z_+A%-{H7^4oL(Cw>24jj8MouXvWPLOiTc=BMPY|_c==ajH~skS$rHZO;ZLc5$ctLw zxA2dcGWjzbm_FWI$Kbt|L-_?9__LFwv*YTi6~uDu>3h6!Pctt!^?X&Gh52>f4%EYd z1HL%B>MD;I!EaZS==s7+eE^{9miymr-ng9UBHE6M(6T*tQyeBD%wllpZUkc4H)@k; zr!`!H?1>NN>*{ZP!-z=>4^0}K%;UE-QIYqvt18nJFxQ&(c6AjuG?TWiuLRYE@356` zfKxI_i)Fr1?3iXX((wTd>Gbd~zEn{oN_)npzP?V9lOt+a zgS@;!GYdG;oonVvb2%%!Pj}v_Nu2irDRR9g^?ZntlzfIRyT`Ot^u(O2t_|u$cwEyf z+;*E3lfND2^liphmjsq)XZtbg7shZR1#_{jguQk(1+3@+~Dl$hODlVzwzo029>o?>MB;U$01u)|zw{F>Lt9&7+23KXc z4}JNLjQim3)$DOkJ%(7dVPa*2^zA~Zvm%NC%F7nSpQOcPSbuz;slK8+at|ViUYTCl zv&ED)3G<8thHO3PG%Dp6a5D<$g*muOE+$7NNZ8h7 z^+7B4Gk2#%C~B&cF>ku~a+aSv4IEYz(~TY#ba6!%+=Gtne973C?lS$QmWdC9C>bkt9Ab{^g9{+?T=^=J(uIx}`?x)hTz`rwR~%}*>- zQm5r3LW>TS2VY>7Uu@`Qg?y_tgsS8dZ@0 zW0o=}$Z2jCeS=i`MK>co5ZIbea~|#{Z^xoROI1?(oBdvhK)g&wwM04FXnkEq-dfM1 zv7BZU?yhXT!#~c20W0}{J6EnOWmZjc8mpCIzttH{{<3klno8D8A3cJt99tsA{qJ3M z1WR-dS1CCasfi`2bw)&@W({PL+esHsZ2P^?>5^Sg^Zs(}ywjY|5`_^z5v!CcCIYS`dWTHO% z3xht73=PYga~j@g>nhM=UrJNU!otE*v->h|;~4G~`HyZL10y2`BjYFQ=jW6Ns>2^O z1EY%j4^O$&zfn<9-V|K?IyycFZ@G_~JOR(A^ZhCTx-*FyBt$St1n|TXSN-axQP+tr z6pC^2%#%in{aDH2A$o)d4N-E!J_k}9TEirKf-|~mw#;ARtEv{xFsP-aNA=7~)d=Vg zI4U&Sn%Z<02(chSB_u9tyXra9C->XzP<~Slr2@gTZ8PR2%xfu{_MBHOGff!r50HV@-EZQEygZU z7EH+D$4Uv#aMGK@B|OT5hxno_l9t0SC#M#40sE4+KcBc>F-O(6csKB3$GT03e{L}8 zzQ9gudM2JDTZ)H{mPeLvWNg6vM2A4~%w)5pmq93hLTV-J_uh1WIOD(lD9T^vo%O(peu(UhKYISIrt6Mv@HJWl z)jGIRu&l=+uUCEW@}=Sx8bz$c%_~_8oCC>E<1fbanZzm<2t7S1+4kn~)fgazjyWdOie7T5n12)szDCyhrc)suo@1x+=gsow~T`{9o-eIne z7mJk|{rPu!O0QG*=TK6^w?lPKZL`saCxtSu0HF5^urS^~=TEayzX(7EMgQWCapQFT zj`SVJW^MOmXf!^MQwtNN#}gO?>-XW9MqyvL%LD7pv^Jlt3HrpABcL>c3@hRh2bducblyeG^ZC}H37h5^Zy8%a81ZUTG_Aw_} zUAj#8{kdQ;Q9ZLT{tamYh_@X<9Pp;zSUYTOPxdqh9`Sl6E`%sYtD}d}FgJp0xl+9F zN5wxBeEWvoc6bCHI|Y+Jb5$B;R<#eiUs^iq)#`X4#X&DL-aB$0O%;d{SK)+fsMZdr z8(LP-?SAF0AFF3abq4K&8qOw(8&#f`ho_dv!3kaUSS{t3_jXHuQ8c5@1b{KyTxg6#{st1IetHM8nojHE$QzxB^pSRaiJFQCawE`+8K?e0e> z9+*~yDNu*XRKZ6~FNf&qj(u|uk>2cO#2YYvC`}_CN^ZXW9bvRO?e6`gyxDxGHrkdO-6UXVU=QoDX>sYi| z4f2An1e9~1FB_80D9b9={T@f6j{pvR`-akGd9Qz0G{6*HGrr7G^Vw^6er9Uq-$3{G zQNpM~k7b)vQSLiOqQaZy;e*U)Ir2_6fvSl%XRTIUZg*GO z&x&V%a%RFaht3sS2#LrMdofr>=8K+?P>#Azwl$Ud)~pp9qg;J@%LQ>CcUyaFm%u}i z_7rg@U5Jin>1GH9lR>wdlczF~fd9_Db{m|5fnMOh`93MPgXi=~k(*kt&ZpkTqTSXq&@CKN6KGkvj8(hoW`GEUEHDLH|m>_o7XmA98JO@3#Kl zI+JNxtU*h>?iwsa)<)h+%;=1*Nv(k!VX_W8wnZSc(w3&pu*$-^TG>0ER9?l~fXF zr#}U00}r{*23`KGi;1_H8VaxrdK;WI5OZ=&iHap{#15T{KdqucRY$u6n8j;!IIgVS zzB`k9k?n1nDi|7AHk!JCDltAs(A#-O3Oy8O>S%i7p?`VRmd8|xwvo^K?7*1F^-g}v z-Kv5#hjEn!CxImsUxI8p*75AZ^Zlx?9BhSx(NcRv;Sz!3f_)5$NLPj4K2quBfNm#Y z^iXnSoYKef+9#*p=pq4gNn!ZFz>Wag(cB2gzP4f*!Q&7&eJ{$KCAr1(;$?n0!RAMp z{Wx=NO|8+CR)huJ(M`BH6C6gHs|CL{L5!GNpbIE)Pp$#D`3(Zfm7#Ewm3!_Wgb?`_ z`q{se5i(56cA}jI95y}2;u=XN6)t7TnJG$DQVsnfly(XR-)-K4sxq{Pj@4v_0?yX< z9u?06>@+l&C*OIr8hT5^X>xW+Yed_h|JMjGrk9C_c) zs>&)UC6=_)+MjLI>C@nHslTvh<$BtCmk0&OMob&% zr|rs4JCGZO{w~%U1liSjYA+`DW&cqQ59Y4G^II^1s!Yo>`-G#4MHnhG;XGUFy4wfe zP*dI!rmH}(tweA6+a3`?$6Dq(Lv=_+6v9SN34Sjrz9@a-bhwgHf>m04&2WpDh1f}P z7ap_9qj6nwt$9*2wy=R}B*&{v7x2jP^t#YG3PUSzN|JC+`oMSeES#zPb;U#_o0Q6Y z=_b9g;MIFQt-mE37r(yq^BMjsU^@R)$<_T|kJuRD_44)JP<8)R;8c8~{FQ6`6@MTe zgcb6=SNAQZzw`P2#*k9|nYc7s!vWv>uohKj(s=jToxnQacoKVPaA^7BfF^!x%3jEI zda*DCF7m4DD3Gl8mGm9M;}b*aZc%-aeWNe(+mMh{?dP4cKLmsdgvPL{#N*M9=Hp z`e2LzyL)#}EI)`?k3D1w_ow53U2!%Yv_X=`b;A?~-1tK6uSg+CMK%MY{MlTeXDigv ze6q5#R@F#^GcMpx`EbgUSc@LoOkO8LJ!9A5sHuJawY(d`_~uL})cd@6qR{6x<`BNX z^zuCfUTu~$TBcgth1G~TEwTpfG_x;K#N|&s9mrL)v)`Xg0iG@Z%ZNhKEk9S|AkNGt z8!xRSx>w22zU(_<{TQ&yGxZk)u2#5QKA-Y@s#*8Sx6VLq6n|4X-EsPmcx3H9!Zyl`Ye*mr=%6abSWXCx4oLL`grZVP@bGrIX)nY&5P_m6wv1QD;fI8#wd< z*4MWg=@YYj#m(B@9wrM`lY^aGs#-}=bFvF}-(63&yYf3)tD907yMB5Zy$RP7$dw)V zQfil#36s-m)O~a*;b3T#-Iz|;8Zjg2cDWlNLcT+&WH8J|6U8KG2P!m&+S(W~Mz1uj4JAK%C^!U-%4lo|ln ze=n(3XtWm(SlkURw1R;s@i}ws=xB*l=zW-GU8xB&C}9r-|7B{K3Y zdEYGko4SD)k!wIL)&&UoNi`sE8Rld^EhyF{wzht~f>lX<1)l ztRbG-c#`>?3IdsnkCb86fdz~1r#MDqS&_7N%MS<77x4$vJ^n}R5y?>BJYn>N5)t7i3OzxKAh=>AgIDYf&-X-kGLcibf+u}nV z+MtbRtmous@7g>cm6=N2ot{R4kd~GjL@&c)7gsx9mZ>!pEuI_Shg-6%flf7G_OPO1 zQC3nicP$ksFP51d-anSBL4}~(N6r+d=jNl9ttX0>ABy9)J45e0a4*)9FU77zK_|(u z#smKKN2&z&Ry3c+O1UsFQqOIirQeCqhz?sX!4081maCajQu1rm%iecE1~~ZBr7O+r zZwOp<$fq5UOH?&Ciu1$GYnXYf$eOEtt7va@9cmYDQ8T1VgReqH4mVW=7XRJ!J3<_> zb(ueLM{y>j$(*S5Ie(hb8^hwjPTotZR_IS!oK5;$(M&AD@8)nBK4 zFEzEd3~ld((1iU3<-Sq>=X?j233F$eb6#5Afm2$$F7_d8jI;%@Y zEAmh&w~O9&$$GJBN)Y6KNGL)2`~(5YqR}ETNlV`5Y7Eew>cC|nfmx16WsB0@P?CIi z?O=iUO%=cbRVp{|n)q`?a#L?9p?(e>ic!>?Jr%#0?&D{!MD1~OH=ob257)J+NrBEE z*NPYmebf@K#7z)x232rj=Dj90KudE(FD!Fp|8G+QBQItP$G3!$1gyb}Ppp1=Y9r56 zUVhUR;fRZ;)4e@2|2?XtNytfL9!-mB_AK9dtLcj6EIF zm(r0n@(d6oqhx$hly&iIc81not0hoq3VNx;4V`L#hU8}lZ&$_$aEL|q<-0wc+r zs-F3A8sg20RII!8!-Vm758QQiPcT!9doKA_ET#dy!j z5S)^TCFj}wQl8V=7*B~i&F8j_-nL1nkW@3j73Z1cppFS=&^;p26hpwxN5~xMs%PN? zj@G20kn@W~Ntb8Xjs3<3GPB!mh>ivCHxJIB(>rk1M)wNvR#lw;>IHVu&a9?%+DBJb zR$0fEIx^lsWvtV*(dDFl&D(eG{j-WYmYV(&qM8@jBFle!01&~1OLZ*OT%3la4CeKv znAYwVh)w(s#IjQ5nXIS-`^V&cZ2Saz-7fbpYI~ak z@dmj7d}4e(y^MT3(g@p1Lw(t=qZg}kKtYtYGu*POQhPxF{sh%N&sK-pnR^^*hK_*~ zHI-RssWzM|D29koqMyf| z9eluUa0;n(>-gZ54 z_4ihd$Tgr4gymRNNidd*&wtOLh!Y`DFW+xZ&9a60JMyM7#el4M(X&-nf z5?qE_T(ljE%NGo~1XV2^ZE^ejOVwsAHLZ^`rz_;C9amOzk5~GFGRNj&=2**+y}{`A zCuPjQ+wJgpe|SI}FoLd$ModThmDA<;_(`;gU&PPMrF5Z%M41Y=l4GpO*nd>e#hERN zz)sK6gyl$Ei?9kb_P80~I<^pE+t%s% zzCH5#ajhSeOq%WMOn18!^w}$v91h%jG-&t#o6tBCb^eQ``}u99@H*7DJyD4(o1Yz1 zPuECXu5!jcWfZ%v<7Kp;e6PpY*TrXo69f*6`E5Z0#RKEwguUUgnws!8D_Mo_ea+pe z1bA_!@(2Z>RFHf+OFVJL&x#RKVM1Ums#vzhet@-_3B*@?26lFovEF(s49vKXV*T9g z=h@^K<(^%he57x=Z7aD`o?oOI0uPWslh8`De8ktc!Kb1D z@UbWGd-r7DgQao8E=K@sH zjVPcP5s+l+wFGjBsI+nr*41*y#l-ZJW$-#X7Z@n~mXn9SC_U3&TbUJ=)jTk*Ncu@% z#>e}|h%s$UMXBG-;=2=$)XuQ!Res#a;tmuGsBPW=eXI`&@vK9`) zjfo+xMTzgHR-yk|JI>OvxAQ8u(w};g87i&(WvqAwW_TXtdhSS{cFvjniy(Q;5W$!w z-Rb1t^bEGV-9@qV<#76F{V$|e1@82yfiLDop2cN@*xz+nQBivQU27Kch>5EAk*e&f zpj*vRK!m8A!hE{pR_**SSnLW^(j}B%ICqvqvzr}I7n@0=3ong!i2l1`YW;Vb?OmNk zM4&IVj=%ua3BE}>wCU44W1uOUURVQfSsg3_AG9clb{I8)D$Ne0xKNjyNR?B919(kr z|B|#V%d^3Gen!Ak&CF0xu98zlS=aLy&xaCCGQW;plY|msf)X3hpb`d}Zd5++VdBlr zwzE%yqT6uXzR)-RFk}^%4QhCUEwwS?MhY^duRL|o@MsCiL-BB@eR0HRp;in3hJU{I z(+eQA?}hlD|Hi#_Aj5^`I~O?B1hMbmjj$iE`rRQcq@TZUMdq~8a`3fx@v-q*V}c}0 z#kcSZrH%8g!x9LhFUUbX4`2(EaWTg8Gl4|*f8G-bbd&!RWODV#H|0w=S3u#=bdhAt zec)K2wCm|l1=z)P)koOFPP~cLi1x0XQbqyQKO5C87;HFehun9Zre56_K`&JtTOSY2 zG<5t42D^r&;g_M%Z9{!hZ`LCT@uR>wdLn0s7TOD2<*XvswrdK_tYPo1F707{< zs6&e(?+{JSub1+<*>M}|oaPNz1HYz0W`1v*DI03mcZTRd37W5S^Q?f(JUr6KB-3L< z*(8jV!U||vv52z%UA<;TvETxf1oDwzFojfOdgV190@3n};eSnF@hjYYuLlj73}a-6 zjZ~wuYCH`zfpJ4@D4LoC6Iu+IODHgjh*Y|%g|&ncUjr9{AqXI7%o`gwm1y@y%zHUw zwWQ@~VQ1#N5QfjY9$r!@rO`9>q+_WCE*4``LDxHCjA??wWfg=p3jJp7T6t^m0*$A( zS3N7+o2&O1W#I_X2-0B)%}fQ1cCQF?4}MpEC939G+U4cttbmyVZ#C{yMWOsDs0QRh zqWBSJ_1UZoS78^B9^)YvmIiy~T`sM1;NwaV9ueI{EjPSYniVe2P+1(+41s}R6_4IY zud}$mUM;B7ZXz);5p?h@0Osx;%-St2Dy&#n&)=KUq{;NFMJZz#ftKPr!roqcHKl%J8I{KHCOh@jieo@tz+@H$rd{N z?Vb@gX<(;Wm~K;*yO&!`f#KCl_Z%*GdUM-IstqnC`%f_VoeYy=z39)Q?y=j#x=YJd zm4-Prw+=lcP?8(K)~HloTJi1q1yt3#8w?d=FPMs_rKO!lBNZW6>aR32IidfTE}lrJ ztF6)hcw3`=fzMys#M~SKgw3O+Us;s?OIH*6EVq;r9u6m+u#a+Yz(5K=+rZ9fBwj(G z5)op2$MmICzG3K!7h)kL3`G;JA=*wfE_Ez)??k~MvE9RczsDSX;L1uK<%?^peXZs2 zz)VOJTJ+wY;e<@tuHi-s8P#jg_hZ)MixVf^UK8k1tdulF)djYimxK=g-^>ydn5psrN2{np?9ybu+M_evzX>eC1X3kI)ZvV%NZ< z8))>Lo9E=bwjo?OcWd()nEpojgxnHA1usYywXGZHf+|-Bd%En23rinIM&6t~Em|V9 zYG-1gA(}kFcY;`q9j$&e@Ob;i+;HtTIoAp>m96I2TobMOxjoVHBB0NcH%yyRX_+e8 z{Cwd@z{0&3ues0fKc}Zy{iF}EtdAtJ;RTm}FA<)d{do5{ss)^#66zG=;--&WpRe0{ z@1Dk*u4mLsv=il2n&-_yqQaLFYb4 za;Rt~ornw9+R1eCb8KC@$CD7KCq-4I*LB|BooEBz3TXxwahy85%+D9J12yPS#wc^oz1is^8gc^u)Bkzjx3%6_#dU-~0SlZt@pD0cpZaCsnv*N_QaYt&_>adb-_oJD5Svlgk!->>* zwXjk^dq<`Zlf0K1UUP+y@XpbOcRTcPJu3dP>&(&QSLD_Ux2ykB06G)|2^O^g4BDKC z^l11#0%0__$1xiOn-lA4)EMSYOO45+bEVUk<%XEr7b;mTbG72nL|MvSaKAOMvPqt< zXBF9deKR64u`vaX`U$yI5-Y2Cp3Vu;Wh6V?5S{6A|zLdeJ<^Mu@Mk*STRF21;X!mIuxk?VHn1K;3eucjlMz+4gN+1`2Zc9SmYXq@Eg7Do?5JDxjlmlv%gv6%Ve|8zq*#sBWphYS-q>oKuYDLMg!>0=3# z#vv32dz;CGC79?i>iSCU_hFjklNSw(1<%GwCy>1=N;dQ$G~-e90&PUC`I5!0naxg6 z|F;@iA@!jP3KW0HqOq8YWt%>~|>4dG48bU$d*Qi1K(fRSe&Fz9uN!`$fk|u~lXvU%_ zp9$=}p-pA3W1r)$Zz)>_uM2ta$B@!xzBqJm?MV%TH_Bc{zsCWdYoS(47{HGKQ?&1f1`@uJYOpO;<$&?47 ztL8|BbSsHJbJ>S?sMhy&pL8Bm@qcx4_H{mW0lXovBE~*Tmyj8t=nLFH=yVNy-+bS@C7w+W^uo#bk5<)oYmh$^ zY4@uveSkCTJT;Nb5`k5BV#iVET^!6tt317g6X5BS!0J=}A@}pbh_S(@=%>9sw24Fc zy8ndxovojg>291v{_~P6d#CbfdvihtFXxARx32&G``qWDSFGjxV#Tr}QsAlTEK8QF zzbN-AS3m$F=^N_o-J;W+HQ>eMfmozjx|)HfMr2EA8QNc@e&7*~ zFEwg;@F7vybLxrp{qXMdx?LdYRS}=h%cG!UgeLVNo0aMP^;5G>Dfg{yWfc84%^j5l3DpFS)Yqb zpll@qV(~upYLymKl!hIpuSI^8B#N}fD&E?Kt>6MZWEIuM_)AMIrdn-S3=2EzpY#su zA`4)9@Nh}J6Wi0y5M|R0?*3&ERlxb?;4|)P{`~}A#rCD}9Ss&*gJ%16&`11D8mCquy ztwg^mR_>su#!`1df7>hT7Rp{A@=t`JF0qdfX~##JV^UXi!FtLtvqy4SYcJSOMJl2} zUrlw6r4&`&G*>e(dM80fCFwML87vL#p6Ld_D~fp9WXJR9))jH@Ovf^uX*3=Tf(7Zb zl|QmwblU)Tfl4OaK?v|E#Lu&~M;}6CZ^g^s{r)7V{o$^ALgc}&_3`b;K@9u*%?;qa zP%l%i`@Z}^MHRmn6BtJ*t5Bu zHD;Z$L8v#anK53n)r)9`pqIWH!T=fOdiBQl8^+Phr6J+7hxU$eu4?OP>ul=X!~X8K zD&VB!TEgOA&opfpT}4!8V3oB^^I%zprFB4XCuq_P8i4TF}u*`E5mB+P&RW0QeE zhS+=4c}4oNY}I!qm*;JDJ1xM{TR8bIN`Tbc+TW>#uBpyLqPFZ(kl6}pT(-f+^AL&; zNyRL)`O|)DbV)=8D0z_Hoe=m$YiIQl@c06r7VF!-)BfgrOUkl7+%DL}z*`5t*Ix13 zneQ)prk)CU2C77aU5ebd{PgSIh(A_dHiKq`|G9wJzq&@JOr{6!JRTYGrHB6;6u-Bn z;o#%LObX-)7CrK1+YzPn_=JC&GiioM5d8R=L%+H23k%shzi}nIaqoC^lV_l!_|kB) z<-{aT3g!)f@tV0L&rIq9qU$EL?rj@hWcmHb_SVUrg*7Q3_<4zIS}fh?RKY_4y3Y#u zIcv?r=N(^3*V71somKoJmJw@vTN*CfDFkz}7!-WElrdMMZNzR1DiGY8!=1-baw)_tDr{yUitP7XQ460;|k5;HLDWp&czXVp z{`rUFy=|ruL3-yda^c4M-VOi*p&)dP>&npnHmp$*F9G=Axq0RJ2_ow&MkwT-fHv)o_)nPIN>e4=cr+=&bE=ih-yb?$rI zO!Y{Gz5nUczrB1_#$pb@Q%aLJak;M0?frpO*AFM2ERY@G$)i}8Fz}6|0vp}ovxfYU zRgsd+BSH#;b*BQcdoZzeRe7=gRSMP5d@EGyvVg*&>UVaFhcrRSQ2muaK6Dl%+fmJL z3U{;B5G{m?A|JSskVzyjCE9DPXsawsCK7bdw5UHGl3{z?-@&uA&+}7KvRD|UE5np( zh(I5Y7=UOzW%`JW62Gqk^tYilsM;y#=fBTw;eX!cZ<{}LXyqE#1a4R_N(C*r>{8;} zF06nD&i?Os$T>o4P7Qe~@Wjj3s$1d)+_B?fd|<$7RQFF!sqCXXyF7txq5I9l)`k*1 zsX1SkGMe`Q3%YIAf(+^D?E!Ucer0||87*^{x9sQ^Wf^#+^-G`LFq50FvSa^CF z9UyBl>L&$yb2Opu3$$HsD2aOlw)EX-u{L4pwF@_|cBgJdPVAp^5v~E6nqM`+Jcs`? ziPgC}eb23mz2f|*YOUN<^_9WaBWHD;upSyDm<;?9CBZN*)byZNs~Ag%i}5Ak4fr1) z!7DIsS@W{Mx@!;4EmzM}GY8!=KF^WTl*d}uJZIgvj7kghfg3S3U56{%EUbXdq`y24 z62jR;#u3co%H&oA+e5pxf5@;%mecUpoHgG9CUOcMI_f%KAe>5E!Sukk(|VI&7>2l} zrcW@-pz$n%mtYwpyzq>A0EIo4>fO`Y7g+r_o+%-( z=jNa?pG&?~X0w+OK;UiAbLIjEU`PaXYVY^bVeyU62MHU&9)lbPw)}5Nm=&}de|83c z1R@e&6f=EB|8{o^MDEG0%`3`cvGu}A*n|lG!#CM2+9&QXNzZ+is*Q=!e zX3}FOA=$r>8w@&%K|SUn79j<czqTgE9gyF0F+`n!k`BFyxbd$Uo8dpSmnQ&fxJ%DM$>!{9~hrjjq z%fyZbd>*uzG4fR!RQqy*MUk|anM7{Cj&n1RK2rs81-G+n&XKp|VuIyJ-i!znEGrAmif{P;xd2GG-cTb+h*@qb1jq=v`QzLB3UrX) zh1c720C!Icib*3dbJ?T(t9IMI%h0y`C^mk-(y421gS)Ei3FH7%$H$3%TnX5G#BDa? zgW#ud2kvZ*08Hi=o+|I-a0+jS0U5Hz0?IUHVa50(B(mRr=mVvj#m5V?6@n*i)j_8xUz0JJ);%>dcP_P^tfI)X$B>(c1$r$d1>%?t* z2_qF#J#=j*oOU}#|7S{j(!>ZbfcU+<^%Ro|JiUHmo}pNK4D>s_jTBD3OIHt)q4a1) z<_uUl?{b#f%jA0hzDZP80^_MTsw5a;fl1KWs>gnIB5!CcC|btGv!QjSesZR#87WPI z-~U)4D(g0(P^6xm6rC(VB7Dw7DKfwZ(d4=RwXzr8K2{Y}c@!_Q5c`-}yTe2GfGDg| zC-+Ls--P^k6qQq>O;$Sc4^cdsUxEvvA07xA2!%(Vl|z$*1o9C>bIhE>c9u}B`0S3R zSwG2^q56l@zu}npPHg*CAn#PzQ%WU|O(6r}55MfSR-``NffA^|cWiFo6 zGe(Homx(IX96y4n5d^*#Ga;UMPzAJa1U~IV?r_;g*@u0Q&pNM{WxUT~d%w#JC7zk& zWrWX>)&|~3gBrGc=9FSa#2)7TWPY4iJbt0WMJ3T05!0ZtwczwS?F2W_{U`%D4%p9I zo1vBwFE>zm+!WrmHY|4~XYenIz@zCyw4XgH)+gjIyBkJ&i&9HWH>(odfopg}e+a5t z@N$@q@^6cHI=OkE8B633kk~4IP<-n4AB(W zb1Zah595?+@%euM%|J50f`L$}K;Ise38R@{l3@nSdnNPvhnEc@R4SF;IbQ01|N4e? ziLeDkgyS}aS{`ejd(KBXDCmqwO>qHf>04NqgKpDh1q#gfg;K({p7 zEsfQH+-Nkq-L7F6rVDy}CvqYrK6E0HD3wZ?OeSul-EQl;P77du(v0P|X=0XWl@aHU z?@|=S=bzx8*P5n@IgKpK5~g&9;jS6=s%;`mspL4u&~nbdf&@X!F5?Jb-|M8`Gw`zn zLJOd~jMT>xtqh^$+$+$DdC4rFPpgQG#{(kKHJw6`64ItQ#JN7ZYk#fJ(@rW$lH16h zdk7ZD`2U7zNeE94Ow*KQZ(Bib`7|P&OtQBF!p#n4$8u-Sgdx(AV%N?92Ii@Jr$PvI zI-RRmuU@}?EuSw;OiW0U)ai8S!Vvuj%>oJi#W`CgktAGZ+%40lmR(zjRj;)#zGALa zL4@cMozKOKlw8ol7R3GLvClz_mOH4AXm!M)&!z|XMQq_!OtFOA5X@W z&;etu;6*W=Ew4&p73;2F9%M8S?xTey1_fNDd}Dp8l3J?R89oRP9&bu%)-KguItHU5<*z7*E5;S z`ue)2X*f?+RmaB0Mn^}Vd+xbTr=3h@WJLxDWHPD6#YJ7$RaGsQ%h^mOl}gEyG(SI& zodOhDh7e}6*=#=l`s=T+t*zy9xvVS=PEK`i%tHv4R+bIZ01!!vEGckgbksn`+`>GT zfwCfvjE*+jtsB)vrzhA#DVa`n>vzd${%ZZp;y>UafTVIi+Vm@Cfm#<#AVi+2B0g`2?X`R8r z@{Jn{k^~Skuz7HNe5})H-B?(VWT}Qg8-Q#!n@OkjZns{m8JY$Wk|D^Y)1_juzP8?I z)E7;ZN~JVS%jL3?WIeN1tI0MLMJbg^5W=fhuj;y9C=~D;Gz?>Obo9+P-y|Lzu~@8J zF3--+>bjm)UO)juD4}*B|Qi;L-FH}WPy=ioI#gfZeMy8na0M0ON0PK8jgK~zH2ycXVlKWeEwg3 zhF424Qdv0T-xTobk{xMjMS-&7mej3*zqmeI3v&NYYg&+3V+3I%k=05g>co-s!J{2y zi3*~8Hf)%F(DVZTB;z|#R1or!OeSNo7*5~qb}wDJ)NZ%a>9ne<_(3=a!!Trh(Ilkywk!jkvUlM8cv+ zvb?mkgryywlJGW3l8VJ*tJO-U(<>`0u1JlZ4u~@IyHBG|_aN!NZpdXD(o6qN0R#uwL=Gxj?ysU$z-e5!nG!vEnI#2%@SH5%QAj6J`<0}@jE5i;(Ocec0Qj^r_-9I zb-P_jl14{INvjey1_Sz`Bn{pDXw8i*%W;5|>P+X#1$pjD`|^1Zk&jIx(r`q$O~KFp zf#|3Il0Y#n1fxQrRVKtMV?!FUQ5sJ@%-$x&<5K+_`g$i;Hi0%Ug=Y zVo1Af==LED(iL)J&;j{NC!n<*A@DieK&Xu!mc|Yv0Fs6-Upg@I$u4qzL?92j#9@+THLIN$}SlJ^vWUx$BjMWF8m(PVh)49J$Vkt%?D z9*IvLiCc3ysSBWF7-Whmbfmxsc&d#r5fy@Pp#g8a7uCDZ;2kh?xg3PBTCHNLBuP>% z7VFDHdtB0jy&ADR?w#T=jlZcS$9STjN~P#&`leRjgv7T9K|CH$rBZKy``hQ{=4NJQ z;_-McmkY`{1shNceE(D=`~k-I2G2YyngIMPlQyVqy2oRB0*u|d2037Vp3X~D~5{-8(n zsK#JKGD+5KHZ89XC2+Xgni%G#a?o-TS(Z##Vh$fZ+)Ep7ttW&uHPejzN~NGqBK*md7=)0js@QU; zC<->jpnO3+{|Z`|A)jTCB9!3}rq9<31*Hrbm%`^udu@;Fh;Zy1XiE!fY3O!ug+8G* z^9Hsm@R|e&K*;Cm4{7b_FZk4q3#aR&$}R~Zk9Jo=AjZ&R4@p?(;dytu@jnnT(?~uZ z<0|uAZb5|(^ZTwsyuQO4M)A;z*#^CG)ya{QH$m;Q1#SFxl7(cx#c&#a?MO%tLO~U@ zm=htixVV_jW_y{k_ZTrkSPXJfmgPf-4ymddk}RY;%t?NIM+kQeVgtP_oeg0U%w4_P zUxHeAQ&fXjhcI!&Omd#+7lHHr;pjbf<&j4&+?PzLLY*%cdcI%YBuL0A1p6zAlI0^7=0R7}5usZ(9484+0sIg#@39%RS z91-EzH(30yf0euc?TLv)w|hfu8#n&;Ki6m8^mYpg)JZ}>MHY2c6c9lAvv*UtK}ZEz zL2tg|rg8Nglp>X1s_HQq!c%C{U@eWroWc!Q?mpObwI!Z11FJ<4Fr1$j+6X3GpM1$h z5TEE>xb7*=5uQWHoHzv7g$4iJFu)g`f4yGcFp}ohio_$GPWN6mrX*Wa4)vJ%W>fZJ zP2+Fb&eMC*o$wLUfg82YZaZ%-0RZ*oQ;YC@`HQp^c*L+jRYVN~zP~hRFEK%-MCk>a z=k!2IwnJRtOTQE?i`_SnQ<+2m@?S@sV>?*-?%%%o7yp~z*s+1rD6?%FcU5qPjl<#B zk5b+gR1TC^20eBNa>GSZ6`OO==^=7h@&MQe@T!{ULG)K=!qaX!%Gz4Mz^Hz;%Nte zk|7Wz{5JhuMi7RGKss<4^Q<0O1rtb{&zvuSu$mkCbMVfpe1XY}N}q9EMFbG=vO`XP~xWc67rc9J;BQW=k{H+nt5A+RXCWO1;tQXo{*PQ>kP! z6;CECpL{i*N+ne_CfnmLJ*G3$Q(As7Qj;))@Wld5l=N_s#@tA6X3JRXnX5s9P$*(? zU2tK99D?7TgG`GFDOQ3;!xPDz?QMCHI_%ls4)L^>J& z9)*ivgdQ`zJxjQ~3mtERBqR03OL&M?5z}kQTIQpfng);|89LB)pml)OO`2Lxk+Z6l zm0=Qs1T+fb=pVN zB=X^iu(v?R>JIvlAoW+o9B3fwq(c&@$%kjvz?8%FiEz$KjQN9jShyAvo0On{M?>1- zoVLsO%kNPId{w3h4IOvfpUfF;Bq}kT5|a!AKm#GnISholCg_@G*DyPV(KV26m~F#s zbhWisd$HbJSgkGA8jVidFq}=-wRWr7YPwPp;6J$Rma_+tC0UYOXH)FnLWXjC&gZfy zzmPBiRyDii33<^%poF*72NIE6c)t%{mqcNqs5wQFPj zvw4GRF%PIJvLefIRh1tr&T#4%PAQoAxJ_~20#U-gouBa zx44}!2GMs)J`jAB8St#P52<$tJxz(LCPCh@{k{lgLA3rBlCS1wBO)9T_5`3O8$ign zA<|9s4t~yoeE;*<1w9Co5soB*0J%yKXp<6lM5e7SWa8pvfu)^<@OHI6Pf|Qi`Nt+o zGP31HHbFv+B?S-Rrekff1gT;BZRi$Duy(_WLpdf%x`JA|(e3KXo$g$%+3srbWMV9t zz(UTJ%Fv{}?rni>Ix|Q|I7wK3L-#zcAcXXOv*a~764X7A9D(Yz0p2mhG2GZ!ohds2 zGKBn_!)Ywx;MAJg0u(>gDVQ~jm7wYBAgnD+AT&&>47MzjT)A%VT|zc5vvoyok%(aP zbwW2Di(xu9N|I9;$(6FWkk&RRP%>TWMu}yIA=y{G=nQrV9i55mY(#7}TI3xo%ulr6R?rDl_89Fc*ktJ)J9SK4O zJ5yU-)YJ{ww)4?V)HbE0Bqe1j0YS>*97wipE3{V4B^JK#lvLZKj=8OrAfndXTO7}6 zRAKaBK*s@uw7$e8B_tpGX%R~hLw0tQmqdgk!rlR5M3e~7udd)%iuueF)G+Fu=Mnsk z(UuD4q+MY5y7MgOr;r!n0hfpwC?n5!f?R=MjT#7$wg@)sSX{#Y+nXj)V#b~gb1_Eo zKxA69Cx$Ai4jR@0G$@}Bvf@@GUIC$omQ>I+lg-?d46b&EnNd4GOsD4df*QyytFhAP z_?00*yiz3K*omCn6oqzGp($yQcMj8>q=sZH7lQO9Nz@yh=_XY-=uZs&iMhBhz+Lgg za#zXeT!@;iI&apnuadVfQ6kNg^bUnZ&MIj8q;;dN(_Mis6>Xs-jzkjmmt=*gcT8Rr zJ~pi_=zI<3DpBxxh!h#iILRuTbrIJTd1rv+QgPFMJLEOt{9SU09jB3dukXD`-htD= z_$j7g0z-GyImp)tjGlq`Qcxxm2#G1gDz*XLs}l9GQodf0{(|Vt>Au0dIA)9^V+<8+ z(BToZ285i4G@EtjKlEG<`cn9OTB$jbQ*fsuA|uXb*-1n=BJ2qWJ1!pui_%HZvR&}C zdJ{q5`>2_D9a(-x-%GwMJ{kri4*+$NItWswa6*}s%8l+p=A>jo3W-huu;Z1#(Y!~{ zqm@iuhQ4BZ+J42I8+n{aB)0t(a7`7q=n9K0K{c13@mQn3;Z8B_4L$AUyY723-3Vuf zT{y$NWN)+zbX%Ngk~R1$wibsh!y$wTQME8VeLG;@Ea18YLkMW`&kF-rP*GMEw|%jI zG+i?pkrsp;xRLCAeVc@O^Q=xT9YK!%9OALtrKTQJam5M1LfS+gL2(|3EjExS`JwBi z%)D^V4k$U?mS&KS&_z@?!Zme5)j==H4Bd2&enxUumpeux&&GrdWW7z~@DGP85UmdW zRwbe>0iH6_$<3vz3~8_*MD#kAizXx;4I(OUYL_8@XQ1+QH3!^h&WsiOFYzenS1<&P zGgJcT{&l`rw{HM4NnxJE3>|*50f@?obRk6ggPTgCm-c$y-pdGjdL}`A$w5RoBJ34} zn@iYZ9dAwH|IAWt$VLrRb%==&_0rz1`$9Z(4WsKNi-u(Bd9#e$AuDx80C zBbRU2Sm+5qU%d7podM1K=qWGxKjXOq-8rcH;+)%M_rT4;iK&WQ6}kzbY6~vYHVk3; zqywPZZz%yS8D;_^>bwEZbf?rF7xTYw=Ok4(x8^>TH8t)cT9R?<5Z?gpkN{hn$<$B| zeR>e2wUHn= zbDljYc$I-$ zWWy~w4u*!s8*Kw3v=MU};KYP=&bev^+PMh%-x@1>aJeuiaA_75=h|^$^u~Omt0&IF zlB@D@r{Id7P)n;~t=Mbzw&|88m9{00wV=?Fdbc11b#Mh<-J41AvB z3pHP6hzL_(-mKuBb~u3}DjX&N={iyZn;vb%2a;d;LD&h+W{{%^KqTl0!b=t`p()3J zX#l9&m2^}cc6KHJF<=o9+|Y&_D9xmNL1=3WWrd;nmQPFK4&**X1>{~Xgrq4Daey!( z!@vUj67(wW{G{DMXagIhtYBV_h<@c>J`&Y!JZ3}06mo>UM7jyWKP}Ho;za==pmkuj zP67gNQp*@+yu#aU?mSH5$`rDPk;=q# zt#D5YSdMpv@vI8z4FMOiR?a1(w7VDN?5!Lv<{m)S1tCBA0F=>=Sbp7`JR;4589fM* zjS%7HgHpdE|9}bnLd#1=PhSGIW(-95xW=Ft&cRI6gGM(fx(R}yZ_Oc!1>RJ(#9iwO_24lVf@zPmRLd98v1AKoS zLxg9%$4(xy8|vLshqyKu)g^$Yoldr&fqfmYM#Lrrp3~%KiudJuVp&o=>7U=6{5aD%8xRz9_LRUM2=pjO447;GwH z<`CQt*<_IVKzPz0^!2%)AX6iv_CPd!52G~r&Cx0r_gykk1$!T789IW414V=*!d?Nr zFB*GHfp!xkXNCNo@#q$wA?LT*2!h#IXnIDni1Z(P{)o!lJ7$KPkTTH5W1qpu4F*9L zxIkBT;f;jUK6CU_u&o19x)n!EQcv~fO!g{bGMqtb2!rlbdYuNfme_YdNe=R6y|suk zMLr<^Tw*=DXK@{qD+c zdgZF?NaIZ{Cs|$<5aL|lCxf9a$4-|W#Ru}|f|U~_Rt7c8^vX$u zsi%73=a58s?7GK01jQYX9Q{1>yb=NMJkbdGpw4(MB&KhbpsQd9E|+qP>YP_yPe#cp zm}$5{K2(4VH_8L46j|Ge08)|Tpi0QFYb_^D7{EMSV+~CZnLZGrMj~>N{6nGy0xl@> zBrpb1J3dIn^fAtOo#vgAOJ~3K~z+{pk{C`6D9=_)zaiF**upH-UI;SG)hPb#Ynst z>CL48BGEQ!zf?#h4laWm%+iroh)m;r52ZsU(25W)QUwB(nV(uh?CHa()rJ<^aP$Y1 zk^?%vyO8NzjD#~N=|z(gy3G-#V;~&MTNmLLiBi`IPV(=R7Z^AsrO(?!Bw2&~26{@# z+~uW&bZG^*(hed%2Ffn*0c6>Wu*&pb&f4XzQrdtUiB3{`ARtISaj(4Wx9$mVSHnjN zL|@uy;(~xEcj(5wlf0fT24p%YQ)`hLgT6)ButMFBa3+Wm5snCZ3rtVtzd**W=^Or# zC>fD0NRSWBT0Ap$&__!Z&KU=T$6bbwgcxyx)F&H)Guelgnig`s*l`40$KR4H;bSLN zzDIL3h}I+lB4??&BT=7t=4Tv90Z@r8wS^s$QmDgc;%HI9LZG`I)p1Q_nu1c>I4^~) z5+wc2UGU;8E~RNDBX;nz8b-7;`X@+P&4KGGVfvl@Xu1Y{B|*Hkg$6?r5MDkk+B1kD zslIj0kUaw^FHX|RYz|&AkaN2v`vaDEHKLlu_u||HrpP4fYd^X_vNX#_I}j5yg)aur zHfXq;$3Sot=1B zU`J#@)qKscA(#yOigaI|e7iw=2U|;q`NOx7g);zp0Vo|83b$QJR{mwZJ}E##Sjv<< zLvC(*P1QFIq_!7gXiF8!>o(6s=rB9v4C-9zv5b?Bi`!s(CrC1^Q6r$Lol_U5! za`_U+>1i7876olVr1^O&GgW8(QK)kJ=qdHtnp`G;{}zBh3lSIbeY5_%HWuD=2axSaB7ifr50XEpnBAal+S!L@IWD_r+q(tsw zK@`}dd+8FUz(2Ez%c4bQ##JzZ&P z-i-V^lkv6jy(8nnq+yQ96#%W{x|3@baK2hoo+{We)jDXvJ&o%8+4vm z;PnE2MJ|2pz9+#)!8fMc>~!-|8TxlX5O5LRD9es^V>2QogFF=a$3KR7xblNrBm#OF7W@h5S%_CI|ETBFi~3dHKED@Nt_!r; z{;3b(=JCFk@h`ZA&}$xs6JjNWZ;a%}>mHj$@MiIYIbI@|uwvp!g<5lV;G}t>yFmfcEdoCdje#H4owe&%rNA<>FhS+s?Yfuxg)v7D!>3M9=X>q`5Cugsw|kFsKyRlse&sTtzc3=>L%#GN!-wb==A6JRSnU4 z_NbBF0Q_`^*IUwK+Lj-|Yeb!D&~94P_z&r*jlQC=laZiNZ$rljc9KYj9yc@ST?Otq zX-_V#4fUZ<&L7Grbaz!b!^50>xzPpzuK&|tcMw4r8e$lt76Q_w5hCmbFl2()FZ42u z_X~(FgfPGn9f)be&rAq`&~oVo^Us;>A@^})s4>I0g=dSwt4sVFW|FJIiEQBP7E0bQ zLJwhl>k0i`n1T_JKo^M~E(HX|H2D|AOj}72$u1uJ+YE0aKJ%asfJAqNPz@o8@g?I_ zEFnb_T)-+LfS}{R!33?M)kSQt;Zz#UTx$aXw@yhoQMazhe-QdG7iY5Xw1Nk3Z(B>oy^r zObd(Z=PRxWu*WZ!p{krXM6?bF7f=G8agtiIgGfGfL|r$3L^%Zm?u}vT?-6F`Dk2cI zFv_z*hBOIF9KEy@dE? z5ATOTX&|M@A>Rh^CZQ`rZs|GPTu*O@V^rP-=0Xh(QzS?=6laD5l&FLB>+lGHJ2*f# zd;7?WNI}1JY6o`vCeCJxfV&-`)rN@k)&}H$|EYi$rCynjZII~XOc_Ey8Syii7GuUo z`T+S4m>$SHgHOY}pba}mL^vYsL4>IE`2m)9NZ@aW0Y6cQUsx{#F!zDM5M8>rPl3Na zLBc5nj{X@Tv z#F$|qNVyCXszK}~fm@<6v!{UOqGwKo8T;%nQ7 z)u56LOkI$ZyC}d}#|wQ5k8oXxn*rH3)PK_FsEB}RSTk2HiWfySycR&d^9cFxU;=ML zKuqSoKIZl$pVFSbim&^3L;=*Rf&Qj|{;P=UMgIL|eC4EfUxCDVkXurOcjY&Qou2t} zgq9j!Iq#K{CT?8*oJ@t3=E*A#b+1<=Ix)o&*{6^fM5p8#jCTw2MRs?d;##5XMIFvM z8ef<`oRptouqT99Y10B2&R2kNOb8$HhZqZ$)fc zCKGRW6e!Ri@On7r{Ub`tLL#~NGNhMxQXLo4UyU;-4`v&}Hy)%Zab-4QZWrF`zXiB# zg5n8WmFZ?dzW?)#ja-I|`bS8ZyfgMHYR5UkRuj@13qKd>;R6hX*T-_Z)rd445%x4heOIh9^&blr9?Xrr7DOlpNE)G80=in~B6387!-fzy})JaI%q4(U`+KLcjU1nxiLiJC$Z*};xlwPJNk%l9} zzCox4FPx@_q-5q*LURW*f+5jIO$%7E%8z-Z^Vzy081Z8zH695hJsGLJfz>pT?Jv0* z$^n?6nW+men;8M@n{+!A0n$+!nXRsUIv?bJG<5$ESqi-zyg`my9_c&dr(np9GZ9|v zEhOLvQ(kEl^3Wj1Tao62JVo#>f(k~fRrr2@4Bg(l3;Ayh>@Y%C-=Gzv8IPmlaX{w#beCYVPA zOwo81hBvWug_AdGJE?gO2j6oMGoXhyGFel}PRn_%4x6FGYPLyn_~mnCEu*)p(B%`@ zP0wp+;oG2}PPZ0kV1fZZ#nOnWa}VGre7$#I{z1IiOE}i^Tt_H5oHGbPU3b(##I2QL z3Cv&UY7-FU1x$A_hKL}~Z-%mZxNgJ{d1@MHZA>55R!sW~O@SLuuY=g3b6}d#w;znp z3dkAJgb(6BXXy9wWWw1&u3yor4)^{ZIu1h@nDau#2Jc&gxbquwh;T9;be9m3NhQLb zfIw)wX9yV46Qunk6GUEm_W+g|aL4=^UjIQCTcC`jhGt>uykQ9chv>Z;zFaN%G!j=*C$neHwCIk#^r(Q8~KM~rR2?;IW8{ZG-32q-G zn?U1AdBH`2^F&Ck&thK+^G@kCO~N|zRD+T9!f_Ol<9olbifg}<88)1GdH%QDjr7$(@( zRA~%&!>YOy;%J}z$Z4lNsI495bh+qZ=xM~@aZG#N^i<{eqJSvcIIt|AOn-CDj55kd zLLz(bu5lCRL1Hn94Lz*{ZJXs4-r+lqu`jNqRJp#Mb;$cmf2V!}k$B&paXf=n+YqGw z^HJ&*;*19KI8!%oH>U#Ag`Vui*J_g$C{R!ZEj(p;(stScb5bL#iJHMzU0EwBQjghU zUVHUC`da>0^n^jJ*mRuXrO0GJjc8kwcpyhDk~N`pzolRQGm69eM!H`!&mKDsC7jxV zJbO&kdG`tuV9I$ux<~Q7tstOralFQ$RoGYS?BX56wsQt4GrU+yw(ZEeX}XvQ{d5%r zYDDVA0XHTYvMfp<#NWIk>f{sNJejSeWEEMQAE?*pBA?EAj&=1qsyS1bb4t+E{tG{; z(rYr7RDQI4Lo{jnLYpH2rfHKR;AXBKerCylMKnf%6V=iAv&>LWw*F~i6On8e7sFGK zZ;X_LEmo{h8eF@#Lg)YlONAO`&*09NENqh9Ll{&JrV`Fs)t-tb(C)FN9Py5F;wwq! zW3YD2s~_#cPk5=n=r;ArfW8M+0(_>+)D#xxJ$QYHUPKEoB2G@-tWAb!M-oBzvWDlPJ@hNUN-JkQ`KSQp*(Z zSms<^(G{<%>H<02YRvsIhCgR)zyR%kUso&M_(y%X_3; zmWlBA5=Qq_aGas@S8T>QXA7hO5#n_?JN_Px+RJGqNahXLZ2cNQUSrt&Eg1~Qkhc($ zV*`eSvyDiI-(4gn?tXTo-mVY2URW&>L za-qjuR7=|%D{wD;Vb*_plT4)n<{=(n%Go$T zggrtiFxGrzJ-*kAGklisjI7NLLKX>4mU+qBc4<-tB~~ZAzBgWLotz~06eVyb0fKU} z!L}T6;lvU4wM~|W5^}jUHsf(}`_U{mE|l2GWH9r#ft(X9mCC6lH&j6lJ-`|YkA*5- zaijMW4MOiloYGqLgUM=mbVx9T{%I640LPFw5-{L6GKdKS&0YYakL?Ej6)NCS>s7K< zlnGOG{X0o!D_OOMHyyLBAUwN@(_aP8vgBWn1k;o-7>1a~>t|L2L2NLVn;Wl*sVh+( zW&|h3lc)5!)3mors%S=l686H&9WyLU6bO>a@(_QSts08MuQZ2ANyLrZU<&)1Lw!(L zlNNX?FLM&FSLT*D7dp8Hl(wC&5Ck@DYhQ@O+U~=YcUH{=)zP)nRsb9TnT6}>0l@fr z8E}-)*#wzUve+|FMYQGsr}ao><7hxVkTk2R=MeqbZ~j9#Z5;GP%>@5m8M{=5yphz= z54c{BK<$?ffuMMHtyDo3oYIV9`f(D#Ou+#PFd`-enq++x>kcWU8d-e)DIH3EPeh?72Y|CLN>oD5HK1g-aCOUrZ)VmMb&0*= z7*uu@pss(QVYL-lwsu7UqK8^lKp4Dosgz-QDR ziM?Whw)XT3ZxgXuM-rL(6^JItvRG4M7-e1oG9$?*&}%F4+!dHco${5ufegSg>73ebFJs3RKDtn<#0rssl3e<6O+9K1*3E6!aewstmCBOrIJQmc^Sd@GuuBz2|C)A z;4+aYo>*cmR?=WVM2T>Ds!Jc7gm+T^PIbwbNP^QSuTsxBJz+qw;hL<|}Pf z7{jbj{@kj{031W!Q~(*A@`0X0HCI5Byy9i4$+Vh>5;Q{MX-sN3Fh}&FY?5Dr(OGXj zFZCcdlgaQHBmLD4^w}vk!(ldC`>N*jxB*wR_fRZI6vEG&WAuw#KPF28F4ReacIDe)xC`Cd!e9ig<*VfBaWh~ z-L13_@l^?8-ogBx9{6cxH$00#wf*s_oy%XI9lTiDvy>`j7&2NV=XusohZ~9Q$B)8* z_DhWN!8FolkM?8JvkG9nmn;3};MD*eL*7O73KPe;W5~ORH#|JrfG2=t z<{AehP7@#hFnYDl)=SDzJzgcfl;cq&WX%`wD^CN}HVmM7F+EhwntQubbR&3t1(Yv- z+~Qd4W2Z2QyNw}&o@rz@fI?yoD~OPwE7meKI4j;NtVtjD{Fuw? zPhBw~)^jRL!8d%8bj7XAP}?*l)jX$vn!Bzv45-yGAO518oXCk&J4Q!h{w_vuVdFxB zr`A?L80-rw&?oihlI0aGYy$LP1ev3N=c=DQY+)8+-tp9I_-ir%$B?&>c!&pT-nAl)cHI<^?#f27A;3)uB~B`{ck zj6M8`Xz3jkRQCnO85|#2^+<2$VL-fsmE%Tf+aq0iS_|7%af#V^TD=r*@EXt@>5@mH z^qBPIs>zz3Yq09!xMMtTAwRaIO|Dh>lBWLDkAnRDWBMf~k)sQf3)VgNX)JVdi^ev*0m z_|Odn&zP<3&!=wV7%7FyR}q z3UA)dy{{XT9K#x|v#tvACId~e{ z*QzfU(8S*I2jDH;2<1lN{(+9?_o69p@vPC1HCIx!7SYw#;{9so6|Q#oN19e|Mvv9+ zk@&e@6Hn#XL6>>KQX(RttRRdOnWXQTH@zS%*rTv<6Uk8?LWko#$6`o1RAc zar?(9Py!RL(0qRQqL%(HVR8~+X_%}k02IxM$|WSc7+2{{5C+I#IEMTaVw%yhcp3{X zda5_E5A~w9en|e;5?lxFeP=j;7fJF1JPvq|nhdZ8YI>g@P%i~@Oy1mT!X1sPo|-f@ zR5InL+vn%9%t7MQTX!lXZ=L=r(IsqNqW3TwKADxY`Y`&^%0os{1vDxzff5ydqbu;m zR@A$zyqZ5H+K+)P8c|y2eljEY$+Kk4N}IjfSPpY?dD6pzybqtDWdM#L|B!g&u*Z-J z^q)5RO-&y&A7F*U;tSC1z`eIZHg9~Oc>|wB4VX-}!vqJK|A(sPY2qzI@-y7jBU<#% zouHk)X15i6jWIFqlnmW^zhM3zBz9dB3hLl^HPY>-AVc`2~uH8j@DldMWCKhwn zE#VXwcK#Yv%v?`_rtpS#ObvQszHVYooFgTPs*{a z&n?$&ugVNc9bD3Y=?#>M-dV$u2W;Ns4kgD=mkX66hX`|D0UeQPe>Y1D?=7P?V?Eav~LvMaIH9=z8 zPnXy{ZS|P~1+vog=STsBs0`byez?o@s&Lhyc%r-2E~GFVrM&t^MF2L6TRDHJ6oIzd{Av+d^#C5U2|zmL8Av`MHt@wDefvUL3Z-PL)2G(Su_<)3)9DcB9)Z(bAR0 zulDbf=tdV~F(nqg3$#4SECEniA zBuhBOF0H~ud0k<-(LD2@Qt+@QX6hH?_z=I^v@ei-ey$!Hh1iI>_gDe{MkVBGyPUJ! zC)FvP=}&>Ukj-7xgm(dj;PGl2LB`wWc}LY%^_ZUicKePCD+6#08S-Azxx9U1%Wi-p z4zC_?8`?fQ)sg%zxIi=EJmdL8m@c9w%;IbfkQN$3X^^3xu7Q~Qec51#<|n`d21Fwg zlPl6@t}SbfjmPTNs)~XSf7B_VQ(CP`{FQT9tSZ)X>!&CInj1>fTdT~vX>XyR-MlR) z8e7K%p6h$6Sk!F`(15N?tE%HbOm`PZYRr zn2{y)-JvK@Ats4}*NO7|zB+bH(@M`=ro0`2%d25l7zz)fi2zk|d?i{##V*V0uF*$n zye6i){R+u{T1!tv6Eo5pat1^PPI{~) z4P7p2!ymfBo>J5rPV1){v2DdS5@cx4hWJ_fv4UntOm~w&wHrT8Q@+>=<($s362v6U z*-xa8&H=X!{i{Y@r}*Zi=K*m8j{G}!=}Gw`WdM#LLw=MTGa8j6LPIe(zQ%iHQ^!xn ztU67rFJXx(9xs!F1?f>Erl+3%si(pQ*-+|meBD`x-6L|ER^?g(m6|IrN&W=a+mo(L z#!QbnhuO7gj>ogq&FewQr%Kn=!6CO1=Y0y?bWsiq)d(vdtn@ZI>F(F*snf$}{3F1^ zlL0t}4Ea$~XSC&hpHw&m5EEF~%OX;Og%5Wv=6aH~ZnpkeP>2H+SnWXLxbS79&9dSLzY zdlW?>4*g)J^sXG!ch2d0tzM9U2T4#F59^qvnM{eNBm!QC)c?HiYN7okkp*;WpzJ+o z6c259?1HH{pA{2TnD5bC5^4{UbNcmB0-_t7fmeUcSLvlXa~`2lMyUr(TKO9pdWoWM<6u zR)5t3{3}<7I+?bxy?sO4u+~SC>U9C{wADa#Jpm1zaxKUIk4B`K<#-ug?-`cBOB_bv zrMv|!fy(H}wjLStvdWL!s#AV23o-!5kRd-)ii^POfhk{*6Ckph!oR%5eoqH@;sFcI ze{j8JLIe{lc$|vKuRwZ_bb%5Ah3e(fg%kVJSpbVp>e9=J0fYXNH=yd_b`T*8{5GgX=)-P%Hox-aY}jVrpe5 zTvTIUCJXBcILRYX%%zh6x9Nk9k3yD3`zH6VWteEg8v-7}>&g3X$^aZghWu#xGQ;sK z!K-I^#hm9F9;&mzV3h>Y^d$B`iD!B1Vm*znoe}~K#FeheAAq7YwXey?fWwMjH!-~y z^fHa9=J{QwkB_wN)&Z1YVjx(V@)n6SW-?pPUAL0EVZ9*qrgR4XeM)}t`pC1AQu;r; WCa=V&oeEv3q;(J9{xYWc7+|q=c=>5j`xivd2s#o_qPSxv*Yg>QIqMH z2Sd)Sbku%dnO|rsc}KQe?{A$gO>Vj6jXtW8yY5DC2T?3HHj;DEIv#=c)Kr7@mp$XQ}85Al$5O4$d87b7NyzT`+}$ZDMReXVXE@a-6h2Zm>J z<^^lEa9sL`w5y^>f}H;bPr@m$tj8BV1+Zq^r*po;0#b+jU+DR0Sj;kl%;XJ}hqR~e zENA4Or=GaIkTVB|MfX5;{b*zQuJi=5$^D>RwWaEQqAE$FqUiblGl}f5yFz<42s4xu zPa2G?P+5-*=DK2vWLut`4&_T2WtuM{eWpt4Klz_6#eedY9i?c$D(}8IXCHUUSy0Lm zH@+I5xb%22>U`4J2vR!f!4n22Aub29^U*s>#|Q2qWoD(mk#z1qn+1q9JDx!S>bP#V zK%(?3wW-l=rfU{WzrlDNZ;n`d=XGkn!$&LW8%S3*EEuLZxg`oq=_p`7ys>Yff|+$9 zg!x>Ao2>{U$bWmMNPkpp<`_m~!poy?oLTdaYP4X6s_cC+Ti@dkOvQH`nsVJydG?qD(<{>0w>AWJK_T1UvBts=zp3`+eA)r-y-9 z?ppw?xE!NgUWLW;3s2KQk|V{HJ&0@cZSI&}hBSApSXa)l;-aZ-T}KB&dB!{3pQn^+7Fd;#KPKzB6d_yc#^`y|HUKFZyS(AtAle2{ z0NWoF=@y)hqGhuI*zr$5h927;AFAk*5)PpQwXTND$Oc{DP!lsjM`TrDeTEe|MW18G zgYXqD0r`crS7OF7IDT@KzS5XHGyU5(6xhr`iRwEKKr4?i|DNzoizYIX$1#yv@MauP z=`Y$9_n=%DvVME3Ss&0PV1El=tV!R&^!65?{m6EA((6_PsP)Y=Qg5U&VmSlfYRWvh8X^EW6XSdjVc_3jRXWS6WoIUwEyt>P9G$^;NNe8(}(|)r# zK0ImUIm%`P-Z{roP*`N{kvYPq1^&n_ujHA<8BCt2nqWcK1lBe|6-zwj);2$tG6>e| zQjz_o{W-6YVQBEyW;pnR)YTOV9zKL!vL8u&NrD&Ycvy8=Xj?fQpKM!u_7(cdq&ZN~ zMsEkt8=>04wb-9-U2Y`q%rtR+E6KAg)lw*VPd>AV3_Tzu%51mxaeu}*PG!`eED(9< zY06iVtWn2#Lp>11soMxZR#*W>K%}Ua+es{$qip2+TGe@WV?Vy>U+5_qkWh&VoKLg4 z<4N0yYk=$;;T+i<-_A>u3wMj7Ny^3Y)TQ;%Uoh~^PQc;1Ow(HMsD{~{myQkUaTU%V b1+4?>n^>vh_0EWY9uCL>N5Ixw2c`ZONnC3T literal 0 HcmV?d00001 diff --git a/wp-content/plugins/updraftplus/images/notices/updraft_logo.png b/wp-content/plugins/updraftplus/images/notices/updraft_logo.png index ab76d63b22e41aeebfb378c182a3bcef0f1ff99e..664d65586a0cfd1a2b2fdf0ff12c1b57bb7aa252 100644 GIT binary patch literal 2453 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 L7LTb$5ySrrTLZa8 literal 3137 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 n?tAtGZa!2^-=)66L|G z$rppWDo08PE`HLGiT3Scyxd=DmL$H&8hR=zko45!f|@i70DxqKKSi**D-6MdEG9CL z;$H?Io5GT=?!i*vG9W4h_@|a=(^$zb-#v;H0Pw`W$I52=mqYZ;7!xj_5Qb)i=U@wx z7|ke$Vimfvny--??8CClTm~st1Jk*bIPgny*UNxQ@o$vFX%-u#SRKr^G0J(CsiwjU zO*zZNp3+w`+v74^_@Wm66?$174<~D{g8P?;M0^!X`G^a@5H427wRPkoI!NIi+>7kB zZlI*-AHAJ9;E{4Vc+oKx8_~3nkY7zn5&_%_;9hGhNgnB{?TRg-QW^&80EY)WQ1Uf( zuwrwXhZ4AVJ#^3l09Z+QSSw%E#Y@2LL&;m~m@7F#w!1IaA(TMY_X>*hj(OLE63}uI?M26LC6MJL{}0&(Igu9&{ANh`zWv2S`)w zgVHffZhJ_)b1-*W7q4ptIw54Dln#V+(13SYO_IMW2*&^kv@g*&cu8x3oXMfGk^%#y zp)FFtS&acJ8!&>7+vLj4tt>ni_=Jc`k^y1DHf-kZuFFa=WQu3X^~hf?EWqwn)L~iv(^E z`8*A0vNlOLSYbq4$n$Tq&+Lec-&V$MB4N;7*-6(~%&@GZ4x zVe|8|47F+qkZG;L^ZG1j^@i~V-Th$(_)9d;eCurES#0soDICK&>s6hFZ(S6tp}A*a zB;jxYQM+$d*poHUDgzR(&;eJ{S>*n+y1Yo;j#IKvID06waEaUUvM!#kFiJ^dn72T6 z;@;IHr7{6W3r^4K&U6ny0j@n0@1%GAaK<0=uwv z3inA7?V)p>mZ7o$F*s#lqS!Yg9qP755kQV`7n9)S@>Yh-s1}kjE`Ur>_g#K+YP^!Bc5oP}^oDIuh$v@f?+g1NO4ym;DOIOjG~kDk%^jS{^Q zv9v3M2yiV7<65`@mG-L|AVl9_;-&wzQQX4Ah3KV>KI2_f{QyGrbz1pq3y!ix4;CVz zfSVck4Kc5wLIe#5T*U%1myiMyqQCegt14kgNi{YQA^HM*;X4NlI2$^E5CH=(@bJc# zs$`T>Qd3IHCoB7CZ+Tw$Qldw_`z;+3WWBu-xDd=ennWmp3*j#Ni2AiklEpK-%RZtk zRt7UeWGL0O4A(aTxLfzowkp-NGGl*d>xX*>==hW_NR0ou-TIs0 z#p3v2W|UZ}#v2DNTRYtAMs1D~{iL@L7+q5NU*ELD~q|89H zp`yA&ByPus8eE&J8mG54C)KSkHTuJSEr-~ILUKZ7Lezh`F%NY#Kw48Tny@;U(6gaN%t zi1o;1J^p7tz^8DG$PrGQ+BlEi=Aw{I=AvLOQkIsx<7}L{{nr|phLnS z2AtieInfF%13t}3a01NNs*Pf$Vh!LiK(^7uvr%aAJ@L%{47w7jTYSJX=r*1TII;43 z#I!vfI{4-L*=0^+UjS(cA;Uy|g9{i0IZgdd_c7{Mu0DmwH=kwNBIGvm_pq<&vJ4^D zATbg zKl!#o^44F8@bKM^vCy+)9k2Z&3{mI+Dk(SrMh|-EcHqN^E1_h|MZV!M z9qOVTJW$-~;-_P72K`-e5Nw<`8`B+6LuP`&Jp&7O1HM5Jn%r0q6fXdL_7&| zTn>RB@=!zyIDP5+RBlpu`1!6bFzB`Ko6mtyVvBk@^ zflCaO0q1xRH64xmuEyIn*ag=#MDCoJIqy literal 8112 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 C?`wAe diff --git a/wp-content/plugins/updraftplus/images/updraftvault-150.png b/wp-content/plugins/updraftplus/images/updraftvault-150.png deleted file mode 100644 index e0c24c69d48b1fb339adf5013197996a145b5bbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6382 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 bTfRTlC5OioNm~5tmjDfwm&(;j(6IjlhSD*q diff --git a/wp-content/plugins/updraftplus/includes/Backblaze/CurlClient.php b/wp-content/plugins/updraftplus/includes/Backblaze/CurlClient.php deleted file mode 100644 index 873b0783..00000000 --- a/wp-content/plugins/updraftplus/includes/Backblaze/CurlClient.php +++ /dev/null @@ -1,839 +0,0 @@ -accountId = $accountId; - $this->applicationKey = $applicationKey; - $this->singleBucketKeyId = $singleBucketKeyId; - if (isset($options['ssl_verify'])) $this->sslVerify = $options['ssl_verify']; - if (isset($options['ssl_ca_certs'])) $this->useCACerts = $options['ssl_ca_certs']; - $this->authorizeAccount(); - } - - protected function request($method = 'GET', $uri = '', array $options = array(), $as_json = true) { - $session = curl_init($uri); - - $headers = array(); - - if (isset($options['auth'])) { - $account_id = empty($this->singleBucketKeyId) ? $this->accountId : $this->singleBucketKeyId; - $headers[] = 'Authorization: Basic ' . base64_encode($account_id . ':' . $this->applicationKey); - } - - if (isset($options['headers'])) { - foreach ($options['headers'] as $key => $header) { - $headers[] = $key . ': ' . $header; - } - } - - if ($this->sslVerify) { - curl_setopt($session, CURLOPT_SSL_VERIFYPEER, true); - curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 2); - } else { - curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 0); - } - - if ($this->useCACerts) { - curl_setopt($session, CURLOPT_CAINFO, $this->useCACerts); - } - - if ('GET' == $method) { - - curl_setopt($session, CURLOPT_HTTPGET, true); - - } else { - - $data = array(); - - if (isset($options['json'])) { - - $headers[] = "Accept: application/json"; - $data = json_encode($options['json']); - - } - - if (isset($options['body'])) { - - $data = $options['body']; - - } - - curl_setopt($session, CURLOPT_POSTFIELDS, $data); - curl_setopt($session, CURLOPT_POST, true); - } - - curl_setopt($session, CURLOPT_HTTPHEADER, $headers); - curl_setopt($session, CURLOPT_RETURNTRANSFER, true); - - if (isset($options['sink'])) { - $sink = fopen($options['sink'], 'w+'); - curl_setopt($session, CURLOPT_FILE, $sink); - curl_setopt($session, CURLOPT_FOLLOWLOCATION, true); - } - - if (isset($options['session'])) { - return $session; - } - - $response = curl_exec($session); - - if (0 != ($curl_error = curl_errno($session))) { - throw new Exception("Curl error ($curl_error): ".curl_error($session), $curl_error); - } - - $decode_response = json_decode($response, true); - - if (isset($decode_response['status']) && 200 !== $decode_response['status']) { - - throw new Exception($decode_response['message'], $decode_response['status']); - - } - - curl_close($session); - - if (!empty($sink)) @fclose($sink); - - if ($as_json) return $decode_response; - - return $response; - } - - public function uploadLargeStart($options) { - // Request body parameters - if ('/' === substr($options['FileName'], 0, 1)) { - $options['FileName'] = ltrim($options['FileName'], '/'); - } - - if (!isset($options['BucketId']) && isset($options['BucketName'])) { - $options['BucketId'] = $this->getBucketIdFromName($options['BucketName']); - } - - if (!isset($options['FileContentType'])) { - $options['FileContentType'] = 'b2/x-auto'; - } - - // Request start large file upload - $response = $this->request('POST', $this->apiUrl . '/b2_start_large_file', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'bucketId' => $options['BucketId'], - 'fileName' => $options['FileName'], - 'contentType' => $options['FileContentType'], - ), - )); - - /* - * fileId - * fileName - * accountId - * bucketId - * contentType - * fileInfo - * uploadTimestamp - */ - return $response; - } - - public function uploadLargeUrl($options) { - if (!isset($options['FileId'])) { - throw new Exception('FileId required'); - } - - $response = $this->request('POST', $this->apiUrl . '/b2_get_upload_part_url', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'fileId' => $options['FileId'], - ), - )); - - /* - * authorizationToken - * fileId - * uploadUrl - */ - return $response; - } - - public function uploadLargePart($options) { - - if (!isset($options['AuthorizationToken'])) { - throw new Exception('AuthorizationToken required'); - } - - if (!isset($options['FilePartNo'])) { - throw new Exception('FilePartNo required'); - } - - if (!isset($options['UploadUrl'])) { - throw new Exception('UploadUrl required'); - } - - if (!isset($options['Body'])) { - throw new Exception('Body required'); - } - - if (is_resource($options['Body'])) { - // We need to calculate the file's hash incrementally from the stream. - $context = hash_init('sha1'); - hash_update_stream($context, $options['Body']); - $hash = hash_final($context); - - // Similarly, we have to use fstat to get the size of the stream. - $fstat = fstat($options['Body']); - $size = $fstat['size']; - - // Rewind the stream before passing it to the HTTP client. - rewind($options['Body']); - } else { - // We've been given a simple string body, it's super simple to calculate the hash and size. - $hash = sha1($options['Body']); - $size = mb_strlen($options['Body'], '8bit'); - } - - $response = $this->request('POST', $options['UploadUrl'], array( - 'headers' => array( - 'Authorization' => $options['AuthorizationToken'], - 'X-Bz-Part-Number' => $options['FilePartNo'], - 'Content-Length' => $size, - 'X-Bz-Content-Sha1' => $hash, - ), - 'body' => $options['Body'], - )); - - /* - * fileId - * partNumber - * contentLength - * contentSha1 - */ - return $response; - } - - public function uploadLargeFinish($options) { - - if (!isset($options['FileId'])) { - throw new Exception('FileId required'); - } - - if (!isset($options['FilePartSha1Array'])) { - throw new Exception('FilePartSha1Array required'); - } - - if (!is_array($options['FilePartSha1Array'])) { - throw new Exception("FilePartSha1Array must be an array"); - - } - - $response = $this->request('POST', $this->apiUrl . '/b2_finish_large_file', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'fileId' => (string) $options['FileId'], - 'partSha1Array' => $options['FilePartSha1Array'], - ), - )); - - if (empty($response['contentLength'])) { - throw new Exception('B2: uploadLargeFinish error: contentLength returned was empty ('.serialize($response).')'); - } - - return new UpdraftPlus_Backblaze_File( - $response['fileId'], - $response['fileName'], - $response['contentSha1'], - $response['contentLength'], - $response['contentType'], - $response['fileInfo'] - ); - } - - protected function authorizeAccount() { - $response = $this->request("GET", 'https://api.backblazeb2.com/b2api/v1/b2_authorize_account', array( - 'auth' => array($this->accountId, $this->applicationKey), - )); - - $this->authToken = $response['authorizationToken']; - $this->apiUrl = $response['apiUrl'] . '/b2api/v1'; - $this->downloadUrl = $response['downloadUrl']; - } - - public function listBuckets() { - $buckets = array(); - - $response = $this->request('POST', $this->apiUrl . '/b2_list_buckets', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'accountId' => $this->accountId, - ), - )); - - if (!isset($response['buckets'])) throw new Exception('Failed to list buckets: '.serialize($response)); - - foreach ($response['buckets'] as $bucket) { - $buckets[] = new UpdraftPlus_Backblaze_Bucket($bucket['bucketId'], $bucket['bucketName'], $bucket['bucketType']); - } - - - return $buckets; - } - - protected function getBucketIdFromName($name) { - $buckets = $this->listBuckets(); - - foreach ($buckets as $bucket) { - if ($bucket->getName() === $name) { - return $bucket->getId(); - } - } - - return null; - } - - protected function getBucketNameFromId($id) { - $buckets = $this->listBuckets(); - - foreach ($buckets as $bucket) { - if ($bucket->getId() === $id) { - return $bucket->getName(); - } - } - - return null; - } - - protected function getFileIdFromBucketAndFileName($bucketName, $fileName) { - $files = $this->listFiles(array( - 'BucketName' => $bucketName, - 'FileName' => $fileName, - )); - - foreach ($files as $file) { - if ($file->getName() === $fileName) { - return $file->getId(); - } - } - - return null; - } - - public function listFiles($options) { - // if FileName is set, we only attempt to retrieve information about that single file. - $fileName = !empty($options['FileName']) ? $options['FileName'] : null; - - $nextFileName = null; - $maxFileCount = 1000; - $files = array(); - - if (!isset($options['BucketId']) && isset($options['BucketName'])) { - $options['BucketId'] = $this->getBucketIdFromName($options['BucketName']); - } - - if ($fileName) { - $nextFileName = $fileName; - $maxFileCount = 1; - } - - $json = array( - 'bucketId' => $options['BucketId'], - 'startFileName' => $nextFileName, - 'maxFileCount' => $maxFileCount, - ); - - if (!empty($options['Prefix'])) $json['prefix'] = $options['Prefix']; - - // B2 returns, at most, 1000 files per "page". Loop through the pages and compile an array of File objects. - while (true) { - $response = $this->request('POST', $this->apiUrl . '/b2_list_file_names', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => $json - )); - - if (!isset($response['files'])) throw new Exception('Failed to list files. '.serialize($files)); - - foreach ($response['files'] as $file) { - // if we have a file name set, only retrieve information if the file name matches - if (!$fileName || ($fileName === $file['fileName'])) { - $files[] = new UpdraftPlus_Backblaze_File($file['fileId'], $file['fileName'], null, $file['size']); - } - } - - if ($fileName || $response['nextFileName'] === null) { - // We've got all the files - break out of loop. - break; - } - - $json['startFileName'] = $response['nextFileName']; - } - - return $files; - } - - public function upload($options) { - // Clean the path if it starts with /. - if (substr($options['FileName'], 0, 1) === '/') { - $options['FileName'] = ltrim($options['FileName'], '/'); - } - - if (!isset($options['BucketId']) && isset($options['BucketName'])) { - $options['BucketId'] = $this->getBucketIdFromName($options['BucketName']); - } - - // Retrieve the URL that we should be uploading to. - $response = $this->request('POST', $this->apiUrl . '/b2_get_upload_url', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'bucketId' => $options['BucketId'], - ), - )); - - $uploadEndpoint = $response['uploadUrl']; - $uploadAuthToken = $response['authorizationToken']; - - if (is_resource($options['Body'])) { - // We need to calculate the file's hash incrementally from the stream. - $context = hash_init('sha1'); - hash_update_stream($context, $options['Body']); - $hash = hash_final($context); - - // Similarly, we have to use fstat to get the size of the stream. - $fstat = fstat($options['Body']); - $size = $fstat['size']; - - // Rewind the stream before passing it to the HTTP client. - rewind($options['Body']); - } else { - // We've been given a simple string body, it's super simple to calculate the hash and size. - $hash = sha1($options['Body']); - $size = mb_strlen($options['Body'], '8bit'); - } - - if (!isset($options['FileLastModified'])) { - $options['FileLastModified'] = round(microtime(true) * 1000); - } - - if (!isset($options['FileContentType'])) { - $options['FileContentType'] = 'b2/x-auto'; - } - - $response = $this->request('POST', $uploadEndpoint, array( - 'headers' => array( - 'Authorization' => $uploadAuthToken, - 'Content-Type' => $options['FileContentType'], - 'Content-Length' => $size, - 'X-Bz-File-Name' => $options['FileName'], - 'X-Bz-Content-Sha1' => $hash, - 'X-Bz-Info-src_last_modified_millis' => $options['FileLastModified'], - ), - 'body' => $options['Body'], - )); - - return new UpdraftPlus_Backblaze_File( - $response['fileId'], - $response['fileName'], - $response['contentSha1'], - $response['contentLength'], - $response['contentType'], - $response['fileInfo'] - ); - } - - public function download($options) { - $requestUrl = null; - $requestOptions = array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'sink' => isset($options['SaveAs']) ? $options['SaveAs'] : null, - ); - - if (isset($options['FileId'])) { - $requestOptions['query'] = array('fileId' => $options['FileId']); - $requestUrl = $this->downloadUrl . '/b2api/v1/b2_download_file_by_id'; - } else { - if (!isset($options['BucketName']) && isset($options['BucketId'])) { - $options['BucketName'] = $this->getBucketNameFromId($options['BucketId']); - } - - $requestUrl = sprintf('%s/file/%s/%s', $this->downloadUrl, $options['BucketName'], $options['FileName']); - } - - if (isset($options['headers'])) { - $requestOptions['headers'] = array_merge($requestOptions['headers'], $options['headers']); - } - - $response = $this->request('GET', $requestUrl, $requestOptions, false); - - return isset($options['SaveAs']) ? true : $response; - } - - public function getFile($options) { - if (!isset($options['FileId']) && isset($options['BucketName']) && isset($options['FileName'])) { - $options['FileId'] = $this->getFileIdFromBucketAndFileName($options['BucketName'], $options['FileName']); - - if (!$options['FileId']) { - throw new UpdraftPlus_Backblaze_NotFoundException(); - } - } - - $response = $this->request('POST', $this->apiUrl . '/b2_get_file_info', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'fileId' => $options['FileId'], - ), - )); - - return new UpdraftPlus_Backblaze_File( - $response['fileId'], - $response['fileName'], - $response['contentSha1'], - $response['contentLength'], - $response['contentType'], - $response['fileInfo'], - $response['bucketId'], - $response['action'], - $response['uploadTimestamp'] - ); - } - - /** - * Delete a file - * - * @param Array $options - possible keys are FileName, FileId, BucketName - * - * @return Boolean. Can also throw an exception; including UpdraftPlus_Backblaze_NotFoundException if the file was not found. - */ - public function deleteFile($options) { - if (!isset($options['FileName'])) { - $file = $this->getFile($options); - - $options['FileName'] = $file->getName(); - } - - if (!isset($options['FileId']) && isset($options['BucketName']) && isset($options['FileName'])) { - $file = $this->getFile($options); - - $options['FileId'] = $file->getId(); - } - - $delete_result = $this->request('POST', $this->apiUrl . '/b2_delete_file_version', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'fileName' => $options['FileName'], - 'fileId' => $options['FileId'], - ), - )); - - return (is_array($delete_result) && !empty($delete_result['fileId'])) ? true : false; - } - - /** - * Delete multiple files - * - * @param Array $files_to_delete - array of possible files to delete; sub-keys are FileName, FileId, BucketName - * @param String $bucket_name - the bucket that files are being deleted from - * @param String|Null - path prefix (to prevent unnecessary scanning of other paths) - * - * @return Array|Boolean - */ - public function deleteMultipleFiles($files_to_delete, $bucket_name, $path_prefix = null) { - if (count($files_to_delete) == 0) { - return false; - } - - $active = null; - $sessions = []; - $result = []; - $bulk_session = curl_multi_init(); - - $list_options = array( - 'BucketName' => $bucket_name - ); - - if (is_string($path_prefix) && '' !== $path_prefix) $list_options['Prefix'] = $path_prefix; - - $files = $this->listFiles($list_options); - - $files_lookup = array(); - - foreach ($files as $file_object) { - $file_name = $file_object->getName(); - $file_id = $file_object->getId(); - $files_lookup[$file_name] = $file_id; - } - - foreach ($files_to_delete as $file_identification) { - - try { - if (!isset($file_identification['FileName'])) { - // We should not enter here as we always pass a file name but just in case - $file = $this->getFile($file_identification); - $file_identification['FileName'] = $file->getName(); - $file_identification['FileId'] = $file->getId(); - } elseif (!isset($file_identification['FileId'])) { - if (isset($files_lookup[$file_identification['FileName']])) { - $file_identification['FileId'] = $files_lookup[$file_identification['FileName']]; - } else { - // We should not enter here as all the files should be in the same bucket but just in case - $file = $this->getFile($file_identification); - $file_identification['FileId'] = $file->getId(); - } - } - } catch (UpdraftPlus_Backblaze_NotFoundException $e) { - array_push($sessions, true); - continue; - } - - $session = $this->request('POST', $this->apiUrl . '/b2_delete_file_version', array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'fileName' => $file_identification['FileName'], - 'fileId' => $file_identification['FileId'], - ), - 'session' => true - )); - array_push($sessions, $session); - curl_multi_add_handle($bulk_session, $session); - } - - do { - $status = curl_multi_exec($bulk_session, $active); - if ($active) { - curl_multi_select($bulk_session); - } - } while ($active && $status == CURLM_OK); - - foreach ($sessions as $session) { - if (is_bool($session)) { - array_push($result, $session); - continue; - } - $response = curl_multi_getcontent($session); - array_push($result, $response); - curl_multi_remove_handle($bulk_session, $session); - } - curl_multi_close($bulk_session); - - return (is_array($result) && !empty($result)) ? $result : false; - } - - /** - * Create a private bucket with the given name. - * - * @param String $bucket_name - valid bucket name - * @throws Exception - * - * @return boolean - If bucket created successfully, it returns true otherwise false. - */ - public function createPrivateBucket($bucket_name) { - try { - $response = $this->request('POST', $this->apiUrl.'/b2_create_bucket', - array( - 'headers' => array( - 'Authorization' => $this->authToken, - ), - 'json' => array( - 'accountId' => $this->accountId, - 'bucketName' => $bucket_name, - 'bucketType' => 'allPrivate' - ) - ) - ); - } catch (Exception $e) { - if (400 == $e->getCode()) { - throw new Exception("Bucket can't be created because Bucket name is already in use.", $e->getCode()); - } else { - throw $e; - } - return false; - } - if (isset($response['bucketId']) && isset($response['bucketName']) && isset($response['bucketType'])) { - return true; - } - return false; - } - -} - -final class UpdraftPlus_Backblaze_Bucket { - const TYPE_PUBLIC = 'allPublic'; - const TYPE_PRIVATE = 'allPrivate'; - - protected $id; - protected $name; - protected $type; - - /** - * Bucket constructor. - * - * @param $id - * @param $name - * @param $type - */ - public function __construct($id, $name, $type) { - $this->id = $id; - $this->name = $name; - $this->type = $type; - } - - public function getId() { - return $this->id; - } - - public function getName() { - return $this->name; - } - - public function getType() { - return $this->type; - } -} - -final class UpdraftPlus_Backblaze_File { - protected $id; - protected $name; - protected $hash; - protected $size; - protected $type; - protected $info; - protected $bucketId; - protected $action; - protected $uploadTimestamp; - - /** - * File constructor. - * - * @param $id - * @param $name - * @param $hash - * @param $size - * @param $type - * @param $info - * @param $bucketId - * @param $action - * @param $uploadTimestamp - */ - public function __construct($id, $name, $hash = null, $size = null, $type = null, $info = null, $bucketId = null, $action = null, $uploadTimestamp = null) { - $this->id = $id; - $this->name = $name; - $this->hash = $hash; - $this->size = $size; - $this->type = $type; - $this->info = $info; - $this->bucketId = $bucketId; - $this->action = $action; - $this->uploadTimestamp = $uploadTimestamp; - } - - /** - * @return string - */ - public function getId() { - return $this->id; - } - - /** - * @return string - */ - public function getName() { - return $this->name; - } - - /** - * @return string - */ - public function getHash() { - return $this->hash; - } - - /** - * @return int - */ - public function getSize() { - return $this->size; - } - - /** - * @return string - */ - public function getType() { - return $this->type; - } - - /** - * @return array - */ - public function getInfo() - { - return $this->info; - } - - /** - * @return string - */ - public function getBucketId() { - return $this->bucketId; - } - - /** - * @return string - */ - public function getAction() { - return $this->action; - } - - /** - * @return string - */ - public function getUploadTimestamp() { - return $this->uploadTimestamp; - } -} - -class UpdraftPlus_Backblaze_NotFoundException extends Exception { -} diff --git a/wp-content/plugins/updraftplus/includes/Dropbox2/API.php b/wp-content/plugins/updraftplus/includes/Dropbox2/API.php index 87ed4d34..8dd3995e 100644 --- a/wp-content/plugins/updraftplus/includes/Dropbox2/API.php +++ b/wp-content/plugins/updraftplus/includes/Dropbox2/API.php @@ -1,5 +1,5 @@ @@ -203,16 +203,23 @@ private function append_upload($params, $last_call) { } } catch (Exception $e) { $responseCheck = json_decode($e->getMessage()); - if (isset($responseCheck) && strpos($responseCheck[0] , 'incorrect_offset') !== false) { + if (empty($responseCheck)) { + throw $e; + } else { + + $extract_message = (is_object($responseCheck[0]) && isset($responseCheck[0]->{'.tag'})) ? $responseCheck[0]->{'.tag'} : $responseCheck[0]; + + if (strpos($extract_message, 'incorrect_offset') !== false) { $expected_offset = $responseCheck[1]; throw new Exception('Submitted input out of alignment: got ['.$params['cursor']['offset'].'] expected ['.$expected_offset.']'); // $params['cursor']['offset'] = $responseCheck[1]; // $response = $this->append_upload($params, $last_call); - } elseif (isset($responseCheck) && strpos($responseCheck[0], 'closed') !== false) { - throw new Exception("Upload with upload_id {$params['cursor']['session_id']} already completed"); - } else { - throw $e; + } elseif (strpos($extract_message, 'closed') !== false) { + throw new Exception("Upload with upload_id {$params['cursor']['session_id']} already completed"); + } elseif (strpos($extract_message, 'too_many_requests') !== false) { + throw new Exception("Dropbox API error: too_many_requests"); + } } } return $response; @@ -287,6 +294,7 @@ private function start_search($query, $path, $limit) { 'query' => $query, 'options' => array( 'path' => $path, + 'filename_only' => true, 'max_results' => ($limit < 1) ? 1 : (($limit > 1000) ? 1000 : (int) $limit), ), 'api_v2' => true, @@ -401,3 +409,4 @@ private function encodePath($path) { return $this->normalisePath($path); } } +// phpcs:enable diff --git a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php index 47f1d3d5..ed0892ce 100644 --- a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php +++ b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/ConsumerAbstract.php @@ -126,7 +126,8 @@ private function authorise() header('Location: ' . $url); exit; } else { - throw new Dropbox_Exception(sprintf(__('The %s authentication could not go ahead, because something else on your site is breaking it. Try disabling your other plugins and switching to a default theme. (Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins. Turning off any debugging settings may also help).', 'updraftplus'), 'Dropbox')); + /* translators: %s: Authentication service name (e.g., Dropbox) */ + throw new Dropbox_Exception(sprintf(__('The %s authentication could not go ahead, because something else on your site is breaking it.', 'updraftplus'), 'Dropbox').' '.__('Try disabling your other plugins and switching to a default theme.', 'updraftplus').' ('.__('Specifically, you are looking for the component that sends output (most likely PHP warnings/errors) before the page begins.', 'updraftplus').' '.__('Turning off any debugging settings may also help.', 'updraftplus').')'); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should be happening when the exception is printed } ?>log('Dropbox reauthorisation needed; but we are running from cron, AJAX or the CLI, so this is not possible'); $this->storage->do_unset('access_token'); - throw new Dropbox_Exception(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox')); + /* translators: %s: Authentication service name (e.g., Dropbox) */ + throw new Dropbox_Exception(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox')); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should be happening when the exception is printed #$updraftplus->log(sprintf(__('You need to re-authenticate with %s, as your existing credentials are not working.', 'updraftplus'), 'Dropbox'), 'error'); return false; } @@ -151,9 +153,9 @@ public function getAuthoriseUrl() */ global $updraftplus; - if (!function_exists('crypt_random_string')) $updraftplus->ensure_phpseclib('Crypt_Random'); + $updraftplus->ensure_phpseclib(); - $CSRF = base64_encode(crypt_random_string(16)); + $CSRF = base64_encode(phpseclib_Crypt_Random::string(16)); $this->storage->set($CSRF,'CSRF'); // Prepare request parameters /* @@ -506,7 +508,7 @@ public function setSignatureMethod($method) $this->sigMethod = $method; break; default: - throw new Dropbox_Exception('Unsupported signature method ' . $method); + throw new Dropbox_Exception('Unsupported signature method ' . $method); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should be happening when the exception is printed } } diff --git a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php index e7d92eb5..b2c83440 100644 --- a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php +++ b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/Curl.php @@ -1,5 +1,5 @@ @@ -9,7 +9,49 @@ */ class Dropbox_Curl extends Dropbox_ConsumerAbstract -{ +{ + /** + * Dropbox consumer key + * @var String + */ + protected $consumerKey; + + /** + * Dropbox oauth2_id + * @var String + */ + protected $oauth2_id; + + /** + * Dropbox consumer secret + * @var String + */ + protected $consumerSecret; + + /** + * Dropbox storage object + * @var \Dropbox\OAuth\Consumer\StorageInterface|Dropbox_StorageInterface + */ + protected $storage; + + /** + * Not used anywhere but it is set + * @var Callable|Null + */ + protected $callback; + + /** + * Callback URL + * @var String|null + */ + protected $callbackhome; + + /** + * Dropbox storage instance id + * @var String + */ + protected $instance_id; + /** * Default cURL options * @var array @@ -194,10 +236,11 @@ public function fetch($method, $url, $call, array $additional = array(), $retry_ // Dropbox returns error messages inconsistently... if (!empty($response['body']->error) && $response['body']->error instanceof stdClass) { $array = array_values((array) $response['body']->error); - //Dropbox API v2 only throws 409 errors if this error is a incorrect_offset then we need the entire error array not just the message. PHP Exception messages have to be a string so JSON encode the array. - if (strpos($array[0] , 'incorrect_offset') !== false) { + // Dropbox API v2 only throws 409 errors if this error is a incorrect_offset then we need the entire error array not just the message. PHP Exception messages have to be a string so JSON encode the array. + $extract_message = (is_object($array[0]) && isset($array[0]->{'.tag'})) ? $array[0]->{'.tag'} : $array[0]; + if (strpos($extract_message, 'incorrect_offset') !== false) { $message = json_encode($array); - } elseif (strpos($array[0] , 'lookup_failed') !== false ) { + } elseif (strpos($extract_message, 'lookup_failed') !== false ) { // re-structure the array so it is correctly formatted for API // Note: Dropbox v2 returns different errors at different stages hence this fix $correctOffset = array( @@ -208,13 +251,24 @@ public function fetch($method, $url, $call, array $additional = array(), $retry_ $message = json_encode($correctOffset); } else { - $message = $array[0]; + $message = ''; + $property = 'error'; + $resp = $response['body']; + while (isset($resp->$property)) { + if (is_string($resp->$property)) $message .= $resp->$property.'/'; + if (!is_object($resp->$property) || empty($resp->$property->{'.tag'})) break; + $property = $resp->$property->{'.tag'}; + $message .= $property.'/'; + $resp = $response['body']->error; + } } } elseif (!empty($response['body']->error)) { $message = $response['body']->error; } elseif (is_string($response['body'])) { // 31 Mar 2017 - This case has been found to exist; though the docs imply that there's always an 'error' property and that what is returned in JSON, we found a case of this being returned just as a simple string, but detectable via an HTTP 400: Error in call to API function "files/upload_session/append_v2": HTTP header "Dropbox-API-Arg": cursor.offset: expected integer, got string $message = $response['body']; + } elseif (!empty($response['body']->error_summary)) { + $message = $response['body']->error_summary; } else { $message = "HTTP bad response code: $code"; } @@ -305,3 +359,4 @@ public function getlastResponse() return $this->lastResponse; } } +// phpcs:enable diff --git a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php index 309b2918..266aa547 100644 --- a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php +++ b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Consumer/WordPress.php @@ -65,12 +65,12 @@ public function fetch($method, $url, $call, array $additional = array()) // Check if an error occurred and throw an Exception. This is part of the authentication process - don't modify. if (!empty($body->error)) { $message = $body->error . ' (Status Code: ' . wp_remote_retrieve_response_code($response) . ')'; - throw new Dropbox_Exception($message); + throw new Dropbox_Exception($message); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } if (is_wp_error($response)) { $message = $response->get_error_message(); - throw new Dropbox_Exception($message); + throw new Dropbox_Exception($message); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } $results = array ( 'body' => $body, 'code' => wp_remote_retrieve_response_code($response), 'headers' => $response['headers'] ); diff --git a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php index da7ae412..1e5100f6 100644 --- a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php +++ b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/Encrypter.php @@ -41,7 +41,7 @@ public function __construct($key) # Short-cut so that the mbstring extension is not required $this->key = $key; } elseif (($length = mb_strlen($key, '8bit')) !== self::KEY_SIZE) { - throw new Dropbox_Exception('Expecting a ' . self::KEY_SIZE . ' byte key, got ' . $length); + throw new Dropbox_Exception('Expecting a ' . self::KEY_SIZE . ' byte key, got ' . $length); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } else { // Set the encryption key $this->key = $key; @@ -58,7 +58,7 @@ public function encrypt($token) // Encryption: we always use phpseclib for this global $updraftplus; - $ensure_phpseclib = $updraftplus->ensure_phpseclib('Crypt_AES'); + $ensure_phpseclib = $updraftplus->ensure_phpseclib(); if (is_wp_error($ensure_phpseclib)) { $updraftplus->log("Failed to load phpseclib classes (".$ensure_phpseclib->get_error_code()."): ".$ensure_phpseclib->get_error_message()); @@ -66,14 +66,12 @@ public function encrypt($token) return false; } - $updraftplus->ensure_phpseclib('Crypt_Rijndael'); - - if (!function_exists('crypt_random_string')) updraft_try_include_file('vendor/phpseclib/phpseclib/phpseclib/Crypt/Random.php', 'require_once'); + $updraftplus->ensure_phpseclib(); - $iv = crypt_random_string(self::IV_SIZE); + $iv = phpseclib_Crypt_Random::string(self::IV_SIZE); // Defaults to CBC mode - $rijndael = new Crypt_Rijndael(); + $rijndael = new phpseclib_Crypt_Rijndael(); $rijndael->setKey($this->key); @@ -109,9 +107,9 @@ public function decrypt($cipherText) if (!$decrypted) { global $updraftplus; - $updraftplus->ensure_phpseclib('Crypt_Rijndael'); + $updraftplus->ensure_phpseclib(); - $rijndael = new Crypt_Rijndael(); + $rijndael = new phpseclib_Crypt_Rijndael(); $rijndael->setKey($this->key); $rijndael->setIV($iv); $token = $rijndael->decrypt($cipherText); diff --git a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php index 5ff6103a..07fbe482 100644 --- a/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php +++ b/wp-content/plugins/updraftplus/includes/Dropbox2/OAuth/Storage/WordPress.php @@ -64,7 +64,7 @@ public function __construct(Dropbox_Encrypter $encrypter = null, $option_name_pr public function get($type) { if ($type != 'request_token' && $type != 'access_token' && $type != 'appkey' && $type != 'CSRF' && $type != 'code') { - throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF' or 'code', got '$type'"); + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF' or 'code', got '$type'"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } else { if (false !== ($opts = $this->backup_module_object->get_options())) { if ($type == 'request_token' || $type == 'access_token'){ @@ -93,7 +93,7 @@ public function get($type) public function set($token, $type) { if ($type != 'request_token' && $type != 'access_token' && $type != 'upgraded' && $type != 'CSRF' && $type != 'code') { - throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } else { $opts = $this->backup_module_object->get_options(); @@ -125,7 +125,7 @@ public function set($token, $type) public function do_unset($type) { if ($type != 'request_token' && $type != 'access_token' && $type != 'upgraded' && $type != 'CSRF' && $type != 'code') { - throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); + throw new Dropbox_Exception("Expected a type of either 'request_token', 'access_token', 'CSRF', 'upgraded' or 'code', got '$type'"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } else { $opts = $this->backup_module_object->get_options(); diff --git a/wp-content/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php b/wp-content/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php index 8e80a7b8..3439d6a4 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php +++ b/wp-content/plugins/updraftplus/includes/Google/Auth/ComputeEngine.php @@ -99,9 +99,9 @@ public function acquireAccessToken() throw new Google_Auth_Exception( sprintf( "Error fetching service account access token, message: '%s'", - $response->getResponseBody() + $response->getResponseBody() // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. ), - $response->getResponseHttpCode() + $response->getResponseHttpCode() // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- HTTP code should be escaped when caught and printed. ); } } diff --git a/wp-content/plugins/updraftplus/includes/Google/Auth/OAuth2.php b/wp-content/plugins/updraftplus/includes/Google/Auth/OAuth2.php index 57997fa5..e5aaf032 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Auth/OAuth2.php +++ b/wp-content/plugins/updraftplus/includes/Google/Auth/OAuth2.php @@ -15,6 +15,8 @@ * limitations under the License. */ +// phpcs:disable WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. + if (!class_exists('UDP_Google_Client')) { require_once dirname(__FILE__) . '/../autoload.php'; } diff --git a/wp-content/plugins/updraftplus/includes/Google/Cache/Apc.php b/wp-content/plugins/updraftplus/includes/Google/Cache/Apc.php index e508223a..90f99cea 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Cache/Apc.php +++ b/wp-content/plugins/updraftplus/includes/Google/Cache/Apc.php @@ -40,7 +40,7 @@ public function __construct(UDP_Google_Client $client) $error = "Apc functions not available"; $client->getLogger()->error($error); - throw new Google_Cache_Exception($error); + throw new Google_Cache_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } $this->client = $client; diff --git a/wp-content/plugins/updraftplus/includes/Google/Cache/File.php b/wp-content/plugins/updraftplus/includes/Google/Cache/File.php index 9a6ee5b0..c2fb1ed9 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Cache/File.php +++ b/wp-content/plugins/updraftplus/includes/Google/Cache/File.php @@ -151,7 +151,7 @@ private function getCacheDir($file, $forWrite) 'File cache creation failed', array('dir' => $storageDir) ); - throw new Google_Cache_Exception("Could not create storage directory: $storageDir"); + throw new Google_Cache_Exception("Could not create storage directory: $storageDir"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } } return $storageDir; diff --git a/wp-content/plugins/updraftplus/includes/Google/Cache/Memcache.php b/wp-content/plugins/updraftplus/includes/Google/Cache/Memcache.php index d55c5974..30c9aa33 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Cache/Memcache.php +++ b/wp-content/plugins/updraftplus/includes/Google/Cache/Memcache.php @@ -47,7 +47,7 @@ public function __construct(UDP_Google_Client $client) $error = "Memcache functions not available"; $client->getLogger()->error($error); - throw new Google_Cache_Exception($error); + throw new Google_Cache_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } $this->client = $client; @@ -63,7 +63,7 @@ public function __construct(UDP_Google_Client $client) $error = "You need to supply a valid memcache host and port"; $client->getLogger()->error($error); - throw new Google_Cache_Exception($error); + throw new Google_Cache_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } } } @@ -178,7 +178,7 @@ private function connect() $error = "Couldn't connect to memcache server"; $this->client->getLogger()->error($error); - throw new Google_Cache_Exception($error); + throw new Google_Cache_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } } } diff --git a/wp-content/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php b/wp-content/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php index c7d11e58..1f8c0bd9 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php +++ b/wp-content/plugins/updraftplus/includes/Google/Http/MediaFileUpload.php @@ -301,6 +301,6 @@ private function getResumeUri() $error = "Failed to start the resumable upload (HTTP {$message})"; $this->client->getLogger()->error($error); - throw new Google_Exception($error); + throw new Google_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } } diff --git a/wp-content/plugins/updraftplus/includes/Google/Http/REST.php b/wp-content/plugins/updraftplus/includes/Google/Http/REST.php index f324d6d2..2a5bce9b 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Http/REST.php +++ b/wp-content/plugins/updraftplus/includes/Google/Http/REST.php @@ -39,7 +39,7 @@ public static function execute(UDP_Google_Client $client, UDP_Google_Http_Reques $runner = new UDP_Google_Task_Runner( $client, sprintf('%s %s', $req->getRequestMethod(), $req->getUrl()), - array(get_class(), 'doExecute'), + array(__CLASS__, 'doExecute'), array($client, $req) ); @@ -107,7 +107,7 @@ public static function decodeHttpResponse($response, UDP_Google_Client $client = 'retry_map' ); } - throw new UDP_Google_Service_Exception($err, $code, null, $errors, $map); + throw new UDP_Google_Service_Exception($err, $code, null, $errors, $map); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } // Only attempt to decode the response, if the response code wasn't (204) 'no content' @@ -123,7 +123,7 @@ public static function decodeHttpResponse($response, UDP_Google_Client $client = if ($client) { $client->getLogger()->error($error); } - throw new UDP_Google_Service_Exception($error); + throw new UDP_Google_Service_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } if ($response->getExpectedClass()) { diff --git a/wp-content/plugins/updraftplus/includes/Google/IO/Curl.php b/wp-content/plugins/updraftplus/includes/Google/IO/Curl.php index dff22f39..347fa750 100644 --- a/wp-content/plugins/updraftplus/includes/Google/IO/Curl.php +++ b/wp-content/plugins/updraftplus/includes/Google/IO/Curl.php @@ -37,7 +37,7 @@ public function __construct(UDP_Google_Client $client) if (!extension_loaded('curl')) { $error = 'The cURL IO handler requires the cURL extension to be enabled'; $client->getLogger()->critical($error); - throw new UDP_Google_IO_Exception($error); + throw new UDP_Google_IO_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } parent::__construct($client); @@ -114,7 +114,7 @@ public function executeRequest(UDP_Google_Http_Request $request) $map = $this->client->getClassConfig('UDP_Google_IO_Exception', 'retry_map'); $this->client->getLogger()->error('cURL ' . $error); - throw new UDP_Google_IO_Exception($error, $code, null, $map); + throw new UDP_Google_IO_Exception($error, $code, null, $map); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); diff --git a/wp-content/plugins/updraftplus/includes/Google/IO/Stream.php b/wp-content/plugins/updraftplus/includes/Google/IO/Stream.php index 3d7b0d3f..87e1e016 100644 --- a/wp-content/plugins/updraftplus/includes/Google/IO/Stream.php +++ b/wp-content/plugins/updraftplus/includes/Google/IO/Stream.php @@ -48,7 +48,7 @@ public function __construct(UDP_Google_Client $client) $error = 'The stream IO handler requires the allow_url_fopen runtime ' . 'configuration to be enabled'; $client->getLogger()->critical($error); - throw new UDP_Google_IO_Exception($error); + throw new UDP_Google_IO_Exception($error); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } parent::__construct($client); @@ -112,7 +112,10 @@ public function executeRequest(UDP_Google_Http_Request $request) $requestSslContext['allow_self_signed'] = true; } if (!empty($this->options['cafile'])) $requestSslContext['cafile'] = $this->options['cafile']; - +if (!empty($this->options['proxy'])) { + $requestHttpContext['proxy'] = $this->options['proxy']; + $requestHttpContext['request_fulluri'] = true; +} $options = array( "http" => array_merge( self::$DEFAULT_HTTP_CONTEXT, @@ -176,7 +179,7 @@ public function executeRequest(UDP_Google_Http_Request $request) ); $this->client->getLogger()->error('Stream ' . $error); - throw new UDP_Google_IO_Exception($error, $this->trappedErrorNumber); + throw new UDP_Google_IO_Exception($error, $this->trappedErrorNumber); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } $response_data = false; @@ -199,7 +202,7 @@ public function executeRequest(UDP_Google_Http_Request $request) ); $this->client->getLogger()->error('Stream ' . $error); - throw new UDP_Google_IO_Exception($error, $respHttpCode); + throw new UDP_Google_IO_Exception($error, $respHttpCode); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } $responseHeaders = $this->getHttpResponseHeaders($http_response_header); diff --git a/wp-content/plugins/updraftplus/includes/Google/Logger/Abstract.php b/wp-content/plugins/updraftplus/includes/Google/Logger/Abstract.php index 4627c957..aa03d6b0 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Logger/Abstract.php +++ b/wp-content/plugins/updraftplus/includes/Google/Logger/Abstract.php @@ -397,7 +397,7 @@ protected function normalizeLevel($level) } throw new Google_Logger_Exception( - sprintf("Unknown LogLevel: '%s'", $level) + sprintf("Unknown LogLevel: '%s'", $level) // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. ); } diff --git a/wp-content/plugins/updraftplus/includes/Google/Logger/File.php b/wp-content/plugins/updraftplus/includes/Google/Logger/File.php index 61b46803..4586ba1d 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Logger/File.php +++ b/wp-content/plugins/updraftplus/includes/Google/Logger/File.php @@ -116,9 +116,9 @@ private function open() throw new Google_Logger_Exception( sprintf( "Logger Error: '%s'", - $this->trappedErrorString + $this->trappedErrorString // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. ), - $this->trappedErrorNumber + $this->trappedErrorNumber // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. ); } diff --git a/wp-content/plugins/updraftplus/includes/Google/Model.php b/wp-content/plugins/updraftplus/includes/Google/Model.php index 87769420..b3db06ff 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Model.php +++ b/wp-content/plugins/updraftplus/includes/Google/Model.php @@ -241,7 +241,7 @@ public function assertIsArray($obj, $method) { if ($obj && !is_array($obj)) { throw new Google_Exception( - "Incorrect parameter type passed to $method(). Expected an array." + "Incorrect parameter type passed to $method(). Expected an array." // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. ); } } diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/CloudMonitoring.php b/wp-content/plugins/updraftplus/includes/Google/Service/CloudMonitoring.php deleted file mode 100644 index 04dd1c93..00000000 --- a/wp-content/plugins/updraftplus/includes/Google/Service/CloudMonitoring.php +++ /dev/null @@ -1,1167 +0,0 @@ - - * API for accessing Google Cloud and API monitoring data.

- * - *

- * For more information about this service, see the API - * Documentation - *

- * - * @author Google, Inc. - */ -class Google_Service_CloudMonitoring extends UDP_Google_Service -{ - /** View and write monitoring data for all of your Google and third-party Cloud and API projects. */ - const MONITORING = - "https://www.googleapis.com/auth/monitoring"; - - public $metricDescriptors; - public $timeseries; - public $timeseriesDescriptors; - - - /** - * Constructs the internal representation of the CloudMonitoring service. - * - * @param Google_Client $client - */ - public function __construct(UDP_Google_Client $client) - { - parent::__construct($client); - $this->servicePath = 'cloudmonitoring/v2beta2/projects/'; - $this->version = 'v2beta2'; - $this->serviceName = 'cloudmonitoring'; - - $this->metricDescriptors = new Google_Service_CloudMonitoring_MetricDescriptors_Resource( - $this, - $this->serviceName, - 'metricDescriptors', - array( - 'methods' => array( - 'create' => array( - 'path' => '{project}/metricDescriptors', - 'httpMethod' => 'POST', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'delete' => array( - 'path' => '{project}/metricDescriptors/{metric}', - 'httpMethod' => 'DELETE', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'metric' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{project}/metricDescriptors', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'count' => array( - 'location' => 'query', - 'type' => 'integer', - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'query' => array( - 'location' => 'query', - 'type' => 'string', - ), - ), - ), - ) - ) - ); - $this->timeseries = new Google_Service_CloudMonitoring_Timeseries_Resource( - $this, - $this->serviceName, - 'timeseries', - array( - 'methods' => array( - 'list' => array( - 'path' => '{project}/timeseries/{metric}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'metric' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'youngest' => array( - 'location' => 'query', - 'type' => 'string', - 'required' => true, - ), - 'count' => array( - 'location' => 'query', - 'type' => 'integer', - ), - 'timespan' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'aggregator' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'labels' => array( - 'location' => 'query', - 'type' => 'string', - 'repeated' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'window' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'oldest' => array( - 'location' => 'query', - 'type' => 'string', - ), - ), - ),'write' => array( - 'path' => '{project}/timeseries:write', - 'httpMethod' => 'POST', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ), - ) - ) - ); - $this->timeseriesDescriptors = new Google_Service_CloudMonitoring_TimeseriesDescriptors_Resource( - $this, - $this->serviceName, - 'timeseriesDescriptors', - array( - 'methods' => array( - 'list' => array( - 'path' => '{project}/timeseriesDescriptors/{metric}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'metric' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'youngest' => array( - 'location' => 'query', - 'type' => 'string', - 'required' => true, - ), - 'count' => array( - 'location' => 'query', - 'type' => 'integer', - ), - 'timespan' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'aggregator' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'labels' => array( - 'location' => 'query', - 'type' => 'string', - 'repeated' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'window' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'oldest' => array( - 'location' => 'query', - 'type' => 'string', - ), - ), - ), - ) - ) - ); - } -} - - -/** - * The "metricDescriptors" collection of methods. - * Typical usage is: - * - * $cloudmonitoringService = new Google_Service_CloudMonitoring(...); - * $metricDescriptors = $cloudmonitoringService->metricDescriptors; - * - */ -class Google_Service_CloudMonitoring_MetricDescriptors_Resource extends UDP_Google_Service_Resource -{ - - /** - * Create a new metric. (metricDescriptors.create) - * - * @param string $project The project id. The value can be the numeric project - * ID or string-based project name. - * @param Google_MetricDescriptor $postBody - * @param array $optParams Optional parameters. - * @return Google_Service_CloudMonitoring_MetricDescriptor - */ - public function create($project, Google_Service_CloudMonitoring_MetricDescriptor $postBody, $optParams = array()) - { - $params = array('project' => $project, 'postBody' => $postBody); - $params = array_merge($params, $optParams); - return $this->call('create', array($params), "Google_Service_CloudMonitoring_MetricDescriptor"); - } - - /** - * Delete an existing metric. (metricDescriptors.delete) - * - * @param string $project The project ID to which the metric belongs. - * @param string $metric Name of the metric. - * @param array $optParams Optional parameters. - * @return Google_Service_CloudMonitoring_DeleteMetricDescriptorResponse - */ - public function delete($project, $metric, $optParams = array()) - { - $params = array('project' => $project, 'metric' => $metric); - $params = array_merge($params, $optParams); - return $this->call('delete', array($params), "Google_Service_CloudMonitoring_DeleteMetricDescriptorResponse"); - } - - /** - * List metric descriptors that match the query. If the query is not set, then - * all of the metric descriptors will be returned. Large responses will be - * paginated, use the nextPageToken returned in the response to request - * subsequent pages of results by setting the pageToken query parameter to the - * value of the nextPageToken. (metricDescriptors.listMetricDescriptors) - * - * @param string $project The project id. The value can be the numeric project - * ID or string-based project name. - * @param array $optParams Optional parameters. - * - * @opt_param int count Maximum number of metric descriptors per page. Used for - * pagination. If not specified, count = 100. - * @opt_param string pageToken The pagination token, which is used to page - * through large result sets. Set this value to the value of the nextPageToken - * to retrieve the next page of results. - * @opt_param string query The query used to search against existing metrics. - * Separate keywords with a space; the service joins all keywords with AND, - * meaning that all keywords must match for a metric to be returned. If this - * field is omitted, all metrics are returned. If an empty string is passed with - * this field, no metrics are returned. - * @return Google_Service_CloudMonitoring_ListMetricDescriptorsResponse - */ - public function listMetricDescriptors($project, $optParams = array()) - { - $params = array('project' => $project); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_CloudMonitoring_ListMetricDescriptorsResponse"); - } -} - -/** - * The "timeseries" collection of methods. - * Typical usage is: - * - * $cloudmonitoringService = new Google_Service_CloudMonitoring(...); - * $timeseries = $cloudmonitoringService->timeseries; - * - */ -class Google_Service_CloudMonitoring_Timeseries_Resource extends UDP_Google_Service_Resource -{ - - /** - * List the data points of the time series that match the metric and labels - * values and that have data points in the interval. Large responses are - * paginated; use the nextPageToken returned in the response to request - * subsequent pages of results by setting the pageToken query parameter to the - * value of the nextPageToken. (timeseries.listTimeseries) - * - * @param string $project The project ID to which this time series belongs. The - * value can be the numeric project ID or string-based project name. - * @param string $metric Metric names are protocol-free URLs as listed in the - * Supported Metrics page. For example, - * compute.googleapis.com/instance/disk/read_ops_count. - * @param string $youngest End of the time interval (inclusive), which is - * expressed as an RFC 3339 timestamp. - * @param array $optParams Optional parameters. - * - * @opt_param int count Maximum number of data points per page, which is used - * for pagination of results. - * @opt_param string timespan Length of the time interval to query, which is an - * alternative way to declare the interval: (youngest - timespan, youngest]. The - * timespan and oldest parameters should not be used together. Units: - s: - * second - m: minute - h: hour - d: day - w: week Examples: 2s, 3m, 4w. - * Only one unit is allowed, for example: 2w3d is not allowed; you should use - * 17d instead. - * - * If neither oldest nor timespan is specified, the default time interval will - * be (youngest - 4 hours, youngest]. - * @opt_param string aggregator The aggregation function that will reduce the - * data points in each window to a single point. This parameter is only valid - * for non-cumulative metrics with a value type of INT64 or DOUBLE. - * @opt_param string labels A collection of labels for the matching time series, - * which are represented as: - key==value: key equals the value - key=~value: - * key regex matches the value - key!=value: key does not equal the value - - * key!~value: key regex does not match the value For example, to list all of - * the time series descriptors for the region us-central1, you could specify: - * label=cloud.googleapis.com%2Flocation=~us-central1.* - * @opt_param string pageToken The pagination token, which is used to page - * through large result sets. Set this value to the value of the nextPageToken - * to retrieve the next page of results. - * @opt_param string window The sampling window. At most one data point will be - * returned for each window in the requested time interval. This parameter is - * only valid for non-cumulative metric types. Units: - m: minute - h: hour - - * d: day - w: week Examples: 3m, 4w. Only one unit is allowed, for example: - * 2w3d is not allowed; you should use 17d instead. - * @opt_param string oldest Start of the time interval (exclusive), which is - * expressed as an RFC 3339 timestamp. If neither oldest nor timespan is - * specified, the default time interval will be (youngest - 4 hours, youngest] - * @return Google_Service_CloudMonitoring_ListTimeseriesResponse - */ - public function listTimeseries($project, $metric, $youngest, $optParams = array()) - { - $params = array('project' => $project, 'metric' => $metric, 'youngest' => $youngest); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_CloudMonitoring_ListTimeseriesResponse"); - } - - /** - * Put data points to one or more time series for one or more metrics. If a time - * series does not exist, a new time series will be created. It is not allowed - * to write a time series point that is older than the existing youngest point - * of that time series. Points that are older than the existing youngest point - * of that time series will be discarded silently. Therefore, users should make - * sure that points of a time series are written sequentially in the order of - * their end time. (timeseries.write) - * - * @param string $project The project ID. The value can be the numeric project - * ID or string-based project name. - * @param Google_WriteTimeseriesRequest $postBody - * @param array $optParams Optional parameters. - * @return Google_Service_CloudMonitoring_WriteTimeseriesResponse - */ - public function write($project, Google_Service_CloudMonitoring_WriteTimeseriesRequest $postBody, $optParams = array()) - { - $params = array('project' => $project, 'postBody' => $postBody); - $params = array_merge($params, $optParams); - return $this->call('write', array($params), "Google_Service_CloudMonitoring_WriteTimeseriesResponse"); - } -} - -/** - * The "timeseriesDescriptors" collection of methods. - * Typical usage is: - * - * $cloudmonitoringService = new Google_Service_CloudMonitoring(...); - * $timeseriesDescriptors = $cloudmonitoringService->timeseriesDescriptors; - * - */ -class Google_Service_CloudMonitoring_TimeseriesDescriptors_Resource extends UDP_Google_Service_Resource -{ - - /** - * List the descriptors of the time series that match the metric and labels - * values and that have data points in the interval. Large responses are - * paginated; use the nextPageToken returned in the response to request - * subsequent pages of results by setting the pageToken query parameter to the - * value of the nextPageToken. (timeseriesDescriptors.listTimeseriesDescriptors) - * - * @param string $project The project ID to which this time series belongs. The - * value can be the numeric project ID or string-based project name. - * @param string $metric Metric names are protocol-free URLs as listed in the - * Supported Metrics page. For example, - * compute.googleapis.com/instance/disk/read_ops_count. - * @param string $youngest End of the time interval (inclusive), which is - * expressed as an RFC 3339 timestamp. - * @param array $optParams Optional parameters. - * - * @opt_param int count Maximum number of time series descriptors per page. Used - * for pagination. If not specified, count = 100. - * @opt_param string timespan Length of the time interval to query, which is an - * alternative way to declare the interval: (youngest - timespan, youngest]. The - * timespan and oldest parameters should not be used together. Units: - s: - * second - m: minute - h: hour - d: day - w: week Examples: 2s, 3m, 4w. - * Only one unit is allowed, for example: 2w3d is not allowed; you should use - * 17d instead. - * - * If neither oldest nor timespan is specified, the default time interval will - * be (youngest - 4 hours, youngest]. - * @opt_param string aggregator The aggregation function that will reduce the - * data points in each window to a single point. This parameter is only valid - * for non-cumulative metrics with a value type of INT64 or DOUBLE. - * @opt_param string labels A collection of labels for the matching time series, - * which are represented as: - key==value: key equals the value - key=~value: - * key regex matches the value - key!=value: key does not equal the value - - * key!~value: key regex does not match the value For example, to list all of - * the time series descriptors for the region us-central1, you could specify: - * label=cloud.googleapis.com%2Flocation=~us-central1.* - * @opt_param string pageToken The pagination token, which is used to page - * through large result sets. Set this value to the value of the nextPageToken - * to retrieve the next page of results. - * @opt_param string window The sampling window. At most one data point will be - * returned for each window in the requested time interval. This parameter is - * only valid for non-cumulative metric types. Units: - m: minute - h: hour - - * d: day - w: week Examples: 3m, 4w. Only one unit is allowed, for example: - * 2w3d is not allowed; you should use 17d instead. - * @opt_param string oldest Start of the time interval (exclusive), which is - * expressed as an RFC 3339 timestamp. If neither oldest nor timespan is - * specified, the default time interval will be (youngest - 4 hours, youngest] - * @return Google_Service_CloudMonitoring_ListTimeseriesDescriptorsResponse - */ - public function listTimeseriesDescriptors($project, $metric, $youngest, $optParams = array()) - { - $params = array('project' => $project, 'metric' => $metric, 'youngest' => $youngest); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_CloudMonitoring_ListTimeseriesDescriptorsResponse"); - } -} - - - - -class Google_Service_CloudMonitoring_DeleteMetricDescriptorResponse extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $kind; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } -} - -class Google_Service_CloudMonitoring_ListMetricDescriptorsRequest extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $kind; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } -} - -class Google_Service_CloudMonitoring_ListMetricDescriptorsResponse extends Google_Collection -{ - protected $collection_key = 'metrics'; - protected $internal_gapi_mappings = array( - ); - public $kind; - protected $metricsType = 'Google_Service_CloudMonitoring_MetricDescriptor'; - protected $metricsDataType = 'array'; - public $nextPageToken; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } - public function setMetrics($metrics) - { - $this->metrics = $metrics; - } - public function getMetrics() - { - return $this->metrics; - } - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } -} - -class Google_Service_CloudMonitoring_ListTimeseriesDescriptorsRequest extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $kind; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } -} - -class Google_Service_CloudMonitoring_ListTimeseriesDescriptorsResponse extends Google_Collection -{ - protected $collection_key = 'timeseries'; - protected $internal_gapi_mappings = array( - ); - public $kind; - public $nextPageToken; - public $oldest; - protected $timeseriesType = 'Google_Service_CloudMonitoring_TimeseriesDescriptor'; - protected $timeseriesDataType = 'array'; - public $youngest; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } - public function setOldest($oldest) - { - $this->oldest = $oldest; - } - public function getOldest() - { - return $this->oldest; - } - public function setTimeseries($timeseries) - { - $this->timeseries = $timeseries; - } - public function getTimeseries() - { - return $this->timeseries; - } - public function setYoungest($youngest) - { - $this->youngest = $youngest; - } - public function getYoungest() - { - return $this->youngest; - } -} - -class Google_Service_CloudMonitoring_ListTimeseriesRequest extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $kind; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } -} - -class Google_Service_CloudMonitoring_ListTimeseriesResponse extends Google_Collection -{ - protected $collection_key = 'timeseries'; - protected $internal_gapi_mappings = array( - ); - public $kind; - public $nextPageToken; - public $oldest; - protected $timeseriesType = 'Google_Service_CloudMonitoring_Timeseries'; - protected $timeseriesDataType = 'array'; - public $youngest; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } - public function setOldest($oldest) - { - $this->oldest = $oldest; - } - public function getOldest() - { - return $this->oldest; - } - public function setTimeseries($timeseries) - { - $this->timeseries = $timeseries; - } - public function getTimeseries() - { - return $this->timeseries; - } - public function setYoungest($youngest) - { - $this->youngest = $youngest; - } - public function getYoungest() - { - return $this->youngest; - } -} - -class Google_Service_CloudMonitoring_MetricDescriptor extends Google_Collection -{ - protected $collection_key = 'labels'; - protected $internal_gapi_mappings = array( - ); - public $description; - protected $labelsType = 'Google_Service_CloudMonitoring_MetricDescriptorLabelDescriptor'; - protected $labelsDataType = 'array'; - public $name; - public $project; - protected $typeDescriptorType = 'Google_Service_CloudMonitoring_MetricDescriptorTypeDescriptor'; - protected $typeDescriptorDataType = ''; - - - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setLabels($labels) - { - $this->labels = $labels; - } - public function getLabels() - { - return $this->labels; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setProject($project) - { - $this->project = $project; - } - public function getProject() - { - return $this->project; - } - public function setTypeDescriptor(Google_Service_CloudMonitoring_MetricDescriptorTypeDescriptor $typeDescriptor) - { - $this->typeDescriptor = $typeDescriptor; - } - public function getTypeDescriptor() - { - return $this->typeDescriptor; - } -} - -class Google_Service_CloudMonitoring_MetricDescriptorLabelDescriptor extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $description; - public $key; - - - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setKey($key) - { - $this->key = $key; - } - public function getKey() - { - return $this->key; - } -} - -class Google_Service_CloudMonitoring_MetricDescriptorTypeDescriptor extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $metricType; - public $valueType; - - - public function setMetricType($metricType) - { - $this->metricType = $metricType; - } - public function getMetricType() - { - return $this->metricType; - } - public function setValueType($valueType) - { - $this->valueType = $valueType; - } - public function getValueType() - { - return $this->valueType; - } -} - -class Google_Service_CloudMonitoring_Point extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $boolValue; - protected $distributionValueType = 'Google_Service_CloudMonitoring_PointDistribution'; - protected $distributionValueDataType = ''; - public $doubleValue; - public $end; - public $int64Value; - public $start; - public $stringValue; - - - public function setBoolValue($boolValue) - { - $this->boolValue = $boolValue; - } - public function getBoolValue() - { - return $this->boolValue; - } - public function setDistributionValue(Google_Service_CloudMonitoring_PointDistribution $distributionValue) - { - $this->distributionValue = $distributionValue; - } - public function getDistributionValue() - { - return $this->distributionValue; - } - public function setDoubleValue($doubleValue) - { - $this->doubleValue = $doubleValue; - } - public function getDoubleValue() - { - return $this->doubleValue; - } - public function setEnd($end) - { - $this->end = $end; - } - public function getEnd() - { - return $this->end; - } - public function setInt64Value($int64Value) - { - $this->int64Value = $int64Value; - } - public function getInt64Value() - { - return $this->int64Value; - } - public function setStart($start) - { - $this->start = $start; - } - public function getStart() - { - return $this->start; - } - public function setStringValue($stringValue) - { - $this->stringValue = $stringValue; - } - public function getStringValue() - { - return $this->stringValue; - } -} - -class Google_Service_CloudMonitoring_PointDistribution extends Google_Collection -{ - protected $collection_key = 'buckets'; - protected $internal_gapi_mappings = array( - ); - protected $bucketsType = 'Google_Service_CloudMonitoring_PointDistributionBucket'; - protected $bucketsDataType = 'array'; - protected $overflowBucketType = 'Google_Service_CloudMonitoring_PointDistributionOverflowBucket'; - protected $overflowBucketDataType = ''; - protected $underflowBucketType = 'Google_Service_CloudMonitoring_PointDistributionUnderflowBucket'; - protected $underflowBucketDataType = ''; - - - public function setBuckets($buckets) - { - $this->buckets = $buckets; - } - public function getBuckets() - { - return $this->buckets; - } - public function setOverflowBucket(Google_Service_CloudMonitoring_PointDistributionOverflowBucket $overflowBucket) - { - $this->overflowBucket = $overflowBucket; - } - public function getOverflowBucket() - { - return $this->overflowBucket; - } - public function setUnderflowBucket(Google_Service_CloudMonitoring_PointDistributionUnderflowBucket $underflowBucket) - { - $this->underflowBucket = $underflowBucket; - } - public function getUnderflowBucket() - { - return $this->underflowBucket; - } -} - -class Google_Service_CloudMonitoring_PointDistributionBucket extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $count; - public $lowerBound; - public $upperBound; - - - public function setCount($count) - { - $this->count = $count; - } - public function getCount() - { - return $this->count; - } - public function setLowerBound($lowerBound) - { - $this->lowerBound = $lowerBound; - } - public function getLowerBound() - { - return $this->lowerBound; - } - public function setUpperBound($upperBound) - { - $this->upperBound = $upperBound; - } - public function getUpperBound() - { - return $this->upperBound; - } -} - -class Google_Service_CloudMonitoring_PointDistributionOverflowBucket extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $count; - public $lowerBound; - - - public function setCount($count) - { - $this->count = $count; - } - public function getCount() - { - return $this->count; - } - public function setLowerBound($lowerBound) - { - $this->lowerBound = $lowerBound; - } - public function getLowerBound() - { - return $this->lowerBound; - } -} - -class Google_Service_CloudMonitoring_PointDistributionUnderflowBucket extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $count; - public $upperBound; - - - public function setCount($count) - { - $this->count = $count; - } - public function getCount() - { - return $this->count; - } - public function setUpperBound($upperBound) - { - $this->upperBound = $upperBound; - } - public function getUpperBound() - { - return $this->upperBound; - } -} - -class Google_Service_CloudMonitoring_Timeseries extends Google_Collection -{ - protected $collection_key = 'points'; - protected $internal_gapi_mappings = array( - ); - protected $pointsType = 'Google_Service_CloudMonitoring_Point'; - protected $pointsDataType = 'array'; - protected $timeseriesDescType = 'Google_Service_CloudMonitoring_TimeseriesDescriptor'; - protected $timeseriesDescDataType = ''; - - - public function setPoints($points) - { - $this->points = $points; - } - public function getPoints() - { - return $this->points; - } - public function setTimeseriesDesc(Google_Service_CloudMonitoring_TimeseriesDescriptor $timeseriesDesc) - { - $this->timeseriesDesc = $timeseriesDesc; - } - public function getTimeseriesDesc() - { - return $this->timeseriesDesc; - } -} - -class Google_Service_CloudMonitoring_TimeseriesDescriptor extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $labels; - public $metric; - public $project; - - - public function setLabels($labels) - { - $this->labels = $labels; - } - public function getLabels() - { - return $this->labels; - } - public function setMetric($metric) - { - $this->metric = $metric; - } - public function getMetric() - { - return $this->metric; - } - public function setProject($project) - { - $this->project = $project; - } - public function getProject() - { - return $this->project; - } -} - -class Google_Service_CloudMonitoring_TimeseriesDescriptorLabel extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $key; - public $value; - - - public function setKey($key) - { - $this->key = $key; - } - public function getKey() - { - return $this->key; - } - public function setValue($value) - { - $this->value = $value; - } - public function getValue() - { - return $this->value; - } -} - -class Google_Service_CloudMonitoring_TimeseriesDescriptorLabels extends Google_Model -{ -} - -class Google_Service_CloudMonitoring_TimeseriesPoint extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $pointType = 'Google_Service_CloudMonitoring_Point'; - protected $pointDataType = ''; - protected $timeseriesDescType = 'Google_Service_CloudMonitoring_TimeseriesDescriptor'; - protected $timeseriesDescDataType = ''; - - - public function setPoint(Google_Service_CloudMonitoring_Point $point) - { - $this->point = $point; - } - public function getPoint() - { - return $this->point; - } - public function setTimeseriesDesc(Google_Service_CloudMonitoring_TimeseriesDescriptor $timeseriesDesc) - { - $this->timeseriesDesc = $timeseriesDesc; - } - public function getTimeseriesDesc() - { - return $this->timeseriesDesc; - } -} - -class Google_Service_CloudMonitoring_WriteTimeseriesRequest extends Google_Collection -{ - protected $collection_key = 'timeseries'; - protected $internal_gapi_mappings = array( - ); - public $commonLabels; - protected $timeseriesType = 'Google_Service_CloudMonitoring_TimeseriesPoint'; - protected $timeseriesDataType = 'array'; - - - public function setCommonLabels($commonLabels) - { - $this->commonLabels = $commonLabels; - } - public function getCommonLabels() - { - return $this->commonLabels; - } - public function setTimeseries($timeseries) - { - $this->timeseries = $timeseries; - } - public function getTimeseries() - { - return $this->timeseries; - } -} - -class Google_Service_CloudMonitoring_WriteTimeseriesRequestCommonLabels extends Google_Model -{ -} - -class Google_Service_CloudMonitoring_WriteTimeseriesResponse extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $kind; - - - public function setKind($kind) - { - $this->kind = $kind; - } - public function getKind() - { - return $this->kind; - } -} diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Cloudsearch.php b/wp-content/plugins/updraftplus/includes/Google/Service/Cloudsearch.php deleted file mode 100644 index cadbc988..00000000 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Cloudsearch.php +++ /dev/null @@ -1,57 +0,0 @@ - - * The Google Cloud Search API defines an application interface to index - * documents that contain structured data and to search those indexes. It - * supports full text search.

- * - *

- * For more information about this service, see the API - * Documentation - *

- * - * @author Google, Inc. - */ -class Google_Service_Cloudsearch extends UDP_Google_Service -{ - - - - - - /** - * Constructs the internal representation of the Cloudsearch service. - * - * @param Google_Client $client - */ - public function __construct(UDP_Google_Client $client) - { - parent::__construct($client); - $this->servicePath = ''; - $this->version = 'v1'; - $this->serviceName = 'cloudsearch'; - - } -} - - - - diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Deploymentmanager.php b/wp-content/plugins/updraftplus/includes/Google/Service/Deploymentmanager.php deleted file mode 100644 index 1f2ac3ff..00000000 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Deploymentmanager.php +++ /dev/null @@ -1,1194 +0,0 @@ - - * The Deployment Manager API allows users to declaratively configure, deploy - * and run complex solutions on the Google Cloud Platform.

- * - *

- * For more information about this service, see the API - * Documentation - *

- * - * @author Google, Inc. - */ -class Google_Service_Deploymentmanager extends UDP_Google_Service -{ - /** View and manage your data across Google Cloud Platform services. */ - const CLOUD_PLATFORM = - "https://www.googleapis.com/auth/cloud-platform"; - /** View and manage your Google Cloud Platform management resources and deployment status information. */ - const NDEV_CLOUDMAN = - "https://www.googleapis.com/auth/ndev.cloudman"; - /** View your Google Cloud Platform management resources and deployment status information. */ - const NDEV_CLOUDMAN_READONLY = - "https://www.googleapis.com/auth/ndev.cloudman.readonly"; - - public $deployments; - public $manifests; - public $operations; - public $resources; - public $types; - - - /** - * Constructs the internal representation of the Deploymentmanager service. - * - * @param Google_Client $client - */ - public function __construct(UDP_Google_Client $client) - { - parent::__construct($client); - $this->servicePath = 'deploymentmanager/v2beta1/projects/'; - $this->version = 'v2beta1'; - $this->serviceName = 'deploymentmanager'; - - $this->deployments = new Google_Service_Deploymentmanager_Deployments_Resource( - $this, - $this->serviceName, - 'deployments', - array( - 'methods' => array( - 'delete' => array( - 'path' => '{project}/global/deployments/{deployment}', - 'httpMethod' => 'DELETE', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deployment' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'get' => array( - 'path' => '{project}/global/deployments/{deployment}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deployment' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'insert' => array( - 'path' => '{project}/global/deployments', - 'httpMethod' => 'POST', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{project}/global/deployments', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - $this->manifests = new Google_Service_Deploymentmanager_Manifests_Resource( - $this, - $this->serviceName, - 'manifests', - array( - 'methods' => array( - 'get' => array( - 'path' => '{project}/global/deployments/{deployment}/manifests/{manifest}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deployment' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'manifest' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{project}/global/deployments/{deployment}/manifests', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deployment' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - $this->operations = new Google_Service_Deploymentmanager_Operations_Resource( - $this, - $this->serviceName, - 'operations', - array( - 'methods' => array( - 'get' => array( - 'path' => '{project}/global/operations/{operation}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'operation' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{project}/global/operations', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - $this->resources = new Google_Service_Deploymentmanager_Resources_Resource( - $this, - $this->serviceName, - 'resources', - array( - 'methods' => array( - 'get' => array( - 'path' => '{project}/global/deployments/{deployment}/resources/{resource}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deployment' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'resource' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{project}/global/deployments/{deployment}/resources', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deployment' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - $this->types = new Google_Service_Deploymentmanager_Types_Resource( - $this, - $this->serviceName, - 'types', - array( - 'methods' => array( - 'list' => array( - 'path' => '{project}/global/types', - 'httpMethod' => 'GET', - 'parameters' => array( - 'project' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - } -} - - -/** - * The "deployments" collection of methods. - * Typical usage is: - * - * $deploymentmanagerService = new Google_Service_Deploymentmanager(...); - * $deployments = $deploymentmanagerService->deployments; - * - */ -class Google_Service_Deploymentmanager_Deployments_Resource extends UDP_Google_Service_Resource -{ - - /** - * ! Deletes a deployment and all of the resources in the deployment. - * (deployments.delete) - * - * @param string $project ! The project ID for this request. - * @param string $deployment ! The name of the deployment for this request. - * @param array $optParams Optional parameters. - * @return Google_Service_Deploymentmanager_Operation - */ - public function delete($project, $deployment, $optParams = array()) - { - $params = array('project' => $project, 'deployment' => $deployment); - $params = array_merge($params, $optParams); - return $this->call('delete', array($params), "Google_Service_Deploymentmanager_Operation"); - } - - /** - * ! Gets information about a specific deployment. (deployments.get) - * - * @param string $project ! The project ID for this request. - * @param string $deployment ! The name of the deployment for this request. - * @param array $optParams Optional parameters. - * @return Google_Service_Deploymentmanager_Deployment - */ - public function get($project, $deployment, $optParams = array()) - { - $params = array('project' => $project, 'deployment' => $deployment); - $params = array_merge($params, $optParams); - return $this->call('get', array($params), "Google_Service_Deploymentmanager_Deployment"); - } - - /** - * ! Creates a deployment and all of the resources described by the ! deployment - * manifest. (deployments.insert) - * - * @param string $project ! The project ID for this request. - * @param Google_Deployment $postBody - * @param array $optParams Optional parameters. - * @return Google_Service_Deploymentmanager_Operation - */ - public function insert($project, Google_Service_Deploymentmanager_Deployment $postBody, $optParams = array()) - { - $params = array('project' => $project, 'postBody' => $postBody); - $params = array_merge($params, $optParams); - return $this->call('insert', array($params), "Google_Service_Deploymentmanager_Operation"); - } - - /** - * ! Lists all deployments for a given project. (deployments.listDeployments) - * - * @param string $project ! The project ID for this request. - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken ! Specifies a nextPageToken returned by a - * previous list request. This ! token can be used to request the next page of - * results from a previous ! list request. - * @opt_param int maxResults ! Maximum count of results to be returned. ! - * Acceptable values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Deploymentmanager_DeploymentsListResponse - */ - public function listDeployments($project, $optParams = array()) - { - $params = array('project' => $project); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Deploymentmanager_DeploymentsListResponse"); - } -} - -/** - * The "manifests" collection of methods. - * Typical usage is: - * - * $deploymentmanagerService = new Google_Service_Deploymentmanager(...); - * $manifests = $deploymentmanagerService->manifests; - * - */ -class Google_Service_Deploymentmanager_Manifests_Resource extends UDP_Google_Service_Resource -{ - - /** - * ! Gets information about a specific manifest. (manifests.get) - * - * @param string $project ! The project ID for this request. - * @param string $deployment ! The name of the deployment for this request. - * @param string $manifest ! The name of the manifest for this request. - * @param array $optParams Optional parameters. - * @return Google_Service_Deploymentmanager_Manifest - */ - public function get($project, $deployment, $manifest, $optParams = array()) - { - $params = array('project' => $project, 'deployment' => $deployment, 'manifest' => $manifest); - $params = array_merge($params, $optParams); - return $this->call('get', array($params), "Google_Service_Deploymentmanager_Manifest"); - } - - /** - * ! Lists all manifests for a given deployment. (manifests.listManifests) - * - * @param string $project ! The project ID for this request. - * @param string $deployment ! The name of the deployment for this request. - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken ! Specifies a nextPageToken returned by a - * previous list request. This ! token can be used to request the next page of - * results from a previous ! list request. - * @opt_param int maxResults ! Maximum count of results to be returned. ! - * Acceptable values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Deploymentmanager_ManifestsListResponse - */ - public function listManifests($project, $deployment, $optParams = array()) - { - $params = array('project' => $project, 'deployment' => $deployment); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Deploymentmanager_ManifestsListResponse"); - } -} - -/** - * The "operations" collection of methods. - * Typical usage is: - * - * $deploymentmanagerService = new Google_Service_Deploymentmanager(...); - * $operations = $deploymentmanagerService->operations; - * - */ -class Google_Service_Deploymentmanager_Operations_Resource extends UDP_Google_Service_Resource -{ - - /** - * ! Gets information about a specific Operation. (operations.get) - * - * @param string $project ! The project ID for this request. - * @param string $operation ! The name of the operation for this request. - * @param array $optParams Optional parameters. - * @return Google_Service_Deploymentmanager_Operation - */ - public function get($project, $operation, $optParams = array()) - { - $params = array('project' => $project, 'operation' => $operation); - $params = array_merge($params, $optParams); - return $this->call('get', array($params), "Google_Service_Deploymentmanager_Operation"); - } - - /** - * ! Lists all Operations for a project. (operations.listOperations) - * - * @param string $project ! The project ID for this request. - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken ! Specifies a nextPageToken returned by a - * previous list request. This ! token can be used to request the next page of - * results from a previous ! list request. - * @opt_param int maxResults ! Maximum count of results to be returned. ! - * Acceptable values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Deploymentmanager_OperationsListResponse - */ - public function listOperations($project, $optParams = array()) - { - $params = array('project' => $project); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Deploymentmanager_OperationsListResponse"); - } -} - -/** - * The "resources" collection of methods. - * Typical usage is: - * - * $deploymentmanagerService = new Google_Service_Deploymentmanager(...); - * $resources = $deploymentmanagerService->resources; - * - */ -class Google_Service_Deploymentmanager_Resources_Resource extends UDP_Google_Service_Resource -{ - - /** - * ! Gets information about a single resource. (resources.get) - * - * @param string $project ! The project ID for this request. - * @param string $deployment ! The name of the deployment for this request. - * @param string $resource ! The name of the resource for this request. - * @param array $optParams Optional parameters. - * @return Google_Service_Deploymentmanager_DeploymentmanagerResource - */ - public function get($project, $deployment, $resource, $optParams = array()) - { - $params = array('project' => $project, 'deployment' => $deployment, 'resource' => $resource); - $params = array_merge($params, $optParams); - return $this->call('get', array($params), "Google_Service_Deploymentmanager_DeploymentmanagerResource"); - } - - /** - * ! Lists all resources in a given deployment. (resources.listResources) - * - * @param string $project ! The project ID for this request. - * @param string $deployment ! The name of the deployment for this request. - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken ! Specifies a nextPageToken returned by a - * previous list request. This ! token can be used to request the next page of - * results from a previous ! list request. - * @opt_param int maxResults ! Maximum count of results to be returned. ! - * Acceptable values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Deploymentmanager_ResourcesListResponse - */ - public function listResources($project, $deployment, $optParams = array()) - { - $params = array('project' => $project, 'deployment' => $deployment); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Deploymentmanager_ResourcesListResponse"); - } -} - -/** - * The "types" collection of methods. - * Typical usage is: - * - * $deploymentmanagerService = new Google_Service_Deploymentmanager(...); - * $types = $deploymentmanagerService->types; - * - */ -class Google_Service_Deploymentmanager_Types_Resource extends UDP_Google_Service_Resource -{ - - /** - * ! Lists all Types for Deployment Manager. (types.listTypes) - * - * @param string $project ! The project ID for this request. - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken ! Specifies a nextPageToken returned by a - * previous list request. This ! token can be used to request the next page of - * results from a previous ! list request. - * @opt_param int maxResults ! Maximum count of results to be returned. ! - * Acceptable values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Deploymentmanager_TypesListResponse - */ - public function listTypes($project, $optParams = array()) - { - $params = array('project' => $project); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Deploymentmanager_TypesListResponse"); - } -} - - - - -class Google_Service_Deploymentmanager_Deployment extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $description; - public $id; - public $manifest; - public $name; - public $targetConfig; - - - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setId($id) - { - $this->id = $id; - } - public function getId() - { - return $this->id; - } - public function setManifest($manifest) - { - $this->manifest = $manifest; - } - public function getManifest() - { - return $this->manifest; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setTargetConfig($targetConfig) - { - $this->targetConfig = $targetConfig; - } - public function getTargetConfig() - { - return $this->targetConfig; - } -} - -class Google_Service_Deploymentmanager_DeploymentmanagerResource extends Google_Collection -{ - protected $collection_key = 'errors'; - protected $internal_gapi_mappings = array( - ); - public $errors; - public $id; - public $intent; - public $manifest; - public $name; - public $state; - public $type; - public $url; - - - public function setErrors($errors) - { - $this->errors = $errors; - } - public function getErrors() - { - return $this->errors; - } - public function setId($id) - { - $this->id = $id; - } - public function getId() - { - return $this->id; - } - public function setIntent($intent) - { - $this->intent = $intent; - } - public function getIntent() - { - return $this->intent; - } - public function setManifest($manifest) - { - $this->manifest = $manifest; - } - public function getManifest() - { - return $this->manifest; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setState($state) - { - $this->state = $state; - } - public function getState() - { - return $this->state; - } - public function setType($type) - { - $this->type = $type; - } - public function getType() - { - return $this->type; - } - public function setUrl($url) - { - $this->url = $url; - } - public function getUrl() - { - return $this->url; - } -} - -class Google_Service_Deploymentmanager_DeploymentsListResponse extends Google_Collection -{ - protected $collection_key = 'deployments'; - protected $internal_gapi_mappings = array( - ); - protected $deploymentsType = 'Google_Service_Deploymentmanager_Deployment'; - protected $deploymentsDataType = 'array'; - public $nextPageToken; - - - public function setDeployments($deployments) - { - $this->deployments = $deployments; - } - public function getDeployments() - { - return $this->deployments; - } - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } -} - -class Google_Service_Deploymentmanager_Manifest extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $config; - public $evaluatedConfig; - public $id; - public $name; - public $selfLink; - - - public function setConfig($config) - { - $this->config = $config; - } - public function getConfig() - { - return $this->config; - } - public function setEvaluatedConfig($evaluatedConfig) - { - $this->evaluatedConfig = $evaluatedConfig; - } - public function getEvaluatedConfig() - { - return $this->evaluatedConfig; - } - public function setId($id) - { - $this->id = $id; - } - public function getId() - { - return $this->id; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setSelfLink($selfLink) - { - $this->selfLink = $selfLink; - } - public function getSelfLink() - { - return $this->selfLink; - } -} - -class Google_Service_Deploymentmanager_ManifestsListResponse extends Google_Collection -{ - protected $collection_key = 'manifests'; - protected $internal_gapi_mappings = array( - ); - protected $manifestsType = 'Google_Service_Deploymentmanager_Manifest'; - protected $manifestsDataType = 'array'; - public $nextPageToken; - - - public function setManifests($manifests) - { - $this->manifests = $manifests; - } - public function getManifests() - { - return $this->manifests; - } - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } -} - -class Google_Service_Deploymentmanager_Operation extends Google_Collection -{ - protected $collection_key = 'warnings'; - protected $internal_gapi_mappings = array( - ); - public $creationTimestamp; - public $endTime; - protected $errorType = 'Google_Service_Deploymentmanager_OperationError'; - protected $errorDataType = ''; - public $httpErrorMessage; - public $httpErrorStatusCode; - public $id; - public $insertTime; - public $name; - public $operationType; - public $progress; - public $selfLink; - public $startTime; - public $status; - public $statusMessage; - public $targetId; - public $targetLink; - public $user; - protected $warningsType = 'Google_Service_Deploymentmanager_OperationWarnings'; - protected $warningsDataType = 'array'; - - - public function setCreationTimestamp($creationTimestamp) - { - $this->creationTimestamp = $creationTimestamp; - } - public function getCreationTimestamp() - { - return $this->creationTimestamp; - } - public function setEndTime($endTime) - { - $this->endTime = $endTime; - } - public function getEndTime() - { - return $this->endTime; - } - public function setError(Google_Service_Deploymentmanager_OperationError $error) - { - $this->error = $error; - } - public function getError() - { - return $this->error; - } - public function setHttpErrorMessage($httpErrorMessage) - { - $this->httpErrorMessage = $httpErrorMessage; - } - public function getHttpErrorMessage() - { - return $this->httpErrorMessage; - } - public function setHttpErrorStatusCode($httpErrorStatusCode) - { - $this->httpErrorStatusCode = $httpErrorStatusCode; - } - public function getHttpErrorStatusCode() - { - return $this->httpErrorStatusCode; - } - public function setId($id) - { - $this->id = $id; - } - public function getId() - { - return $this->id; - } - public function setInsertTime($insertTime) - { - $this->insertTime = $insertTime; - } - public function getInsertTime() - { - return $this->insertTime; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setOperationType($operationType) - { - $this->operationType = $operationType; - } - public function getOperationType() - { - return $this->operationType; - } - public function setProgress($progress) - { - $this->progress = $progress; - } - public function getProgress() - { - return $this->progress; - } - public function setSelfLink($selfLink) - { - $this->selfLink = $selfLink; - } - public function getSelfLink() - { - return $this->selfLink; - } - public function setStartTime($startTime) - { - $this->startTime = $startTime; - } - public function getStartTime() - { - return $this->startTime; - } - public function setStatus($status) - { - $this->status = $status; - } - public function getStatus() - { - return $this->status; - } - public function setStatusMessage($statusMessage) - { - $this->statusMessage = $statusMessage; - } - public function getStatusMessage() - { - return $this->statusMessage; - } - public function setTargetId($targetId) - { - $this->targetId = $targetId; - } - public function getTargetId() - { - return $this->targetId; - } - public function setTargetLink($targetLink) - { - $this->targetLink = $targetLink; - } - public function getTargetLink() - { - return $this->targetLink; - } - public function setUser($user) - { - $this->user = $user; - } - public function getUser() - { - return $this->user; - } - public function setWarnings($warnings) - { - $this->warnings = $warnings; - } - public function getWarnings() - { - return $this->warnings; - } -} - -class Google_Service_Deploymentmanager_OperationError extends Google_Collection -{ - protected $collection_key = 'errors'; - protected $internal_gapi_mappings = array( - ); - protected $errorsType = 'Google_Service_Deploymentmanager_OperationErrorErrors'; - protected $errorsDataType = 'array'; - - - public function setErrors($errors) - { - $this->errors = $errors; - } - public function getErrors() - { - return $this->errors; - } -} - -class Google_Service_Deploymentmanager_OperationErrorErrors extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $code; - public $location; - public $message; - - - public function setCode($code) - { - $this->code = $code; - } - public function getCode() - { - return $this->code; - } - public function setLocation($location) - { - $this->location = $location; - } - public function getLocation() - { - return $this->location; - } - public function setMessage($message) - { - $this->message = $message; - } - public function getMessage() - { - return $this->message; - } -} - -class Google_Service_Deploymentmanager_OperationWarnings extends Google_Collection -{ - protected $collection_key = 'data'; - protected $internal_gapi_mappings = array( - ); - public $code; - protected $dataType = 'Google_Service_Deploymentmanager_OperationWarningsData'; - protected $dataDataType = 'array'; - public $message; - - - public function setCode($code) - { - $this->code = $code; - } - public function getCode() - { - return $this->code; - } - public function setData($data) - { - $this->data = $data; - } - public function getData() - { - return $this->data; - } - public function setMessage($message) - { - $this->message = $message; - } - public function getMessage() - { - return $this->message; - } -} - -class Google_Service_Deploymentmanager_OperationWarningsData extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $key; - public $value; - - - public function setKey($key) - { - $this->key = $key; - } - public function getKey() - { - return $this->key; - } - public function setValue($value) - { - $this->value = $value; - } - public function getValue() - { - return $this->value; - } -} - -class Google_Service_Deploymentmanager_OperationsListResponse extends Google_Collection -{ - protected $collection_key = 'operations'; - protected $internal_gapi_mappings = array( - ); - public $nextPageToken; - protected $operationsType = 'Google_Service_Deploymentmanager_Operation'; - protected $operationsDataType = 'array'; - - - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } - public function setOperations($operations) - { - $this->operations = $operations; - } - public function getOperations() - { - return $this->operations; - } -} - -class Google_Service_Deploymentmanager_ResourcesListResponse extends Google_Collection -{ - protected $collection_key = 'resources'; - protected $internal_gapi_mappings = array( - ); - public $nextPageToken; - protected $resourcesType = 'Google_Service_Deploymentmanager_DeploymentmanagerResource'; - protected $resourcesDataType = 'array'; - - - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } - public function setResources($resources) - { - $this->resources = $resources; - } - public function getResources() - { - return $this->resources; - } -} - -class Google_Service_Deploymentmanager_Type extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $name; - - - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } -} - -class Google_Service_Deploymentmanager_TypesListResponse extends Google_Collection -{ - protected $collection_key = 'types'; - protected $internal_gapi_mappings = array( - ); - protected $typesType = 'Google_Service_Deploymentmanager_Type'; - protected $typesDataType = 'array'; - - - public function setTypes($types) - { - $this->types = $types; - } - public function getTypes() - { - return $this->types; - } -} diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Drive.php b/wp-content/plugins/updraftplus/includes/Google/Service/Drive.php index 4a8bc394..9fcecc67 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Drive.php +++ b/wp-content/plugins/updraftplus/includes/Google/Service/Drive.php @@ -68,6 +68,12 @@ class UDP_Google_Service_Drive extends UDP_Google_Service public $realtime; public $replies; public $revisions; + + /** + * Google Drive service name. The default value is drive. + * @var String + */ + protected $serviceName; /** @@ -4035,6 +4041,14 @@ class UDP_Google_Service_Drive_DriveFile extends Google_Collection protected $userPermissionDataType = ''; public $version; protected $videoMediaMetadataType = 'UDP_Google_Service_Drive_DriveFileVideoMediaMetadata'; + + /** + * Parent resource + * + * @var Google_Service_Drive_Parents_Resource + */ + public $parents; + protected $videoMediaMetadataDataType = ''; public $webContentLink; public $webViewLink; diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Manager.php b/wp-content/plugins/updraftplus/includes/Google/Service/Manager.php deleted file mode 100644 index 8aca36b1..00000000 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Manager.php +++ /dev/null @@ -1,1857 +0,0 @@ - - * The Deployment Manager API allows users to declaratively configure, deploy - * and run complex solutions on the Google Cloud Platform.

- * - *

- * For more information about this service, see the API - * Documentation - *

- * - * @author Google, Inc. - */ -class Google_Service_Manager extends UDP_Google_Service -{ - /** View and manage your applications deployed on Google App Engine. */ - const APPENGINE_ADMIN = - "https://www.googleapis.com/auth/appengine.admin"; - /** View and manage your data across Google Cloud Platform services. */ - const CLOUD_PLATFORM = - "https://www.googleapis.com/auth/cloud-platform"; - /** View and manage your Google Compute Engine resources. */ - const COMPUTE = - "https://www.googleapis.com/auth/compute"; - /** Manage your data in Google Cloud Storage. */ - const DEVSTORAGE_READ_WRITE = - "https://www.googleapis.com/auth/devstorage.read_write"; - /** View and manage your Google Cloud Platform management resources and deployment status information. */ - const NDEV_CLOUDMAN = - "https://www.googleapis.com/auth/ndev.cloudman"; - /** View your Google Cloud Platform management resources and deployment status information. */ - const NDEV_CLOUDMAN_READONLY = - "https://www.googleapis.com/auth/ndev.cloudman.readonly"; - - public $deployments; - public $templates; - - - /** - * Constructs the internal representation of the Manager service. - * - * @param Google_Client $client - */ - public function __construct(UDP_Google_Client $client) - { - parent::__construct($client); - $this->servicePath = 'manager/v1beta2/projects/'; - $this->version = 'v1beta2'; - $this->serviceName = 'manager'; - - $this->deployments = new Google_Service_Manager_Deployments_Resource( - $this, - $this->serviceName, - 'deployments', - array( - 'methods' => array( - 'delete' => array( - 'path' => '{projectId}/regions/{region}/deployments/{deploymentName}', - 'httpMethod' => 'DELETE', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'region' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deploymentName' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'get' => array( - 'path' => '{projectId}/regions/{region}/deployments/{deploymentName}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'region' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'deploymentName' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'insert' => array( - 'path' => '{projectId}/regions/{region}/deployments', - 'httpMethod' => 'POST', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'region' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{projectId}/regions/{region}/deployments', - 'httpMethod' => 'GET', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'region' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - $this->templates = new Google_Service_Manager_Templates_Resource( - $this, - $this->serviceName, - 'templates', - array( - 'methods' => array( - 'delete' => array( - 'path' => '{projectId}/templates/{templateName}', - 'httpMethod' => 'DELETE', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'templateName' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'get' => array( - 'path' => '{projectId}/templates/{templateName}', - 'httpMethod' => 'GET', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'templateName' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'insert' => array( - 'path' => '{projectId}/templates', - 'httpMethod' => 'POST', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - ), - ),'list' => array( - 'path' => '{projectId}/templates', - 'httpMethod' => 'GET', - 'parameters' => array( - 'projectId' => array( - 'location' => 'path', - 'type' => 'string', - 'required' => true, - ), - 'pageToken' => array( - 'location' => 'query', - 'type' => 'string', - ), - 'maxResults' => array( - 'location' => 'query', - 'type' => 'integer', - ), - ), - ), - ) - ) - ); - } -} - - -/** - * The "deployments" collection of methods. - * Typical usage is: - * - * $managerService = new Google_Service_Manager(...); - * $deployments = $managerService->deployments; - * - */ -class Google_Service_Manager_Deployments_Resource extends UDP_Google_Service_Resource -{ - - /** - * (deployments.delete) - * - * @param string $projectId - * @param string $region - * @param string $deploymentName - * @param array $optParams Optional parameters. - */ - public function delete($projectId, $region, $deploymentName, $optParams = array()) - { - $params = array('projectId' => $projectId, 'region' => $region, 'deploymentName' => $deploymentName); - $params = array_merge($params, $optParams); - return $this->call('delete', array($params)); - } - - /** - * (deployments.get) - * - * @param string $projectId - * @param string $region - * @param string $deploymentName - * @param array $optParams Optional parameters. - * @return Google_Service_Manager_Deployment - */ - public function get($projectId, $region, $deploymentName, $optParams = array()) - { - $params = array('projectId' => $projectId, 'region' => $region, 'deploymentName' => $deploymentName); - $params = array_merge($params, $optParams); - return $this->call('get', array($params), "Google_Service_Manager_Deployment"); - } - - /** - * (deployments.insert) - * - * @param string $projectId - * @param string $region - * @param Google_Deployment $postBody - * @param array $optParams Optional parameters. - * @return Google_Service_Manager_Deployment - */ - public function insert($projectId, $region, Google_Service_Manager_Deployment $postBody, $optParams = array()) - { - $params = array('projectId' => $projectId, 'region' => $region, 'postBody' => $postBody); - $params = array_merge($params, $optParams); - return $this->call('insert', array($params), "Google_Service_Manager_Deployment"); - } - - /** - * (deployments.listDeployments) - * - * @param string $projectId - * @param string $region - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken Specifies a nextPageToken returned by a previous - * list request. This token can be used to request the next page of results from - * a previous list request. - * @opt_param int maxResults Maximum count of results to be returned. Acceptable - * values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Manager_DeploymentsListResponse - */ - public function listDeployments($projectId, $region, $optParams = array()) - { - $params = array('projectId' => $projectId, 'region' => $region); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Manager_DeploymentsListResponse"); - } -} - -/** - * The "templates" collection of methods. - * Typical usage is: - * - * $managerService = new Google_Service_Manager(...); - * $templates = $managerService->templates; - * - */ -class Google_Service_Manager_Templates_Resource extends UDP_Google_Service_Resource -{ - - /** - * (templates.delete) - * - * @param string $projectId - * @param string $templateName - * @param array $optParams Optional parameters. - */ - public function delete($projectId, $templateName, $optParams = array()) - { - $params = array('projectId' => $projectId, 'templateName' => $templateName); - $params = array_merge($params, $optParams); - return $this->call('delete', array($params)); - } - - /** - * (templates.get) - * - * @param string $projectId - * @param string $templateName - * @param array $optParams Optional parameters. - * @return Google_Service_Manager_Template - */ - public function get($projectId, $templateName, $optParams = array()) - { - $params = array('projectId' => $projectId, 'templateName' => $templateName); - $params = array_merge($params, $optParams); - return $this->call('get', array($params), "Google_Service_Manager_Template"); - } - - /** - * (templates.insert) - * - * @param string $projectId - * @param Google_Template $postBody - * @param array $optParams Optional parameters. - * @return Google_Service_Manager_Template - */ - public function insert($projectId, Google_Service_Manager_Template $postBody, $optParams = array()) - { - $params = array('projectId' => $projectId, 'postBody' => $postBody); - $params = array_merge($params, $optParams); - return $this->call('insert', array($params), "Google_Service_Manager_Template"); - } - - /** - * (templates.listTemplates) - * - * @param string $projectId - * @param array $optParams Optional parameters. - * - * @opt_param string pageToken Specifies a nextPageToken returned by a previous - * list request. This token can be used to request the next page of results from - * a previous list request. - * @opt_param int maxResults Maximum count of results to be returned. Acceptable - * values are 0 to 100, inclusive. (Default: 50) - * @return Google_Service_Manager_TemplatesListResponse - */ - public function listTemplates($projectId, $optParams = array()) - { - $params = array('projectId' => $projectId); - $params = array_merge($params, $optParams); - return $this->call('list', array($params), "Google_Service_Manager_TemplatesListResponse"); - } -} - - - - -class Google_Service_Manager_AccessConfig extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $name; - public $natIp; - public $type; - - - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setNatIp($natIp) - { - $this->natIp = $natIp; - } - public function getNatIp() - { - return $this->natIp; - } - public function setType($type) - { - $this->type = $type; - } - public function getType() - { - return $this->type; - } -} - -class Google_Service_Manager_Action extends Google_Collection -{ - protected $collection_key = 'commands'; - protected $internal_gapi_mappings = array( - ); - public $commands; - public $timeoutMs; - - - public function setCommands($commands) - { - $this->commands = $commands; - } - public function getCommands() - { - return $this->commands; - } - public function setTimeoutMs($timeoutMs) - { - $this->timeoutMs = $timeoutMs; - } - public function getTimeoutMs() - { - return $this->timeoutMs; - } -} - -class Google_Service_Manager_AllowedRule extends Google_Collection -{ - protected $collection_key = 'ports'; - protected $internal_gapi_mappings = array( - "iPProtocol" => "IPProtocol", - ); - public $iPProtocol; - public $ports; - - - public function setIPProtocol($iPProtocol) - { - $this->iPProtocol = $iPProtocol; - } - public function getIPProtocol() - { - return $this->iPProtocol; - } - public function setPorts($ports) - { - $this->ports = $ports; - } - public function getPorts() - { - return $this->ports; - } -} - -class Google_Service_Manager_AutoscalingModule extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $coolDownPeriodSec; - public $description; - public $maxNumReplicas; - public $minNumReplicas; - public $signalType; - public $targetModule; - public $targetUtilization; - - - public function setCoolDownPeriodSec($coolDownPeriodSec) - { - $this->coolDownPeriodSec = $coolDownPeriodSec; - } - public function getCoolDownPeriodSec() - { - return $this->coolDownPeriodSec; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setMaxNumReplicas($maxNumReplicas) - { - $this->maxNumReplicas = $maxNumReplicas; - } - public function getMaxNumReplicas() - { - return $this->maxNumReplicas; - } - public function setMinNumReplicas($minNumReplicas) - { - $this->minNumReplicas = $minNumReplicas; - } - public function getMinNumReplicas() - { - return $this->minNumReplicas; - } - public function setSignalType($signalType) - { - $this->signalType = $signalType; - } - public function getSignalType() - { - return $this->signalType; - } - public function setTargetModule($targetModule) - { - $this->targetModule = $targetModule; - } - public function getTargetModule() - { - return $this->targetModule; - } - public function setTargetUtilization($targetUtilization) - { - $this->targetUtilization = $targetUtilization; - } - public function getTargetUtilization() - { - return $this->targetUtilization; - } -} - -class Google_Service_Manager_AutoscalingModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $autoscalingConfigUrl; - - - public function setAutoscalingConfigUrl($autoscalingConfigUrl) - { - $this->autoscalingConfigUrl = $autoscalingConfigUrl; - } - public function getAutoscalingConfigUrl() - { - return $this->autoscalingConfigUrl; - } -} - -class Google_Service_Manager_DeployState extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $details; - public $status; - - - public function setDetails($details) - { - $this->details = $details; - } - public function getDetails() - { - return $this->details; - } - public function setStatus($status) - { - $this->status = $status; - } - public function getStatus() - { - return $this->status; - } -} - -class Google_Service_Manager_Deployment extends Google_Collection -{ - protected $collection_key = 'overrides'; - protected $internal_gapi_mappings = array( - ); - public $creationDate; - public $description; - protected $modulesType = 'Google_Service_Manager_ModuleStatus'; - protected $modulesDataType = 'map'; - public $name; - protected $overridesType = 'Google_Service_Manager_ParamOverride'; - protected $overridesDataType = 'array'; - protected $stateType = 'Google_Service_Manager_DeployState'; - protected $stateDataType = ''; - public $templateName; - - - public function setCreationDate($creationDate) - { - $this->creationDate = $creationDate; - } - public function getCreationDate() - { - return $this->creationDate; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setModules($modules) - { - $this->modules = $modules; - } - public function getModules() - { - return $this->modules; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setOverrides($overrides) - { - $this->overrides = $overrides; - } - public function getOverrides() - { - return $this->overrides; - } - public function setState(Google_Service_Manager_DeployState $state) - { - $this->state = $state; - } - public function getState() - { - return $this->state; - } - public function setTemplateName($templateName) - { - $this->templateName = $templateName; - } - public function getTemplateName() - { - return $this->templateName; - } -} - -class Google_Service_Manager_DeploymentModules extends Google_Model -{ -} - -class Google_Service_Manager_DeploymentsListResponse extends Google_Collection -{ - protected $collection_key = 'resources'; - protected $internal_gapi_mappings = array( - ); - public $nextPageToken; - protected $resourcesType = 'Google_Service_Manager_Deployment'; - protected $resourcesDataType = 'array'; - - - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } - public function setResources($resources) - { - $this->resources = $resources; - } - public function getResources() - { - return $this->resources; - } -} - -class Google_Service_Manager_DiskAttachment extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $deviceName; - public $index; - - - public function setDeviceName($deviceName) - { - $this->deviceName = $deviceName; - } - public function getDeviceName() - { - return $this->deviceName; - } - public function setIndex($index) - { - $this->index = $index; - } - public function getIndex() - { - return $this->index; - } -} - -class Google_Service_Manager_EnvVariable extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $hidden; - public $value; - - - public function setHidden($hidden) - { - $this->hidden = $hidden; - } - public function getHidden() - { - return $this->hidden; - } - public function setValue($value) - { - $this->value = $value; - } - public function getValue() - { - return $this->value; - } -} - -class Google_Service_Manager_ExistingDisk extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $attachmentType = 'Google_Service_Manager_DiskAttachment'; - protected $attachmentDataType = ''; - public $source; - - - public function setAttachment(Google_Service_Manager_DiskAttachment $attachment) - { - $this->attachment = $attachment; - } - public function getAttachment() - { - return $this->attachment; - } - public function setSource($source) - { - $this->source = $source; - } - public function getSource() - { - return $this->source; - } -} - -class Google_Service_Manager_FirewallModule extends Google_Collection -{ - protected $collection_key = 'targetTags'; - protected $internal_gapi_mappings = array( - ); - protected $allowedType = 'Google_Service_Manager_AllowedRule'; - protected $allowedDataType = 'array'; - public $description; - public $network; - public $sourceRanges; - public $sourceTags; - public $targetTags; - - - public function setAllowed($allowed) - { - $this->allowed = $allowed; - } - public function getAllowed() - { - return $this->allowed; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setNetwork($network) - { - $this->network = $network; - } - public function getNetwork() - { - return $this->network; - } - public function setSourceRanges($sourceRanges) - { - $this->sourceRanges = $sourceRanges; - } - public function getSourceRanges() - { - return $this->sourceRanges; - } - public function setSourceTags($sourceTags) - { - $this->sourceTags = $sourceTags; - } - public function getSourceTags() - { - return $this->sourceTags; - } - public function setTargetTags($targetTags) - { - $this->targetTags = $targetTags; - } - public function getTargetTags() - { - return $this->targetTags; - } -} - -class Google_Service_Manager_FirewallModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $firewallUrl; - - - public function setFirewallUrl($firewallUrl) - { - $this->firewallUrl = $firewallUrl; - } - public function getFirewallUrl() - { - return $this->firewallUrl; - } -} - -class Google_Service_Manager_HealthCheckModule extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $checkIntervalSec; - public $description; - public $healthyThreshold; - public $host; - public $path; - public $port; - public $timeoutSec; - public $unhealthyThreshold; - - - public function setCheckIntervalSec($checkIntervalSec) - { - $this->checkIntervalSec = $checkIntervalSec; - } - public function getCheckIntervalSec() - { - return $this->checkIntervalSec; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setHealthyThreshold($healthyThreshold) - { - $this->healthyThreshold = $healthyThreshold; - } - public function getHealthyThreshold() - { - return $this->healthyThreshold; - } - public function setHost($host) - { - $this->host = $host; - } - public function getHost() - { - return $this->host; - } - public function setPath($path) - { - $this->path = $path; - } - public function getPath() - { - return $this->path; - } - public function setPort($port) - { - $this->port = $port; - } - public function getPort() - { - return $this->port; - } - public function setTimeoutSec($timeoutSec) - { - $this->timeoutSec = $timeoutSec; - } - public function getTimeoutSec() - { - return $this->timeoutSec; - } - public function setUnhealthyThreshold($unhealthyThreshold) - { - $this->unhealthyThreshold = $unhealthyThreshold; - } - public function getUnhealthyThreshold() - { - return $this->unhealthyThreshold; - } -} - -class Google_Service_Manager_HealthCheckModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $healthCheckUrl; - - - public function setHealthCheckUrl($healthCheckUrl) - { - $this->healthCheckUrl = $healthCheckUrl; - } - public function getHealthCheckUrl() - { - return $this->healthCheckUrl; - } -} - -class Google_Service_Manager_LbModule extends Google_Collection -{ - protected $collection_key = 'targetModules'; - protected $internal_gapi_mappings = array( - ); - public $description; - public $healthChecks; - public $ipAddress; - public $ipProtocol; - public $portRange; - public $sessionAffinity; - public $targetModules; - - - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setHealthChecks($healthChecks) - { - $this->healthChecks = $healthChecks; - } - public function getHealthChecks() - { - return $this->healthChecks; - } - public function setIpAddress($ipAddress) - { - $this->ipAddress = $ipAddress; - } - public function getIpAddress() - { - return $this->ipAddress; - } - public function setIpProtocol($ipProtocol) - { - $this->ipProtocol = $ipProtocol; - } - public function getIpProtocol() - { - return $this->ipProtocol; - } - public function setPortRange($portRange) - { - $this->portRange = $portRange; - } - public function getPortRange() - { - return $this->portRange; - } - public function setSessionAffinity($sessionAffinity) - { - $this->sessionAffinity = $sessionAffinity; - } - public function getSessionAffinity() - { - return $this->sessionAffinity; - } - public function setTargetModules($targetModules) - { - $this->targetModules = $targetModules; - } - public function getTargetModules() - { - return $this->targetModules; - } -} - -class Google_Service_Manager_LbModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $forwardingRuleUrl; - public $targetPoolUrl; - - - public function setForwardingRuleUrl($forwardingRuleUrl) - { - $this->forwardingRuleUrl = $forwardingRuleUrl; - } - public function getForwardingRuleUrl() - { - return $this->forwardingRuleUrl; - } - public function setTargetPoolUrl($targetPoolUrl) - { - $this->targetPoolUrl = $targetPoolUrl; - } - public function getTargetPoolUrl() - { - return $this->targetPoolUrl; - } -} - -class Google_Service_Manager_Metadata extends Google_Collection -{ - protected $collection_key = 'items'; - protected $internal_gapi_mappings = array( - ); - public $fingerPrint; - protected $itemsType = 'Google_Service_Manager_MetadataItem'; - protected $itemsDataType = 'array'; - - - public function setFingerPrint($fingerPrint) - { - $this->fingerPrint = $fingerPrint; - } - public function getFingerPrint() - { - return $this->fingerPrint; - } - public function setItems($items) - { - $this->items = $items; - } - public function getItems() - { - return $this->items; - } -} - -class Google_Service_Manager_MetadataItem extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $key; - public $value; - - - public function setKey($key) - { - $this->key = $key; - } - public function getKey() - { - return $this->key; - } - public function setValue($value) - { - $this->value = $value; - } - public function getValue() - { - return $this->value; - } -} - -class Google_Service_Manager_Module extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $autoscalingModuleType = 'Google_Service_Manager_AutoscalingModule'; - protected $autoscalingModuleDataType = ''; - protected $firewallModuleType = 'Google_Service_Manager_FirewallModule'; - protected $firewallModuleDataType = ''; - protected $healthCheckModuleType = 'Google_Service_Manager_HealthCheckModule'; - protected $healthCheckModuleDataType = ''; - protected $lbModuleType = 'Google_Service_Manager_LbModule'; - protected $lbModuleDataType = ''; - protected $networkModuleType = 'Google_Service_Manager_NetworkModule'; - protected $networkModuleDataType = ''; - protected $replicaPoolModuleType = 'Google_Service_Manager_ReplicaPoolModule'; - protected $replicaPoolModuleDataType = ''; - public $type; - - - public function setAutoscalingModule(Google_Service_Manager_AutoscalingModule $autoscalingModule) - { - $this->autoscalingModule = $autoscalingModule; - } - public function getAutoscalingModule() - { - return $this->autoscalingModule; - } - public function setFirewallModule(Google_Service_Manager_FirewallModule $firewallModule) - { - $this->firewallModule = $firewallModule; - } - public function getFirewallModule() - { - return $this->firewallModule; - } - public function setHealthCheckModule(Google_Service_Manager_HealthCheckModule $healthCheckModule) - { - $this->healthCheckModule = $healthCheckModule; - } - public function getHealthCheckModule() - { - return $this->healthCheckModule; - } - public function setLbModule(Google_Service_Manager_LbModule $lbModule) - { - $this->lbModule = $lbModule; - } - public function getLbModule() - { - return $this->lbModule; - } - public function setNetworkModule(Google_Service_Manager_NetworkModule $networkModule) - { - $this->networkModule = $networkModule; - } - public function getNetworkModule() - { - return $this->networkModule; - } - public function setReplicaPoolModule(Google_Service_Manager_ReplicaPoolModule $replicaPoolModule) - { - $this->replicaPoolModule = $replicaPoolModule; - } - public function getReplicaPoolModule() - { - return $this->replicaPoolModule; - } - public function setType($type) - { - $this->type = $type; - } - public function getType() - { - return $this->type; - } -} - -class Google_Service_Manager_ModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $autoscalingModuleStatusType = 'Google_Service_Manager_AutoscalingModuleStatus'; - protected $autoscalingModuleStatusDataType = ''; - protected $firewallModuleStatusType = 'Google_Service_Manager_FirewallModuleStatus'; - protected $firewallModuleStatusDataType = ''; - protected $healthCheckModuleStatusType = 'Google_Service_Manager_HealthCheckModuleStatus'; - protected $healthCheckModuleStatusDataType = ''; - protected $lbModuleStatusType = 'Google_Service_Manager_LbModuleStatus'; - protected $lbModuleStatusDataType = ''; - protected $networkModuleStatusType = 'Google_Service_Manager_NetworkModuleStatus'; - protected $networkModuleStatusDataType = ''; - protected $replicaPoolModuleStatusType = 'Google_Service_Manager_ReplicaPoolModuleStatus'; - protected $replicaPoolModuleStatusDataType = ''; - protected $stateType = 'Google_Service_Manager_DeployState'; - protected $stateDataType = ''; - public $type; - - - public function setAutoscalingModuleStatus(Google_Service_Manager_AutoscalingModuleStatus $autoscalingModuleStatus) - { - $this->autoscalingModuleStatus = $autoscalingModuleStatus; - } - public function getAutoscalingModuleStatus() - { - return $this->autoscalingModuleStatus; - } - public function setFirewallModuleStatus(Google_Service_Manager_FirewallModuleStatus $firewallModuleStatus) - { - $this->firewallModuleStatus = $firewallModuleStatus; - } - public function getFirewallModuleStatus() - { - return $this->firewallModuleStatus; - } - public function setHealthCheckModuleStatus(Google_Service_Manager_HealthCheckModuleStatus $healthCheckModuleStatus) - { - $this->healthCheckModuleStatus = $healthCheckModuleStatus; - } - public function getHealthCheckModuleStatus() - { - return $this->healthCheckModuleStatus; - } - public function setLbModuleStatus(Google_Service_Manager_LbModuleStatus $lbModuleStatus) - { - $this->lbModuleStatus = $lbModuleStatus; - } - public function getLbModuleStatus() - { - return $this->lbModuleStatus; - } - public function setNetworkModuleStatus(Google_Service_Manager_NetworkModuleStatus $networkModuleStatus) - { - $this->networkModuleStatus = $networkModuleStatus; - } - public function getNetworkModuleStatus() - { - return $this->networkModuleStatus; - } - public function setReplicaPoolModuleStatus(Google_Service_Manager_ReplicaPoolModuleStatus $replicaPoolModuleStatus) - { - $this->replicaPoolModuleStatus = $replicaPoolModuleStatus; - } - public function getReplicaPoolModuleStatus() - { - return $this->replicaPoolModuleStatus; - } - public function setState(Google_Service_Manager_DeployState $state) - { - $this->state = $state; - } - public function getState() - { - return $this->state; - } - public function setType($type) - { - $this->type = $type; - } - public function getType() - { - return $this->type; - } -} - -class Google_Service_Manager_NetworkInterface extends Google_Collection -{ - protected $collection_key = 'accessConfigs'; - protected $internal_gapi_mappings = array( - ); - protected $accessConfigsType = 'Google_Service_Manager_AccessConfig'; - protected $accessConfigsDataType = 'array'; - public $name; - public $network; - public $networkIp; - - - public function setAccessConfigs($accessConfigs) - { - $this->accessConfigs = $accessConfigs; - } - public function getAccessConfigs() - { - return $this->accessConfigs; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } - public function setNetwork($network) - { - $this->network = $network; - } - public function getNetwork() - { - return $this->network; - } - public function setNetworkIp($networkIp) - { - $this->networkIp = $networkIp; - } - public function getNetworkIp() - { - return $this->networkIp; - } -} - -class Google_Service_Manager_NetworkModule extends Google_Model -{ - protected $internal_gapi_mappings = array( - "iPv4Range" => "IPv4Range", - ); - public $iPv4Range; - public $description; - public $gatewayIPv4; - - - public function setIPv4Range($iPv4Range) - { - $this->iPv4Range = $iPv4Range; - } - public function getIPv4Range() - { - return $this->iPv4Range; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setGatewayIPv4($gatewayIPv4) - { - $this->gatewayIPv4 = $gatewayIPv4; - } - public function getGatewayIPv4() - { - return $this->gatewayIPv4; - } -} - -class Google_Service_Manager_NetworkModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $networkUrl; - - - public function setNetworkUrl($networkUrl) - { - $this->networkUrl = $networkUrl; - } - public function getNetworkUrl() - { - return $this->networkUrl; - } -} - -class Google_Service_Manager_NewDisk extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $attachmentType = 'Google_Service_Manager_DiskAttachment'; - protected $attachmentDataType = ''; - public $autoDelete; - public $boot; - protected $initializeParamsType = 'Google_Service_Manager_NewDiskInitializeParams'; - protected $initializeParamsDataType = ''; - - - public function setAttachment(Google_Service_Manager_DiskAttachment $attachment) - { - $this->attachment = $attachment; - } - public function getAttachment() - { - return $this->attachment; - } - public function setAutoDelete($autoDelete) - { - $this->autoDelete = $autoDelete; - } - public function getAutoDelete() - { - return $this->autoDelete; - } - public function setBoot($boot) - { - $this->boot = $boot; - } - public function getBoot() - { - return $this->boot; - } - public function setInitializeParams(Google_Service_Manager_NewDiskInitializeParams $initializeParams) - { - $this->initializeParams = $initializeParams; - } - public function getInitializeParams() - { - return $this->initializeParams; - } -} - -class Google_Service_Manager_NewDiskInitializeParams extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $diskSizeGb; - public $diskType; - public $sourceImage; - - - public function setDiskSizeGb($diskSizeGb) - { - $this->diskSizeGb = $diskSizeGb; - } - public function getDiskSizeGb() - { - return $this->diskSizeGb; - } - public function setDiskType($diskType) - { - $this->diskType = $diskType; - } - public function getDiskType() - { - return $this->diskType; - } - public function setSourceImage($sourceImage) - { - $this->sourceImage = $sourceImage; - } - public function getSourceImage() - { - return $this->sourceImage; - } -} - -class Google_Service_Manager_ParamOverride extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $path; - public $value; - - - public function setPath($path) - { - $this->path = $path; - } - public function getPath() - { - return $this->path; - } - public function setValue($value) - { - $this->value = $value; - } - public function getValue() - { - return $this->value; - } -} - -class Google_Service_Manager_ReplicaPoolModule extends Google_Collection -{ - protected $collection_key = 'healthChecks'; - protected $internal_gapi_mappings = array( - ); - protected $envVariablesType = 'Google_Service_Manager_EnvVariable'; - protected $envVariablesDataType = 'map'; - public $healthChecks; - public $numReplicas; - protected $replicaPoolParamsType = 'Google_Service_Manager_ReplicaPoolParams'; - protected $replicaPoolParamsDataType = ''; - public $resourceView; - - - public function setEnvVariables($envVariables) - { - $this->envVariables = $envVariables; - } - public function getEnvVariables() - { - return $this->envVariables; - } - public function setHealthChecks($healthChecks) - { - $this->healthChecks = $healthChecks; - } - public function getHealthChecks() - { - return $this->healthChecks; - } - public function setNumReplicas($numReplicas) - { - $this->numReplicas = $numReplicas; - } - public function getNumReplicas() - { - return $this->numReplicas; - } - public function setReplicaPoolParams(Google_Service_Manager_ReplicaPoolParams $replicaPoolParams) - { - $this->replicaPoolParams = $replicaPoolParams; - } - public function getReplicaPoolParams() - { - return $this->replicaPoolParams; - } - public function setResourceView($resourceView) - { - $this->resourceView = $resourceView; - } - public function getResourceView() - { - return $this->resourceView; - } -} - -class Google_Service_Manager_ReplicaPoolModuleEnvVariables extends Google_Model -{ -} - -class Google_Service_Manager_ReplicaPoolModuleStatus extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - public $replicaPoolUrl; - public $resourceViewUrl; - - - public function setReplicaPoolUrl($replicaPoolUrl) - { - $this->replicaPoolUrl = $replicaPoolUrl; - } - public function getReplicaPoolUrl() - { - return $this->replicaPoolUrl; - } - public function setResourceViewUrl($resourceViewUrl) - { - $this->resourceViewUrl = $resourceViewUrl; - } - public function getResourceViewUrl() - { - return $this->resourceViewUrl; - } -} - -class Google_Service_Manager_ReplicaPoolParams extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $v1beta1Type = 'Google_Service_Manager_ReplicaPoolParamsV1Beta1'; - protected $v1beta1DataType = ''; - - - public function setV1beta1(Google_Service_Manager_ReplicaPoolParamsV1Beta1 $v1beta1) - { - $this->v1beta1 = $v1beta1; - } - public function getV1beta1() - { - return $this->v1beta1; - } -} - -class Google_Service_Manager_ReplicaPoolParamsV1Beta1 extends Google_Collection -{ - protected $collection_key = 'serviceAccounts'; - protected $internal_gapi_mappings = array( - ); - public $autoRestart; - public $baseInstanceName; - public $canIpForward; - public $description; - protected $disksToAttachType = 'Google_Service_Manager_ExistingDisk'; - protected $disksToAttachDataType = 'array'; - protected $disksToCreateType = 'Google_Service_Manager_NewDisk'; - protected $disksToCreateDataType = 'array'; - public $initAction; - public $machineType; - protected $metadataType = 'Google_Service_Manager_Metadata'; - protected $metadataDataType = ''; - protected $networkInterfacesType = 'Google_Service_Manager_NetworkInterface'; - protected $networkInterfacesDataType = 'array'; - public $onHostMaintenance; - protected $serviceAccountsType = 'Google_Service_Manager_ServiceAccount'; - protected $serviceAccountsDataType = 'array'; - protected $tagsType = 'Google_Service_Manager_Tag'; - protected $tagsDataType = ''; - public $zone; - - - public function setAutoRestart($autoRestart) - { - $this->autoRestart = $autoRestart; - } - public function getAutoRestart() - { - return $this->autoRestart; - } - public function setBaseInstanceName($baseInstanceName) - { - $this->baseInstanceName = $baseInstanceName; - } - public function getBaseInstanceName() - { - return $this->baseInstanceName; - } - public function setCanIpForward($canIpForward) - { - $this->canIpForward = $canIpForward; - } - public function getCanIpForward() - { - return $this->canIpForward; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setDisksToAttach($disksToAttach) - { - $this->disksToAttach = $disksToAttach; - } - public function getDisksToAttach() - { - return $this->disksToAttach; - } - public function setDisksToCreate($disksToCreate) - { - $this->disksToCreate = $disksToCreate; - } - public function getDisksToCreate() - { - return $this->disksToCreate; - } - public function setInitAction($initAction) - { - $this->initAction = $initAction; - } - public function getInitAction() - { - return $this->initAction; - } - public function setMachineType($machineType) - { - $this->machineType = $machineType; - } - public function getMachineType() - { - return $this->machineType; - } - public function setMetadata(Google_Service_Manager_Metadata $metadata) - { - $this->metadata = $metadata; - } - public function getMetadata() - { - return $this->metadata; - } - public function setNetworkInterfaces($networkInterfaces) - { - $this->networkInterfaces = $networkInterfaces; - } - public function getNetworkInterfaces() - { - return $this->networkInterfaces; - } - public function setOnHostMaintenance($onHostMaintenance) - { - $this->onHostMaintenance = $onHostMaintenance; - } - public function getOnHostMaintenance() - { - return $this->onHostMaintenance; - } - public function setServiceAccounts($serviceAccounts) - { - $this->serviceAccounts = $serviceAccounts; - } - public function getServiceAccounts() - { - return $this->serviceAccounts; - } - public function setTags(Google_Service_Manager_Tag $tags) - { - $this->tags = $tags; - } - public function getTags() - { - return $this->tags; - } - public function setZone($zone) - { - $this->zone = $zone; - } - public function getZone() - { - return $this->zone; - } -} - -class Google_Service_Manager_ServiceAccount extends Google_Collection -{ - protected $collection_key = 'scopes'; - protected $internal_gapi_mappings = array( - ); - public $email; - public $scopes; - - - public function setEmail($email) - { - $this->email = $email; - } - public function getEmail() - { - return $this->email; - } - public function setScopes($scopes) - { - $this->scopes = $scopes; - } - public function getScopes() - { - return $this->scopes; - } -} - -class Google_Service_Manager_Tag extends Google_Collection -{ - protected $collection_key = 'items'; - protected $internal_gapi_mappings = array( - ); - public $fingerPrint; - public $items; - - - public function setFingerPrint($fingerPrint) - { - $this->fingerPrint = $fingerPrint; - } - public function getFingerPrint() - { - return $this->fingerPrint; - } - public function setItems($items) - { - $this->items = $items; - } - public function getItems() - { - return $this->items; - } -} - -class Google_Service_Manager_Template extends Google_Model -{ - protected $internal_gapi_mappings = array( - ); - protected $actionsType = 'Google_Service_Manager_Action'; - protected $actionsDataType = 'map'; - public $description; - protected $modulesType = 'Google_Service_Manager_Module'; - protected $modulesDataType = 'map'; - public $name; - - - public function setActions($actions) - { - $this->actions = $actions; - } - public function getActions() - { - return $this->actions; - } - public function setDescription($description) - { - $this->description = $description; - } - public function getDescription() - { - return $this->description; - } - public function setModules($modules) - { - $this->modules = $modules; - } - public function getModules() - { - return $this->modules; - } - public function setName($name) - { - $this->name = $name; - } - public function getName() - { - return $this->name; - } -} - -class Google_Service_Manager_TemplateActions extends Google_Model -{ -} - -class Google_Service_Manager_TemplateModules extends Google_Model -{ -} - -class Google_Service_Manager_TemplatesListResponse extends Google_Collection -{ - protected $collection_key = 'resources'; - protected $internal_gapi_mappings = array( - ); - public $nextPageToken; - protected $resourcesType = 'Google_Service_Manager_Template'; - protected $resourcesDataType = 'array'; - - - public function setNextPageToken($nextPageToken) - { - $this->nextPageToken = $nextPageToken; - } - public function getNextPageToken() - { - return $this->nextPageToken; - } - public function setResources($resources) - { - $this->resources = $resources; - } - public function getResources() - { - return $this->resources; - } -} diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Oauth2.php b/wp-content/plugins/updraftplus/includes/Google/Service/Oauth2.php index 79f849e8..8be9c20f 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Oauth2.php +++ b/wp-content/plugins/updraftplus/includes/Google/Service/Oauth2.php @@ -45,6 +45,8 @@ class UDP_Google_Service_Oauth2 extends UDP_Google_Service public $userinfo; public $userinfo_v2_me; + + private $serviceName; private $base_methods; /** diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Resource.php b/wp-content/plugins/updraftplus/includes/Google/Service/Resource.php index 3dde8915..6dcaefe7 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Resource.php +++ b/wp-content/plugins/updraftplus/includes/Google/Service/Resource.php @@ -93,7 +93,7 @@ public function call($name, $arguments, $expected_class = null) throw new Google_Exception( "Unknown function: " . - "{$this->serviceName}->{$this->resourceName}->{$name}()" + "{$this->serviceName}->{$this->resourceName}->{$name}()" // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. ); } $method = $this->methods[$name]; @@ -145,7 +145,7 @@ public function call($name, $arguments, $expected_class = null) 'parameter' => $key ) ); - throw new Google_Exception("($name) unknown parameter: '$key'"); + throw new Google_Exception("($name) unknown parameter: '$key'"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } } @@ -163,7 +163,7 @@ public function call($name, $arguments, $expected_class = null) 'parameter' => $paramName ) ); - throw new Google_Exception("($name) missing required param: '$paramName'"); + throw new Google_Exception("($name) missing required param: '$paramName'"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } if (isset($parameters[$paramName])) { $value = $parameters[$paramName]; diff --git a/wp-content/plugins/updraftplus/includes/Google/Service/Storage.php b/wp-content/plugins/updraftplus/includes/Google/Service/Storage.php index f9cfc4cd..ea78bd18 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Service/Storage.php +++ b/wp-content/plugins/updraftplus/includes/Google/Service/Storage.php @@ -43,6 +43,12 @@ class UDP_Google_Service_Storage extends UDP_Google_Service const DEVSTORAGE_READ_WRITE = "https://www.googleapis.com/auth/devstorage.read_write"; + /** + * Google storage service name. The default value is drive. + * @var String + */ + protected $serviceName; + public $bucketAccessControls; public $buckets; public $channels; diff --git a/wp-content/plugins/updraftplus/includes/Google/Signer/P12.php b/wp-content/plugins/updraftplus/includes/Google/Signer/P12.php index 1fb9ec00..c0026a97 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Signer/P12.php +++ b/wp-content/plugins/updraftplus/includes/Google/Signer/P12.php @@ -55,7 +55,7 @@ public function __construct($p12, $password) throw new Google_Auth_Exception( "Unable to parse the p12 file. " . "Is this a .p12 file? Is the password correct? OpenSSL error: " . - openssl_error_string() + openssl_error_string() // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. ); } // TODO(beaton): is this part of the contract for the openssl_pkcs12_read diff --git a/wp-content/plugins/updraftplus/includes/Google/Verifier/Pem.php b/wp-content/plugins/updraftplus/includes/Google/Verifier/Pem.php index 6fa46f13..03bbda5e 100644 --- a/wp-content/plugins/updraftplus/includes/Google/Verifier/Pem.php +++ b/wp-content/plugins/updraftplus/includes/Google/Verifier/Pem.php @@ -43,7 +43,7 @@ public function __construct($pem) } $this->publicKey = openssl_x509_read($pem); if (!$this->publicKey) { - throw new Google_Auth_Exception("Unable to parse PEM: $pem"); + throw new Google_Auth_Exception("Unable to parse PEM: $pem"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } } @@ -69,7 +69,7 @@ public function verify($data, $signature) $hash = defined("OPENSSL_ALGO_SHA256") ? OPENSSL_ALGO_SHA256 : "sha256"; $status = openssl_verify($data, $signature, $this->publicKey, $hash); if ($status === -1) { - throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string()); + throw new Google_Auth_Exception('Signature verification error: ' . openssl_error_string()); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error message to be escaped when caught and printed. } return $status === 1; } diff --git a/wp-content/plugins/updraftplus/includes/PEAR/Archive/Tar.php b/wp-content/plugins/updraftplus/includes/PEAR/Archive/Tar.php deleted file mode 100644 index 0bd1c6ca..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/Archive/Tar.php +++ /dev/null @@ -1,2421 +0,0 @@ - - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * @category File_Formats - * @package Archive_Tar - * @author Vincent Blavet - * @copyright 1997-2010 The Authors - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id$ - * @link http://pear.php.net/package/Archive_Tar - */ - -// If the PEAR class cannot be loaded via the autoloader, -// then try to require_once it from the PHP include path. -if (!class_exists('PEAR')) { - require_once 'PEAR.php'; -} - -define('ARCHIVE_TAR_ATT_SEPARATOR', 90001); -define('ARCHIVE_TAR_END_BLOCK', pack("a512", '')); - -if (!function_exists('gzopen') && function_exists('gzopen64')) { - function gzopen($filename, $mode, $use_include_path = 0) - { - return gzopen64($filename, $mode, $use_include_path); - } -} - -if (!function_exists('gztell') && function_exists('gztell64')) { - function gztell($zp) - { - return gztell64($zp); - } -} - -if (!function_exists('gzseek') && function_exists('gzseek64')) { - function gzseek($zp, $offset, $whence = SEEK_SET) - { - return gzseek64($zp, $offset, $whence); - } -} - -/** - * Creates a (compressed) Tar archive - * - * @package Archive_Tar - * @author Vincent Blavet - * @license http://www.opensource.org/licenses/bsd-license.php New BSD License - * @version $Revision$ - */ -class Archive_Tar extends PEAR -{ - /** - * @var string Name of the Tar - */ - public $_tarname = ''; - - /** - * @var boolean if true, the Tar file will be gzipped - */ - public $_compress = false; - - /** - * @var string Type of compression : 'none', 'gz', 'bz2' or 'lzma2' - */ - public $_compress_type = 'none'; - - /** - * @var string Explode separator - */ - public $_separator = ' '; - - /** - * @var file descriptor - */ - public $_file = 0; - - /** - * @var string Local Tar name of a remote Tar (http:// or ftp://) - */ - public $_temp_tarname = ''; - - /** - * @var string regular expression for ignoring files or directories - */ - public $_ignore_regexp = ''; - - /** - * @var object PEAR_Error object - */ - public $error_object = null; - - /** - * Format for data extraction - * - * @var string - */ - public $_fmt =''; - /** - * Archive_Tar Class constructor. This flavour of the constructor only - * declare a new Archive_Tar object, identifying it by the name of the - * tar file. - * If the compress argument is set the tar will be read or created as a - * gzip or bz2 compressed TAR file. - * - * @param string $p_tarname The name of the tar archive to create - * @param string $p_compress can be null, 'gz', 'bz2' or 'lzma2'. This - * parameter indicates if gzip, bz2 or lzma2 compression - * is required. For compatibility reason the - * boolean value 'true' means 'gz'. - * - * @return bool - */ - public function __construct($p_tarname, $p_compress = null) - { - parent::__construct(); - - $this->_compress = false; - $this->_compress_type = 'none'; - if (($p_compress === null) || ($p_compress == '')) { - if (@file_exists($p_tarname)) { - if ($fp = @fopen($p_tarname, "rb")) { - // look for gzip magic cookie - $data = fread($fp, 2); - fclose($fp); - if ($data == "\37\213") { - $this->_compress = true; - $this->_compress_type = 'gz'; - // No sure it's enought for a magic code .... - } elseif ($data == "BZ") { - $this->_compress = true; - $this->_compress_type = 'bz2'; - } elseif (file_get_contents($p_tarname, false, null, 1, 4) == '7zXZ') { - $this->_compress = true; - $this->_compress_type = 'lzma2'; - } - } - } else { - // probably a remote file or some file accessible - // through a stream interface - if (substr($p_tarname, -2) == 'gz') { - $this->_compress = true; - $this->_compress_type = 'gz'; - } elseif ((substr($p_tarname, -3) == 'bz2') || - (substr($p_tarname, -2) == 'bz') - ) { - $this->_compress = true; - $this->_compress_type = 'bz2'; - } else { - if (substr($p_tarname, -2) == 'xz') { - $this->_compress = true; - $this->_compress_type = 'lzma2'; - } - } - } - } else { - if (($p_compress === true) || ($p_compress == 'gz')) { - $this->_compress = true; - $this->_compress_type = 'gz'; - } else { - if ($p_compress == 'bz2') { - $this->_compress = true; - $this->_compress_type = 'bz2'; - } else { - if ($p_compress == 'lzma2') { - $this->_compress = true; - $this->_compress_type = 'lzma2'; - } else { - $this->_error( - "Unsupported compression type '$p_compress'\n" . - "Supported types are 'gz', 'bz2' and 'lzma2'.\n" - ); - return false; - } - } - } - } - $this->_tarname = $p_tarname; - if ($this->_compress) { // assert zlib or bz2 or xz extension support - if ($this->_compress_type == 'gz') { - $extname = 'zlib'; - } else { - if ($this->_compress_type == 'bz2') { - $extname = 'bz2'; - } else { - if ($this->_compress_type == 'lzma2') { - $extname = 'xz'; - } - } - } - - if (!extension_loaded($extname)) { - PEAR::loadExtension($extname); - } - if (!extension_loaded($extname)) { - $this->_error( - "The extension '$extname' couldn't be found.\n" . - "Please make sure your version of PHP was built " . - "with '$extname' support.\n" - ); - return false; - } - } - - - if (version_compare(PHP_VERSION, "5.5.0-dev") < 0) { - $this->_fmt = "a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/" . - "a8checksum/a1typeflag/a100link/a6magic/a2version/" . - "a32uname/a32gname/a8devmajor/a8devminor/a131prefix"; - } else { - $this->_fmt = "Z100filename/Z8mode/Z8uid/Z8gid/Z12size/Z12mtime/" . - "Z8checksum/Z1typeflag/Z100link/Z6magic/Z2version/" . - "Z32uname/Z32gname/Z8devmajor/Z8devminor/Z131prefix"; - } - - - } - - public function __destruct() - { - $this->_close(); - // ----- Look for a local copy to delete - if ($this->_temp_tarname != '') { - @unlink($this->_temp_tarname); - } - } - - /** - * This method creates the archive file and add the files / directories - * that are listed in $p_filelist. - * If a file with the same name exist and is writable, it is replaced - * by the new tar. - * The method return false and a PEAR error text. - * The $p_filelist parameter can be an array of string, each string - * representing a filename or a directory name with their path if - * needed. It can also be a single string with names separated by a - * single blank. - * For each directory added in the archive, the files and - * sub-directories are also added. - * See also createModify() method for more details. - * - * @param array $p_filelist An array of filenames and directory names, or a - * single string with names separated by a single - * blank space. - * - * @return true on success, false on error. - * @see createModify() - */ - public function create($p_filelist) - { - return $this->createModify($p_filelist, '', ''); - } - - /** - * This method add the files / directories that are listed in $p_filelist in - * the archive. If the archive does not exist it is created. - * The method return false and a PEAR error text. - * The files and directories listed are only added at the end of the archive, - * even if a file with the same name is already archived. - * See also createModify() method for more details. - * - * @param array $p_filelist An array of filenames and directory names, or a - * single string with names separated by a single - * blank space. - * - * @return true on success, false on error. - * @see createModify() - * @access public - */ - public function add($p_filelist) - { - return $this->addModify($p_filelist, '', ''); - } - - /** - * @param string $p_path - * @param bool $p_preserve - * @return bool - */ - public function extract($p_path = '', $p_preserve = false) - { - return $this->extractModify($p_path, '', $p_preserve); - } - - /** - * @return array|int - */ - public function listContent() - { - $v_list_detail = array(); - - if ($this->_openRead()) { - if (!$this->_extractList('', $v_list_detail, "list", '', '')) { - unset($v_list_detail); - $v_list_detail = 0; - } - $this->_close(); - } - - return $v_list_detail; - } - - /** - * This method creates the archive file and add the files / directories - * that are listed in $p_filelist. - * If the file already exists and is writable, it is replaced by the - * new tar. It is a create and not an add. If the file exists and is - * read-only or is a directory it is not replaced. The method return - * false and a PEAR error text. - * The $p_filelist parameter can be an array of string, each string - * representing a filename or a directory name with their path if - * needed. It can also be a single string with names separated by a - * single blank. - * The path indicated in $p_remove_dir will be removed from the - * memorized path of each file / directory listed when this path - * exists. By default nothing is removed (empty path '') - * The path indicated in $p_add_dir will be added at the beginning of - * the memorized path of each file / directory listed. However it can - * be set to empty ''. The adding of a path is done after the removing - * of path. - * The path add/remove ability enables the user to prepare an archive - * for extraction in a different path than the origin files are. - * See also addModify() method for file adding properties. - * - * @param array $p_filelist An array of filenames and directory names, - * or a single string with names separated by - * a single blank space. - * @param string $p_add_dir A string which contains a path to be added - * to the memorized path of each element in - * the list. - * @param string $p_remove_dir A string which contains a path to be - * removed from the memorized path of each - * element in the list, when relevant. - * - * @return boolean true on success, false on error. - * @see addModify() - */ - public function createModify($p_filelist, $p_add_dir, $p_remove_dir = '') - { - $v_result = true; - - if (!$this->_openWrite()) { - return false; - } - - if ($p_filelist != '') { - if (is_array($p_filelist)) { - $v_list = $p_filelist; - } elseif (is_string($p_filelist)) { - $v_list = explode($this->_separator, $p_filelist); - } else { - $this->_cleanFile(); - $this->_error('Invalid file list'); - return false; - } - - $v_result = $this->_addList($v_list, $p_add_dir, $p_remove_dir); - } - - if ($v_result) { - $this->_writeFooter(); - $this->_close(); - } else { - $this->_cleanFile(); - } - - return $v_result; - } - - /** - * This method add the files / directories listed in $p_filelist at the - * end of the existing archive. If the archive does not yet exists it - * is created. - * The $p_filelist parameter can be an array of string, each string - * representing a filename or a directory name with their path if - * needed. It can also be a single string with names separated by a - * single blank. - * The path indicated in $p_remove_dir will be removed from the - * memorized path of each file / directory listed when this path - * exists. By default nothing is removed (empty path '') - * The path indicated in $p_add_dir will be added at the beginning of - * the memorized path of each file / directory listed. However it can - * be set to empty ''. The adding of a path is done after the removing - * of path. - * The path add/remove ability enables the user to prepare an archive - * for extraction in a different path than the origin files are. - * If a file/dir is already in the archive it will only be added at the - * end of the archive. There is no update of the existing archived - * file/dir. However while extracting the archive, the last file will - * replace the first one. This results in a none optimization of the - * archive size. - * If a file/dir does not exist the file/dir is ignored. However an - * error text is send to PEAR error. - * If a file/dir is not readable the file/dir is ignored. However an - * error text is send to PEAR error. - * - * @param array $p_filelist An array of filenames and directory - * names, or a single string with names - * separated by a single blank space. - * @param string $p_add_dir A string which contains a path to be - * added to the memorized path of each - * element in the list. - * @param string $p_remove_dir A string which contains a path to be - * removed from the memorized path of - * each element in the list, when - * relevant. - * - * @return true on success, false on error. - */ - public function addModify($p_filelist, $p_add_dir, $p_remove_dir = '') - { - $v_result = true; - - if (!$this->_isArchive()) { - $v_result = $this->createModify( - $p_filelist, - $p_add_dir, - $p_remove_dir - ); - } else { - if (is_array($p_filelist)) { - $v_list = $p_filelist; - } elseif (is_string($p_filelist)) { - $v_list = explode($this->_separator, $p_filelist); - } else { - $this->_error('Invalid file list'); - return false; - } - - $v_result = $this->_append($v_list, $p_add_dir, $p_remove_dir); - } - - return $v_result; - } - - /** - * This method add a single string as a file at the - * end of the existing archive. If the archive does not yet exists it - * is created. - * - * @param string $p_filename A string which contains the full - * filename path that will be associated - * with the string. - * @param string $p_string The content of the file added in - * the archive. - * @param bool|int $p_datetime A custom date/time (unix timestamp) - * for the file (optional). - * @param array $p_params An array of optional params: - * stamp => the datetime (replaces - * datetime above if it exists) - * mode => the permissions on the - * file (600 by default) - * type => is this a link? See the - * tar specification for details. - * (default = regular file) - * uid => the user ID of the file - * (default = 0 = root) - * gid => the group ID of the file - * (default = 0 = root) - * - * @return true on success, false on error. - */ - public function addString($p_filename, $p_string, $p_datetime = false, $p_params = array()) - { - $p_stamp = @$p_params["stamp"] ? $p_params["stamp"] : ($p_datetime ? $p_datetime : time()); - $p_mode = @$p_params["mode"] ? $p_params["mode"] : 0600; - $p_type = @$p_params["type"] ? $p_params["type"] : ""; - $p_uid = @$p_params["uid"] ? $p_params["uid"] : ""; - $p_gid = @$p_params["gid"] ? $p_params["gid"] : ""; - $v_result = true; - - if (!$this->_isArchive()) { - if (!$this->_openWrite()) { - return false; - } - $this->_close(); - } - - if (!$this->_openAppend()) { - return false; - } - - // Need to check the get back to the temporary file ? .... - $v_result = $this->_addString($p_filename, $p_string, $p_datetime, $p_params); - - $this->_writeFooter(); - - $this->_close(); - - return $v_result; - } - - /** - * This method extract all the content of the archive in the directory - * indicated by $p_path. When relevant the memorized path of the - * files/dir can be modified by removing the $p_remove_path path at the - * beginning of the file/dir path. - * While extracting a file, if the directory path does not exists it is - * created. - * While extracting a file, if the file already exists it is replaced - * without looking for last modification date. - * While extracting a file, if the file already exists and is write - * protected, the extraction is aborted. - * While extracting a file, if a directory with the same name already - * exists, the extraction is aborted. - * While extracting a directory, if a file with the same name already - * exists, the extraction is aborted. - * While extracting a file/directory if the destination directory exist - * and is write protected, or does not exist but can not be created, - * the extraction is aborted. - * If after extraction an extracted file does not show the correct - * stored file size, the extraction is aborted. - * When the extraction is aborted, a PEAR error text is set and false - * is returned. However the result can be a partial extraction that may - * need to be manually cleaned. - * - * @param string $p_path The path of the directory where the - * files/dir need to by extracted. - * @param string $p_remove_path Part of the memorized path that can be - * removed if present at the beginning of - * the file/dir path. - * @param boolean $p_preserve Preserve user/group ownership of files - * - * @return boolean true on success, false on error. - * @see extractList() - */ - public function extractModify($p_path, $p_remove_path, $p_preserve = false) - { - $v_result = true; - $v_list_detail = array(); - - if ($v_result = $this->_openRead()) { - $v_result = $this->_extractList( - $p_path, - $v_list_detail, - "complete", - 0, - $p_remove_path, - $p_preserve - ); - $this->_close(); - } - - return $v_result; - } - - /** - * This method extract from the archive one file identified by $p_filename. - * The return value is a string with the file content, or NULL on error. - * - * @param string $p_filename The path of the file to extract in a string. - * - * @return a string with the file content or NULL. - */ - public function extractInString($p_filename) - { - if ($this->_openRead()) { - $v_result = $this->_extractInString($p_filename); - $this->_close(); - } else { - $v_result = null; - } - - return $v_result; - } - - /** - * This method extract from the archive only the files indicated in the - * $p_filelist. These files are extracted in the current directory or - * in the directory indicated by the optional $p_path parameter. - * If indicated the $p_remove_path can be used in the same way as it is - * used in extractModify() method. - * - * @param array $p_filelist An array of filenames and directory names, - * or a single string with names separated - * by a single blank space. - * @param string $p_path The path of the directory where the - * files/dir need to by extracted. - * @param string $p_remove_path Part of the memorized path that can be - * removed if present at the beginning of - * the file/dir path. - * @param boolean $p_preserve Preserve user/group ownership of files - * - * @return true on success, false on error. - * @see extractModify() - */ - public function extractList($p_filelist, $p_path = '', $p_remove_path = '', $p_preserve = false) - { - $v_result = true; - $v_list_detail = array(); - - if (is_array($p_filelist)) { - $v_list = $p_filelist; - } elseif (is_string($p_filelist)) { - $v_list = explode($this->_separator, $p_filelist); - } else { - $this->_error('Invalid string list'); - return false; - } - - if ($v_result = $this->_openRead()) { - $v_result = $this->_extractList( - $p_path, - $v_list_detail, - "partial", - $v_list, - $p_remove_path, - $p_preserve - ); - $this->_close(); - } - - return $v_result; - } - - /** - * This method set specific attributes of the archive. It uses a variable - * list of parameters, in the format attribute code + attribute values : - * $arch->setAttribute(ARCHIVE_TAR_ATT_SEPARATOR, ','); - * - * @return true on success, false on error. - */ - public function setAttribute() - { - $v_result = true; - - // ----- Get the number of variable list of arguments - if (($v_size = func_num_args()) == 0) { - return true; - } - - // ----- Get the arguments - $v_att_list = func_get_args(); - - // ----- Read the attributes - $i = 0; - while ($i < $v_size) { - - // ----- Look for next option - switch ($v_att_list[$i]) { - // ----- Look for options that request a string value - case ARCHIVE_TAR_ATT_SEPARATOR : - // ----- Check the number of parameters - if (($i + 1) >= $v_size) { - $this->_error( - 'Invalid number of parameters for ' - . 'attribute ARCHIVE_TAR_ATT_SEPARATOR' - ); - return false; - } - - // ----- Get the value - $this->_separator = $v_att_list[$i + 1]; - $i++; - break; - - default : - $this->_error('Unknown attribute code ' . $v_att_list[$i] . ''); - return false; - } - - // ----- Next attribute - $i++; - } - - return $v_result; - } - - /** - * This method sets the regular expression for ignoring files and directories - * at import, for example: - * $arch->setIgnoreRegexp("#CVS|\.svn#"); - * - * @param string $regexp regular expression defining which files or directories to ignore - */ - public function setIgnoreRegexp($regexp) - { - $this->_ignore_regexp = $regexp; - } - - /** - * This method sets the regular expression for ignoring all files and directories - * matching the filenames in the array list at import, for example: - * $arch->setIgnoreList(array('CVS', '.svn', 'bin/tool')); - * - * @param array $list a list of file or directory names to ignore - * - * @access public - */ - public function setIgnoreList($list) - { - $regexp = str_replace(array('#', '.', '^', '$'), array('\#', '\.', '\^', '\$'), $list); - $regexp = '#/' . join('$|/', $list) . '#'; - $this->setIgnoreRegexp($regexp); - } - - /** - * @param string $p_message - */ - public function _error($p_message) - { - $this->error_object = $this->raiseError($p_message); - } - - /** - * @param string $p_message - */ - public function _warning($p_message) - { - $this->error_object = $this->raiseError($p_message); - } - - /** - * @param string $p_filename - * @return bool - */ - public function _isArchive($p_filename = null) - { - if ($p_filename == null) { - $p_filename = $this->_tarname; - } - clearstatcache(); - return @is_file($p_filename) && !@is_link($p_filename); - } - - /** - * @return bool - */ - public function _openWrite() - { - if ($this->_compress_type == 'gz' && function_exists('gzopen')) { - $this->_file = @gzopen($this->_tarname, "wb9"); - } else { - if ($this->_compress_type == 'bz2' && function_exists('bzopen')) { - $this->_file = @bzopen($this->_tarname, "w"); - } else { - if ($this->_compress_type == 'lzma2' && function_exists('xzopen')) { - $this->_file = @xzopen($this->_tarname, 'w'); - } else { - if ($this->_compress_type == 'none') { - $this->_file = @fopen($this->_tarname, "wb"); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - return false; - } - } - } - } - - if ($this->_file == 0) { - $this->_error( - 'Unable to open in write mode \'' - . $this->_tarname . '\'' - ); - return false; - } - - return true; - } - - /** - * @return bool - */ - public function _openRead() - { - if (strtolower(substr($this->_tarname, 0, 7)) == 'http://') { - - // ----- Look if a local copy need to be done - if ($this->_temp_tarname == '') { - $this->_temp_tarname = uniqid('tar') . '.tmp'; - if (!$v_file_from = @fopen($this->_tarname, 'rb')) { - $this->_error( - 'Unable to open in read mode \'' - . $this->_tarname . '\'' - ); - $this->_temp_tarname = ''; - return false; - } - if (!$v_file_to = @fopen($this->_temp_tarname, 'wb')) { - $this->_error( - 'Unable to open in write mode \'' - . $this->_temp_tarname . '\'' - ); - $this->_temp_tarname = ''; - return false; - } - while ($v_data = @fread($v_file_from, 1024)) { - @fwrite($v_file_to, $v_data); - } - @fclose($v_file_from); - @fclose($v_file_to); - } - - // ----- File to open if the local copy - $v_filename = $this->_temp_tarname; - } else { - // ----- File to open if the normal Tar file - - $v_filename = $this->_tarname; - } - - if ($this->_compress_type == 'gz' && function_exists('gzopen')) { - $this->_file = @gzopen($v_filename, "rb"); - } else { - if ($this->_compress_type == 'bz2' && function_exists('bzopen')) { - $this->_file = @bzopen($v_filename, "r"); - } else { - if ($this->_compress_type == 'lzma2' && function_exists('xzopen')) { - $this->_file = @xzopen($v_filename, "r"); - } else { - if ($this->_compress_type == 'none') { - $this->_file = @fopen($v_filename, "rb"); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - return false; - } - } - } - } - - if ($this->_file == 0) { - $this->_error('Unable to open in read mode \'' . $v_filename . '\''); - return false; - } - - return true; - } - - /** - * @return bool - */ - public function _openReadWrite() - { - if ($this->_compress_type == 'gz') { - $this->_file = @gzopen($this->_tarname, "r+b"); - } else { - if ($this->_compress_type == 'bz2') { - $this->_error( - 'Unable to open bz2 in read/write mode \'' - . $this->_tarname . '\' (limitation of bz2 extension)' - ); - return false; - } else { - if ($this->_compress_type == 'lzma2') { - $this->_error( - 'Unable to open lzma2 in read/write mode \'' - . $this->_tarname . '\' (limitation of lzma2 extension)' - ); - return false; - } else { - if ($this->_compress_type == 'none') { - $this->_file = @fopen($this->_tarname, "r+b"); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - return false; - } - } - } - } - - if ($this->_file == 0) { - $this->_error( - 'Unable to open in read/write mode \'' - . $this->_tarname . '\'' - ); - return false; - } - - return true; - } - - /** - * @return bool - */ - public function _close() - { - //if (isset($this->_file)) { - if (is_resource($this->_file)) { - if ($this->_compress_type == 'gz') { - @gzclose($this->_file); - } else { - if ($this->_compress_type == 'bz2') { - @bzclose($this->_file); - } else { - if ($this->_compress_type == 'lzma2') { - @xzclose($this->_file); - } else { - if ($this->_compress_type == 'none') { - @fclose($this->_file); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - } - } - } - } - - $this->_file = 0; - } - - // ----- Look if a local copy need to be erase - // Note that it might be interesting to keep the url for a time : ToDo - if ($this->_temp_tarname != '') { - @unlink($this->_temp_tarname); - $this->_temp_tarname = ''; - } - - return true; - } - - /** - * @return bool - */ - public function _cleanFile() - { - $this->_close(); - - // ----- Look for a local copy - if ($this->_temp_tarname != '') { - // ----- Remove the local copy but not the remote tarname - @unlink($this->_temp_tarname); - $this->_temp_tarname = ''; - } else { - // ----- Remove the local tarname file - @unlink($this->_tarname); - } - $this->_tarname = ''; - - return true; - } - - /** - * @param mixed $p_binary_data - * @param integer $p_len - * @return bool - */ - public function _writeBlock($p_binary_data, $p_len = null) - { - if (is_resource($this->_file)) { - if ($p_len === null) { - if ($this->_compress_type == 'gz') { - @gzputs($this->_file, $p_binary_data); - } else { - if ($this->_compress_type == 'bz2') { - @bzwrite($this->_file, $p_binary_data); - } else { - if ($this->_compress_type == 'lzma2') { - @xzwrite($this->_file, $p_binary_data); - } else { - if ($this->_compress_type == 'none') { - @fputs($this->_file, $p_binary_data); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - } - } - } - } - } else { - if ($this->_compress_type == 'gz') { - @gzputs($this->_file, $p_binary_data, $p_len); - } else { - if ($this->_compress_type == 'bz2') { - @bzwrite($this->_file, $p_binary_data, $p_len); - } else { - if ($this->_compress_type == 'lzma2') { - @xzwrite($this->_file, $p_binary_data, $p_len); - } else { - if ($this->_compress_type == 'none') { - @fputs($this->_file, $p_binary_data, $p_len); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - } - } - } - } - } - } - return true; - } - - /** - * @return null|string - */ - public function _readBlock() - { - $v_block = null; - if (is_resource($this->_file)) { - if ($this->_compress_type == 'gz') { - $v_block = @gzread($this->_file, 512); - } else { - if ($this->_compress_type == 'bz2') { - $v_block = @bzread($this->_file, 512); - } else { - if ($this->_compress_type == 'lzma2') { - $v_block = @xzread($this->_file, 512); - } else { - if ($this->_compress_type == 'none') { - $v_block = @fread($this->_file, 512); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - } - } - } - } - } - return $v_block; - } - - /** - * @param null $p_len - * @return bool - */ - public function _jumpBlock($p_len = null) - { - if (is_resource($this->_file)) { - if ($p_len === null) { - $p_len = 1; - } - - if ($this->_compress_type == 'gz') { - @gzseek($this->_file, gztell($this->_file) + ($p_len * 512)); - } else { - if ($this->_compress_type == 'bz2') { - // ----- Replace missing bztell() and bzseek() - for ($i = 0; $i < $p_len; $i++) { - $this->_readBlock(); - } - } else { - if ($this->_compress_type == 'lzma2') { - // ----- Replace missing xztell() and xzseek() - for ($i = 0; $i < $p_len; $i++) { - $this->_readBlock(); - } - } else { - if ($this->_compress_type == 'none') { - @fseek($this->_file, $p_len * 512, SEEK_CUR); - } else { - $this->_error( - 'Unknown or missing compression type (' - . $this->_compress_type . ')' - ); - } - } - } - } - } - return true; - } - - /** - * @return bool - */ - public function _writeFooter() - { - if (is_resource($this->_file)) { - // ----- Write the last 0 filled block for end of archive - $v_binary_data = pack('a1024', ''); - $this->_writeBlock($v_binary_data); - } - return true; - } - - /** - * @param array $p_list - * @param string $p_add_dir - * @param string $p_remove_dir - * @return bool - */ - public function _addList($p_list, $p_add_dir, $p_remove_dir) - { - $v_result = true; - $v_header = array(); - - // ----- Remove potential windows directory separator - $p_add_dir = $this->_translateWinPath($p_add_dir); - $p_remove_dir = $this->_translateWinPath($p_remove_dir, false); - - if (!$this->_file) { - $this->_error('Invalid file descriptor'); - return false; - } - - if (sizeof($p_list) == 0) { - return true; - } - - foreach ($p_list as $v_filename) { - if (!$v_result) { - break; - } - - // ----- Skip the current tar name - if ($v_filename == $this->_tarname) { - continue; - } - - if ($v_filename == '') { - continue; - } - - // ----- ignore files and directories matching the ignore regular expression - if ($this->_ignore_regexp && preg_match($this->_ignore_regexp, '/' . $v_filename)) { - $this->_warning("File '$v_filename' ignored"); - continue; - } - - if (!file_exists($v_filename) && !is_link($v_filename)) { - $this->_warning("File '$v_filename' does not exist"); - continue; - } - - // ----- Add the file or directory header - if (!$this->_addFile($v_filename, $v_header, $p_add_dir, $p_remove_dir)) { - return false; - } - - if (@is_dir($v_filename) && !@is_link($v_filename)) { - if (!($p_hdir = opendir($v_filename))) { - $this->_warning("Directory '$v_filename' can not be read"); - continue; - } - while (false !== ($p_hitem = readdir($p_hdir))) { - if (($p_hitem != '.') && ($p_hitem != '..')) { - if ($v_filename != ".") { - $p_temp_list[0] = $v_filename . '/' . $p_hitem; - } else { - $p_temp_list[0] = $p_hitem; - } - - $v_result = $this->_addList( - $p_temp_list, - $p_add_dir, - $p_remove_dir - ); - } - } - - unset($p_temp_list); - unset($p_hdir); - unset($p_hitem); - } - } - - return $v_result; - } - - /** - * @param string $p_filename - * @param mixed $p_header - * @param string $p_add_dir - * @param string $p_remove_dir - * @param null $v_stored_filename - * @return bool - */ - public function _addFile($p_filename, &$p_header, $p_add_dir, $p_remove_dir, $v_stored_filename = null) - { - if (!$this->_file) { - $this->_error('Invalid file descriptor'); - return false; - } - - if ($p_filename == '') { - $this->_error('Invalid file name'); - return false; - } - - if (is_null($v_stored_filename)) { - // ----- Calculate the stored filename - $p_filename = $this->_translateWinPath($p_filename, false); - $v_stored_filename = $p_filename; - - if (strcmp($p_filename, $p_remove_dir) == 0) { - return true; - } - - if ($p_remove_dir != '') { - if (substr($p_remove_dir, -1) != '/') { - $p_remove_dir .= '/'; - } - - if (substr($p_filename, 0, strlen($p_remove_dir)) == $p_remove_dir) { - $v_stored_filename = substr($p_filename, strlen($p_remove_dir)); - } - } - - $v_stored_filename = $this->_translateWinPath($v_stored_filename); - if ($p_add_dir != '') { - if (substr($p_add_dir, -1) == '/') { - $v_stored_filename = $p_add_dir . $v_stored_filename; - } else { - $v_stored_filename = $p_add_dir . '/' . $v_stored_filename; - } - } - - $v_stored_filename = $this->_pathReduction($v_stored_filename); - } - - if ($this->_isArchive($p_filename)) { - if (($v_file = @fopen($p_filename, "rb")) == 0) { - $this->_warning( - "Unable to open file '" . $p_filename - . "' in binary read mode" - ); - return true; - } - - if (!$this->_writeHeader($p_filename, $v_stored_filename)) { - return false; - } - - while (($v_buffer = fread($v_file, 512)) != '') { - $v_binary_data = pack("a512", "$v_buffer"); - $this->_writeBlock($v_binary_data); - } - - fclose($v_file); - } else { - // ----- Only header for dir - if (!$this->_writeHeader($p_filename, $v_stored_filename)) { - return false; - } - } - - return true; - } - - /** - * @param string $p_filename - * @param string $p_string - * @param bool $p_datetime - * @param array $p_params - * @return bool - */ - public function _addString($p_filename, $p_string, $p_datetime = false, $p_params = array()) - { - $p_stamp = @$p_params["stamp"] ? $p_params["stamp"] : ($p_datetime ? $p_datetime : time()); - $p_mode = @$p_params["mode"] ? $p_params["mode"] : 0600; - $p_type = @$p_params["type"] ? $p_params["type"] : ""; - $p_uid = @$p_params["uid"] ? $p_params["uid"] : 0; - $p_gid = @$p_params["gid"] ? $p_params["gid"] : 0; - if (!$this->_file) { - $this->_error('Invalid file descriptor'); - return false; - } - - if ($p_filename == '') { - $this->_error('Invalid file name'); - return false; - } - - // ----- Calculate the stored filename - $p_filename = $this->_translateWinPath($p_filename, false); - - // ----- If datetime is not specified, set current time - if ($p_datetime === false) { - $p_datetime = time(); - } - - if (!$this->_writeHeaderBlock( - $p_filename, - strlen($p_string), - $p_stamp, - $p_mode, - $p_type, - $p_uid, - $p_gid - ) - ) { - return false; - } - - $i = 0; - while (($v_buffer = substr($p_string, (($i++) * 512), 512)) != '') { - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - return true; - } - - /** - * @param string $p_filename - * @param string $p_stored_filename - * @return bool - */ - public function _writeHeader($p_filename, $p_stored_filename) - { - if ($p_stored_filename == '') { - $p_stored_filename = $p_filename; - } - $v_reduce_filename = $this->_pathReduction($p_stored_filename); - - if (strlen($v_reduce_filename) > 99) { - if (!$this->_writeLongHeader($v_reduce_filename)) { - return false; - } - } - - $v_info = lstat($p_filename); - $v_uid = sprintf("%07s", DecOct($v_info[4])); - $v_gid = sprintf("%07s", DecOct($v_info[5])); - $v_perms = sprintf("%07s", DecOct($v_info['mode'] & 000777)); - - $v_mtime = sprintf("%011s", DecOct($v_info['mtime'])); - - $v_linkname = ''; - - if (@is_link($p_filename)) { - $v_typeflag = '2'; - $v_linkname = readlink($p_filename); - $v_size = sprintf("%011s", DecOct(0)); - } elseif (@is_dir($p_filename)) { - $v_typeflag = "5"; - $v_size = sprintf("%011s", DecOct(0)); - } else { - $v_typeflag = '0'; - clearstatcache(); - $v_size = sprintf("%011s", DecOct($v_info['size'])); - } - - $v_magic = 'ustar '; - - $v_version = ' '; - - if (function_exists('posix_getpwuid')) { - $userinfo = posix_getpwuid($v_info[4]); - $groupinfo = posix_getgrgid($v_info[5]); - - $v_uname = $userinfo['name']; - $v_gname = $groupinfo['name']; - } else { - $v_uname = ''; - $v_gname = ''; - } - - $v_devmajor = ''; - - $v_devminor = ''; - - $v_prefix = ''; - - $v_binary_data_first = pack( - "a100a8a8a8a12a12", - $v_reduce_filename, - $v_perms, - $v_uid, - $v_gid, - $v_size, - $v_mtime - ); - $v_binary_data_last = pack( - "a1a100a6a2a32a32a8a8a155a12", - $v_typeflag, - $v_linkname, - $v_magic, - $v_version, - $v_uname, - $v_gname, - $v_devmajor, - $v_devminor, - $v_prefix, - '' - ); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i = 0; $i < 148; $i++) { - $v_checksum += ord(substr($v_binary_data_first, $i, 1)); - } - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i = 148; $i < 156; $i++) { - $v_checksum += ord(' '); - } - // ..... Last part of the header - for ($i = 156, $j = 0; $i < 512; $i++, $j++) { - $v_checksum += ord(substr($v_binary_data_last, $j, 1)); - } - - // ----- Write the first 148 bytes of the header in the archive - $this->_writeBlock($v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%06s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - $this->_writeBlock($v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - $this->_writeBlock($v_binary_data_last, 356); - - return true; - } - - /** - * @param string $p_filename - * @param int $p_size - * @param int $p_mtime - * @param int $p_perms - * @param string $p_type - * @param int $p_uid - * @param int $p_gid - * @return bool - */ - public function _writeHeaderBlock( - $p_filename, - $p_size, - $p_mtime = 0, - $p_perms = 0, - $p_type = '', - $p_uid = 0, - $p_gid = 0 - ) { - $p_filename = $this->_pathReduction($p_filename); - - if (strlen($p_filename) > 99) { - if (!$this->_writeLongHeader($p_filename)) { - return false; - } - } - - if ($p_type == "5") { - $v_size = sprintf("%011s", DecOct(0)); - } else { - $v_size = sprintf("%011s", DecOct($p_size)); - } - - $v_uid = sprintf("%07s", DecOct($p_uid)); - $v_gid = sprintf("%07s", DecOct($p_gid)); - $v_perms = sprintf("%07s", DecOct($p_perms & 000777)); - - $v_mtime = sprintf("%11s", DecOct($p_mtime)); - - $v_linkname = ''; - - $v_magic = 'ustar '; - - $v_version = ' '; - - if (function_exists('posix_getpwuid')) { - $userinfo = posix_getpwuid($p_uid); - $groupinfo = posix_getgrgid($p_gid); - - $v_uname = $userinfo['name']; - $v_gname = $groupinfo['name']; - } else { - $v_uname = ''; - $v_gname = ''; - } - - $v_devmajor = ''; - - $v_devminor = ''; - - $v_prefix = ''; - - $v_binary_data_first = pack( - "a100a8a8a8a12A12", - $p_filename, - $v_perms, - $v_uid, - $v_gid, - $v_size, - $v_mtime - ); - $v_binary_data_last = pack( - "a1a100a6a2a32a32a8a8a155a12", - $p_type, - $v_linkname, - $v_magic, - $v_version, - $v_uname, - $v_gname, - $v_devmajor, - $v_devminor, - $v_prefix, - '' - ); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i = 0; $i < 148; $i++) { - $v_checksum += ord(substr($v_binary_data_first, $i, 1)); - } - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i = 148; $i < 156; $i++) { - $v_checksum += ord(' '); - } - // ..... Last part of the header - for ($i = 156, $j = 0; $i < 512; $i++, $j++) { - $v_checksum += ord(substr($v_binary_data_last, $j, 1)); - } - - // ----- Write the first 148 bytes of the header in the archive - $this->_writeBlock($v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%06s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - $this->_writeBlock($v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - $this->_writeBlock($v_binary_data_last, 356); - - return true; - } - - /** - * @param string $p_filename - * @return bool - */ - public function _writeLongHeader($p_filename) - { - $v_size = sprintf("%11s ", DecOct(strlen($p_filename))); - - $v_typeflag = 'L'; - - $v_linkname = ''; - - $v_magic = ''; - - $v_version = ''; - - $v_uname = ''; - - $v_gname = ''; - - $v_devmajor = ''; - - $v_devminor = ''; - - $v_prefix = ''; - - $v_binary_data_first = pack( - "a100a8a8a8a12a12", - '././@LongLink', - 0, - 0, - 0, - $v_size, - 0 - ); - $v_binary_data_last = pack( - "a1a100a6a2a32a32a8a8a155a12", - $v_typeflag, - $v_linkname, - $v_magic, - $v_version, - $v_uname, - $v_gname, - $v_devmajor, - $v_devminor, - $v_prefix, - '' - ); - - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - for ($i = 0; $i < 148; $i++) { - $v_checksum += ord(substr($v_binary_data_first, $i, 1)); - } - // ..... Ignore the checksum value and replace it by ' ' (space) - for ($i = 148; $i < 156; $i++) { - $v_checksum += ord(' '); - } - // ..... Last part of the header - for ($i = 156, $j = 0; $i < 512; $i++, $j++) { - $v_checksum += ord(substr($v_binary_data_last, $j, 1)); - } - - // ----- Write the first 148 bytes of the header in the archive - $this->_writeBlock($v_binary_data_first, 148); - - // ----- Write the calculated checksum - $v_checksum = sprintf("%06s ", DecOct($v_checksum)); - $v_binary_data = pack("a8", $v_checksum); - $this->_writeBlock($v_binary_data, 8); - - // ----- Write the last 356 bytes of the header in the archive - $this->_writeBlock($v_binary_data_last, 356); - - // ----- Write the filename as content of the block - $i = 0; - while (($v_buffer = substr($p_filename, (($i++) * 512), 512)) != '') { - $v_binary_data = pack("a512", "$v_buffer"); - $this->_writeBlock($v_binary_data); - } - - return true; - } - - /** - * @param mixed $v_binary_data - * @param mixed $v_header - * @return bool - */ - public function _readHeader($v_binary_data, &$v_header) - { - if (strlen($v_binary_data) == 0) { - $v_header['filename'] = ''; - return true; - } - - if (strlen($v_binary_data) != 512) { - $v_header['filename'] = ''; - $this->_error('Invalid block size : ' . strlen($v_binary_data)); - return false; - } - - if (!is_array($v_header)) { - $v_header = array(); - } - // ----- Calculate the checksum - $v_checksum = 0; - // ..... First part of the header - $v_binary_split = str_split($v_binary_data); - $v_checksum += array_sum(array_map('ord', array_slice($v_binary_split, 0, 148))); - $v_checksum += array_sum(array_map('ord', array(' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',))); - $v_checksum += array_sum(array_map('ord', array_slice($v_binary_split, 156, 512))); - - - $v_data = unpack($this->_fmt, $v_binary_data); - - if (strlen($v_data["prefix"]) > 0) { - $v_data["filename"] = "$v_data[prefix]/$v_data[filename]"; - } - - // ----- Extract the checksum - $v_header['checksum'] = OctDec(trim($v_data['checksum'])); - if ($v_header['checksum'] != $v_checksum) { - $v_header['filename'] = ''; - - // ----- Look for last block (empty block) - if (($v_checksum == 256) && ($v_header['checksum'] == 0)) { - return true; - } - - $this->_error( - 'Invalid checksum for file "' . $v_data['filename'] - . '" : ' . $v_checksum . ' calculated, ' - . $v_header['checksum'] . ' expected' - ); - return false; - } - - // ----- Extract the properties - $v_header['filename'] = rtrim($v_data['filename'], "\0"); - if ($this->_maliciousFilename($v_header['filename'])) { - $this->_error( - 'Malicious .tar detected, file "' . $v_header['filename'] . - '" will not install in desired directory tree' - ); - return false; - } - $v_header['mode'] = OctDec(trim($v_data['mode'])); - $v_header['uid'] = OctDec(trim($v_data['uid'])); - $v_header['gid'] = OctDec(trim($v_data['gid'])); - $v_header['size'] = $this->_tarRecToSize($v_data['size']); - $v_header['mtime'] = OctDec(trim($v_data['mtime'])); - if (($v_header['typeflag'] = $v_data['typeflag']) == "5") { - $v_header['size'] = 0; - } - $v_header['link'] = trim($v_data['link']); - /* ----- All these fields are removed form the header because - they do not carry interesting info - $v_header[magic] = trim($v_data[magic]); - $v_header[version] = trim($v_data[version]); - $v_header[uname] = trim($v_data[uname]); - $v_header[gname] = trim($v_data[gname]); - $v_header[devmajor] = trim($v_data[devmajor]); - $v_header[devminor] = trim($v_data[devminor]); - */ - - return true; - } - - /** - * Convert Tar record size to actual size - * - * @param string $tar_size - * @return size of tar record in bytes - */ - private function _tarRecToSize($tar_size) - { - /* - * First byte of size has a special meaning if bit 7 is set. - * - * Bit 7 indicates base-256 encoding if set. - * Bit 6 is the sign bit. - * Bits 5:0 are most significant value bits. - */ - $ch = ord($tar_size[0]); - if ($ch & 0x80) { - // Full 12-bytes record is required. - $rec_str = $tar_size . "\x00"; - - $size = ($ch & 0x40) ? -1 : 0; - $size = ($size << 6) | ($ch & 0x3f); - - for ($num_ch = 1; $num_ch < 12; ++$num_ch) { - $size = ($size * 256) + ord($rec_str[$num_ch]); - } - - return $size; - - } else { - return OctDec(trim($tar_size)); - } - } - - /** - * Detect and report a malicious file name - * - * @param string $file - * - * @return bool - */ - private function _maliciousFilename($file) - { - if (strpos($file, '/../') !== false) { - return true; - } - if (strpos($file, '../') === 0) { - return true; - } - return false; - } - - /** - * @param $v_header - * @return bool - */ - public function _readLongHeader(&$v_header) - { - $v_filename = ''; - $v_filesize = $v_header['size']; - $n = floor($v_header['size'] / 512); - for ($i = 0; $i < $n; $i++) { - $v_content = $this->_readBlock(); - $v_filename .= $v_content; - } - if (($v_header['size'] % 512) != 0) { - $v_content = $this->_readBlock(); - $v_filename .= $v_content; - } - - // ----- Read the next header - $v_binary_data = $this->_readBlock(); - - if (!$this->_readHeader($v_binary_data, $v_header)) { - return false; - } - - $v_filename = rtrim(substr($v_filename, 0, $v_filesize), "\0"); - $v_header['filename'] = $v_filename; - if ($this->_maliciousFilename($v_filename)) { - $this->_error( - 'Malicious .tar detected, file "' . $v_filename . - '" will not install in desired directory tree' - ); - return false; - } - - return true; - } - - /** - * This method extract from the archive one file identified by $p_filename. - * The return value is a string with the file content, or null on error. - * - * @param string $p_filename The path of the file to extract in a string. - * - * @return a string with the file content or null. - */ - private function _extractInString($p_filename) - { - $v_result_str = ""; - - while (strlen($v_binary_data = $this->_readBlock()) != 0) { - if (!$this->_readHeader($v_binary_data, $v_header)) { - return null; - } - - if ($v_header['filename'] == '') { - continue; - } - - // ----- Look for long filename - if ($v_header['typeflag'] == 'L') { - if (!$this->_readLongHeader($v_header)) { - return null; - } - } - - if ($v_header['filename'] == $p_filename) { - if ($v_header['typeflag'] == "5") { - $this->_error( - 'Unable to extract in string a directory ' - . 'entry {' . $v_header['filename'] . '}' - ); - return null; - } else { - $n = floor($v_header['size'] / 512); - for ($i = 0; $i < $n; $i++) { - $v_result_str .= $this->_readBlock(); - } - if (($v_header['size'] % 512) != 0) { - $v_content = $this->_readBlock(); - $v_result_str .= substr( - $v_content, - 0, - ($v_header['size'] % 512) - ); - } - return $v_result_str; - } - } else { - $this->_jumpBlock(ceil(($v_header['size'] / 512))); - } - } - - return null; - } - - /** - * @param string $p_path - * @param string $p_list_detail - * @param string $p_mode - * @param string $p_file_list - * @param string $p_remove_path - * @param bool $p_preserve - * @return bool - */ - public function _extractList( - $p_path, - &$p_list_detail, - $p_mode, - $p_file_list, - $p_remove_path, - $p_preserve = false - ) { - $v_result = true; - $v_nb = 0; - $v_extract_all = true; - $v_listing = false; - - $p_path = $this->_translateWinPath($p_path, false); - if ($p_path == '' || (substr($p_path, 0, 1) != '/' - && substr($p_path, 0, 3) != "../" && !strpos($p_path, ':')) - ) { - $p_path = "./" . $p_path; - } - $p_remove_path = $this->_translateWinPath($p_remove_path); - - // ----- Look for path to remove format (should end by /) - if (($p_remove_path != '') && (substr($p_remove_path, -1) != '/')) { - $p_remove_path .= '/'; - } - $p_remove_path_size = strlen($p_remove_path); - - switch ($p_mode) { - case "complete" : - $v_extract_all = true; - $v_listing = false; - break; - case "partial" : - $v_extract_all = false; - $v_listing = false; - break; - case "list" : - $v_extract_all = false; - $v_listing = true; - break; - default : - $this->_error('Invalid extract mode (' . $p_mode . ')'); - return false; - } - - clearstatcache(); - - while (strlen($v_binary_data = $this->_readBlock()) != 0) { - $v_extract_file = false; - $v_extraction_stopped = 0; - - if (!$this->_readHeader($v_binary_data, $v_header)) { - return false; - } - - if ($v_header['filename'] == '') { - continue; - } - - // ----- Look for long filename - if ($v_header['typeflag'] == 'L') { - if (!$this->_readLongHeader($v_header)) { - return false; - } - } - - // ignore extended / pax headers - if ($v_header['typeflag'] == 'x' || $v_header['typeflag'] == 'g') { - $this->_jumpBlock(ceil(($v_header['size'] / 512))); - continue; - } - - if ((!$v_extract_all) && (is_array($p_file_list))) { - // ----- By default no unzip if the file is not found - $v_extract_file = false; - - for ($i = 0; $i < sizeof($p_file_list); $i++) { - // ----- Look if it is a directory - if (substr($p_file_list[$i], -1) == '/') { - // ----- Look if the directory is in the filename path - if ((strlen($v_header['filename']) > strlen($p_file_list[$i])) - && (substr($v_header['filename'], 0, strlen($p_file_list[$i])) - == $p_file_list[$i]) - ) { - $v_extract_file = true; - break; - } - } // ----- It is a file, so compare the file names - elseif ($p_file_list[$i] == $v_header['filename']) { - $v_extract_file = true; - break; - } - } - } else { - $v_extract_file = true; - } - - // ----- Look if this file need to be extracted - if (($v_extract_file) && (!$v_listing)) { - if (($p_remove_path != '') - && (substr($v_header['filename'] . '/', 0, $p_remove_path_size) - == $p_remove_path) - ) { - $v_header['filename'] = substr( - $v_header['filename'], - $p_remove_path_size - ); - if ($v_header['filename'] == '') { - continue; - } - } - if (($p_path != './') && ($p_path != '/')) { - while (substr($p_path, -1) == '/') { - $p_path = substr($p_path, 0, strlen($p_path) - 1); - } - - if (substr($v_header['filename'], 0, 1) == '/') { - $v_header['filename'] = $p_path . $v_header['filename']; - } else { - $v_header['filename'] = $p_path . '/' . $v_header['filename']; - } - } - if (file_exists($v_header['filename'])) { - if ((@is_dir($v_header['filename'])) - && ($v_header['typeflag'] == '') - ) { - $this->_error( - 'File ' . $v_header['filename'] - . ' already exists as a directory' - ); - return false; - } - if (($this->_isArchive($v_header['filename'])) - && ($v_header['typeflag'] == "5") - ) { - $this->_error( - 'Directory ' . $v_header['filename'] - . ' already exists as a file' - ); - return false; - } - if (!is_writeable($v_header['filename'])) { - $this->_error( - 'File ' . $v_header['filename'] - . ' already exists and is write protected' - ); - return false; - } - if (filemtime($v_header['filename']) > $v_header['mtime']) { - // To be completed : An error or silent no replace ? - } - } // ----- Check the directory availability and create it if necessary - elseif (($v_result - = $this->_dirCheck( - ($v_header['typeflag'] == "5" - ? $v_header['filename'] - : dirname($v_header['filename'])) - )) != 1 - ) { - $this->_error('Unable to create path for ' . $v_header['filename']); - return false; - } - - if ($v_extract_file) { - if ($v_header['typeflag'] == "5") { - if (!@file_exists($v_header['filename'])) { - if (!@mkdir($v_header['filename'], 0777)) { - $this->_error( - 'Unable to create directory {' - . $v_header['filename'] . '}' - ); - return false; - } - } - } elseif ($v_header['typeflag'] == "2") { - if (@file_exists($v_header['filename'])) { - @unlink($v_header['filename']); - } - if (!@symlink($v_header['link'], $v_header['filename'])) { - $this->_error( - 'Unable to extract symbolic link {' - . $v_header['filename'] . '}' - ); - return false; - } - } else { - if (($v_dest_file = @fopen($v_header['filename'], "wb")) == 0) { - $this->_error( - 'Error while opening {' . $v_header['filename'] - . '} in write binary mode' - ); - return false; - } else { - $n = floor($v_header['size'] / 512); - for ($i = 0; $i < $n; $i++) { - $v_content = $this->_readBlock(); - fwrite($v_dest_file, $v_content, 512); - } - if (($v_header['size'] % 512) != 0) { - $v_content = $this->_readBlock(); - fwrite($v_dest_file, $v_content, ($v_header['size'] % 512)); - } - - @fclose($v_dest_file); - - if ($p_preserve) { - @chown($v_header['filename'], $v_header['uid']); - @chgrp($v_header['filename'], $v_header['gid']); - } - - // ----- Change the file mode, mtime - @touch($v_header['filename'], $v_header['mtime']); - if ($v_header['mode'] & 0111) { - // make file executable, obey umask - $mode = fileperms($v_header['filename']) | (~umask() & 0111); - @chmod($v_header['filename'], $mode); - } - } - - // ----- Check the file size - clearstatcache(); - if (!is_file($v_header['filename'])) { - $this->_error( - 'Extracted file ' . $v_header['filename'] - . 'does not exist. Archive may be corrupted.' - ); - return false; - } - - $filesize = filesize($v_header['filename']); - if ($filesize != $v_header['size']) { - $this->_error( - 'Extracted file ' . $v_header['filename'] - . ' does not have the correct file size \'' - . $filesize - . '\' (' . $v_header['size'] - . ' expected). Archive may be corrupted.' - ); - return false; - } - } - } else { - $this->_jumpBlock(ceil(($v_header['size'] / 512))); - } - } else { - $this->_jumpBlock(ceil(($v_header['size'] / 512))); - } - - /* TBC : Seems to be unused ... - if ($this->_compress) - $v_end_of_file = @gzeof($this->_file); - else - $v_end_of_file = @feof($this->_file); - */ - - if ($v_listing || $v_extract_file || $v_extraction_stopped) { - // ----- Log extracted files - if (($v_file_dir = dirname($v_header['filename'])) - == $v_header['filename'] - ) { - $v_file_dir = ''; - } - if ((substr($v_header['filename'], 0, 1) == '/') && ($v_file_dir == '')) { - $v_file_dir = '/'; - } - - $p_list_detail[$v_nb++] = $v_header; - if (is_array($p_file_list) && (count($p_list_detail) == count($p_file_list))) { - return true; - } - } - } - - return true; - } - - /** - * @return bool - */ - public function _openAppend() - { - if (filesize($this->_tarname) == 0) { - return $this->_openWrite(); - } - - if ($this->_compress) { - $this->_close(); - - if (!@rename($this->_tarname, $this->_tarname . ".tmp")) { - $this->_error( - 'Error while renaming \'' . $this->_tarname - . '\' to temporary file \'' . $this->_tarname - . '.tmp\'' - ); - return false; - } - - if ($this->_compress_type == 'gz') { - $v_temp_tar = @gzopen($this->_tarname . ".tmp", "rb"); - } elseif ($this->_compress_type == 'bz2') { - $v_temp_tar = @bzopen($this->_tarname . ".tmp", "r"); - } elseif ($this->_compress_type == 'lzma2') { - $v_temp_tar = @xzopen($this->_tarname . ".tmp", "r"); - } - - - if ($v_temp_tar == 0) { - $this->_error( - 'Unable to open file \'' . $this->_tarname - . '.tmp\' in binary read mode' - ); - @rename($this->_tarname . ".tmp", $this->_tarname); - return false; - } - - if (!$this->_openWrite()) { - @rename($this->_tarname . ".tmp", $this->_tarname); - return false; - } - - if ($this->_compress_type == 'gz') { - $end_blocks = 0; - - while (!@gzeof($v_temp_tar)) { - $v_buffer = @gzread($v_temp_tar, 512); - if ($v_buffer == ARCHIVE_TAR_END_BLOCK || strlen($v_buffer) == 0) { - $end_blocks++; - // do not copy end blocks, we will re-make them - // after appending - continue; - } elseif ($end_blocks > 0) { - for ($i = 0; $i < $end_blocks; $i++) { - $this->_writeBlock(ARCHIVE_TAR_END_BLOCK); - } - $end_blocks = 0; - } - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - @gzclose($v_temp_tar); - } elseif ($this->_compress_type == 'bz2') { - $end_blocks = 0; - - while (strlen($v_buffer = @bzread($v_temp_tar, 512)) > 0) { - if ($v_buffer == ARCHIVE_TAR_END_BLOCK || strlen($v_buffer) == 0) { - $end_blocks++; - // do not copy end blocks, we will re-make them - // after appending - continue; - } elseif ($end_blocks > 0) { - for ($i = 0; $i < $end_blocks; $i++) { - $this->_writeBlock(ARCHIVE_TAR_END_BLOCK); - } - $end_blocks = 0; - } - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - @bzclose($v_temp_tar); - } elseif ($this->_compress_type == 'lzma2') { - $end_blocks = 0; - - while (strlen($v_buffer = @xzread($v_temp_tar, 512)) > 0) { - if ($v_buffer == ARCHIVE_TAR_END_BLOCK || strlen($v_buffer) == 0) { - $end_blocks++; - // do not copy end blocks, we will re-make them - // after appending - continue; - } elseif ($end_blocks > 0) { - for ($i = 0; $i < $end_blocks; $i++) { - $this->_writeBlock(ARCHIVE_TAR_END_BLOCK); - } - $end_blocks = 0; - } - $v_binary_data = pack("a512", $v_buffer); - $this->_writeBlock($v_binary_data); - } - - @xzclose($v_temp_tar); - } - - if (!@unlink($this->_tarname . ".tmp")) { - $this->_error( - 'Error while deleting temporary file \'' - . $this->_tarname . '.tmp\'' - ); - } - } else { - // ----- For not compressed tar, just add files before the last - // one or two 512 bytes block - if (!$this->_openReadWrite()) { - return false; - } - - clearstatcache(); - $v_size = filesize($this->_tarname); - - // We might have zero, one or two end blocks. - // The standard is two, but we should try to handle - // other cases. - fseek($this->_file, $v_size - 1024); - if (fread($this->_file, 512) == ARCHIVE_TAR_END_BLOCK) { - fseek($this->_file, $v_size - 1024); - } elseif (fread($this->_file, 512) == ARCHIVE_TAR_END_BLOCK) { - fseek($this->_file, $v_size - 512); - } - } - - return true; - } - - /** - * @param $p_filelist - * @param string $p_add_dir - * @param string $p_remove_dir - * @return bool - */ - public function _append($p_filelist, $p_add_dir = '', $p_remove_dir = '') - { - if (!$this->_openAppend()) { - return false; - } - - if ($this->_addList($p_filelist, $p_add_dir, $p_remove_dir)) { - $this->_writeFooter(); - } - - $this->_close(); - - return true; - } - - /** - * Check if a directory exists and create it (including parent - * dirs) if not. - * - * @param string $p_dir directory to check - * - * @return bool true if the directory exists or was created - */ - public function _dirCheck($p_dir) - { - clearstatcache(); - if ((@is_dir($p_dir)) || ($p_dir == '')) { - return true; - } - - $p_parent_dir = dirname($p_dir); - - if (($p_parent_dir != $p_dir) && - ($p_parent_dir != '') && - (!$this->_dirCheck($p_parent_dir)) - ) { - return false; - } - - if (!@mkdir($p_dir, 0777)) { - $this->_error("Unable to create directory '$p_dir'"); - return false; - } - - return true; - } - - /** - * Compress path by changing for example "/dir/foo/../bar" to "/dir/bar", - * rand emove double slashes. - * - * @param string $p_dir path to reduce - * - * @return string reduced path - */ - private function _pathReduction($p_dir) - { - $v_result = ''; - - // ----- Look for not empty path - if ($p_dir != '') { - // ----- Explode path by directory names - $v_list = explode('/', $p_dir); - - // ----- Study directories from last to first - for ($i = sizeof($v_list) - 1; $i >= 0; $i--) { - // ----- Look for current path - if ($v_list[$i] == ".") { - // ----- Ignore this directory - // Should be the first $i=0, but no check is done - } else { - if ($v_list[$i] == "..") { - // ----- Ignore it and ignore the $i-1 - $i--; - } else { - if (($v_list[$i] == '') - && ($i != (sizeof($v_list) - 1)) - && ($i != 0) - ) { - // ----- Ignore only the double '//' in path, - // but not the first and last / - } else { - $v_result = $v_list[$i] . ($i != (sizeof($v_list) - 1) ? '/' - . $v_result : ''); - } - } - } - } - } - - if (defined('OS_WINDOWS') && OS_WINDOWS) { - $v_result = strtr($v_result, '\\', '/'); - } - - return $v_result; - } - - /** - * @param $p_path - * @param bool $p_remove_disk_letter - * @return string - */ - public function _translateWinPath($p_path, $p_remove_disk_letter = true) - { - if (defined('OS_WINDOWS') && OS_WINDOWS) { - // ----- Look for potential disk letter - if (($p_remove_disk_letter) - && (($v_position = strpos($p_path, ':')) != false) - ) { - $p_path = substr($p_path, $v_position + 1); - } - // ----- Change potential windows directory separator - if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0, 1) == '\\')) { - $p_path = strtr($p_path, '\\', '/'); - } - } - return $p_path; - } -} diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2.php deleted file mode 100644 index 66afce09..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2.php +++ /dev/null @@ -1,1053 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * A class representing an URL as per RFC 3986. - */ -require_once 'Net/URL2.php'; - -/** - * Exception class for HTTP_Request2 package - */ -require_once 'HTTP/Request2/Exception.php'; - -/** - * Class representing a HTTP request message - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - * @link http://tools.ietf.org/html/rfc2616#section-5 - */ -class HTTP_Request2 implements SplSubject -{ - /** - * #@+ - * Constants for HTTP request methods - * - * @link http://tools.ietf.org/html/rfc2616#section-5.1.1 - */ - const METHOD_OPTIONS = 'OPTIONS'; - const METHOD_GET = 'GET'; - const METHOD_HEAD = 'HEAD'; - const METHOD_POST = 'POST'; - const METHOD_PUT = 'PUT'; - const METHOD_DELETE = 'DELETE'; - const METHOD_TRACE = 'TRACE'; - const METHOD_CONNECT = 'CONNECT'; - /** - * #@- - */ - - /** - * #@+ - * Constants for HTTP authentication schemes - * - * @link http://tools.ietf.org/html/rfc2617 - */ - const AUTH_BASIC = 'basic'; - const AUTH_DIGEST = 'digest'; - /** - * #@- - */ - - /** - * Regular expression used to check for invalid symbols in RFC 2616 tokens - * - * @link http://pear.php.net/bugs/bug.php?id=15630 - */ - const REGEXP_INVALID_TOKEN = '![\x00-\x1f\x7f-\xff()<>@,;:\\\\"/\[\]?={}\s]!'; - - /** - * Regular expression used to check for invalid symbols in cookie strings - * - * @link http://pear.php.net/bugs/bug.php?id=15630 - * @link http://web.archive.org/web/20080331104521/http://cgi.netscape.com/newsref/std/cookie_spec.html - */ - const REGEXP_INVALID_COOKIE = '/[\s,;]/'; - - /** - * Fileinfo magic database resource - * - * @var resource - * @see detectMimeType() - */ - private static $_fileinfoDb; - - /** - * Observers attached to the request (instances of SplObserver) - * - * @var array - */ - protected $observers = []; - - /** - * Request URL - * - * @var Net_URL2 - */ - protected $url; - - /** - * Request method - * - * @var string - */ - protected $method = self::METHOD_GET; - - /** - * Authentication data - * - * @var array - * @see getAuth() - */ - protected $auth; - - /** - * Request headers - * - * @var array - */ - protected $headers = []; - - /** - * Configuration parameters - * - * @var array - * @see setConfig() - */ - protected $config = [ - 'adapter' => 'HTTP_Request2_Adapter_Socket', - 'connect_timeout' => 10, - 'timeout' => 0, - 'use_brackets' => true, - 'protocol_version' => '1.1', - 'buffer_size' => 16384, - 'store_body' => true, - 'local_ip' => null, - - 'proxy_host' => '', - 'proxy_port' => '', - 'proxy_user' => '', - 'proxy_password' => '', - 'proxy_auth_scheme' => self::AUTH_BASIC, - 'proxy_type' => 'http', - - 'ssl_verify_peer' => true, - 'ssl_verify_host' => true, - 'ssl_cafile' => null, - 'ssl_capath' => null, - 'ssl_local_cert' => null, - 'ssl_passphrase' => null, - - 'digest_compat_ie' => false, - - 'follow_redirects' => false, - 'max_redirects' => 5, - 'strict_redirects' => false - ]; - - /** - * Last event in request / response handling, intended for observers - * - * @var array - * @see getLastEvent() - */ - protected $lastEvent = [ - 'name' => 'start', - 'data' => null - ]; - - /** - * Request body - * - * @var string|resource - * @see setBody() - */ - protected $body = ''; - - /** - * Array of POST parameters - * - * @var array - */ - protected $postParams = []; - - /** - * Array of file uploads (for multipart/form-data POST requests) - * - * @var array - */ - protected $uploads = []; - - /** - * Adapter used to perform actual HTTP request - * - * @var HTTP_Request2_Adapter - */ - protected $adapter; - - /** - * Cookie jar to persist cookies between requests - * - * @var HTTP_Request2_CookieJar - */ - protected $cookieJar = null; - - /** - * Constructor. Can set request URL, method and configuration array. - * - * Also sets a default value for User-Agent header. - * - * @param string|Net_Url2 $url Request URL - * @param string $method Request method - * @param array $config Configuration for this Request instance - */ - public function __construct( - $url = null, $method = self::METHOD_GET, array $config = [] - ) { - $this->setConfig($config); - if (!empty($url)) { - $this->setUrl($url); - } - if (!empty($method)) { - $this->setMethod($method); - } - $this->setHeader( - 'user-agent', 'HTTP_Request2/2.5.1 ' . - '(https://github.com/pear/HTTP_Request2) PHP/' . phpversion() - ); - } - - /** - * Sets the URL for this request - * - * If the URL has userinfo part (username & password) these will be removed - * and converted to auth data. If the URL does not have a path component, - * that will be set to '/'. - * - * @param string|Net_URL2 $url Request URL - * - * @return $this - * @throws HTTP_Request2_LogicException - */ - public function setUrl($url) - { - if (is_string($url)) { - $url = new Net_URL2( - $url, [Net_URL2::OPTION_USE_BRACKETS => $this->config['use_brackets']] - ); - } - if (!$url instanceof Net_URL2) { - throw new HTTP_Request2_LogicException( - 'Parameter is not a valid HTTP URL', - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - // URL contains username / password? - if ($url->getUserinfo()) { - $username = $url->getUser(); - $password = $url->getPassword(); - $this->setAuth(rawurldecode($username), $password? rawurldecode($password): ''); - $url->setUserinfo(''); - } - if ('' == $url->getPath()) { - $url->setPath('/'); - } - $this->url = $url; - - return $this; - } - - /** - * Returns the request URL - * - * @return Net_URL2 - */ - public function getUrl() - { - return $this->url; - } - - /** - * Sets the request method - * - * @param string $method one of the methods defined in RFC 2616 - * - * @return $this - * @throws HTTP_Request2_LogicException if the method name is invalid - */ - public function setMethod($method) - { - // Method name should be a token: http://tools.ietf.org/html/rfc2616#section-5.1.1 - if (preg_match(self::REGEXP_INVALID_TOKEN, $method)) { - throw new HTTP_Request2_LogicException( - "Invalid request method '{$method}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - $this->method = $method; - - return $this; - } - - /** - * Returns the request method - * - * @return string - */ - public function getMethod() - { - return $this->method; - } - - /** - * Sets the configuration parameter(s) - * - * The following parameters are available: - *
    - *
  • 'adapter' - adapter to use (string)
  • - *
  • 'connect_timeout' - Connection timeout in seconds (integer)
  • - *
  • 'timeout' - Total number of seconds a request can take. - * Use 0 for no limit, should be greater than - * 'connect_timeout' if set (integer)
  • - *
  • 'use_brackets' - Whether to append [] to array variable names (bool)
  • - *
  • 'protocol_version' - HTTP Version to use, '1.0' or '1.1' (string)
  • - *
  • 'buffer_size' - Buffer size to use for reading and writing (int)
  • - *
  • 'store_body' - Whether to store response body in response object. - * Set to false if receiving a huge response and - * using an Observer to save it (boolean)
  • - *
  • 'local_ip' - Specifies the IP address that will be used for accessing - * the network (string)
  • - *
  • 'proxy_type' - Proxy type, 'http' or 'socks5' (string)
  • - *
  • 'proxy_host' - Proxy server host (string)
  • - *
  • 'proxy_port' - Proxy server port (integer)
  • - *
  • 'proxy_user' - Proxy auth username (string)
  • - *
  • 'proxy_password' - Proxy auth password (string)
  • - *
  • 'proxy_auth_scheme' - Proxy auth scheme, one of HTTP_Request2::AUTH_* constants (string)
  • - *
  • 'proxy' - Shorthand for proxy_* parameters, proxy given as URL, - * e.g. 'socks5://localhost:1080/' (string)
  • - *
  • 'ssl_verify_peer' - Whether to verify peer's SSL certificate (bool)
  • - *
  • 'ssl_verify_host' - Whether to check that Common Name in SSL - * certificate matches host name (bool)
  • - *
  • 'ssl_cafile' - Cerificate Authority file to verify the peer - * with (use with 'ssl_verify_peer') (string)
  • - *
  • 'ssl_capath' - Directory holding multiple Certificate - * Authority files (string)
  • - *
  • 'ssl_local_cert' - Name of a file containing local cerificate (string)
  • - *
  • 'ssl_passphrase' - Passphrase with which local certificate - * was encoded (string)
  • - *
  • 'digest_compat_ie' - Whether to imitate behaviour of MSIE 5 and 6 - * in using URL without query string in digest - * authentication (boolean)
  • - *
  • 'follow_redirects' - Whether to automatically follow HTTP Redirects (boolean)
  • - *
  • 'max_redirects' - Maximum number of redirects to follow (integer)
  • - *
  • 'strict_redirects' - Whether to keep request method on redirects via status 301 and - * 302 (true, needed for compatibility with RFC 2616) - * or switch to GET (false, needed for compatibility with most - * browsers) (boolean)
  • - *
- * - * @param string|array $nameOrConfig configuration parameter name or array - * ('parameter name' => 'parameter value') - * @param mixed $value parameter value if $nameOrConfig is not an array - * - * @return $this - * @throws HTTP_Request2_LogicException If the parameter is unknown - */ - public function setConfig($nameOrConfig, $value = null) - { - if (is_array($nameOrConfig)) { - foreach ($nameOrConfig as $name => $value) { - $this->setConfig($name, $value); - } - - } elseif ('proxy' == $nameOrConfig) { - $url = new Net_URL2($value); - $this->setConfig( - [ - 'proxy_type' => $url->getScheme(), - 'proxy_host' => $url->getHost(), - 'proxy_port' => $url->getPort(), - 'proxy_user' => rawurldecode($url->getUser()), - 'proxy_password' => rawurldecode($url->getPassword()) - ] - ); - - } else { - if (!array_key_exists($nameOrConfig, $this->config)) { - throw new HTTP_Request2_LogicException( - "Unknown configuration parameter '{$nameOrConfig}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - $this->config[$nameOrConfig] = $value; - } - - return $this; - } - - /** - * Returns the value(s) of the configuration parameter(s) - * - * @param string $name parameter name - * - * @return mixed value of $name parameter, array of all configuration - * parameters if $name is not given - * @throws HTTP_Request2_LogicException If the parameter is unknown - */ - public function getConfig($name = null) - { - if (null === $name) { - return $this->config; - } elseif (!array_key_exists($name, $this->config)) { - throw new HTTP_Request2_LogicException( - "Unknown configuration parameter '{$name}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - return $this->config[$name]; - } - - /** - * Sets the authentication data - * - * @param string $user user name - * @param string $password password - * @param string $scheme authentication scheme - * - * @return $this - */ - public function setAuth($user, $password = '', $scheme = self::AUTH_BASIC) - { - if (empty($user)) { - $this->auth = null; - } else { - $this->auth = [ - 'user' => (string)$user, - 'password' => (string)$password, - 'scheme' => $scheme - ]; - } - - return $this; - } - - /** - * Returns the authentication data - * - * The array has the keys 'user', 'password' and 'scheme', where 'scheme' - * is one of the HTTP_Request2::AUTH_* constants. - * - * @return array - */ - public function getAuth() - { - return $this->auth; - } - - /** - * Sets request header(s) - * - * The first parameter may be either a full header string 'header: value' or - * header name. In the former case $value parameter is ignored, in the latter - * the header's value will either be set to $value or the header will be - * removed if $value is null. The first parameter can also be an array of - * headers, in that case method will be called recursively. - * - * Note that headers are treated case insensitively as per RFC 2616. - * - * - * $req->setHeader('Foo: Bar'); // sets the value of 'Foo' header to 'Bar' - * $req->setHeader('FoO', 'Baz'); // sets the value of 'Foo' header to 'Baz' - * $req->setHeader(array('foo' => 'Quux')); // sets the value of 'Foo' header to 'Quux' - * $req->setHeader('FOO'); // removes 'Foo' header from request - * - * - * @param string|array $name header name, header string ('Header: value') - * or an array of headers - * @param string|array|null $value header value if $name is not an array, - * header will be removed if value is null - * @param bool $replace whether to replace previous header with the - * same name or append to its value - * - * @return $this - * @throws HTTP_Request2_LogicException - */ - public function setHeader($name, $value = null, $replace = true) - { - if (is_array($name)) { - foreach ($name as $k => $v) { - if (is_string($k)) { - $this->setHeader($k, $v, $replace); - } else { - $this->setHeader($v, null, $replace); - } - } - } else { - if (null === $value && strpos($name, ':')) { - list($name, $value) = array_map('trim', explode(':', $name, 2)); - } - // Header name should be a token: http://tools.ietf.org/html/rfc2616#section-4.2 - if (preg_match(self::REGEXP_INVALID_TOKEN, $name)) { - throw new HTTP_Request2_LogicException( - "Invalid header name '{$name}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - // Header names are case insensitive anyway - $name = strtolower($name); - if (null === $value) { - unset($this->headers[$name]); - - } else { - if (is_array($value)) { - $value = implode(', ', array_map('trim', $value)); - } elseif (is_string($value)) { - $value = trim($value); - } - if (!isset($this->headers[$name]) || $replace) { - $this->headers[$name] = $value; - } else { - $this->headers[$name] .= ', ' . $value; - } - } - } - - return $this; - } - - /** - * Returns the request headers - * - * The array is of the form ('header name' => 'header value'), header names - * are lowercased - * - * @return array - */ - public function getHeaders() - { - return $this->headers; - } - - /** - * Adds a cookie to the request - * - * If the request does not have a CookieJar object set, this method simply - * appends a cookie to "Cookie:" header. - * - * If a CookieJar object is available, the cookie is stored in that object. - * Data from request URL will be used for setting its 'domain' and 'path' - * parameters, 'expires' and 'secure' will be set to null and false, - * respectively. If you need further control, use CookieJar's methods. - * - * @param string $name cookie name - * @param string $value cookie value - * - * @return $this - * @throws HTTP_Request2_LogicException - * @see setCookieJar() - */ - public function addCookie($name, $value) - { - if (!empty($this->cookieJar)) { - $this->cookieJar->store( - ['name' => $name, 'value' => $value], $this->url - ); - - } else { - $cookie = $name . '=' . $value; - if (preg_match(self::REGEXP_INVALID_COOKIE, $cookie)) { - throw new HTTP_Request2_LogicException( - "Invalid cookie: '{$cookie}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - $cookies = empty($this->headers['cookie'])? '': $this->headers['cookie'] . '; '; - $this->setHeader('cookie', $cookies . $cookie); - } - - return $this; - } - - /** - * Sets the request body - * - * If you provide file pointer rather than file name, it should support - * fstat() and rewind() operations. - * - * @param string|resource|HTTP_Request2_MultipartBody $body Either a - * string with the body or filename containing body or - * pointer to an open file or object with multipart body data - * @param bool $isFilename Whether - * first parameter is a filename - * - * @return $this - * @throws HTTP_Request2_LogicException - */ - public function setBody($body, $isFilename = false) - { - if (!$isFilename && !is_resource($body)) { - if (!$body instanceof HTTP_Request2_MultipartBody) { - $this->body = (string)$body; - } else { - $this->body = $body; - } - } else { - $fileData = $this->fopenWrapper($body, empty($this->headers['content-type'])); - $this->body = $fileData['fp']; - if (empty($this->headers['content-type'])) { - $this->setHeader('content-type', $fileData['type']); - } - } - $this->postParams = $this->uploads = []; - - return $this; - } - - /** - * Returns the request body - * - * @return string|resource|HTTP_Request2_MultipartBody - */ - public function getBody() - { - if (self::METHOD_POST == $this->method - && (!empty($this->postParams) || !empty($this->uploads)) - ) { - if (0 === strpos($this->headers['content-type'], 'application/x-www-form-urlencoded')) { - $body = http_build_query($this->postParams, '', '&'); - if (!$this->getConfig('use_brackets')) { - $body = preg_replace('/%5B\d+%5D=/', '=', $body); - } - // support RFC 3986 by not encoding '~' symbol (request #15368) - return str_replace('%7E', '~', $body); - - } elseif (0 === strpos($this->headers['content-type'], 'multipart/form-data')) { - require_once 'HTTP/Request2/MultipartBody.php'; - return new HTTP_Request2_MultipartBody( - $this->postParams, $this->uploads, $this->getConfig('use_brackets') - ); - } - } - return $this->body; - } - - /** - * Adds a file to form-based file upload - * - * Used to emulate file upload via a HTML form. The method also sets - * Content-Type of HTTP request to 'multipart/form-data'. - * - * If you just want to send the contents of a file as the body of HTTP - * request you should use setBody() method. - * - * If you provide file pointers rather than file names, they should support - * fstat() and rewind() operations. - * - * @param string $fieldName name of file-upload field - * @param string|resource|array $filename full name of local file, - * pointer to open file or an array of files - * @param string $sendFilename filename to send in the request - * @param string $contentType content-type of file being uploaded - * - * @return $this - * @throws HTTP_Request2_LogicException - */ - public function addUpload( - $fieldName, $filename, $sendFilename = null, $contentType = null - ) { - if (!is_array($filename)) { - $fileData = $this->fopenWrapper($filename, empty($contentType)); - $this->uploads[$fieldName] = [ - 'fp' => $fileData['fp'], - 'filename' => !empty($sendFilename)? $sendFilename - :(is_string($filename)? basename($filename): 'anonymous.blob') , - 'size' => $fileData['size'], - 'type' => empty($contentType)? $fileData['type']: $contentType - ]; - } else { - $fps = $names = $sizes = $types = []; - foreach ($filename as $f) { - if (!is_array($f)) { - $f = [$f]; - } - $fileData = $this->fopenWrapper($f[0], empty($f[2])); - $fps[] = $fileData['fp']; - $names[] = !empty($f[1])? $f[1] - :(is_string($f[0])? basename($f[0]): 'anonymous.blob'); - $sizes[] = $fileData['size']; - $types[] = empty($f[2])? $fileData['type']: $f[2]; - } - $this->uploads[$fieldName] = [ - 'fp' => $fps, 'filename' => $names, 'size' => $sizes, 'type' => $types - ]; - } - if (empty($this->headers['content-type']) - || 'application/x-www-form-urlencoded' == $this->headers['content-type'] - ) { - $this->setHeader('content-type', 'multipart/form-data'); - } - - return $this; - } - - /** - * Adds POST parameter(s) to the request. - * - * @param string|array $name parameter name or array ('name' => 'value') - * @param mixed $value parameter value (can be an array) - * - * @return $this - */ - public function addPostParameter($name, $value = null) - { - if (!is_array($name)) { - $this->postParams[$name] = $value; - } else { - foreach ($name as $k => $v) { - $this->addPostParameter($k, $v); - } - } - if (empty($this->headers['content-type'])) { - $this->setHeader('content-type', 'application/x-www-form-urlencoded'); - } - - return $this; - } - - #[ReturnTypeWillChange] - /** - * Attaches a new observer - * - * @param SplObserver $observer any object implementing SplObserver - * - * @return void - */ - public function attach(SplObserver $observer) - { - foreach ($this->observers as $attached) { - if ($attached === $observer) { - return; - } - } - $this->observers[] = $observer; - } - - #[ReturnTypeWillChange] - /** - * Detaches an existing observer - * - * @param SplObserver $observer any object implementing SplObserver - * - * @return void - */ - public function detach(SplObserver $observer) - { - foreach ($this->observers as $key => $attached) { - if ($attached === $observer) { - unset($this->observers[$key]); - return; - } - } - } - - #[ReturnTypeWillChange] - /** - * Notifies all observers - * - * @return void - */ - public function notify() - { - foreach ($this->observers as $observer) { - $observer->update($this); - } - } - - /** - * Sets the last event - * - * Adapters should use this method to set the current state of the request - * and notify the observers. - * - * @param string $name event name - * @param mixed $data event data - * - * @return void - */ - public function setLastEvent($name, $data = null) - { - $this->lastEvent = [ - 'name' => $name, - 'data' => $data - ]; - $this->notify(); - } - - /** - * Returns the last event - * - * Observers should use this method to access the last change in request. - * The following event names are possible: - *
    - *
  • 'connect' - after connection to remote server, - * data is the destination (string)
  • - *
  • 'disconnect' - after disconnection from server
  • - *
  • 'sentHeaders' - after sending the request headers, - * data is the headers sent (string)
  • - *
  • 'sentBodyPart' - after sending a part of the request body, - * data is the length of that part (int)
  • - *
  • 'sentBody' - after sending the whole request body, - * data is request body length (int)
  • - *
  • 'receivedHeaders' - after receiving the response headers, - * data is HTTP_Request2_Response object
  • - *
  • 'receivedBodyPart' - after receiving a part of the response - * body, data is that part (string)
  • - *
  • 'receivedEncodedBodyPart' - as 'receivedBodyPart', but data is still - * encoded by Content-Encoding
  • - *
  • 'receivedBody' - after receiving the complete response - * body, data is HTTP_Request2_Response object
  • - *
  • 'warning' - a problem arose during the request - * that is not severe enough to throw - * an Exception, data is the warning - * message (string). Currently dispatched if - * response body was received incompletely.
  • - *
- * Different adapters may not send all the event types. Mock adapter does - * not send any events to the observers. - * - * @return array The array has two keys: 'name' and 'data' - */ - public function getLastEvent() - { - return $this->lastEvent; - } - - /** - * Sets the adapter used to actually perform the request - * - * You can pass either an instance of a class implementing HTTP_Request2_Adapter - * or a class name. The method will only try to include a file if the class - * name starts with HTTP_Request2_Adapter_, it will also try to prepend this - * prefix to the class name if it doesn't contain any underscores, so that - * - * $request->setAdapter('curl'); - * - * will work. - * - * @param string|HTTP_Request2_Adapter $adapter Adapter to use - * - * @return $this - * @throws HTTP_Request2_LogicException - */ - public function setAdapter($adapter) - { - if (is_string($adapter)) { - if (!class_exists($adapter, false)) { - if (false === strpos($adapter, '_')) { - $adapter = 'HTTP_Request2_Adapter_' . ucfirst($adapter); - } - if (!class_exists($adapter, true) - && preg_match('/^HTTP_Request2_Adapter_([a-zA-Z0-9]+)$/', $adapter) - ) { - include_once str_replace('_', DIRECTORY_SEPARATOR, $adapter) . '.php'; - } - if (!class_exists($adapter, false)) { - throw new HTTP_Request2_LogicException( - "Class {$adapter} not found", - HTTP_Request2_Exception::MISSING_VALUE - ); - } - } - $adapter = new $adapter; - } - if (!$adapter instanceof HTTP_Request2_Adapter) { - throw new HTTP_Request2_LogicException( - 'Parameter is not a HTTP request adapter', - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - $this->adapter = $adapter; - - return $this; - } - - /** - * Sets the cookie jar - * - * A cookie jar is used to maintain cookies across HTTP requests and - * responses. Cookies from jar will be automatically added to the request - * headers based on request URL. - * - * @param HTTP_Request2_CookieJar|bool $jar Existing CookieJar object, true to - * create a new one, false to remove - * - * @return $this - * @throws HTTP_Request2_LogicException - */ - public function setCookieJar($jar = true) - { - require_once 'HTTP/Request2/CookieJar.php'; - - if ($jar instanceof HTTP_Request2_CookieJar) { - $this->cookieJar = $jar; - } elseif (true === $jar) { - $this->cookieJar = new HTTP_Request2_CookieJar(); - } elseif (!$jar) { - $this->cookieJar = null; - } else { - throw new HTTP_Request2_LogicException( - 'Invalid parameter passed to setCookieJar()', - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - - return $this; - } - - /** - * Returns current CookieJar object or null if none - * - * @return HTTP_Request2_CookieJar|null - */ - public function getCookieJar() - { - return $this->cookieJar; - } - - /** - * Sends the request and returns the response - * - * @throws HTTP_Request2_Exception - * @return HTTP_Request2_Response - */ - public function send() - { - // Sanity check for URL - if (!$this->url instanceof Net_URL2 - || !$this->url->isAbsolute() - || !in_array(strtolower($this->url->getScheme()), ['https', 'http']) - ) { - throw new HTTP_Request2_LogicException( - 'HTTP_Request2 needs an absolute HTTP(S) request URL, ' - . ($this->url instanceof Net_URL2 - ? "'" . $this->url->__toString() . "'" : 'none') - . ' given', - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - if (empty($this->adapter)) { - $this->setAdapter($this->getConfig('adapter')); - } - // force using single byte encoding if mbstring extension overloads - // strlen() and substr(); see bug #1781, bug #10605 - if (extension_loaded('mbstring') && (2 & ini_get('mbstring.func_overload'))) { - $oldEncoding = mb_internal_encoding(); - mb_internal_encoding('8bit'); - } - - try { - return $this->adapter->sendRequest($this); - } finally { // phpcs:ignore PHPCompatibility.Keywords.NewKeywords.t_finallyFound - if (!empty($oldEncoding)) { - mb_internal_encoding($oldEncoding); - } - } - } - - /** - * Wrapper around fopen()/fstat() used by setBody() and addUpload() - * - * @param string|resource $file file name or pointer to open file - * @param bool $detectType whether to try autodetecting MIME - * type of file, will only work if $file is a - * filename, not pointer - * - * @return array array('fp' => file pointer, 'size' => file size, 'type' => MIME type) - * @throws HTTP_Request2_LogicException - */ - protected function fopenWrapper($file, $detectType = false) - { - if (!is_string($file) && !is_resource($file)) { - throw new HTTP_Request2_LogicException( - "Filename or file pointer resource expected", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - $fileData = [ - 'fp' => is_string($file)? null: $file, - 'type' => 'application/octet-stream', - 'size' => 0 - ]; - if (is_string($file)) { - if (!($fileData['fp'] = @fopen($file, 'rb'))) { - $error = error_get_last(); - throw new HTTP_Request2_LogicException( - $error['message'], HTTP_Request2_Exception::READ_ERROR - ); - } - if ($detectType) { - $fileData['type'] = self::detectMimeType($file); - } - } - if (!($stat = fstat($fileData['fp']))) { - throw new HTTP_Request2_LogicException( - "fstat() call failed", HTTP_Request2_Exception::READ_ERROR - ); - } - $fileData['size'] = $stat['size']; - - return $fileData; - } - - /** - * Tries to detect MIME type of a file - * - * The method will try to use fileinfo extension if it is available, - * deprecated mime_content_type() function in the other case. If neither - * works, default 'application/octet-stream' MIME type is returned - * - * @param string $filename file name - * - * @return string file MIME type - */ - protected static function detectMimeType($filename) - { - // finfo extension from PECL available - if (function_exists('finfo_open')) { - if (!isset(self::$_fileinfoDb)) { - self::$_fileinfoDb = @finfo_open(FILEINFO_MIME); - } - if (self::$_fileinfoDb) { - $info = finfo_file(self::$_fileinfoDb, $filename); - } - } - // (deprecated) mime_content_type function available - if (empty($info) && function_exists('mime_content_type')) { - $info = mime_content_type($filename); - } - return empty($info)? 'application/octet-stream': $info; - } -} -?> diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter.php deleted file mode 100644 index 28bb1b0b..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter.php +++ /dev/null @@ -1,143 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Class representing a HTTP response - */ -require_once 'HTTP/Request2/Response.php'; - -/** - * Base class for HTTP_Request2 adapters - * - * HTTP_Request2 class itself only defines methods for aggregating the request - * data, all actual work of sending the request to the remote server and - * receiving its response is performed by adapters. - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -abstract class HTTP_Request2_Adapter -{ - /** - * A list of methods that MUST NOT have a request body, per RFC 2616 - * - * @var array - */ - protected static $bodyDisallowed = ['TRACE']; - - /** - * Methods having defined semantics for request body - * - * Content-Length header (indicating that the body follows, section 4.3 of - * RFC 2616) will be sent for these methods even if no body was added - * - * @var array - * @link http://pear.php.net/bugs/bug.php?id=12900 - * @link http://pear.php.net/bugs/bug.php?id=14740 - */ - protected static $bodyRequired = ['POST', 'PUT']; - - /** - * Request being sent - * - * @var HTTP_Request2 - */ - protected $request; - - /** - * Request body - * - * @var string|resource|HTTP_Request2_MultipartBody - * @see HTTP_Request2::getBody() - */ - protected $requestBody; - - /** - * Length of the request body - * - * @var integer - */ - protected $contentLength; - - /** - * Sends request to the remote server and returns its response - * - * @param HTTP_Request2 $request HTTP request message - * - * @return HTTP_Request2_Response - * @throws HTTP_Request2_Exception - */ - abstract public function sendRequest(HTTP_Request2 $request); - - /** - * Calculates length of the request body, adds proper headers - * - * @param array $headers associative array of request headers, this method - * will add proper 'Content-Length' and 'Content-Type' - * headers to this array (or remove them if not needed) - * - * @return void - */ - protected function calculateRequestLength(&$headers) - { - $this->requestBody = $this->request->getBody(); - - if (is_string($this->requestBody)) { - $this->contentLength = strlen($this->requestBody); - } elseif (is_resource($this->requestBody)) { - $stat = fstat($this->requestBody); - $this->contentLength = $stat['size']; - rewind($this->requestBody); - } else { - $this->contentLength = $this->requestBody->getLength(); - $headers['content-type'] = 'multipart/form-data; boundary=' . - $this->requestBody->getBoundary(); - $this->requestBody->rewind(); - } - - if (in_array($this->request->getMethod(), self::$bodyDisallowed) - || 0 == $this->contentLength - ) { - // No body: send a Content-Length header nonetheless (request #12900), - // but do that only for methods that require a body (bug #14740) - if (in_array($this->request->getMethod(), self::$bodyRequired)) { - $headers['content-length'] = 0; - } else { - unset($headers['content-length']); - // if the method doesn't require a body and doesn't have a - // body, don't send a Content-Type header. (request #16799) - unset($headers['content-type']); - } - } else { - if (empty($headers['content-type'])) { - $headers['content-type'] = 'application/x-www-form-urlencoded'; - } - // Content-Length should not be sent for chunked Transfer-Encoding (bug #20125) - if (!isset($headers['transfer-encoding'])) { - $headers['content-length'] = $this->contentLength; - } - } - } -} -?> diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Curl.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Curl.php deleted file mode 100644 index fe9b8e39..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Curl.php +++ /dev/null @@ -1,585 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Base class for HTTP_Request2 adapters - */ -require_once 'HTTP/Request2/Adapter.php'; - -/** - * Adapter for HTTP_Request2 wrapping around cURL extension - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_Adapter_Curl extends HTTP_Request2_Adapter -{ - /** - * Mapping of header names to cURL options - * - * @var array - */ - protected static $headerMap = [ - 'accept-encoding' => CURLOPT_ENCODING, - 'cookie' => CURLOPT_COOKIE, - 'referer' => CURLOPT_REFERER, - 'user-agent' => CURLOPT_USERAGENT - ]; - - /** - * Mapping of SSL context options to cURL options - * - * @var array - */ - protected static $sslContextMap = [ - 'ssl_verify_peer' => CURLOPT_SSL_VERIFYPEER, - 'ssl_cafile' => CURLOPT_CAINFO, - 'ssl_capath' => CURLOPT_CAPATH, - 'ssl_local_cert' => CURLOPT_SSLCERT, - 'ssl_passphrase' => CURLOPT_SSLCERTPASSWD - ]; - - /** - * Mapping of CURLE_* constants to Exception subclasses and error codes - * - * @var array - */ - protected static $errorMap = [ - CURLE_UNSUPPORTED_PROTOCOL => ['HTTP_Request2_MessageException', - HTTP_Request2_Exception::NON_HTTP_REDIRECT], - CURLE_COULDNT_RESOLVE_PROXY => ['HTTP_Request2_ConnectionException'], - CURLE_COULDNT_RESOLVE_HOST => ['HTTP_Request2_ConnectionException'], - CURLE_COULDNT_CONNECT => ['HTTP_Request2_ConnectionException'], - // error returned from write callback - CURLE_WRITE_ERROR => ['HTTP_Request2_MessageException', - HTTP_Request2_Exception::NON_HTTP_REDIRECT], - CURLE_OPERATION_TIMEOUTED => ['HTTP_Request2_MessageException', - HTTP_Request2_Exception::TIMEOUT], - CURLE_HTTP_RANGE_ERROR => ['HTTP_Request2_MessageException'], - CURLE_SSL_CONNECT_ERROR => ['HTTP_Request2_ConnectionException'], - CURLE_LIBRARY_NOT_FOUND => ['HTTP_Request2_LogicException', - HTTP_Request2_Exception::MISCONFIGURATION], - CURLE_FUNCTION_NOT_FOUND => ['HTTP_Request2_LogicException', - HTTP_Request2_Exception::MISCONFIGURATION], - CURLE_ABORTED_BY_CALLBACK => ['HTTP_Request2_MessageException', - HTTP_Request2_Exception::NON_HTTP_REDIRECT], - CURLE_TOO_MANY_REDIRECTS => ['HTTP_Request2_MessageException', - HTTP_Request2_Exception::TOO_MANY_REDIRECTS], - CURLE_SSL_PEER_CERTIFICATE => ['HTTP_Request2_ConnectionException'], - CURLE_GOT_NOTHING => ['HTTP_Request2_MessageException'], - CURLE_SSL_ENGINE_NOTFOUND => ['HTTP_Request2_LogicException', - HTTP_Request2_Exception::MISCONFIGURATION], - CURLE_SSL_ENGINE_SETFAILED => ['HTTP_Request2_LogicException', - HTTP_Request2_Exception::MISCONFIGURATION], - CURLE_SEND_ERROR => ['HTTP_Request2_MessageException'], - CURLE_RECV_ERROR => ['HTTP_Request2_MessageException'], - CURLE_SSL_CERTPROBLEM => ['HTTP_Request2_LogicException', - HTTP_Request2_Exception::INVALID_ARGUMENT], - CURLE_SSL_CIPHER => ['HTTP_Request2_ConnectionException'], - CURLE_SSL_CACERT => ['HTTP_Request2_ConnectionException'], - CURLE_BAD_CONTENT_ENCODING => ['HTTP_Request2_MessageException'], - ]; - - /** - * Response being received - * - * @var HTTP_Request2_Response - */ - protected $response; - - /** - * Whether 'sentHeaders' event was sent to observers - * - * @var boolean - */ - protected $eventSentHeaders = false; - - /** - * Whether 'receivedHeaders' event was sent to observers - * - * @var boolean - */ - protected $eventReceivedHeaders = false; - - /** - * Whether 'sentBoody' event was sent to observers - * - * @var boolean - */ - protected $eventSentBody = false; - - /** - * Position within request body - * - * @var integer - * @see callbackReadBody() - */ - protected $position = 0; - - /** - * Information about last transfer, as returned by curl_getinfo() - * - * @var array - */ - protected $lastInfo; - - /** - * Creates a subclass of HTTP_Request2_Exception from curl error data - * - * @param resource $ch curl handle - * - * @return HTTP_Request2_Exception - */ - protected static function wrapCurlError($ch) - { - $nativeCode = curl_errno($ch); - $message = 'Curl error: ' . curl_error($ch); - if (!isset(self::$errorMap[$nativeCode])) { - return new HTTP_Request2_Exception($message, 0, $nativeCode); - } else { - $class = self::$errorMap[$nativeCode][0]; - $code = empty(self::$errorMap[$nativeCode][1]) - ? 0 : self::$errorMap[$nativeCode][1]; - return new $class($message, $code, $nativeCode); - } - } - - /** - * Sends request to the remote server and returns its response - * - * @param HTTP_Request2 $request HTTP request message - * - * @return HTTP_Request2_Response - * @throws HTTP_Request2_Exception - */ - public function sendRequest(HTTP_Request2 $request) - { - if (!extension_loaded('curl')) { - throw new HTTP_Request2_LogicException( - 'cURL extension not available', HTTP_Request2_Exception::MISCONFIGURATION - ); - } - - $this->request = $request; - $this->response = null; - $this->position = 0; - $this->eventSentHeaders = false; - $this->eventReceivedHeaders = false; - $this->eventSentBody = false; - - try { - if (false === curl_exec($ch = $this->createCurlHandle())) { - throw self::wrapCurlError($ch); - } - } finally { // phpcs:ignore PHPCompatibility.Keywords.NewKeywords.t_finallyFound - if (isset($ch)) { - $this->lastInfo = curl_getinfo($ch); - if (CURLE_OK !== curl_errno($ch)) { - $this->request->setLastEvent('warning', curl_error($ch)); - } - curl_close($ch); - } - $response = $this->response; - unset($this->request, $this->requestBody, $this->response); - } - - if ($jar = $request->getCookieJar()) { - $jar->addCookiesFromResponse($response); - } - - if (0 < $this->lastInfo['size_download']) { - $request->setLastEvent('receivedBody', $response); - } - return $response; - } - - /** - * Returns information about last transfer - * - * @return array associative array as returned by curl_getinfo() - */ - public function getInfo() - { - return $this->lastInfo; - } - - /** - * Creates a new cURL handle and populates it with data from the request - * - * @return resource a cURL handle, as created by curl_init() - * @throws HTTP_Request2_LogicException - * @throws HTTP_Request2_NotImplementedException - */ - protected function createCurlHandle() - { - $ch = curl_init(); - - curl_setopt_array( - $ch, [ - // setup write callbacks - CURLOPT_HEADERFUNCTION => [$this, 'callbackWriteHeader'], - CURLOPT_WRITEFUNCTION => [$this, 'callbackWriteBody'], - // buffer size - CURLOPT_BUFFERSIZE => $this->request->getConfig('buffer_size'), - // connection timeout - CURLOPT_CONNECTTIMEOUT => $this->request->getConfig('connect_timeout'), - // save full outgoing headers, in case someone is interested - CURLINFO_HEADER_OUT => true, - // request url - CURLOPT_URL => $this->request->getUrl()->getUrl() - ] - ); - - // set up redirects - if (!$this->request->getConfig('follow_redirects')) { - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); - } else { - if (!@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true)) { - throw new HTTP_Request2_LogicException( - 'Redirect support in curl is unavailable due to open_basedir or safe_mode setting', - HTTP_Request2_Exception::MISCONFIGURATION - ); - } - curl_setopt($ch, CURLOPT_MAXREDIRS, $this->request->getConfig('max_redirects')); - // limit redirects to http(s), works in 5.2.10+ - if (defined('CURLOPT_REDIR_PROTOCOLS')) { - curl_setopt($ch, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); - } - // works in 5.3.2+, http://bugs.php.net/bug.php?id=49571 - if ($this->request->getConfig('strict_redirects') && defined('CURLOPT_POSTREDIR')) { - curl_setopt($ch, CURLOPT_POSTREDIR, 3); - } - } - - // set local IP via CURLOPT_INTERFACE (request #19515) - if ($ip = $this->request->getConfig('local_ip')) { - curl_setopt($ch, CURLOPT_INTERFACE, $ip); - } - - // request timeout - if ($timeout = $this->request->getConfig('timeout')) { - curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); - } - - // set HTTP version - switch ($this->request->getConfig('protocol_version')) { - case '1.0': - curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); - break; - case '1.1': - curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); - } - - // set request method - switch ($this->request->getMethod()) { - case HTTP_Request2::METHOD_GET: - curl_setopt($ch, CURLOPT_HTTPGET, true); - break; - case HTTP_Request2::METHOD_POST: - curl_setopt($ch, CURLOPT_POST, true); - break; - case HTTP_Request2::METHOD_HEAD: - curl_setopt($ch, CURLOPT_NOBODY, true); - break; - case HTTP_Request2::METHOD_PUT: - curl_setopt($ch, CURLOPT_UPLOAD, true); - break; - default: - curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $this->request->getMethod()); - } - - // set proxy, if needed - if ($host = $this->request->getConfig('proxy_host')) { - if (!($port = $this->request->getConfig('proxy_port'))) { - throw new HTTP_Request2_LogicException( - 'Proxy port not provided', HTTP_Request2_Exception::MISSING_VALUE - ); - } - curl_setopt($ch, CURLOPT_PROXY, $host . ':' . $port); - if ($user = $this->request->getConfig('proxy_user')) { - curl_setopt( - $ch, CURLOPT_PROXYUSERPWD, - $user . ':' . $this->request->getConfig('proxy_password') - ); - switch ($this->request->getConfig('proxy_auth_scheme')) { - case HTTP_Request2::AUTH_BASIC: - curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); - break; - case HTTP_Request2::AUTH_DIGEST: - curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_DIGEST); - } - } - if ($type = $this->request->getConfig('proxy_type')) { - switch ($type) { - case 'http': - curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); - break; - case 'socks5': - curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); - break; - default: - throw new HTTP_Request2_NotImplementedException( - "Proxy type '{$type}' is not supported" - ); - } - } - } - - // set authentication data - if ($auth = $this->request->getAuth()) { - curl_setopt($ch, CURLOPT_USERPWD, $auth['user'] . ':' . $auth['password']); - switch ($auth['scheme']) { - case HTTP_Request2::AUTH_BASIC: - curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); - break; - case HTTP_Request2::AUTH_DIGEST: - curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); - } - } - - // set SSL options - foreach ($this->request->getConfig() as $name => $value) { - if ('ssl_verify_host' == $name && null !== $value) { - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $value? 2: 0); - } elseif (isset(self::$sslContextMap[$name]) && null !== $value) { - curl_setopt($ch, self::$sslContextMap[$name], $value); - } - } - - $headers = $this->request->getHeaders(); - // make cURL automagically send proper header - if (!isset($headers['accept-encoding'])) { - $headers['accept-encoding'] = ''; - } - - if (($jar = $this->request->getCookieJar()) - && ($cookies = $jar->getMatching($this->request->getUrl(), true)) - ) { - $headers['cookie'] = (empty($headers['cookie'])? '': $headers['cookie'] . '; ') . $cookies; - } - - // set headers having special cURL keys - foreach (self::$headerMap as $name => $option) { - if (isset($headers[$name])) { - curl_setopt($ch, $option, $headers[$name]); - unset($headers[$name]); - } - } - - $this->calculateRequestLength($headers); - if (isset($headers['content-length']) || isset($headers['transfer-encoding'])) { - $this->workaroundPhpBug47204($ch, $headers); - } - - // set headers not having special keys - $headersFmt = []; - foreach ($headers as $name => $value) { - $canonicalName = implode('-', array_map('ucfirst', explode('-', $name))); - $headersFmt[] = $canonicalName . ': ' . $value; - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headersFmt); - - return $ch; - } - - /** - * Workaround for PHP bug #47204 that prevents rewinding request body - * - * The workaround consists of reading the entire request body into memory - * and setting it as CURLOPT_POSTFIELDS, so it isn't recommended for large - * file uploads, use Socket adapter instead. - * - * @param resource $ch cURL handle - * @param array $headers Request headers - * - * @return void - */ - protected function workaroundPhpBug47204($ch, &$headers) - { - // no redirects, no digest auth -> probably no rewind needed - // also apply workaround only for POSTs, othrerwise we get - // https://pear.php.net/bugs/bug.php?id=20440 for PUTs - if (!$this->request->getConfig('follow_redirects') - && (!($auth = $this->request->getAuth()) - || HTTP_Request2::AUTH_DIGEST !== $auth['scheme']) - || HTTP_Request2::METHOD_POST !== $this->request->getMethod() - ) { - curl_setopt($ch, CURLOPT_READFUNCTION, [$this, 'callbackReadBody']); - - } else { - // rewind may be needed, read the whole body into memory - if ($this->requestBody instanceof HTTP_Request2_MultipartBody) { - $this->requestBody = $this->requestBody->__toString(); - - } elseif (is_resource($this->requestBody)) { - $fp = $this->requestBody; - $this->requestBody = ''; - while (!feof($fp)) { - $this->requestBody .= fread($fp, 16384); - } - } - // curl hangs up if content-length is present - unset($headers['content-length']); - curl_setopt($ch, CURLOPT_POSTFIELDS, $this->requestBody); - } - } - - /** - * Callback function called by cURL for reading the request body - * - * @param resource $ch cURL handle - * @param resource $fd file descriptor (not used) - * @param integer $length maximum length of data to return - * - * @return string part of the request body, up to $length bytes - */ - protected function callbackReadBody($ch, $fd, $length) - { - if (!$this->eventSentHeaders) { - $this->request->setLastEvent( - 'sentHeaders', curl_getinfo($ch, CURLINFO_HEADER_OUT) - ); - $this->eventSentHeaders = true; - } - if (in_array($this->request->getMethod(), self::$bodyDisallowed) - || 0 == $this->contentLength || $this->position >= $this->contentLength - ) { - return ''; - } - if (is_string($this->requestBody)) { - $string = substr($this->requestBody, $this->position, $length); - } elseif (is_resource($this->requestBody)) { - $string = fread($this->requestBody, $length); - } else { - $string = $this->requestBody->read($length); - } - $this->request->setLastEvent('sentBodyPart', strlen($string)); - $this->position += strlen($string); - return $string; - } - - /** - * Callback function called by cURL for saving the response headers - * - * @param resource $ch cURL handle - * @param string $string response header (with trailing CRLF) - * - * @return integer number of bytes saved - * @see HTTP_Request2_Response::parseHeaderLine() - */ - protected function callbackWriteHeader($ch, $string) - { - if (!$this->eventSentHeaders - // we may receive a second set of headers if doing e.g. digest auth - // but don't bother with 100-Continue responses (bug #15785) - || $this->eventReceivedHeaders && $this->response->getStatus() >= 200 - ) { - $this->request->setLastEvent( - 'sentHeaders', curl_getinfo($ch, CURLINFO_HEADER_OUT) - ); - } - if (!$this->eventSentBody) { - $upload = curl_getinfo($ch, CURLINFO_SIZE_UPLOAD); - // if body wasn't read by the callback, send event with total body size - if ($upload > $this->position) { - $this->request->setLastEvent( - 'sentBodyPart', $upload - $this->position - ); - } - if ($upload > 0) { - $this->request->setLastEvent('sentBody', $upload); - } - } - $this->eventSentHeaders = true; - $this->eventSentBody = true; - - if ($this->eventReceivedHeaders || empty($this->response)) { - $this->eventReceivedHeaders = false; - $this->response = new HTTP_Request2_Response( - $string, false, curl_getinfo($ch, CURLINFO_EFFECTIVE_URL) - ); - - } else { - $this->response->parseHeaderLine($string); - if ('' == trim($string)) { - // don't bother with 100-Continue responses (bug #15785) - if (200 <= $this->response->getStatus()) { - $this->request->setLastEvent('receivedHeaders', $this->response); - } - - if ($this->request->getConfig('follow_redirects') && $this->response->isRedirect()) { - $redirectUrl = new Net_URL2($this->response->getHeader('location')); - - // for versions lower than 5.2.10, check the redirection URL protocol - if (!defined('CURLOPT_REDIR_PROTOCOLS') && $redirectUrl->isAbsolute() - && !in_array($redirectUrl->getScheme(), ['http', 'https']) - ) { - return -1; - } - - if ($jar = $this->request->getCookieJar()) { - $jar->addCookiesFromResponse($this->response); - if (!$redirectUrl->isAbsolute()) { - $redirectUrl = $this->request->getUrl()->resolve($redirectUrl); - } - if ($cookies = $jar->getMatching($redirectUrl, true)) { - curl_setopt($ch, CURLOPT_COOKIE, $cookies); - } - } - } - $this->eventReceivedHeaders = true; - $this->eventSentBody = false; - } - } - return strlen($string); - } - - /** - * Callback function called by cURL for saving the response body - * - * @param resource $ch cURL handle (not used) - * @param string $string part of the response body - * - * @return integer number of bytes saved - * @throws HTTP_Request2_MessageException - * @see HTTP_Request2_Response::appendBody() - */ - protected function callbackWriteBody($ch, $string) - { - // cURL calls WRITEFUNCTION callback without calling HEADERFUNCTION if - // response doesn't start with proper HTTP status line (see bug #15716) - if (empty($this->response)) { - throw new HTTP_Request2_MessageException( - "Malformed response: {$string}", - HTTP_Request2_Exception::MALFORMED_RESPONSE - ); - } - if ($this->request->getConfig('store_body')) { - $this->response->appendBody($string); - } - $this->request->setLastEvent('receivedBodyPart', $string); - return strlen($string); - } -} -?> diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Mock.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Mock.php deleted file mode 100644 index 7ac09b03..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Mock.php +++ /dev/null @@ -1,168 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Base class for HTTP_Request2 adapters - */ -require_once 'HTTP/Request2/Adapter.php'; - -/** - * Mock adapter intended for testing - * - * Can be used to test applications depending on HTTP_Request2 package without - * actually performing any HTTP requests. This adapter will return responses - * previously added via addResponse() - * - * $mock = new HTTP_Request2_Adapter_Mock(); - * $mock->addResponse("HTTP/1.1 ... "); - * - * $request = new HTTP_Request2(); - * $request->setAdapter($mock); - * - * // This will return the response set above - * $response = $req->send(); - * - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_Adapter_Mock extends HTTP_Request2_Adapter -{ - /** - * A queue of responses to be returned by sendRequest() - * - * @var array - */ - protected $responses = []; - - /** - * Returns the next response from the queue built by addResponse() - * - * Only responses without explicit URLs or with URLs equal to request URL - * will be considered. If matching response is not found or the queue is - * empty then default empty response with status 400 will be returned, - * if an Exception object was added to the queue it will be thrown. - * - * @param HTTP_Request2 $request HTTP request message - * - * @return HTTP_Request2_Response - * @throws Exception - */ - public function sendRequest(HTTP_Request2 $request) - { - $requestUrl = (string)$request->getUrl(); - $response = null; - foreach ($this->responses as $k => $v) { - if (!$v[1] || $requestUrl == $v[1]) { - $response = $v[0]; - array_splice($this->responses, $k, 1); - break; - } - } - if (!$response) { - return self::createResponseFromString("HTTP/1.1 400 Bad Request\r\n\r\n"); - - } elseif ($response instanceof HTTP_Request2_Response) { - return $response; - - } else { - // rethrow the exception - $class = get_class($response); - $message = $response->getMessage(); - $code = $response->getCode(); - throw new $class($message, $code); - } - } - - /** - * Adds response to the queue - * - * @param mixed $response either a string, a pointer to an open file, - * an instance of HTTP_Request2_Response or Exception - * @param string $url A request URL this response should be valid for - * (see {@link http://pear.php.net/bugs/bug.php?id=19276}) - * - * @return void - * @throws HTTP_Request2_Exception - */ - public function addResponse($response, $url = null) - { - if (is_string($response)) { - $response = self::createResponseFromString($response); - } elseif (is_resource($response)) { - $response = self::createResponseFromFile($response); - } elseif (!$response instanceof HTTP_Request2_Response - && !$response instanceof Exception - ) { - throw new HTTP_Request2_Exception('Parameter is not a valid response'); - } - $this->responses[] = [$response, $url]; - } - - /** - * Creates a new HTTP_Request2_Response object from a string - * - * @param string $str string containing HTTP response message - * - * @return HTTP_Request2_Response - * @throws HTTP_Request2_Exception - */ - public static function createResponseFromString($str) - { - $parts = preg_split('!(\r?\n){2}!m', $str, 2); - $headerLines = explode("\n", $parts[0]); - $response = new HTTP_Request2_Response(array_shift($headerLines)); - foreach ($headerLines as $headerLine) { - $response->parseHeaderLine($headerLine); - } - $response->parseHeaderLine(''); - if (isset($parts[1])) { - $response->appendBody($parts[1]); - } - return $response; - } - - /** - * Creates a new HTTP_Request2_Response object from a file - * - * @param resource $fp file pointer returned by fopen() - * - * @return HTTP_Request2_Response - * @throws HTTP_Request2_Exception - */ - public static function createResponseFromFile($fp) - { - $response = new HTTP_Request2_Response(fgets($fp)); - do { - $headerLine = fgets($fp); - $response->parseHeaderLine($headerLine); - } while ('' != trim($headerLine)); - - while (!feof($fp)) { - $response->appendBody(fread($fp, 8192)); - } - return $response; - } -} -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Socket.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Socket.php deleted file mode 100644 index 2fab066a..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Adapter/Socket.php +++ /dev/null @@ -1,1146 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** Base class for HTTP_Request2 adapters */ -require_once 'HTTP/Request2/Adapter.php'; - -/** Socket wrapper class */ -require_once 'HTTP/Request2/SocketWrapper.php'; - -/** - * Socket-based adapter for HTTP_Request2 - * - * This adapter uses only PHP sockets and will work on almost any PHP - * environment. Code is based on original HTTP_Request PEAR package. - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_Adapter_Socket extends HTTP_Request2_Adapter -{ - /** - * Regular expression for 'token' rule from RFC 2616 - */ - const REGEXP_TOKEN = '[^\x00-\x1f\x7f-\xff()<>@,;:\\\\"/\[\]?={}\s]+'; - - /** - * Regular expression for 'quoted-string' rule from RFC 2616 - */ - const REGEXP_QUOTED_STRING = '"(?>[^"\\\\]+|\\\\.)*"'; - - /** - * Connected sockets, needed for Keep-Alive support - * - * @var array - * @see connect() - */ - protected static $sockets = []; - - /** - * Data for digest authentication scheme - * - * The keys for the array are URL prefixes. - * - * The values are associative arrays with data (realm, nonce, nonce-count, - * opaque...) needed for digest authentication. Stored here to prevent making - * duplicate requests to digest-protected resources after we have already - * received the challenge. - * - * @var array - */ - protected static $challenges = []; - - /** - * Connected socket - * - * @var HTTP_Request2_SocketWrapper - * @see connect() - */ - protected $socket; - - /** - * Challenge used for server digest authentication - * - * @var array - */ - protected $serverChallenge; - - /** - * Challenge used for proxy digest authentication - * - * @var array - */ - protected $proxyChallenge; - - /** - * Remaining length of the current chunk, when reading chunked response - * - * @var integer - * @see readChunked() - */ - protected $chunkLength = 0; - - /** - * Remaining amount of redirections to follow - * - * Starts at 'max_redirects' configuration parameter and is reduced on each - * subsequent redirect. An Exception will be thrown once it reaches zero. - * - * @var integer - */ - protected $redirectCountdown = null; - - /** - * Whether to wait for "100 Continue" response before sending request body - * - * @var bool - */ - protected $expect100Continue = false; - - /** - * Sends request to the remote server and returns its response - * - * @param HTTP_Request2 $request HTTP request message - * - * @return HTTP_Request2_Response - * @throws HTTP_Request2_Exception - */ - public function sendRequest(HTTP_Request2 $request) - { - $this->request = $request; - - try { - $keepAlive = $this->connect(); - $headers = $this->prepareHeaders(); - $this->socket->write($headers); - // provide request headers to the observer, see request #7633 - $this->request->setLastEvent('sentHeaders', $headers); - - if (!$this->expect100Continue) { - $this->writeBody(); - $response = $this->readResponse(); - - } else { - $response = $this->readResponse(); - if (!$response || 100 == $response->getStatus()) { - $this->expect100Continue = false; - // either got "100 Continue" or timed out -> send body - $this->writeBody(); - $response = $this->readResponse(); - } - } - - - if ($jar = $request->getCookieJar()) { - $jar->addCookiesFromResponse($response); - } - - if (!$this->canKeepAlive($keepAlive, $response)) { - $this->disconnect(); - } - - if ($this->shouldUseProxyDigestAuth($response)) { - return $this->sendRequest($request); - } - if ($this->shouldUseServerDigestAuth($response)) { - return $this->sendRequest($request); - } - if ($authInfo = $response->getHeader('authentication-info')) { - $this->updateChallenge($this->serverChallenge, $authInfo); - } - if ($proxyInfo = $response->getHeader('proxy-authentication-info')) { - $this->updateChallenge($this->proxyChallenge, $proxyInfo); - } - - } catch (Exception $e) { - $this->disconnect(); - $this->redirectCountdown = null; - throw $e; - - } finally { // phpcs:ignore PHPCompatibility.Keywords.NewKeywords.t_finallyFound - unset($this->request, $this->requestBody); - } - - if (!$request->getConfig('follow_redirects') || !$response->isRedirect()) { - $this->redirectCountdown = null; - return $response; - } else { - return $this->handleRedirect($request, $response); - } - } - - /** - * Connects to the remote server - * - * @return bool whether the connection can be persistent - * @throws HTTP_Request2_Exception - */ - protected function connect() - { - $secure = 0 == strcasecmp($this->request->getUrl()->getScheme(), 'https'); - $tunnel = HTTP_Request2::METHOD_CONNECT == $this->request->getMethod(); - $headers = $this->request->getHeaders(); - $reqHost = $this->request->getUrl()->getHost(); - if (!($reqPort = $this->request->getUrl()->getPort())) { - $reqPort = $secure? 443: 80; - } - - $httpProxy = $socksProxy = false; - if (!($host = $this->request->getConfig('proxy_host'))) { - $host = $reqHost; - $port = $reqPort; - } else { - if (!($port = $this->request->getConfig('proxy_port'))) { - throw new HTTP_Request2_LogicException( - 'Proxy port not provided', - HTTP_Request2_Exception::MISSING_VALUE - ); - } - if ('http' == ($type = $this->request->getConfig('proxy_type'))) { - $httpProxy = true; - } elseif ('socks5' == $type) { - $socksProxy = true; - } else { - throw new HTTP_Request2_NotImplementedException( - "Proxy type '{$type}' is not supported" - ); - } - } - - if ($tunnel && !$httpProxy) { - throw new HTTP_Request2_LogicException( - "Trying to perform CONNECT request without proxy", - HTTP_Request2_Exception::MISSING_VALUE - ); - } - if ($secure && !in_array('ssl', stream_get_transports())) { - throw new HTTP_Request2_LogicException( - 'Need OpenSSL support for https:// requests', - HTTP_Request2_Exception::MISCONFIGURATION - ); - } - - // RFC 2068, section 19.7.1: A client MUST NOT send the Keep-Alive - // connection token to a proxy server... - if ($httpProxy && !$secure && !empty($headers['connection']) - && 'Keep-Alive' == $headers['connection'] - ) { - $this->request->setHeader('connection'); - } - - $keepAlive = ('1.1' == $this->request->getConfig('protocol_version') && - empty($headers['connection'])) || - (!empty($headers['connection']) && - 'Keep-Alive' == $headers['connection']); - - $options = []; - if ($ip = $this->request->getConfig('local_ip')) { - $options['socket'] = [ - 'bindto' => (false === strpos($ip, ':') ? $ip : '[' . $ip . ']') . ':0' - ]; - } - if ($secure || $tunnel) { - $options['ssl'] = []; - foreach ($this->request->getConfig() as $name => $value) { - if ('ssl_' == substr($name, 0, 4) && null !== $value) { - if ('ssl_verify_host' == $name) { - $options['ssl']['verify_peer_name'] = $value; - $options['ssl']['peer_name'] = $reqHost; - - } else { - $options['ssl'][substr($name, 4)] = $value; - } - } - } - ksort($options['ssl']); - } - - // Use global request timeout if given, see feature requests #5735, #8964 - if ($timeout = $this->request->getConfig('timeout')) { - $deadline = microtime(true) + $timeout; - } else { - $deadline = null; - } - - // Changing SSL context options after connection is established does *not* - // work, we need a new connection if options change - $remote = ((!$secure || $httpProxy || $socksProxy)? 'tcp://': 'tls://') - . $host . ':' . $port; - $socketKey = $remote . ( - ($secure && $httpProxy || $socksProxy) - ? "->{$reqHost}:{$reqPort}" : '' - ) . (empty($options)? '': ':' . serialize($options)); - unset($this->socket); - - // We use persistent connections and have a connected socket? - // Ensure that the socket is still connected, see bug #16149 - if ($keepAlive && !empty(self::$sockets[$socketKey]) - && !self::$sockets[$socketKey]->eof() - ) { - $this->socket =& self::$sockets[$socketKey]; - - } else { - if ($socksProxy) { - require_once 'HTTP/Request2/SOCKS5.php'; - - $this->socket = new HTTP_Request2_SOCKS5( - $remote, $this->request->getConfig('connect_timeout'), - $options, $this->request->getConfig('proxy_user'), - $this->request->getConfig('proxy_password') - ); - // handle request timeouts ASAP - $this->socket->setDeadline($deadline, $this->request->getConfig('timeout')); - $this->socket->connect($reqHost, $reqPort); - if (!$secure) { - $conninfo = "tcp://{$reqHost}:{$reqPort} via {$remote}"; - } else { - $this->socket->enableCrypto(); - $conninfo = "tls://{$reqHost}:{$reqPort} via {$remote}"; - } - - } elseif ($secure && $httpProxy && !$tunnel) { - $this->establishTunnel(); - $conninfo = "tls://{$reqHost}:{$reqPort} via {$remote}"; - - } else { - $this->socket = new HTTP_Request2_SocketWrapper( - $remote, $this->request->getConfig('connect_timeout'), $options - ); - } - $this->request->setLastEvent('connect', empty($conninfo)? $remote: $conninfo); - self::$sockets[$socketKey] =& $this->socket; - } - $this->socket->setDeadline($deadline, $this->request->getConfig('timeout')); - return $keepAlive; - } - - /** - * Establishes a tunnel to a secure remote server via HTTP CONNECT request - * - * This method will fail if 'ssl_verify_peer' is enabled. Probably because PHP - * sees that we are connected to a proxy server (duh!) rather than the server - * that presents its certificate. - * - * @link http://tools.ietf.org/html/rfc2817#section-5.2 - * - * @return void - * @throws HTTP_Request2_Exception - */ - protected function establishTunnel() - { - $donor = new self; - $connect = new HTTP_Request2( - $this->request->getUrl(), HTTP_Request2::METHOD_CONNECT, - array_merge($this->request->getConfig(), ['adapter' => $donor]) - ); - $response = $connect->send(); - // Need any successful (2XX) response - if (200 > $response->getStatus() || 300 <= $response->getStatus()) { - throw new HTTP_Request2_ConnectionException( - 'Failed to connect via HTTPS proxy. Proxy response: ' . - $response->getStatus() . ' ' . $response->getReasonPhrase() - ); - } - $this->socket = $donor->socket; - $this->socket->enableCrypto(); - } - - /** - * Checks whether current connection may be reused or should be closed - * - * @param boolean $requestKeepAlive whether connection could - * be persistent in the first place - * @param HTTP_Request2_Response $response response object to check - * - * @return boolean - */ - protected function canKeepAlive($requestKeepAlive, HTTP_Request2_Response $response) - { - // Do not close socket on successful CONNECT request - if (HTTP_Request2::METHOD_CONNECT === $this->request->getMethod() - && 200 <= $response->getStatus() && 300 > $response->getStatus() - ) { - return true; - } - - $lengthKnown = 'chunked' === strtolower($response->getHeader('transfer-encoding') ?: '') - || null !== $response->getHeader('content-length') - // no body possible for such responses, see also request #17031 - || HTTP_Request2::METHOD_HEAD === $this->request->getMethod() - || in_array($response->getStatus(), [204, 304]); - $persistent = 'keep-alive' === strtolower($response->getHeader('connection') ?: '') || - (null === $response->getHeader('connection') && - '1.1' === $response->getVersion()); - return $requestKeepAlive && $lengthKnown && $persistent; - } - - /** - * Disconnects from the remote server - * - * @return void - */ - protected function disconnect() - { - if (!empty($this->socket)) { - $this->socket = null; - $this->request->setLastEvent('disconnect'); - } - } - - /** - * Handles HTTP redirection - * - * This method will throw an Exception if redirect to a non-HTTP(S) location - * is attempted, also if number of redirects performed already is equal to - * 'max_redirects' configuration parameter. - * - * @param HTTP_Request2 $request Original request - * @param HTTP_Request2_Response $response Response containing redirect - * - * @return HTTP_Request2_Response Response from a new location - * @throws HTTP_Request2_Exception - */ - protected function handleRedirect( - HTTP_Request2 $request, HTTP_Request2_Response $response - ) { - if (is_null($this->redirectCountdown)) { - $this->redirectCountdown = $request->getConfig('max_redirects'); - } - if (0 == $this->redirectCountdown) { - $this->redirectCountdown = null; - // Copying cURL behaviour - throw new HTTP_Request2_MessageException( - 'Maximum (' . $request->getConfig('max_redirects') . ') redirects followed', - HTTP_Request2_Exception::TOO_MANY_REDIRECTS - ); - } - $redirectUrl = new Net_URL2( - $response->getHeader('location'), - [Net_URL2::OPTION_USE_BRACKETS => $request->getConfig('use_brackets')] - ); - // refuse non-HTTP redirect - if ($redirectUrl->isAbsolute() - && !in_array($redirectUrl->getScheme(), ['http', 'https']) - ) { - $this->redirectCountdown = null; - throw new HTTP_Request2_MessageException( - 'Refusing to redirect to a non-HTTP URL ' . $redirectUrl->__toString(), - HTTP_Request2_Exception::NON_HTTP_REDIRECT - ); - } - // Theoretically URL should be absolute (see http://tools.ietf.org/html/rfc2616#section-14.30), - // but in practice it is often not - if (!$redirectUrl->isAbsolute()) { - $redirectUrl = $request->getUrl()->resolve($redirectUrl); - } - $redirect = clone $request; - $redirect->setUrl($redirectUrl); - if (303 == $response->getStatus() - || (!$request->getConfig('strict_redirects') - && in_array($response->getStatus(), [301, 302])) - ) { - $redirect->setMethod(HTTP_Request2::METHOD_GET); - $redirect->setBody(''); - } - - if (0 < $this->redirectCountdown) { - $this->redirectCountdown--; - } - return $this->sendRequest($redirect); - } - - /** - * Checks whether another request should be performed with server digest auth - * - * Several conditions should be satisfied for it to return true: - * - response status should be 401 - * - auth credentials should be set in the request object - * - response should contain WWW-Authenticate header with digest challenge - * - there is either no challenge stored for this URL or new challenge - * contains stale=true parameter (in other case we probably just failed - * due to invalid username / password) - * - * The method stores challenge values in $challenges static property - * - * @param HTTP_Request2_Response $response response to check - * - * @return boolean whether another request should be performed - * @throws HTTP_Request2_Exception in case of unsupported challenge parameters - */ - protected function shouldUseServerDigestAuth(HTTP_Request2_Response $response) - { - // no sense repeating a request if we don't have credentials - if (401 != $response->getStatus() || !$this->request->getAuth()) { - return false; - } - if (!$challenge = $this->parseDigestChallenge($response->getHeader('www-authenticate'))) { - return false; - } - - $url = $this->request->getUrl(); - $scheme = $url->getScheme(); - $host = $scheme . '://' . $url->getHost(); - if ($port = $url->getPort()) { - if ((0 == strcasecmp($scheme, 'http') && 80 != $port) - || (0 == strcasecmp($scheme, 'https') && 443 != $port) - ) { - $host .= ':' . $port; - } - } - - if (!empty($challenge['domain'])) { - $prefixes = []; - foreach (preg_split('/\\s+/', $challenge['domain']) as $prefix) { - // don't bother with different servers - if ('/' == substr($prefix, 0, 1)) { - $prefixes[] = $host . $prefix; - } - } - } - if (empty($prefixes)) { - $prefixes = [$host . '/']; - } - - $ret = true; - foreach ($prefixes as $prefix) { - if (!empty(self::$challenges[$prefix]) - && (empty($challenge['stale']) || strcasecmp('true', $challenge['stale'])) - ) { - // probably credentials are invalid - $ret = false; - } - self::$challenges[$prefix] =& $challenge; - } - return $ret; - } - - /** - * Checks whether another request should be performed with proxy digest auth - * - * Several conditions should be satisfied for it to return true: - * - response status should be 407 - * - proxy auth credentials should be set in the request object - * - response should contain Proxy-Authenticate header with digest challenge - * - there is either no challenge stored for this proxy or new challenge - * contains stale=true parameter (in other case we probably just failed - * due to invalid username / password) - * - * The method stores challenge values in $challenges static property - * - * @param HTTP_Request2_Response $response response to check - * - * @return boolean whether another request should be performed - * @throws HTTP_Request2_Exception in case of unsupported challenge parameters - */ - protected function shouldUseProxyDigestAuth(HTTP_Request2_Response $response) - { - if (407 != $response->getStatus() || !$this->request->getConfig('proxy_user')) { - return false; - } - if (!($challenge = $this->parseDigestChallenge($response->getHeader('proxy-authenticate')))) { - return false; - } - - $key = 'proxy://' . $this->request->getConfig('proxy_host') . - ':' . $this->request->getConfig('proxy_port'); - - if (!empty(self::$challenges[$key]) - && (empty($challenge['stale']) || strcasecmp('true', $challenge['stale'])) - ) { - $ret = false; - } else { - $ret = true; - } - self::$challenges[$key] = $challenge; - return $ret; - } - - /** - * Extracts digest method challenge from (WWW|Proxy)-Authenticate header value - * - * There is a problem with implementation of RFC 2617: several of the parameters - * are defined as quoted-string there and thus may contain backslash escaped - * double quotes (RFC 2616, section 2.2). However, RFC 2617 defines unq(X) as - * just value of quoted-string X without surrounding quotes, it doesn't speak - * about removing backslash escaping. - * - * Now realm parameter is user-defined and human-readable, strange things - * happen when it contains quotes: - * - Apache allows quotes in realm, but apparently uses realm value without - * backslashes for digest computation - * - Squid allows (manually escaped) quotes there, but it is impossible to - * authorize with either escaped or unescaped quotes used in digest, - * probably it can't parse the response (?) - * - Both IE and Firefox display realm value with backslashes in - * the password popup and apparently use the same value for digest - * - * HTTP_Request2 follows IE and Firefox (and hopefully RFC 2617) in - * quoted-string handling, unfortunately that means failure to authorize - * sometimes - * - * @param string $headerValue value of WWW-Authenticate or Proxy-Authenticate header - * - * @return mixed associative array with challenge parameters, false if - * no challenge is present in header value - * @throws HTTP_Request2_NotImplementedException in case of unsupported challenge parameters - */ - protected function parseDigestChallenge($headerValue) - { - $authParam = '(' . self::REGEXP_TOKEN . ')\\s*=\\s*(' . - self::REGEXP_TOKEN . '|' . self::REGEXP_QUOTED_STRING . ')'; - $challenge = "!(?<=^|\\s|,)Digest ({$authParam}\\s*(,\\s*|$))+!"; - if (!preg_match($challenge, $headerValue, $matches)) { - return false; - } - - preg_match_all('!' . $authParam . '!', $matches[0], $params); - $paramsAry = []; - $knownParams = ['realm', 'domain', 'nonce', 'opaque', 'stale', - 'algorithm', 'qop']; - for ($i = 0; $i < count($params[0]); $i++) { - // section 3.2.1: Any unrecognized directive MUST be ignored. - if (in_array($params[1][$i], $knownParams)) { - if ('"' == substr($params[2][$i], 0, 1)) { - $paramsAry[$params[1][$i]] = substr($params[2][$i], 1, -1); - } else { - $paramsAry[$params[1][$i]] = $params[2][$i]; - } - } - } - // we only support qop=auth - if (!empty($paramsAry['qop']) - && !in_array('auth', array_map('trim', explode(',', $paramsAry['qop']))) - ) { - throw new HTTP_Request2_NotImplementedException( - "Only 'auth' qop is currently supported in digest authentication, " . - "server requested '{$paramsAry['qop']}'" - ); - } - // we only support algorithm=MD5 - if (!empty($paramsAry['algorithm']) && 'MD5' != $paramsAry['algorithm']) { - throw new HTTP_Request2_NotImplementedException( - "Only 'MD5' algorithm is currently supported in digest authentication, " . - "server requested '{$paramsAry['algorithm']}'" - ); - } - - return $paramsAry; - } - - /** - * Parses [Proxy-]Authentication-Info header value and updates challenge - * - * @param array $challenge challenge to update - * @param string $headerValue value of [Proxy-]Authentication-Info header - * - * @return void - * - * @todo validate server rspauth response - */ - protected function updateChallenge(&$challenge, $headerValue) - { - $authParam = '!(' . self::REGEXP_TOKEN . ')\\s*=\\s*(' . - self::REGEXP_TOKEN . '|' . self::REGEXP_QUOTED_STRING . ')!'; - $paramsAry = []; - - preg_match_all($authParam, $headerValue, $params); - for ($i = 0; $i < count($params[0]); $i++) { - if ('"' == substr($params[2][$i], 0, 1)) { - $paramsAry[$params[1][$i]] = substr($params[2][$i], 1, -1); - } else { - $paramsAry[$params[1][$i]] = $params[2][$i]; - } - } - // for now, just update the nonce value - if (!empty($paramsAry['nextnonce'])) { - $challenge['nonce'] = $paramsAry['nextnonce']; - $challenge['nc'] = 1; - } - } - - /** - * Creates a value for [Proxy-]Authorization header when using digest authentication - * - * @param string $user user name - * @param string $password password - * @param string $url request URL - * @param array $challenge digest challenge parameters - * - * @return string value of [Proxy-]Authorization request header - * @link http://tools.ietf.org/html/rfc2617#section-3.2.2 - */ - protected function createDigestResponse($user, $password, $url, &$challenge) - { - if (false !== ($q = strpos($url, '?')) - && $this->request->getConfig('digest_compat_ie') - ) { - $url = substr($url, 0, $q); - } - - $a1 = md5($user . ':' . $challenge['realm'] . ':' . $password); - $a2 = md5($this->request->getMethod() . ':' . $url); - - if (empty($challenge['qop'])) { - $digest = md5($a1 . ':' . $challenge['nonce'] . ':' . $a2); - } else { - $challenge['cnonce'] = 'Req2.' . rand(); - if (empty($challenge['nc'])) { - $challenge['nc'] = 1; - } - $nc = sprintf('%08x', $challenge['nc']++); - $digest = md5( - $a1 . ':' . $challenge['nonce'] . ':' . $nc . ':' . - $challenge['cnonce'] . ':auth:' . $a2 - ); - } - return 'Digest username="' . str_replace(['\\', '"'], ['\\\\', '\\"'], $user) . '", ' . - 'realm="' . $challenge['realm'] . '", ' . - 'nonce="' . $challenge['nonce'] . '", ' . - 'uri="' . $url . '", ' . - 'response="' . $digest . '"' . - (!empty($challenge['opaque'])? - ', opaque="' . $challenge['opaque'] . '"': - '') . - (!empty($challenge['qop'])? - ', qop="auth", nc=' . $nc . ', cnonce="' . $challenge['cnonce'] . '"': - ''); - } - - /** - * Adds 'Authorization' header (if needed) to request headers array - * - * @param array $headers request headers - * @param string $requestHost request host (needed for digest authentication) - * @param string $requestUrl request URL (needed for digest authentication) - * - * @return void - * @throws HTTP_Request2_NotImplementedException - */ - protected function addAuthorizationHeader(&$headers, $requestHost, $requestUrl) - { - if (!($auth = $this->request->getAuth())) { - return; - } - switch ($auth['scheme']) { - case HTTP_Request2::AUTH_BASIC: - $headers['authorization'] = 'Basic ' . base64_encode( - $auth['user'] . ':' . $auth['password'] - ); - break; - - case HTTP_Request2::AUTH_DIGEST: - unset($this->serverChallenge); - $fullUrl = ('/' == $requestUrl[0])? - $this->request->getUrl()->getScheme() . '://' . - $requestHost . $requestUrl: - $requestUrl; - foreach (array_keys(self::$challenges) as $key) { - if ($key == substr($fullUrl, 0, strlen($key))) { - $headers['authorization'] = $this->createDigestResponse( - $auth['user'], $auth['password'], - $requestUrl, self::$challenges[$key] - ); - $this->serverChallenge =& self::$challenges[$key]; - break; - } - } - break; - - default: - throw new HTTP_Request2_NotImplementedException( - "Unknown HTTP authentication scheme '{$auth['scheme']}'" - ); - } - } - - /** - * Adds 'Proxy-Authorization' header (if needed) to request headers array - * - * @param array $headers request headers - * @param string $requestUrl request URL (needed for digest authentication) - * - * @return void - * @throws HTTP_Request2_NotImplementedException - */ - protected function addProxyAuthorizationHeader(&$headers, $requestUrl) - { - if (!$this->request->getConfig('proxy_host') - || !($user = $this->request->getConfig('proxy_user')) - || (0 == strcasecmp('https', $this->request->getUrl()->getScheme()) - && HTTP_Request2::METHOD_CONNECT != $this->request->getMethod()) - ) { - return; - } - - $password = $this->request->getConfig('proxy_password'); - switch ($this->request->getConfig('proxy_auth_scheme')) { - case HTTP_Request2::AUTH_BASIC: - $headers['proxy-authorization'] = 'Basic ' . base64_encode( - $user . ':' . $password - ); - break; - - case HTTP_Request2::AUTH_DIGEST: - unset($this->proxyChallenge); - $proxyUrl = 'proxy://' . $this->request->getConfig('proxy_host') . - ':' . $this->request->getConfig('proxy_port'); - if (!empty(self::$challenges[$proxyUrl])) { - $headers['proxy-authorization'] = $this->createDigestResponse( - $user, $password, - $requestUrl, self::$challenges[$proxyUrl] - ); - $this->proxyChallenge =& self::$challenges[$proxyUrl]; - } - break; - - default: - throw new HTTP_Request2_NotImplementedException( - "Unknown HTTP authentication scheme '" . - $this->request->getConfig('proxy_auth_scheme') . "'" - ); - } - } - - - /** - * Creates the string with the Request-Line and request headers - * - * @return string - * @throws HTTP_Request2_Exception - */ - protected function prepareHeaders() - { - $headers = $this->request->getHeaders(); - $url = $this->request->getUrl(); - $connect = HTTP_Request2::METHOD_CONNECT == $this->request->getMethod(); - $host = $url->getHost(); - - $defaultPort = 0 == strcasecmp($url->getScheme(), 'https')? 443: 80; - if (($port = $url->getPort()) && $port != $defaultPort || $connect) { - $host .= ':' . (empty($port)? $defaultPort: $port); - } - // Do not overwrite explicitly set 'Host' header, see bug #16146 - if (!isset($headers['host'])) { - $headers['host'] = $host; - } - - if ($connect) { - $requestUrl = $host; - - } else { - if (!$this->request->getConfig('proxy_host') - || 'http' != $this->request->getConfig('proxy_type') - || 0 == strcasecmp($url->getScheme(), 'https') - ) { - $requestUrl = ''; - } else { - $requestUrl = $url->getScheme() . '://' . $host; - } - $path = $url->getPath(); - $query = $url->getQuery(); - $requestUrl .= (empty($path)? '/': $path) . (empty($query)? '': '?' . $query); - } - - if ('1.1' == $this->request->getConfig('protocol_version') - && extension_loaded('zlib') && !isset($headers['accept-encoding']) - ) { - $headers['accept-encoding'] = 'gzip, deflate'; - } - if (($jar = $this->request->getCookieJar()) - && ($cookies = $jar->getMatching($this->request->getUrl(), true)) - ) { - $headers['cookie'] = (empty($headers['cookie'])? '': $headers['cookie'] . '; ') . $cookies; - } - - $this->addAuthorizationHeader($headers, $host, $requestUrl); - $this->addProxyAuthorizationHeader($headers, $requestUrl); - $this->calculateRequestLength($headers); - if ('1.1' == $this->request->getConfig('protocol_version')) { - $this->updateExpectHeader($headers); - } else { - $this->expect100Continue = false; - } - - $headersStr = $this->request->getMethod() . ' ' . $requestUrl . ' HTTP/' . - $this->request->getConfig('protocol_version') . "\r\n"; - foreach ($headers as $name => $value) { - $canonicalName = implode('-', array_map('ucfirst', explode('-', $name))); - $headersStr .= $canonicalName . ': ' . $value . "\r\n"; - } - return $headersStr . "\r\n"; - } - - /** - * Adds or removes 'Expect: 100-continue' header from request headers - * - * Also sets the $expect100Continue property. Parsing of existing header - * is somewhat needed due to its complex structure and due to the - * requirement in section 8.2.3 of RFC 2616: - * > A client MUST NOT send an Expect request-header field (section - * > 14.20) with the "100-continue" expectation if it does not intend - * > to send a request body. - * - * @param array $headers Array of headers prepared for the request - * - * @return void - * @throws HTTP_Request2_LogicException - * - * @link http://pear.php.net/bugs/bug.php?id=19233 - * @link http://tools.ietf.org/html/rfc2616#section-8.2.3 - */ - protected function updateExpectHeader(&$headers) - { - $this->expect100Continue = false; - $expectations = []; - if (isset($headers['expect'])) { - if ('' === $headers['expect']) { - // empty 'Expect' header is technically invalid, so just get rid of it - unset($headers['expect']); - return; - } - // build regexp to parse the value of existing Expect header - $expectParam = ';\s*' . self::REGEXP_TOKEN . '(?:\s*=\s*(?:' - . self::REGEXP_TOKEN . '|' - . self::REGEXP_QUOTED_STRING . '))?\s*'; - $expectExtension = self::REGEXP_TOKEN . '(?:\s*=\s*(?:' - . self::REGEXP_TOKEN . '|' - . self::REGEXP_QUOTED_STRING . ')\s*(?:' - . $expectParam . ')*)?'; - $expectItem = '!(100-continue|' . $expectExtension . ')!A'; - - $pos = 0; - $length = strlen($headers['expect']); - - while ($pos < $length) { - $pos += strspn($headers['expect'], " \t", $pos); - if (',' === substr($headers['expect'], $pos, 1)) { - $pos++; - continue; - - } elseif (!preg_match($expectItem, $headers['expect'], $m, 0, $pos)) { - throw new HTTP_Request2_LogicException( - "Cannot parse value '{$headers['expect']}' of Expect header", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - - } else { - $pos += strlen($m[0]); - if (strcasecmp('100-continue', $m[0])) { - $expectations[] = $m[0]; - } - } - } - } - - if (1024 < $this->contentLength) { - $expectations[] = '100-continue'; - $this->expect100Continue = true; - } - - if (empty($expectations)) { - unset($headers['expect']); - } else { - $headers['expect'] = implode(',', $expectations); - } - } - - /** - * Sends the request body - * - * @return void - * @throws HTTP_Request2_MessageException - */ - protected function writeBody() - { - if (in_array($this->request->getMethod(), self::$bodyDisallowed) - || 0 == $this->contentLength - ) { - return; - } - - $position = 0; - $bufferSize = $this->request->getConfig('buffer_size'); - $headers = $this->request->getHeaders(); - $chunked = isset($headers['transfer-encoding']); - while ($position < $this->contentLength) { - if (is_string($this->requestBody)) { - $str = substr($this->requestBody, $position, $bufferSize); - } elseif (is_resource($this->requestBody)) { - $str = fread($this->requestBody, $bufferSize); - } else { - $str = $this->requestBody->read($bufferSize); - } - if (!$chunked) { - $this->socket->write($str); - } else { - $this->socket->write(dechex(strlen($str)) . "\r\n{$str}\r\n"); - } - // Provide the length of written string to the observer, request #7630 - $this->request->setLastEvent('sentBodyPart', strlen($str)); - $position += strlen($str); - } - - // write zero-length chunk - if ($chunked) { - $this->socket->write("0\r\n\r\n"); - } - $this->request->setLastEvent('sentBody', $this->contentLength); - } - - /** - * Reads the remote server's response - * - * @return HTTP_Request2_Response - * @throws HTTP_Request2_Exception - */ - protected function readResponse() - { - $bufferSize = $this->request->getConfig('buffer_size'); - // http://tools.ietf.org/html/rfc2616#section-8.2.3 - // ...the client SHOULD NOT wait for an indefinite period before sending the request body - $timeout = $this->expect100Continue ? 1 : null; - - do { - try { - $response = new HTTP_Request2_Response( - $this->socket->readLine($bufferSize, $timeout), true, $this->request->getUrl() - ); - do { - $headerLine = $this->socket->readLine($bufferSize); - $response->parseHeaderLine($headerLine); - } while ('' != $headerLine); - - } catch (HTTP_Request2_MessageException $e) { - if (HTTP_Request2_Exception::TIMEOUT === $e->getCode() - && $this->expect100Continue - ) { - return null; - } - throw $e; - } - if ($this->expect100Continue && 100 == $response->getStatus()) { - return $response; - } - } while (in_array($response->getStatus(), [100, 101])); - - $this->request->setLastEvent('receivedHeaders', $response); - - // No body possible in such responses - if (HTTP_Request2::METHOD_HEAD == $this->request->getMethod() - || (HTTP_Request2::METHOD_CONNECT == $this->request->getMethod() - && 200 <= $response->getStatus() && 300 > $response->getStatus()) - || in_array($response->getStatus(), [204, 304]) - ) { - return $response; - } - - $chunked = 'chunked' == $response->getHeader('transfer-encoding'); - $length = $response->getHeader('content-length'); - $hasBody = false; - // RFC 2616, section 4.4: - // 3. ... If a message is received with both a - // Transfer-Encoding header field and a Content-Length header field, - // the latter MUST be ignored. - $toRead = ($chunked || null === $length)? null: $length; - $this->chunkLength = 0; - - if ($chunked || null === $length || 0 < intval($length)) { - while (!$this->socket->eof() && (is_null($toRead) || 0 < $toRead)) { - if ($chunked) { - $data = $this->readChunked($bufferSize); - } elseif (is_null($toRead)) { - $data = $this->socket->read($bufferSize); - } else { - $data = $this->socket->read(min($toRead, $bufferSize)); - $toRead -= strlen($data); - } - if ('' == $data && (!$this->chunkLength || $this->socket->eof())) { - break; - } - - $hasBody = true; - if ($this->request->getConfig('store_body')) { - $response->appendBody($data); - } - if (!in_array($response->getHeader('content-encoding'), ['identity', null])) { - $this->request->setLastEvent('receivedEncodedBodyPart', $data); - } else { - $this->request->setLastEvent('receivedBodyPart', $data); - } - } - } - if (0 !== $this->chunkLength || null !== $toRead && $toRead > 0) { - $this->request->setLastEvent( - 'warning', 'transfer closed with outstanding read data remaining' - ); - } - - if ($hasBody) { - $this->request->setLastEvent('receivedBody', $response); - } - return $response; - } - - /** - * Reads a part of response body encoded with chunked Transfer-Encoding - * - * @param int $bufferSize buffer size to use for reading - * - * @return string - * @throws HTTP_Request2_MessageException - */ - protected function readChunked($bufferSize) - { - // at start of the next chunk? - if (0 == $this->chunkLength) { - $line = $this->socket->readLine($bufferSize); - if ('' === $line && $this->socket->eof()) { - $this->chunkLength = -1; // indicate missing chunk - return ''; - - } elseif (!preg_match('/^([0-9a-f]+)/i', $line, $matches)) { - throw new HTTP_Request2_MessageException( - "Cannot decode chunked response, invalid chunk length '{$line}'", - HTTP_Request2_Exception::DECODE_ERROR - ); - - } else { - $this->chunkLength = hexdec($matches[1]); - // Chunk with zero length indicates the end - if (0 == $this->chunkLength) { - $this->socket->readLine($bufferSize); - return ''; - } - } - } - $data = $this->socket->read(min($this->chunkLength, $bufferSize)); - $this->chunkLength -= strlen($data); - if (0 == $this->chunkLength) { - $this->socket->readLine($bufferSize); // Trailing CRLF - } - return $data; - } -} - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/ConnectionException.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/ConnectionException.php deleted file mode 100644 index 3e06c939..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/ConnectionException.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Exception thrown when connection to a web or proxy server fails - * - * The exception will not contain a package error code, but will contain - * native error code, as returned by stream_socket_client() or curl_errno(). - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_ConnectionException extends HTTP_Request2_Exception -{ -} - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/CookieJar.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/CookieJar.php deleted file mode 100644 index 8d1829ec..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/CookieJar.php +++ /dev/null @@ -1,578 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** Class representing a HTTP request message */ -require_once 'HTTP/Request2.php'; - -/** - * Stores cookies and passes them between HTTP requests - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: @package_version@ - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_CookieJar implements Serializable -{ - /** - * Array of stored cookies - * - * The array is indexed by domain, path and cookie name - * .example.com - * / - * some_cookie => cookie data - * /subdir - * other_cookie => cookie data - * .example.org - * ... - * - * @var array - */ - protected $cookies = []; - - /** - * Whether session cookies should be serialized when serializing the jar - * - * @var bool - */ - protected $serializeSession = false; - - /** - * Whether Public Suffix List should be used for domain matching - * - * @var bool - */ - protected $useList = true; - - /** - * Whether an attempt to store an invalid cookie should be ignored, rather than cause an Exception - * - * @var bool - */ - protected $ignoreInvalid = false; - - /** - * Array with Public Suffix List data - * - * @var array - * @link http://publicsuffix.org/ - */ - protected static $psl = []; - - /** - * Class constructor, sets various options - * - * @param bool $serializeSessionCookies Controls serializing session cookies, - * see {@link serializeSessionCookies()} - * @param bool $usePublicSuffixList Controls using Public Suffix List, - * see {@link usePublicSuffixList()} - * @param bool $ignoreInvalidCookies Whether invalid cookies should be ignored, - * see {@link ignoreInvalidCookies()} - */ - public function __construct( - $serializeSessionCookies = false, $usePublicSuffixList = true, - $ignoreInvalidCookies = false - ) { - $this->serializeSessionCookies($serializeSessionCookies); - $this->usePublicSuffixList($usePublicSuffixList); - $this->ignoreInvalidCookies($ignoreInvalidCookies); - } - - /** - * Returns current time formatted in ISO-8601 at UTC timezone - * - * @return string - */ - protected function now() - { - $dt = new DateTime(); - $dt->setTimezone(new DateTimeZone('UTC')); - return $dt->format(DateTime::ISO8601); - } - - /** - * Checks cookie array for correctness, possibly updating its 'domain', 'path' and 'expires' fields - * - * The checks are as follows: - * - cookie array should contain 'name' and 'value' fields; - * - name and value should not contain disallowed symbols; - * - 'expires' should be either empty parseable by DateTime; - * - 'domain' and 'path' should be either not empty or an URL where - * cookie was set should be provided. - * - if $setter is provided, then document at that URL should be allowed - * to set a cookie for that 'domain'. If $setter is not provided, - * then no domain checks will be made. - * - * 'expires' field will be converted to ISO8601 format from COOKIE format, - * 'domain' and 'path' will be set from setter URL if empty. - * - * @param array $cookie cookie data, as returned by - * {@link HTTP_Request2_Response::getCookies()} - * @param Net_URL2 $setter URL of the document that sent Set-Cookie header - * - * @return array Updated cookie array - * @throws HTTP_Request2_LogicException - * @throws HTTP_Request2_MessageException - */ - protected function checkAndUpdateFields(array $cookie, Net_URL2 $setter = null) - { - if ($missing = array_diff(['name', 'value'], array_keys($cookie))) { - throw new HTTP_Request2_LogicException( - "Cookie array should contain 'name' and 'value' fields", - HTTP_Request2_Exception::MISSING_VALUE - ); - } - if (preg_match(HTTP_Request2::REGEXP_INVALID_COOKIE, $cookie['name'])) { - throw new HTTP_Request2_LogicException( - "Invalid cookie name: '{$cookie['name']}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - if (preg_match(HTTP_Request2::REGEXP_INVALID_COOKIE, $cookie['value'])) { - throw new HTTP_Request2_LogicException( - "Invalid cookie value: '{$cookie['value']}'", - HTTP_Request2_Exception::INVALID_ARGUMENT - ); - } - $cookie += ['domain' => '', 'path' => '', 'expires' => null, 'secure' => false]; - - // Need ISO-8601 date @ UTC timezone - if (!empty($cookie['expires']) - && !preg_match('/^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+0000$/', $cookie['expires']) - ) { - try { - $dt = new DateTime($cookie['expires']); - $dt->setTimezone(new DateTimeZone('UTC')); - $cookie['expires'] = $dt->format(DateTime::ISO8601); - } catch (Exception $e) { - throw new HTTP_Request2_LogicException($e->getMessage()); - } - } - - if (empty($cookie['domain']) || empty($cookie['path'])) { - if (!$setter) { - throw new HTTP_Request2_LogicException( - 'Cookie misses domain and/or path component, cookie setter URL needed', - HTTP_Request2_Exception::MISSING_VALUE - ); - } - if (empty($cookie['domain'])) { - if ($host = $setter->getHost()) { - $cookie['domain'] = $host; - } else { - throw new HTTP_Request2_LogicException( - 'Setter URL does not contain host part, can\'t set cookie domain', - HTTP_Request2_Exception::MISSING_VALUE - ); - } - } - if (empty($cookie['path'])) { - $path = $setter->getPath(); - $cookie['path'] = empty($path)? '/': substr($path, 0, strrpos($path, '/') + 1); - } - } - - if ($setter && !$this->domainMatch($setter->getHost(), $cookie['domain'])) { - throw new HTTP_Request2_MessageException( - "Domain " . $setter->getHost() . " cannot set cookies for " - . $cookie['domain'] - ); - } - - return $cookie; - } - - /** - * Stores a cookie in the jar - * - * @param array $cookie cookie data, as returned by - * {@link HTTP_Request2_Response::getCookies()} - * @param Net_URL2 $setter URL of the document that sent Set-Cookie header - * - * @return bool whether the cookie was successfully stored - * @throws HTTP_Request2_Exception - */ - public function store(array $cookie, Net_URL2 $setter = null) - { - try { - $cookie = $this->checkAndUpdateFields($cookie, $setter); - } catch (HTTP_Request2_Exception $e) { - if ($this->ignoreInvalid) { - return false; - } else { - throw $e; - } - } - - if (strlen($cookie['value']) - && (is_null($cookie['expires']) || $cookie['expires'] > $this->now()) - ) { - if (!isset($this->cookies[$cookie['domain']])) { - $this->cookies[$cookie['domain']] = []; - } - if (!isset($this->cookies[$cookie['domain']][$cookie['path']])) { - $this->cookies[$cookie['domain']][$cookie['path']] = []; - } - $this->cookies[$cookie['domain']][$cookie['path']][$cookie['name']] = $cookie; - - } elseif (isset($this->cookies[$cookie['domain']][$cookie['path']][$cookie['name']])) { - unset($this->cookies[$cookie['domain']][$cookie['path']][$cookie['name']]); - } - - return true; - } - - /** - * Adds cookies set in HTTP response to the jar - * - * @param HTTP_Request2_Response $response HTTP response message - * @param Net_URL2 $setter original request URL, needed for - * setting default domain/path. If not given, - * effective URL from response will be used. - * - * @return bool whether all cookies were successfully stored - * @throws HTTP_Request2_LogicException - */ - public function addCookiesFromResponse(HTTP_Request2_Response $response, Net_URL2 $setter = null) - { - if (null === $setter) { - if (!($effectiveUrl = $response->getEffectiveUrl())) { - throw new HTTP_Request2_LogicException( - 'Response URL required for adding cookies from response', - HTTP_Request2_Exception::MISSING_VALUE - ); - } - $setter = new Net_URL2($effectiveUrl); - } - - $success = true; - foreach ($response->getCookies() as $cookie) { - $success = $this->store($cookie, $setter) && $success; - } - return $success; - } - - /** - * Returns all cookies matching a given request URL - * - * The following checks are made: - * - cookie domain should match request host - * - cookie path should be a prefix for request path - * - 'secure' cookies will only be sent for HTTPS requests - * - * @param Net_URL2 $url Request url - * @param bool $asString Whether to return cookies as string for "Cookie: " header - * - * @return array|string Matching cookies - */ - public function getMatching(Net_URL2 $url, $asString = false) - { - $host = $url->getHost(); - $path = $url->getPath(); - $secure = 0 == strcasecmp($url->getScheme(), 'https'); - - $matched = $ret = []; - foreach (array_keys($this->cookies) as $domain) { - if ($this->domainMatch($host, $domain)) { - foreach (array_keys($this->cookies[$domain]) as $cPath) { - if (0 === strpos($path, $cPath)) { - foreach ($this->cookies[$domain][$cPath] as $name => $cookie) { - if (!$cookie['secure'] || $secure) { - $matched[$name][strlen($cookie['path'])] = $cookie; - } - } - } - } - } - } - foreach ($matched as $cookies) { - krsort($cookies); - $ret = array_merge($ret, $cookies); - } - if (!$asString) { - return $ret; - } else { - $str = ''; - foreach ($ret as $c) { - $str .= (empty($str)? '': '; ') . $c['name'] . '=' . $c['value']; - } - return $str; - } - } - - /** - * Returns all cookies stored in a jar - * - * @return array - */ - public function getAll() - { - $cookies = []; - foreach (array_keys($this->cookies) as $domain) { - foreach (array_keys($this->cookies[$domain]) as $path) { - foreach ($this->cookies[$domain][$path] as $name => $cookie) { - $cookies[] = $cookie; - } - } - } - return $cookies; - } - - /** - * Sets whether session cookies should be serialized when serializing the jar - * - * @param boolean $serialize serialize? - * - * @return void - */ - public function serializeSessionCookies($serialize) - { - $this->serializeSession = (bool)$serialize; - } - - /** - * Sets whether invalid cookies should be silently ignored or cause an Exception - * - * @param boolean $ignore ignore? - * - * @return void - * - * @link http://pear.php.net/bugs/bug.php?id=19937 - * @link http://pear.php.net/bugs/bug.php?id=20401 - */ - public function ignoreInvalidCookies($ignore) - { - $this->ignoreInvalid = (bool)$ignore; - } - - /** - * Sets whether Public Suffix List should be used for restricting cookie-setting - * - * Without PSL {@link domainMatch()} will only prevent setting cookies for - * top-level domains like '.com' or '.org'. However, it will not prevent - * setting a cookie for '.co.uk' even though only third-level registrations - * are possible in .uk domain. - * - * With the List it is possible to find the highest level at which a domain - * may be registered for a particular top-level domain and consequently - * prevent cookies set for '.co.uk' or '.msk.ru'. The same list is used by - * Firefox, Chrome and Opera browsers to restrict cookie setting. - * - * Note that PSL is licensed differently to HTTP_Request2 package (refer to - * the license information in public-suffix-list.php), so you can disable - * its use if this is an issue for you. - * - * @param boolean $useList use the list? - * - * @return void - * - * @link http://publicsuffix.org/learn/ - */ - public function usePublicSuffixList($useList) - { - $this->useList = (bool)$useList; - } - - /** - * Returns string representation of object - * - * @return string - * - * @see Serializable::serialize() - */ - public function serialize() - { - return serialize($this->__serialize()); - } - - /** - * Returns an associative array of key/value pairs that represent the serialized form of the object - * - * @return array - */ - public function __serialize() // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__serializeFound - { - $cookies = $this->getAll(); - if (!$this->serializeSession) { - for ($i = count($cookies) - 1; $i >= 0; $i--) { - if (empty($cookies[$i]['expires'])) { - unset($cookies[$i]); - } - } - } - return [ - 'cookies' => $cookies, - 'serializeSession' => $this->serializeSession, - 'useList' => $this->useList, - 'ignoreInvalid' => $this->ignoreInvalid - ]; - } - - /** - * Constructs the object from serialized string - * - * @param string $serialized string representation - * - * @return void - */ - public function unserialize($serialized) - { - $this->__unserialize(unserialize($serialized)); - } - - /** - * Constructs the object from array serialized form - * - * @param array $data serialized form (as generated by {@see __serialize()} - * - * @return void - */ - public function __unserialize(array $data) // phpcs:ignore PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound - { - $now = $this->now(); - $this->serializeSessionCookies($data['serializeSession']); - $this->usePublicSuffixList($data['useList']); - if (array_key_exists('ignoreInvalid', $data)) { - $this->ignoreInvalidCookies($data['ignoreInvalid']); - } - foreach ($data['cookies'] as $cookie) { - if (!empty($cookie['expires']) && $cookie['expires'] <= $now) { - continue; - } - if (!isset($this->cookies[$cookie['domain']])) { - $this->cookies[$cookie['domain']] = []; - } - if (!isset($this->cookies[$cookie['domain']][$cookie['path']])) { - $this->cookies[$cookie['domain']][$cookie['path']] = []; - } - $this->cookies[$cookie['domain']][$cookie['path']][$cookie['name']] = $cookie; - } - } - - /** - * Checks whether a cookie domain matches a request host. - * - * The method is used by {@link store()} to check for whether a document - * at given URL can set a cookie with a given domain attribute and by - * {@link getMatching()} to find cookies matching the request URL. - * - * @param string $requestHost request host - * @param string $cookieDomain cookie domain - * - * @return bool match success - */ - public function domainMatch($requestHost, $cookieDomain) - { - if ($requestHost == $cookieDomain) { - return true; - } - // IP address, we require exact match - if (preg_match('/^(?:\d{1,3}\.){3}\d{1,3}$/', $requestHost)) { - return false; - } - if ('.' != $cookieDomain[0]) { - $cookieDomain = '.' . $cookieDomain; - } - // prevents setting cookies for '.com' and similar domains - if (!$this->useList && substr_count($cookieDomain, '.') < 2 - || $this->useList && !self::getRegisteredDomain($cookieDomain) - ) { - return false; - } - return substr('.' . $requestHost, -strlen($cookieDomain)) == $cookieDomain; - } - - /** - * Removes subdomains to get the registered domain (the first after top-level) - * - * The method will check Public Suffix List to find out where top-level - * domain ends and registered domain starts. It will remove domain parts - * to the left of registered one. - * - * @param string $domain domain name - * - * @return string|bool registered domain, will return false if $domain is - * either invalid or a TLD itself - */ - public static function getRegisteredDomain($domain) - { - $domainParts = explode('.', ltrim($domain, '.')); - - // load the list if needed - if (empty(self::$psl)) { - $path = '@data_dir@' . DIRECTORY_SEPARATOR . 'HTTP_Request2'; - if (0 === strpos($path, '@' . 'data_dir@')) { - $path = realpath( - __DIR__ . DIRECTORY_SEPARATOR . '..' - . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'data' - ); - } - self::$psl = include_once $path . DIRECTORY_SEPARATOR . 'public-suffix-list.php'; - } - - if (!($result = self::checkDomainsList($domainParts, self::$psl))) { - // known TLD, invalid domain name - return false; - } - - // unknown TLD - if (!strpos($result, '.')) { - // fallback to checking that domain "has at least two dots" - if (2 > ($count = count($domainParts))) { - return false; - } - return $domainParts[$count - 2] . '.' . $domainParts[$count - 1]; - } - return $result; - } - - /** - * Recursive helper method for {@link getRegisteredDomain()} - * - * @param array $domainParts remaining domain parts - * @param mixed $listNode node in {@link HTTP_Request2_CookieJar::$psl} to check - * - * @return string|null concatenated domain parts, null in case of error - */ - protected static function checkDomainsList(array $domainParts, $listNode) - { - $sub = array_pop($domainParts); - - if (!is_array($listNode) || is_null($sub) - || array_key_exists('!' . $sub, $listNode) - ) { - return $sub; - - } elseif (array_key_exists($sub, $listNode)) { - $result = self::checkDomainsList($domainParts, $listNode[$sub]); - - } elseif (array_key_exists('*', $listNode)) { - $result = self::checkDomainsList($domainParts, $listNode['*']); - - } else { - return $sub; - } - - return (strlen($result ?: '') > 0) ? ($result . '.' . $sub) : null; - } -} -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Exception.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Exception.php deleted file mode 100644 index 018408cb..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Exception.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Base class for exceptions in PEAR - */ -require_once 'PEAR/Exception.php'; - -/** - * Base exception class for HTTP_Request2 package - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=132 - */ -class HTTP_Request2_Exception extends PEAR_Exception -{ - /** - * An invalid argument was passed to a method - */ - const INVALID_ARGUMENT = 1; - /** - * Some required value was not available - */ - const MISSING_VALUE = 2; - /** - * Request cannot be processed due to errors in PHP configuration - */ - const MISCONFIGURATION = 3; - /** - * Error reading the local file - */ - const READ_ERROR = 4; - - /** - * Server returned a response that does not conform to HTTP protocol - */ - const MALFORMED_RESPONSE = 10; - /** - * Failure decoding Content-Encoding or Transfer-Encoding of response - */ - const DECODE_ERROR = 20; - /** - * Operation timed out - */ - const TIMEOUT = 30; - /** - * Number of redirects exceeded 'max_redirects' configuration parameter - */ - const TOO_MANY_REDIRECTS = 40; - /** - * Redirect to a protocol other than http(s):// - */ - const NON_HTTP_REDIRECT = 50; - - /** - * Native error code - * - * @var int - */ - private $_nativeCode; - - /** - * Constructor, can set package error code and native error code - * - * @param string $message exception message - * @param int $code package error code, one of class constants - * @param int $nativeCode error code from underlying PHP extension - */ - public function __construct($message = null, $code = null, $nativeCode = null) - { - parent::__construct($message, $code); - $this->_nativeCode = $nativeCode; - } - - /** - * Returns error code produced by underlying PHP extension - * - * For Socket Adapter this may contain error number returned by - * stream_socket_client(), for Curl Adapter this will contain error number - * returned by curl_errno() - * - * @return integer - */ - public function getNativeCode() - { - return $this->_nativeCode; - } -} - -// backwards compatibility, include the child exceptions if installed with PEAR installer -require_once 'HTTP/Request2/ConnectionException.php'; -require_once 'HTTP/Request2/LogicException.php'; -require_once 'HTTP/Request2/MessageException.php'; -require_once 'HTTP/Request2/NotImplementedException.php'; - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/LogicException.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/LogicException.php deleted file mode 100644 index ba165aa7..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/LogicException.php +++ /dev/null @@ -1,42 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Exception that represents error in the program logic - * - * This exception usually implies a programmer's error, like passing invalid - * data to methods or trying to use PHP extensions that weren't installed or - * enabled. Usually exceptions of this kind will be thrown before request even - * starts. - * - * The exception will usually contain a package error code. - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_LogicException extends HTTP_Request2_Exception -{ -} - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MessageException.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MessageException.php deleted file mode 100644 index b92cf943..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MessageException.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Exception thrown when sending or receiving HTTP message fails - * - * The exception may contain both package error code and native error code. - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_MessageException extends HTTP_Request2_Exception -{ -} - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MultipartBody.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MultipartBody.php deleted file mode 100644 index eb28faf5..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/MultipartBody.php +++ /dev/null @@ -1,275 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** Exception class for HTTP_Request2 package */ -require_once 'HTTP/Request2/Exception.php'; - -/** - * Class for building multipart/form-data request body - * - * The class helps to reduce memory consumption by streaming large file uploads - * from disk, it also allows monitoring of upload progress (see request #7630) - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - * @link http://tools.ietf.org/html/rfc1867 - */ -class HTTP_Request2_MultipartBody -{ - /** - * MIME boundary - * - * @var string - */ - private $_boundary; - - /** - * Form parameters added via {@link HTTP_Request2::addPostParameter()} - * - * @var array - */ - private $_params = []; - - /** - * File uploads added via {@link HTTP_Request2::addUpload()} - * - * @var array - */ - private $_uploads = []; - - /** - * Header for parts with parameters - * - * @var string - */ - private $_headerParam = "--%s\r\nContent-Disposition: form-data; name=\"%s\"\r\n\r\n"; - - /** - * Header for parts with uploads - * - * @var string - */ - private $_headerUpload = "--%s\r\nContent-Disposition: form-data; name=\"%s\"; filename=\"%s\"\r\nContent-Type: %s\r\n\r\n"; - - /** - * Current position in parameter and upload arrays - * - * First number is index of "current" part, second number is position within - * "current" part - * - * @var array - */ - private $_pos = [0, 0]; - - - /** - * Constructor. Sets the arrays with POST data. - * - * @param array $params values of form fields set via - * {@link HTTP_Request2::addPostParameter()} - * @param array $uploads file uploads set via - * {@link HTTP_Request2::addUpload()} - * @param bool $useBrackets whether to append brackets to array variable names - */ - public function __construct(array $params, array $uploads, $useBrackets = true) - { - $this->_params = self::_flattenArray('', $params, $useBrackets); - foreach ($uploads as $fieldName => $f) { - if (!is_array($f['fp'])) { - $this->_uploads[] = $f + ['name' => $fieldName]; - } else { - for ($i = 0; $i < count($f['fp']); $i++) { - $upload = [ - 'name' => ($useBrackets? $fieldName . '[' . $i . ']': $fieldName) - ]; - foreach (['fp', 'filename', 'size', 'type'] as $key) { - $upload[$key] = $f[$key][$i]; - } - $this->_uploads[] = $upload; - } - } - } - } - - /** - * Returns the length of the body to use in Content-Length header - * - * @return integer - */ - public function getLength() - { - $boundaryLength = strlen($this->getBoundary()); - $headerParamLength = strlen($this->_headerParam) - 4 + $boundaryLength; - $headerUploadLength = strlen($this->_headerUpload) - 8 + $boundaryLength; - $length = $boundaryLength + 6; - foreach ($this->_params as $p) { - $length += $headerParamLength + strlen($p[0]) + strlen($p[1]) + 2; - } - foreach ($this->_uploads as $u) { - $length += $headerUploadLength + strlen($u['name']) + strlen($u['type']) + - strlen($u['filename']) + $u['size'] + 2; - } - return $length; - } - - /** - * Returns the boundary to use in Content-Type header - * - * @return string - */ - public function getBoundary() - { - if (empty($this->_boundary)) { - $this->_boundary = '--' . md5('PEAR-HTTP_Request2-' . microtime()); - } - return $this->_boundary; - } - - /** - * Returns next chunk of request body - * - * @param integer $length Number of bytes to read - * - * @return string Up to $length bytes of data, empty string if at end - * @throws HTTP_Request2_LogicException - */ - public function read($length) - { - $ret = ''; - $boundary = $this->getBoundary(); - $paramCount = count($this->_params); - $uploadCount = count($this->_uploads); - while ($length > 0 && $this->_pos[0] <= $paramCount + $uploadCount) { - $oldLength = $length; - if ($this->_pos[0] < $paramCount) { - $param = sprintf( - $this->_headerParam, $boundary, $this->_params[$this->_pos[0]][0] - ) . $this->_params[$this->_pos[0]][1] . "\r\n"; - $ret .= substr($param, $this->_pos[1], $length); - $length -= min(strlen($param) - $this->_pos[1], $length); - - } elseif ($this->_pos[0] < $paramCount + $uploadCount) { - $pos = $this->_pos[0] - $paramCount; - $header = sprintf( - $this->_headerUpload, $boundary, $this->_uploads[$pos]['name'], - $this->_uploads[$pos]['filename'], $this->_uploads[$pos]['type'] - ); - if ($this->_pos[1] < strlen($header)) { - $ret .= substr($header, $this->_pos[1], $length); - $length -= min(strlen($header) - $this->_pos[1], $length); - } - $filePos = max(0, $this->_pos[1] - strlen($header)); - if ($filePos < $this->_uploads[$pos]['size']) { - while ($length > 0 && !feof($this->_uploads[$pos]['fp'])) { - if (false === ($chunk = fread($this->_uploads[$pos]['fp'], $length))) { - throw new HTTP_Request2_LogicException( - 'Failed reading file upload', HTTP_Request2_Exception::READ_ERROR - ); - } - $ret .= $chunk; - $length -= strlen($chunk); - } - } - if ($length > 0) { - $start = $this->_pos[1] + ($oldLength - $length) - - strlen($header) - $this->_uploads[$pos]['size']; - $ret .= substr("\r\n", $start, $length); - $length -= min(2 - $start, $length); - } - - } else { - $closing = '--' . $boundary . "--\r\n"; - $ret .= substr($closing, $this->_pos[1], $length); - $length -= min(strlen($closing) - $this->_pos[1], $length); - } - if ($length > 0) { - $this->_pos = [$this->_pos[0] + 1, 0]; - } else { - $this->_pos[1] += $oldLength; - } - } - return $ret; - } - - /** - * Sets the current position to the start of the body - * - * This allows reusing the same body in another request - * - * @return void - */ - public function rewind() - { - $this->_pos = [0, 0]; - foreach ($this->_uploads as $u) { - rewind($u['fp']); - } - } - - /** - * Returns the body as string - * - * Note that it reads all file uploads into memory so it is a good idea not - * to use this method with large file uploads and rely on read() instead. - * - * @return string - */ - public function __toString() - { - $this->rewind(); - return $this->read($this->getLength()); - } - - - /** - * Helper function to change the (probably multidimensional) associative array - * into the simple one. - * - * @param string $name name for item - * @param mixed $values item's values - * @param bool $useBrackets whether to append [] to array variables' names - * - * @return array array with the following items: array('item name', 'item value'); - */ - private static function _flattenArray($name, $values, $useBrackets) - { - if (!is_array($values)) { - return [[$name, $values]]; - } else { - $ret = []; - foreach ($values as $k => $v) { - if (empty($name)) { - $newName = $k; - } elseif ($useBrackets) { - $newName = $name . '[' . $k . ']'; - } else { - $newName = $name; - } - $ret = array_merge($ret, self::_flattenArray($newName, $v, $useBrackets)); - } - return $ret; - } - } -} -?> diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/NotImplementedException.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/NotImplementedException.php deleted file mode 100644 index 289b8591..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/NotImplementedException.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Exception thrown in case of missing features - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_NotImplementedException extends HTTP_Request2_Exception -{ -} - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/Log.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/Log.php deleted file mode 100644 index 319107aa..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/Log.php +++ /dev/null @@ -1,195 +0,0 @@ - - * @author Alexey Borzov - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Exception class for HTTP_Request2 package - */ -require_once 'HTTP/Request2/Exception.php'; - -/** - * A debug observer useful for debugging / testing. - * - * This observer logs to a log target data corresponding to the various request - * and response events, it logs by default to php://output but can be configured - * to log to a file or via the PEAR Log package. - * - * A simple example: - * - * require_once 'HTTP/Request2.php'; - * require_once 'HTTP/Request2/Observer/Log.php'; - * - * $request = new HTTP_Request2('http://www.example.com'); - * $observer = new HTTP_Request2_Observer_Log(); - * $request->attach($observer); - * $request->send(); - * - * - * A more complex example with PEAR Log: - * - * require_once 'HTTP/Request2.php'; - * require_once 'HTTP/Request2/Observer/Log.php'; - * require_once 'Log.php'; - * - * $request = new HTTP_Request2('http://www.example.com'); - * // we want to log with PEAR log - * $observer = new HTTP_Request2_Observer_Log(Log::factory('console')); - * - * // we only want to log received headers - * $observer->events = array('receivedHeaders'); - * - * $request->attach($observer); - * $request->send(); - * - * - * @category HTTP - * @package HTTP_Request2 - * @author David Jean Louis - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_Observer_Log implements SplObserver -{ - // properties {{{ - - /** - * The log target, it can be a a resource or a PEAR Log instance. - * - * @var resource|Log $target - */ - protected $target = null; - - /** - * The events to log. - * - * @var array $events - */ - public $events = [ - 'connect', - 'sentHeaders', - 'sentBody', - 'receivedHeaders', - 'receivedBody', - 'disconnect', - ]; - - // }}} - // __construct() {{{ - - /** - * Constructor. - * - * @param mixed $target Can be a file path (default: php://output), a resource, - * or an instance of the PEAR Log class. - * @param array $events Array of events to listen to (default: all events) - * - * @return void - */ - public function __construct($target = 'php://output', array $events = []) - { - if (!empty($events)) { - $this->events = $events; - } - if (is_resource($target) || $target instanceof Log) { - $this->target = $target; - } elseif (false === ($this->target = @fopen($target, 'ab'))) { - throw new HTTP_Request2_Exception("Unable to open '{$target}'"); - } - } - - // }}} - // update() {{{ - - #[ReturnTypeWillChange] - /** - * Called when the request notifies us of an event. - * - * @param HTTP_Request2 $subject The HTTP_Request2 instance - * - * @return void - */ - public function update(SplSubject $subject) - { - $event = $subject->getLastEvent(); - if (!in_array($event['name'], $this->events)) { - return; - } - - switch ($event['name']) { - case 'connect': - $this->log('* Connected to ' . $event['data']); - break; - case 'sentHeaders': - $headers = explode("\r\n", $event['data']); - array_pop($headers); - foreach ($headers as $header) { - $this->log('> ' . $header); - } - break; - case 'sentBody': - $this->log('> ' . $event['data'] . ' byte(s) sent'); - break; - case 'receivedHeaders': - $this->log( - sprintf( - '< HTTP/%s %s %s', $event['data']->getVersion(), - $event['data']->getStatus(), $event['data']->getReasonPhrase() - ) - ); - $headers = $event['data']->getHeader(); - foreach ($headers as $key => $val) { - $this->log('< ' . $key . ': ' . $val); - } - $this->log('< '); - break; - case 'receivedBody': - $this->log($event['data']->getBody()); - break; - case 'disconnect': - $this->log('* Disconnected'); - break; - } - } - - // }}} - // log() {{{ - - /** - * Logs the given message to the configured target. - * - * @param string $message Message to display - * - * @return void - */ - protected function log($message) - { - if ($this->target instanceof Log) { - $this->target->debug($message); - } elseif (is_resource($this->target)) { - fwrite($this->target, $message . "\r\n"); - } - } - - // }}} -} - -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/UncompressingDownload.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/UncompressingDownload.php deleted file mode 100644 index ef1b729a..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Observer/UncompressingDownload.php +++ /dev/null @@ -1,276 +0,0 @@ - - * @author Alexey Borzov - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -require_once 'HTTP/Request2/Response.php'; - -/** - * An observer that saves response body to stream, possibly uncompressing it - * - * This Observer is written in compliment to pear's HTTP_Request2 in order to - * avoid reading the whole response body in memory. Instead it writes the body - * to a stream. If the body is transferred with content-encoding set to - * "deflate" or "gzip" it is decoded on the fly. - * - * The constructor accepts an already opened (for write) stream (file_descriptor). - * If the response is deflate/gzip encoded a "zlib.inflate" filter is applied - * to the stream. When the body has been read from the request and written to - * the stream ("receivedBody" event) the filter is removed from the stream. - * - * The "zlib.inflate" filter works fine with pure "deflate" encoding. It does - * not understand the "deflate+zlib" and "gzip" headers though, so they have to - * be removed prior to being passed to the stream. This is done in the "update" - * method. - * - * It is also possible to limit the size of written extracted bytes by passing - * "max_bytes" to the constructor. This is important because e.g. 1GB of - * zeroes take about a MB when compressed. - * - * Exceptions are being thrown if data could not be written to the stream or - * the written bytes have already exceeded the requested maximum. If the "gzip" - * header is malformed or could not be parsed an exception will be thrown too. - * - * Example usage follows: - * - * - * require_once 'HTTP/Request2.php'; - * require_once 'HTTP/Request2/Observer/UncompressingDownload.php'; - * - * #$inPath = 'http://carsten.codimi.de/gzip.yaws/daniels.html'; - * #$inPath = 'http://carsten.codimi.de/gzip.yaws/daniels.html?deflate=on'; - * $inPath = 'http://carsten.codimi.de/gzip.yaws/daniels.html?deflate=on&zlib=on'; - * #$outPath = "/dev/null"; - * $outPath = "delme"; - * - * $stream = fopen($outPath, 'wb'); - * if (!$stream) { - * throw new Exception('fopen failed'); - * } - * - * $request = new HTTP_Request2( - * $inPath, - * HTTP_Request2::METHOD_GET, - * array( - * 'store_body' => false, - * 'connect_timeout' => 5, - * 'timeout' => 10, - * 'ssl_verify_peer' => true, - * 'ssl_verify_host' => true, - * 'ssl_cafile' => null, - * 'ssl_capath' => '/etc/ssl/certs', - * 'max_redirects' => 10, - * 'follow_redirects' => true, - * 'strict_redirects' => false - * ) - * ); - * - * $observer = new HTTP_Request2_Observer_UncompressingDownload($stream, 9999999); - * $request->attach($observer); - * - * $response = $request->send(); - * - * fclose($stream); - * echo "OK\n"; - * - * - * @category HTTP - * @package HTTP_Request2 - * @author Delian Krustev - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - */ -class HTTP_Request2_Observer_UncompressingDownload implements SplObserver -{ - /** - * The stream to write response body to - * - * @var resource - */ - private $_stream; - - /** - * 'zlib.inflate' filter possibly added to stream - * - * @var resource - */ - private $_streamFilter; - - /** - * The value of response's Content-Encoding header - * - * @var string - */ - private $_encoding; - - /** - * Whether the observer is still waiting for gzip/deflate header - * - * @var bool - */ - private $_processingHeader = true; - - /** - * Starting position in the stream observer writes to - * - * @var int - */ - private $_startPosition = 0; - - /** - * Maximum bytes to write - * - * @var int|null - */ - private $_maxDownloadSize; - - /** - * Whether response being received is a redirect - * - * @var bool - */ - private $_redirect = false; - - /** - * Accumulated body chunks that may contain (gzip) header - * - * @var string - */ - private $_possibleHeader = ''; - - /** - * Class constructor - * - * Note that there might be problems with max_bytes and files bigger - * than 2 GB on 32bit platforms - * - * @param resource $stream a stream (or file descriptor) opened for writing. - * @param int $maxDownloadSize maximum bytes to write - */ - public function __construct($stream, $maxDownloadSize = null) - { - $this->_stream = $stream; - if ($maxDownloadSize) { - $this->_maxDownloadSize = $maxDownloadSize; - $this->_startPosition = ftell($this->_stream); - } - } - - #[ReturnTypeWillChange] - /** - * Called when the request notifies us of an event. - * - * @param SplSubject $request The HTTP_Request2 instance - * - * @return void - * @throws HTTP_Request2_MessageException - */ - public function update(SplSubject $request) - { - /* @var $request HTTP_Request2 */ - $event = $request->getLastEvent(); - $encoded = false; - - /* @var $event['data'] HTTP_Request2_Response */ - switch ($event['name']) { - case 'receivedHeaders': - $this->_processingHeader = true; - $this->_redirect = $event['data']->isRedirect(); - $this->_encoding = strtolower($event['data']->getHeader('content-encoding') ?: ''); - $this->_possibleHeader = ''; - break; - - case 'receivedEncodedBodyPart': - if (!$this->_streamFilter - && ($this->_encoding === 'deflate' || $this->_encoding === 'gzip') - ) { - $this->_streamFilter = stream_filter_append( - $this->_stream, 'zlib.inflate', STREAM_FILTER_WRITE - ); - } - $encoded = true; - // fall-through is intentional - - case 'receivedBodyPart': - if ($this->_redirect) { - break; - } - - if (!$encoded || !$this->_processingHeader) { - $bytes = fwrite($this->_stream, $event['data']); - - } else { - $offset = 0; - $this->_possibleHeader .= $event['data']; - if ('deflate' === $this->_encoding) { - if (2 > strlen($this->_possibleHeader)) { - break; - } - $header = unpack('n', substr($this->_possibleHeader, 0, 2)); - if (0 == $header[1] % 31) { - $offset = 2; - } - - } elseif ('gzip' === $this->_encoding) { - if (10 > strlen($this->_possibleHeader)) { - break; - } - try { - $offset = HTTP_Request2_Response::parseGzipHeader($this->_possibleHeader, false); - - } catch (HTTP_Request2_MessageException $e) { - // need more data? - if (false !== strpos($e->getMessage(), 'data too short')) { - break; - } - throw $e; - } - } - - $this->_processingHeader = false; - $bytes = fwrite($this->_stream, substr($this->_possibleHeader, $offset)); - } - - if (false === $bytes) { - throw new HTTP_Request2_MessageException('fwrite failed.'); - } - - if ($this->_maxDownloadSize - && ftell($this->_stream) - $this->_startPosition > $this->_maxDownloadSize - ) { - throw new HTTP_Request2_MessageException( - sprintf( - 'Body length limit (%d bytes) reached', - $this->_maxDownloadSize - ) - ); - } - break; - - case 'receivedBody': - if ($this->_streamFilter) { - stream_filter_remove($this->_streamFilter); - $this->_streamFilter = null; - } - break; - } - } -} diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Response.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Response.php deleted file mode 100644 index 74e5e87d..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/Response.php +++ /dev/null @@ -1,692 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** - * Exception class for HTTP_Request2 package - */ -require_once 'HTTP/Request2/Exception.php'; - -/** - * Class representing a HTTP response - * - * The class is designed to be used in "streaming" scenario, building the - * response as it is being received: - * - * $statusLine = read_status_line(); - * $response = new HTTP_Request2_Response($statusLine); - * do { - * $headerLine = read_header_line(); - * $response->parseHeaderLine($headerLine); - * } while ($headerLine != ''); - * - * while ($chunk = read_body()) { - * $response->appendBody($chunk); - * } - * - * var_dump($response->getHeader(), $response->getCookies(), $response->getBody()); - * - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - * @link http://tools.ietf.org/html/rfc2616#section-6 - */ -class HTTP_Request2_Response -{ - /** - * HTTP protocol version (e.g. 1.0, 1.1) - * - * @var string - */ - protected $version; - - /** - * Status code - * - * @var integer - * @link http://tools.ietf.org/html/rfc2616#section-6.1.1 - */ - protected $code; - - /** - * Reason phrase - * - * @var string - * @link http://tools.ietf.org/html/rfc2616#section-6.1.1 - */ - protected $reasonPhrase; - - /** - * Effective URL (may be different from original request URL in case of redirects) - * - * @var string - */ - protected $effectiveUrl; - - /** - * Associative array of response headers - * - * @var array - */ - protected $headers = []; - - /** - * Cookies set in the response - * - * @var array - */ - protected $cookies = []; - - /** - * Name of last header processed by parseHederLine() - * - * Used to handle the headers that span multiple lines - * - * @var string - */ - protected $lastHeader = null; - - /** - * Response body - * - * @var string - */ - protected $body = ''; - - /** - * Whether the body is still encoded by Content-Encoding - * - * cURL provides the decoded body to the callback; if we are reading from - * socket the body is still gzipped / deflated - * - * @var bool - */ - protected $bodyEncoded; - - /** - * Associative array of HTTP status code / reason phrase. - * - * @var array - * @link http://tools.ietf.org/html/rfc2616#section-10 - */ - protected static $phrases = [ - - // 1xx: Informational - Request received, continuing process - 100 => 'Continue', - 101 => 'Switching Protocols', - - // 2xx: Success - The action was successfully received, understood and - // accepted - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - - // 3xx: Redirection - Further action must be taken in order to complete - // the request - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', // 1.1 - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 307 => 'Temporary Redirect', - - // 4xx: Client Error - The request contains bad syntax or cannot be - // fulfilled - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - - // 5xx: Server Error - The server failed to fulfill an apparently - // valid request - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 509 => 'Bandwidth Limit Exceeded', - - ]; - - /** - * Returns the default reason phrase for the given code or all reason phrases - * - * @param int $code Response code - * - * @return string|array|null Default reason phrase for $code if $code is given - * (null if no phrase is available), array of all - * reason phrases if $code is null - * @link http://pear.php.net/bugs/18716 - */ - public static function getDefaultReasonPhrase($code = null) - { - if (null === $code) { - return self::$phrases; - } else { - return isset(self::$phrases[$code]) ? self::$phrases[$code] : null; - } - } - - /** - * Constructor, parses the response status line - * - * @param string $statusLine Response status line (e.g. "HTTP/1.1 200 OK") - * @param bool $bodyEncoded Whether body is still encoded by Content-Encoding - * @param string $effectiveUrl Effective URL of the response - * - * @throws HTTP_Request2_MessageException if status line is invalid according to spec - */ - public function __construct($statusLine, $bodyEncoded = true, $effectiveUrl = null) - { - if (!preg_match('!^HTTP/(\d\.\d) (\d{3})(?: (.+))?!', $statusLine, $m)) { - throw new HTTP_Request2_MessageException( - "Malformed response: {$statusLine}", - HTTP_Request2_Exception::MALFORMED_RESPONSE - ); - } - $this->version = $m[1]; - $this->code = intval($m[2]); - $this->reasonPhrase = !empty($m[3]) ? trim($m[3]) : self::getDefaultReasonPhrase($this->code); - $this->bodyEncoded = (bool)$bodyEncoded; - $this->effectiveUrl = (string)$effectiveUrl; - } - - /** - * Parses the line from HTTP response filling $headers array - * - * The method should be called after reading the line from socket or receiving - * it into cURL callback. Passing an empty string here indicates the end of - * response headers and triggers additional processing, so be sure to pass an - * empty string in the end. - * - * @param string $headerLine Line from HTTP response - * - * @return void - */ - public function parseHeaderLine($headerLine) - { - $headerLine = trim($headerLine, "\r\n"); - - if ('' == $headerLine) { - // empty string signals the end of headers, process the received ones - if (!empty($this->headers['set-cookie'])) { - $cookies = is_array($this->headers['set-cookie'])? - $this->headers['set-cookie']: - [$this->headers['set-cookie']]; - foreach ($cookies as $cookieString) { - $this->parseCookie($cookieString); - } - unset($this->headers['set-cookie']); - } - foreach (array_keys($this->headers) as $k) { - if (is_array($this->headers[$k])) { - $this->headers[$k] = implode(', ', $this->headers[$k]); - } - } - - } elseif (preg_match('!^([^\x00-\x1f\x7f-\xff()<>@,;:\\\\"/\[\]?={}\s]+):(.+)$!', $headerLine, $m)) { - // string of the form header-name: header value - $name = strtolower($m[1]); - $value = trim($m[2]); - if (empty($this->headers[$name])) { - $this->headers[$name] = $value; - } else { - if (!is_array($this->headers[$name])) { - $this->headers[$name] = [$this->headers[$name]]; - } - $this->headers[$name][] = $value; - } - $this->lastHeader = $name; - - } elseif (preg_match('!^\s+(.+)$!', $headerLine, $m) && $this->lastHeader) { - // continuation of a previous header - if (!is_array($this->headers[$this->lastHeader])) { - $this->headers[$this->lastHeader] .= ' ' . trim($m[1]); - } else { - $key = count($this->headers[$this->lastHeader]) - 1; - $this->headers[$this->lastHeader][$key] .= ' ' . trim($m[1]); - } - } - } - - /** - * Parses a Set-Cookie header to fill $cookies array - * - * @param string $cookieString value of Set-Cookie header - * - * @return void - * - * @link http://web.archive.org/web/20080331104521/http://cgi.netscape.com/newsref/std/cookie_spec.html - */ - protected function parseCookie($cookieString) - { - $cookie = [ - 'expires' => null, - 'domain' => null, - 'path' => null, - 'secure' => false - ]; - - if (!strpos($cookieString, ';')) { - // Only a name=value pair - $pos = strpos($cookieString, '='); - $cookie['name'] = trim(substr($cookieString, 0, $pos)); - $cookie['value'] = trim(substr($cookieString, $pos + 1)); - - } else { - // Some optional parameters are supplied - $elements = explode(';', $cookieString); - $pos = strpos($elements[0], '='); - $cookie['name'] = trim(substr($elements[0], 0, $pos)); - $cookie['value'] = trim(substr($elements[0], $pos + 1)); - - for ($i = 1; $i < count($elements); $i++) { - if (false === strpos($elements[$i], '=')) { - $elName = trim($elements[$i]); - $elValue = null; - } else { - list ($elName, $elValue) = array_map('trim', explode('=', $elements[$i])); - } - $elName = strtolower($elName); - if ('secure' == $elName) { - $cookie['secure'] = true; - } elseif ('expires' == $elName) { - $cookie['expires'] = str_replace('"', '', $elValue); - } elseif ('path' == $elName || 'domain' == $elName) { - $cookie[$elName] = urldecode($elValue); - } else { - $cookie[$elName] = $elValue; - } - } - } - $this->cookies[] = $cookie; - } - - /** - * Appends a string to the response body - * - * @param string $bodyChunk part of response body - * - * @return void - */ - public function appendBody($bodyChunk) - { - $this->body .= $bodyChunk; - } - - /** - * Returns the effective URL of the response - * - * This may be different from the request URL if redirects were followed. - * - * @return string - * @link http://pear.php.net/bugs/bug.php?id=18412 - */ - public function getEffectiveUrl() - { - return $this->effectiveUrl; - } - - /** - * Returns the status code - * - * @return integer - */ - public function getStatus() - { - return $this->code; - } - - /** - * Returns the reason phrase - * - * @return string - */ - public function getReasonPhrase() - { - return $this->reasonPhrase; - } - - /** - * Whether response is a redirect that can be automatically handled by HTTP_Request2 - * - * @return bool - */ - public function isRedirect() - { - return in_array($this->code, [300, 301, 302, 303, 307]) - && isset($this->headers['location']); - } - - /** - * Returns either the named header or all response headers - * - * @param string $headerName Name of header to return - * - * @return string|array Value of $headerName header (null if header is - * not present), array of all response headers if - * $headerName is null - */ - public function getHeader($headerName = null) - { - if (null === $headerName) { - return $this->headers; - } else { - $headerName = strtolower($headerName); - return isset($this->headers[$headerName])? $this->headers[$headerName]: null; - } - } - - /** - * Returns cookies set in response - * - * @return array - */ - public function getCookies() - { - return $this->cookies; - } - - /** - * Returns the body of the response - * - * @return string - * @throws HTTP_Request2_Exception if body cannot be decoded - */ - public function getBody() - { - if (0 == strlen($this->body) || !$this->bodyEncoded - || !in_array(strtolower($this->getHeader('content-encoding') ?: ''), ['gzip', 'deflate']) - ) { - return $this->body; - - } else { - if (extension_loaded('mbstring') && (2 & ini_get('mbstring.func_overload'))) { - $oldEncoding = mb_internal_encoding(); - mb_internal_encoding('8bit'); - } - - try { - switch (strtolower($this->getHeader('content-encoding'))) { - case 'gzip': - return self::decodeGzip($this->body); - break; - case 'deflate': - return self::decodeDeflate($this->body); - } - } finally { // phpcs:ignore PHPCompatibility.Keywords.NewKeywords.t_finallyFound - if (!empty($oldEncoding)) { - mb_internal_encoding($oldEncoding); - } - } - } - } - - /** - * Get the HTTP version of the response - * - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * Checks whether data starts with GZIP format identification bytes from RFC 1952 - * - * @param string $data gzip-encoded (presumably) data - * - * @return bool - */ - public static function hasGzipIdentification($data) - { - return 0 === strcmp(substr($data, 0, 2), "\x1f\x8b"); - } - - /** - * Tries to parse GZIP format header in the given string - * - * If the header conforms to RFC 1952, its length is returned. If any - * sanity check fails, HTTP_Request2_MessageException is thrown. - * - * Note: This function might be usable outside of HTTP_Request2 so it might - * be good idea to be moved to some common package. (Delian Krustev) - * - * @param string $data Either the complete response body or - * the leading part of it - * @param boolean $dataComplete Whether $data contains complete response body - * - * @return int gzip header length in bytes - * @throws HTTP_Request2_MessageException - * @link http://tools.ietf.org/html/rfc1952 - */ - public static function parseGzipHeader($data, $dataComplete = false) - { - // if data is complete, trailing 8 bytes should be present for size and crc32 - $length = strlen($data) - ($dataComplete ? 8 : 0); - - if ($length < 10 || !self::hasGzipIdentification($data)) { - throw new HTTP_Request2_MessageException( - 'The data does not seem to contain a valid gzip header', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - - $method = ord(substr($data, 2, 1)); - if (8 != $method) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: unknown compression method', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $flags = ord(substr($data, 3, 1)); - if ($flags & 224) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: reserved bits are set', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - - // header is 10 bytes minimum. may be longer, though. - $headerLength = 10; - // extra fields, need to skip 'em - if ($flags & 4) { - if ($length - $headerLength - 2 < 0) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $extraLength = unpack('v', substr($data, 10, 2)); - if ($length - $headerLength - 2 - $extraLength[1] < 0) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $headerLength += $extraLength[1] + 2; - } - // file name, need to skip that - if ($flags & 8) { - if ($length - $headerLength - 1 < 0) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $filenameLength = strpos(substr($data, $headerLength), chr(0)); - if (false === $filenameLength - || $length - $headerLength - $filenameLength - 1 < 0 - ) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $headerLength += $filenameLength + 1; - } - // comment, need to skip that also - if ($flags & 16) { - if ($length - $headerLength - 1 < 0) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $commentLength = strpos(substr($data, $headerLength), chr(0)); - if (false === $commentLength - || $length - $headerLength - $commentLength - 1 < 0 - ) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $headerLength += $commentLength + 1; - } - // have a CRC for header. let's check - if ($flags & 2) { - if ($length - $headerLength - 2 < 0) { - throw new HTTP_Request2_MessageException( - 'Error parsing gzip header: data too short', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $crcReal = 0xffff & crc32(substr($data, 0, $headerLength)); - $crcStored = unpack('v', substr($data, $headerLength, 2)); - if ($crcReal != $crcStored[1]) { - throw new HTTP_Request2_MessageException( - 'Header CRC check failed', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - $headerLength += 2; - } - return $headerLength; - } - - /** - * Decodes the message-body encoded by gzip - * - * The real decoding work is done by gzinflate() built-in function, this - * method only parses the header and checks data for compliance with - * RFC 1952 - * - * @param string $data gzip-encoded data - * - * @return string decoded data - * @throws HTTP_Request2_LogicException - * @throws HTTP_Request2_MessageException - * @link http://tools.ietf.org/html/rfc1952 - */ - public static function decodeGzip($data) - { - // If it doesn't look like gzip-encoded data, don't bother - if (!self::hasGzipIdentification($data)) { - return $data; - } - if (!function_exists('gzinflate')) { - throw new HTTP_Request2_LogicException( - 'Unable to decode body: gzip extension not available', - HTTP_Request2_Exception::MISCONFIGURATION - ); - } - - // unpacked data CRC and size at the end of encoded data - $tmp = unpack('V2', substr($data, -8)); - $dataCrc = $tmp[1]; - $dataSize = $tmp[2]; - - $headerLength = self::parseGzipHeader($data, true); - - // don't pass $dataSize to gzinflate, see bugs #13135, #14370 - $unpacked = gzinflate(substr($data, $headerLength, -8)); - if (false === $unpacked) { - throw new HTTP_Request2_MessageException( - 'gzinflate() call failed', - HTTP_Request2_Exception::DECODE_ERROR - ); - - // GZIP stores the size of the compressed data in bytes modulo - // 2^32. To accommodate large file transfers, apply this to the - // observed data size. This allows file downloads above 4 GiB. - } elseif ((0xffffffff & $dataSize) !== (0xffffffff & strlen($unpacked))) { - throw new HTTP_Request2_MessageException( - 'Data size check failed', - HTTP_Request2_Exception::DECODE_ERROR - ); - } elseif ((0xffffffff & $dataCrc) !== (0xffffffff & crc32($unpacked))) { - throw new HTTP_Request2_MessageException( - 'Data CRC check failed', - HTTP_Request2_Exception::DECODE_ERROR - ); - } - return $unpacked; - } - - /** - * Decodes the message-body encoded by deflate - * - * @param string $data deflate-encoded data - * - * @return string decoded data - * @throws HTTP_Request2_LogicException - */ - public static function decodeDeflate($data) - { - if (!function_exists('gzuncompress')) { - throw new HTTP_Request2_LogicException( - 'Unable to decode body: gzip extension not available', - HTTP_Request2_Exception::MISCONFIGURATION - ); - } - // RFC 2616 defines 'deflate' encoding as zlib format from RFC 1950, - // while many applications send raw deflate stream from RFC 1951. - // We should check for presence of zlib header and use gzuncompress() or - // gzinflate() as needed. See bug #15305 - $header = unpack('n', substr($data, 0, 2)); - return (0 == $header[1] % 31)? gzuncompress($data): gzinflate($data); - } -} -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SOCKS5.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SOCKS5.php deleted file mode 100644 index ac519b55..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SOCKS5.php +++ /dev/null @@ -1,137 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** Socket wrapper class used by Socket Adapter */ -require_once 'HTTP/Request2/SocketWrapper.php'; - -/** - * SOCKS5 proxy connection class (used by Socket Adapter) - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - * @link http://pear.php.net/bugs/bug.php?id=19332 - * @link http://tools.ietf.org/html/rfc1928 - */ -class HTTP_Request2_SOCKS5 extends HTTP_Request2_SocketWrapper -{ - /** - * Constructor, tries to connect and authenticate to a SOCKS5 proxy - * - * @param string $address Proxy address, e.g. 'tcp://localhost:1080' - * @param int $timeout Connection timeout (seconds) - * @param array $contextOptions Stream context options - * @param string $username Proxy user name - * @param string $password Proxy password - * - * @throws HTTP_Request2_LogicException - * @throws HTTP_Request2_ConnectionException - * @throws HTTP_Request2_MessageException - */ - public function __construct( - $address, $timeout = 10, array $contextOptions = [], - $username = null, $password = null - ) { - parent::__construct($address, $timeout, $contextOptions); - - if (strlen($username)) { - $request = pack('C4', 5, 2, 0, 2); - } else { - $request = pack('C3', 5, 1, 0); - } - $this->write($request); - $response = unpack('Cversion/Cmethod', $this->read(3)); - if (5 != $response['version']) { - throw new HTTP_Request2_MessageException( - 'Invalid version received from SOCKS5 proxy: ' . $response['version'], - HTTP_Request2_Exception::MALFORMED_RESPONSE - ); - } - switch ($response['method']) { - case 2: - $this->performAuthentication($username, $password); - case 0: - break; - default: - throw new HTTP_Request2_ConnectionException( - "Connection rejected by proxy due to unsupported auth method" - ); - } - } - - /** - * Performs username/password authentication for SOCKS5 - * - * @param string $username Proxy user name - * @param string $password Proxy password - * - * @return void - * @throws HTTP_Request2_ConnectionException - * @throws HTTP_Request2_MessageException - * @link http://tools.ietf.org/html/rfc1929 - */ - protected function performAuthentication($username, $password) - { - $request = pack('C2', 1, strlen($username)) . $username - . pack('C', strlen($password)) . $password; - - $this->write($request); - $response = unpack('Cvn/Cstatus', $this->read(3)); - if (1 != $response['vn'] || 0 != $response['status']) { - throw new HTTP_Request2_ConnectionException( - 'Connection rejected by proxy due to invalid username and/or password' - ); - } - } - - /** - * Connects to a remote host via proxy - * - * @param string $remoteHost Remote host - * @param int $remotePort Remote port - * - * @return void - * @throws HTTP_Request2_ConnectionException - * @throws HTTP_Request2_MessageException - */ - public function connect($remoteHost, $remotePort) - { - $request = pack('C5', 0x05, 0x01, 0x00, 0x03, strlen($remoteHost)) - . $remoteHost . pack('n', $remotePort); - - $this->write($request); - $response = unpack('Cversion/Creply/Creserved', $this->read(1024)); - if (5 != $response['version'] || 0 != $response['reserved']) { - throw new HTTP_Request2_MessageException( - 'Invalid response received from SOCKS5 proxy', - HTTP_Request2_Exception::MALFORMED_RESPONSE - ); - } elseif (0 != $response['reply']) { - throw new HTTP_Request2_ConnectionException( - "Unable to connect to {$remoteHost}:{$remotePort} through SOCKS5 proxy", - 0, $response['reply'] - ); - } - } -} -?> \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SocketWrapper.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SocketWrapper.php deleted file mode 100644 index fcda2b81..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/Request2/SocketWrapper.php +++ /dev/null @@ -1,390 +0,0 @@ - - * @copyright 2008-2022 Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @link http://pear.php.net/package/HTTP_Request2 - */ - -/** Exception classes for HTTP_Request2 package */ -require_once 'HTTP/Request2/Exception.php'; - -/** - * Socket wrapper class used by Socket Adapter - * - * Needed to properly handle connection errors, global timeout support and - * similar things. Loosely based on Net_Socket used by older HTTP_Request. - * - * @category HTTP - * @package HTTP_Request2 - * @author Alexey Borzov - * @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause License - * @version Release: 2.5.1 - * @link http://pear.php.net/package/HTTP_Request2 - * @link http://pear.php.net/bugs/bug.php?id=19332 - * @link http://tools.ietf.org/html/rfc1928 - */ -class HTTP_Request2_SocketWrapper -{ - /** - * PHP warning messages raised during stream_socket_client() call - * - * @var array - */ - protected $connectionWarnings = []; - - /** - * Connected socket - * - * @var resource - */ - protected $socket; - - /** - * Sum of start time and global timeout, exception will be thrown if request continues past this time - * - * @var float - */ - protected $deadline; - - /** - * Global timeout value, mostly for exception messages - * - * @var integer - */ - protected $timeout; - - /** - * Class constructor, tries to establish connection - * - * @param string $address Address for stream_socket_client() call, - * e.g. 'tcp://localhost:80' - * @param int $timeout Connection timeout (seconds) - * @param array $contextOptions Context options - * - * @throws HTTP_Request2_LogicException - * @throws HTTP_Request2_ConnectionException - */ - public function __construct($address, $timeout, array $contextOptions = []) - { - if (!empty($contextOptions) - && !isset($contextOptions['socket']) && !isset($contextOptions['ssl']) - ) { - // Backwards compatibility with 2.1.0 and 2.1.1 releases - $contextOptions = ['ssl' => $contextOptions]; - } - if (isset($contextOptions['ssl'])) { - $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; // phpcs:ignore PHPCompatibility.Constants.NewConstants.stream_crypto_method_tlsv1_2_clientFound - if (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT')) { - $cryptoMethod |= STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT; - } - $contextOptions['ssl'] += [ - // Using "Intermediate compatibility" cipher bundle from - // https://wiki.mozilla.org/Security/Server_Side_TLS - 'ciphers' => 'TLS_AES_128_GCM_SHA256:' - . 'TLS_AES_256_GCM_SHA384:' - . 'TLS_CHACHA20_POLY1305_SHA256:' - . 'ECDHE-ECDSA-AES128-GCM-SHA256:' - . 'ECDHE-RSA-AES128-GCM-SHA256:' - . 'ECDHE-ECDSA-AES256-GCM-SHA384:' - . 'ECDHE-RSA-AES256-GCM-SHA384:' - . 'ECDHE-ECDSA-CHACHA20-POLY1305:' - . 'ECDHE-RSA-CHACHA20-POLY1305:' - . 'DHE-RSA-AES128-GCM-SHA256:' - . 'DHE-RSA-AES256-GCM-SHA384', - 'disable_compression' => true, - 'crypto_method' => $cryptoMethod - ]; - } - $context = stream_context_create(); - foreach ($contextOptions as $wrapper => $options) { - foreach ($options as $name => $value) { - if (!stream_context_set_option($context, $wrapper, $name, $value)) { - throw new HTTP_Request2_LogicException( - "Error setting '{$wrapper}' wrapper context option '{$name}'" - ); - } - } - } - set_error_handler([$this, 'connectionWarningsHandler']); - $this->socket = stream_socket_client( - $address, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context - ); - restore_error_handler(); - // if we fail to bind to a specified local address (see request #19515), - // connection still succeeds, albeit with a warning. Throw an Exception - // with the warning text in this case as that connection is unlikely - // to be what user wants and as Curl throws an error in similar case. - if ($this->connectionWarnings) { - if ($this->socket) { - fclose($this->socket); - } - $error = $errstr ? $errstr : implode("\n", $this->connectionWarnings); - throw new HTTP_Request2_ConnectionException( - "Unable to connect to {$address}. Error: {$error}", 0, $errno - ); - } - // Run socket in non-blocking mode, to prevent possible problems with - // HTTPS requests not timing out properly (see bug #21229) - stream_set_blocking($this->socket, false); - } - - /** - * Destructor, disconnects socket - */ - public function __destruct() - { - fclose($this->socket); - } - - /** - * Wrapper around fread(), handles global request timeout - * - * @param int $length Reads up to this number of bytes - * - * @return string|false Data read from socket by fread() - * @throws HTTP_Request2_MessageException In case of timeout - */ - public function read($length) - { - // Looks like stream_select() may return true, but then fread() will return an empty string... - // For some reason or other happens mostly with servers behind Cloudflare. - // Let's do the fread() call in a loop until either an error/eof or non-empty string: - do { - $data = false; - $timeouts = $this->_getTimeoutsForStreamSelect(); - - $r = [$this->socket]; - $w = []; - $e = []; - if (stream_select($r, $w, $e, $timeouts[0], $timeouts[1])) { - $data = fread($this->socket, $length); - } - - $this->checkTimeout(); - } while ('' === $data && !$this->eof()); - - return $data; - } - - /** - * Reads until either the end of the socket or a newline, whichever comes first - * - * Strips the trailing newline from the returned data, handles global - * request timeout. Method idea borrowed from Net_Socket PEAR package. - * - * @param int $bufferSize buffer size to use for reading - * @param int $localTimeout timeout value to use just for this call - * (used when waiting for "100 Continue" response) - * - * @return string Available data up to the newline (not including newline) - * @throws HTTP_Request2_MessageException In case of timeout - */ - public function readLine($bufferSize, $localTimeout = null) - { - $line = ''; - while (!feof($this->socket)) { - if (null !== $localTimeout) { - $timeouts = [$localTimeout, 0]; - $started = microtime(true); - } else { - $timeouts = $this->_getTimeoutsForStreamSelect(); - } - - $r = [$this->socket]; - $w = []; - $e = []; - if (stream_select($r, $w, $e, $timeouts[0], $timeouts[1])) { - $line .= @fgets($this->socket, $bufferSize); - } - - if (null === $localTimeout) { - $this->checkTimeout(); - } elseif (microtime(true) - $started > $localTimeout) { - throw new HTTP_Request2_MessageException( - "readLine() call timed out", HTTP_Request2_Exception::TIMEOUT - ); - } - if (substr($line, -1) == "\n") { - return rtrim($line, "\r\n"); - } - } - return $line; - } - - /** - * Wrapper around fwrite(), handles global request timeout - * - * @param string $data String to be written - * - * @return int - * @throws HTTP_Request2_MessageException - */ - public function write($data) - { - $totalWritten = 0; - while (strlen($data) && !$this->eof()) { - $written = 0; - $error = null; - $timeouts = $this->_getTimeoutsForStreamSelect(); - - $r = null; - $w = [$this->socket]; - $e = null; - if (stream_select($r, $w, $e, $timeouts[0], $timeouts[1])) { - set_error_handler( - static function ($errNo, $errStr) use (&$error) { - if (0 !== (E_NOTICE | E_WARNING) & $errNo) { - $error = $errStr; - } - } - ); - $written = fwrite($this->socket, $data); - restore_error_handler(); - } - $this->checkTimeout(); - - // php_sockop_write() defined in /main/streams/xp_socket.c may return zero written bytes for non-blocking - // sockets in case of transient errors. These writes will not have notices raised and should be retried - if (false === $written || 0 === $written && null !== $error) { - throw new HTTP_Request2_MessageException( - 'Error writing request' . (null === $error ? '' : ': ' . $error) - ); - } - $data = substr($data, $written); - $totalWritten += $written; - } - return $totalWritten; - } - - /** - * Tests for end-of-file on a socket - * - * @return bool - */ - public function eof() - { - return feof($this->socket); - } - - /** - * Sets request deadline - * - * If null is passed for $deadline then deadline will be calculated based - * on default_socket_timeout PHP setting. This is done to keep BC with previous - * versions that used blocking sockets. - * - * @param float|null $deadline Exception will be thrown if request continues - * past this time - * @param int $timeout Original request timeout value, to use in - * Exception message - * - * @return void - */ - public function setDeadline($deadline, $timeout) - { - if (null === $deadline && 0 < ($defaultTimeout = (int)ini_get('default_socket_timeout'))) { - $deadline = microtime(true) + $defaultTimeout; - } - $this->deadline = $deadline; - $this->timeout = $timeout; - } - - /** - * Turns on encryption on a socket - * - * @return void - * @throws HTTP_Request2_ConnectionException - */ - public function enableCrypto() - { - $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; // phpcs:ignore PHPCompatibility.Constants.NewConstants.stream_crypto_method_tlsv1_2_clientFound - if (defined('STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT')) { - $cryptoMethod |= STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT; - } - - try { - stream_set_blocking($this->socket, true); - if (!stream_socket_enable_crypto($this->socket, true, $cryptoMethod)) { - throw new HTTP_Request2_ConnectionException( - 'Failed to enable secure connection when connecting through proxy' - ); - } - } finally { // phpcs:ignore PHPCompatibility.Keywords.NewKeywords.t_finallyFound - stream_set_blocking($this->socket, false); - } - } - - /** - * Throws an Exception if stream timed out - * - * @return void - * @throws HTTP_Request2_MessageException - */ - protected function checkTimeout() - { - $info = stream_get_meta_data($this->socket); - if ($info['timed_out'] || $this->deadline && microtime(true) > $this->deadline) { - $reason = $this->timeout - ? "after {$this->timeout} second(s)" - : 'due to default_socket_timeout php.ini setting'; - throw new HTTP_Request2_MessageException( - "Request timed out {$reason}", HTTP_Request2_Exception::TIMEOUT - ); - } - } - - /** - * Returns timeouts based on deadline for use with stream_select() - * - * @return array First element is $tv_sec parameter for stream_select(), - * second element is $tv_usec - */ - private function _getTimeoutsForStreamSelect() - { - if (!$this->deadline) { - return [null, null]; - } - $parts = array_map( - 'intval', - explode('.', sprintf('%.6F', $this->deadline - microtime(true))) - ); - if (0 > $parts[0] || 0 === $parts[0] && $parts[1] < 50000) { - return [0, 50000]; - } - return $parts; - } - - /** - * Error handler to use during stream_socket_client() call - * - * One stream_socket_client() call may produce *multiple* PHP warnings - * (especially OpenSSL-related), we keep them in an array to later use for - * the message of HTTP_Request2_ConnectionException - * - * @param int $errno error level - * @param string $errstr error message - * - * @return bool - */ - protected function connectionWarningsHandler($errno, $errstr) - { - if ($errno & E_WARNING) { - array_unshift($this->connectionWarnings, $errstr); - } - return true; - } -} -?> diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_lock_response.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_lock_response.php deleted file mode 100644 index f14ce8da..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_lock_response.php +++ /dev/null @@ -1,75 +0,0 @@ -success = xml_parse($xml_parser, $response, true); - - xml_parser_free($xml_parser); - } - - - private function _startElement($parser, $name, $attrs) - { - if (strstr($name, " ")) { - list($ns, $tag) = explode(" ", $name); - } else { - $ns = ""; - $tag = $name; - } - - if ($ns == "DAV:") { - switch ($tag) { - case "locktoken": - $this->collect_locktoken = true; - break; - } - } - } - - private function _data($parser, $data) - { - if ($this->collect_locktoken) { - $this->locktoken .= $data; - } - } - - private function _endElement($parser, $name) - { - if (strstr($name, " ")) { - list($ns, $tag) = explode(" ", $name); - } else { - $ns = ""; - $tag = $name; - } - - switch ($tag) { - case "locktoken": - $this->collect_locktoken = false; - $this->locktoken = trim($this->locktoken); - break; - } - } -} - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * indent-tabs-mode:nil - * End: - */ diff --git a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_propfind_response.php b/wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_propfind_response.php deleted file mode 100644 index 4ba1a3bf..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/HTTP/WebDAV/Tools/_parse_propfind_response.php +++ /dev/null @@ -1,157 +0,0 @@ -urls = array(); - - $this->_depth = 0; - - $xml_parser = xml_parser_create_ns("UTF-8", " "); - xml_set_element_handler($xml_parser, - array($this, "_startElement"), - array($this, "_endElement")); - xml_set_character_data_handler($xml_parser, - array($this, "_data")); - xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, - false); - $this->success = xml_parse($xml_parser, $response, true); - xml_parser_free($xml_parser); - - unset($this->_depth); - } - - private function _startElement($parser, $name, $attrs) - { - if (strstr($name, " ")) { - list($ns, $tag) = explode(" ", $name); - if ($ns == "") - $this->success = false; - } else { - $ns = ""; - $tag = $name; - } - - switch ($this->_depth) { - case '2': - switch ($tag) { - case 'propstat': - // TODO check is_executable, lockinfo ... - $this->_tmpprop = array("mode" => 0100666 /* all may read and write (for now) */); - break; - } - } - - $this->_depth++; - } - - private function _endElement($parser, $name) - { - if (strstr($name, " ")) { - list($ns, $tag) = explode(" ", $name); - if ($ns == "") - $this->success = false; - } else { - $ns = ""; - $tag = $name; - } - - $this->_depth--; - - switch ($this->_depth) { - case '1': - switch ($tag) { - case 'response': - $this->urls[$this->_tmphref] = $this->_tmpvals; - unset($this->_tmphref); - unset($this->_tmpvals); - break; - } - break; - case '2': - switch ($tag) { - case 'href': - $this->_tmphref = $this->_tmpdata; - break; - } - case 'propstat': - if (isset($this->_tmpstat) && strstr($this->_tmpstat, " 200 ")) { - $this->_tmpvals = $this->_tmpprop; - } - unset($this->_tmpstat); - unset($this->_tmpprop); - break; - case '3': - switch ($tag) { - case 'status': - $this->_tmpstat = $this->_tmpdata; - break; - } - case '4': - if (!isset($this->_tmpdata)) { - return; - } - switch ($tag) { - case 'getlastmodified': - $this->_tmpprop['atime'] = strtotime($this->_tmpdata); - $this->_tmpprop['mtime'] = strtotime($this->_tmpdata); - break; - case 'creationdate': - $t = preg_split("/[^[:digit:]]/", $this->_tmpdata); - $this->_tmpprop['ctime'] = mktime((int) $t[3], (int) $t[4], (int) $t[5], (int) $t[1], (int) $t[2], (int) $t[0]); - unset($t); - break; - case 'getcontentlength': - $this->_tmpprop['size'] = $this->_tmpdata; - break; - } - case '5': - switch ($tag) { - case 'collection': - $this->_tmpprop['mode'] &= ~0100000; // clear S_IFREG - $this->_tmpprop['mode'] |= 040000; // set S_IFDIR - break; - } - } - - unset($this->_tmpdata); - } - - private function _data($parser, $data) - { - $this->_tmpdata = $data; - } - - public function stat($href = false) - { - if ($href) { - // TODO - } else { - reset($this->urls); - return current($this->urls); - } - } -} - - -/* - * Local variables: - * tab-width: 4 - * c-basic-offset: 4 - * indent-tabs-mode:nil - * End: - */ diff --git a/wp-content/plugins/updraftplus/includes/PEAR/Net/Socket.php b/wp-content/plugins/updraftplus/includes/PEAR/Net/Socket.php deleted file mode 100644 index 0905bdf6..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/Net/Socket.php +++ /dev/null @@ -1,686 +0,0 @@ - - * Chuck Hagenbuch - * - * @category Net - * @package Net_Socket - * @author Stig Bakken - * @author Chuck Hagenbuch - * @copyright 1997-2003 The PHP Group - * @license http://www.php.net/license/2_02.txt PHP 2.02 - * @version CVS: $Id: Socket.php 304428 2010-10-15 13:51:46Z clockwerx $ - * @link http://pear.php.net/packages/Net_Socket - */ - -if (!class_exists('PEAR')) require_once 'PEAR.php'; - -define('NET_SOCKET_READ', 1); -define('NET_SOCKET_WRITE', 2); -define('NET_SOCKET_ERROR', 4); - -/** - * Generalized Socket class. - * - * @category Net - * @package Net_Socket - * @author Stig Bakken - * @author Chuck Hagenbuch - * @copyright 1997-2003 The PHP Group - * @license http://www.php.net/license/2_02.txt PHP 2.02 - * @link http://pear.php.net/packages/Net_Socket - */ -class Net_Socket extends PEAR -{ - /** - * Socket file pointer. - * @var resource $fp - */ - var $fp = null; - - /** - * Whether the socket is blocking. Defaults to true. - * @var boolean $blocking - */ - var $blocking = true; - - /** - * Whether the socket is persistent. Defaults to false. - * @var boolean $persistent - */ - var $persistent = false; - - /** - * The IP address to connect to. - * @var string $addr - */ - var $addr = ''; - - /** - * The port number to connect to. - * @var integer $port - */ - var $port = 0; - - /** - * Number of seconds to wait on socket connections before assuming - * there's no more data. Defaults to no timeout. - * @var integer $timeout - */ - var $timeout = false; - - /** - * Number of bytes to read at a time in readLine() and - * readAll(). Defaults to 2048. - * @var integer $lineLength - */ - var $lineLength = 2048; - - /** - * The string to use as a newline terminator. Usually "\r\n" or "\n". - * @var string $newline - */ - var $newline = "\r\n"; - - /** - * Connect to the specified port. If called when the socket is - * already connected, it disconnects and connects again. - * - * @param string $addr IP address or host name. - * @param integer $port TCP port number. - * @param boolean $persistent (optional) Whether the connection is - * persistent (kept open between requests - * by the web server). - * @param integer $timeout (optional) How long to wait for data. - * @param array $options See options for stream_context_create. - * - * @access public - * - * @return boolean | PEAR_Error True on success or a PEAR_Error on failure. - */ - function connect($addr, $port = 0, $persistent = null, - $timeout = null, $options = null) - { - if (defined('UPDRAFTPLUS_SSL_DISABLE_VERIFY_SSL')) { - $ssl_disable_verify = UPDRAFTPLUS_SSL_DISABLE_VERIFY_SSL; - } else { - $ssl_disable_verify = UpdraftPlus_Options::get_updraft_option('updraft_ssl_disableverify', false); - } - - if (is_resource($this->fp)) { - @fclose($this->fp); - $this->fp = null; - } - - if (!$addr) { - return $this->raiseError('$addr cannot be empty'); - } elseif (strspn($addr, '.0123456789') == strlen($addr) || - strstr($addr, '/') !== false) { - $this->addr = $addr; - } else { - $this->addr = @gethostbyname($addr); - } - - $this->port = $port % 65536; - - if ($persistent !== null) { - $this->persistent = $persistent; - } - - if ($timeout !== null) { - $this->timeout = $timeout; - } - - $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; - $errno = 0; - $errstr = ''; - - $old_track_errors = @ini_set('track_errors', 1); - - //Check if Options are set and sslverify is true if so set options so that stream context can be used to disable ssl - if (!$options && $ssl_disable_verify){ - $options = 1; - } - if ($options && function_exists('stream_context_create')) { - if ($this->timeout) { - $timeout = $this->timeout; - } else { - $timeout = 100; - } - - if ($ssl_disable_verify){ - if (is_array($options)) { - if (empty($options['ssl'])) { - $options['ssl'] = array( - 'verify_peer' => false, - 'verify_peer_name' => false, - ); - } else { - $options['ssl']['verify_peer'] = false; - $options['ssl']['verify_peer_name'] = false; - } - } else { - $options = array( - 'ssl' => array( - 'verify_peer' => false, - 'verify_peer_name' => false, - ) - ); - } - } - $context = stream_context_create($options); - - // Since PHP 5 fsockopen doesn't allow context specification - if (function_exists('stream_socket_client')) { - $flags = STREAM_CLIENT_CONNECT; - - if ($this->persistent) { - $flags = STREAM_CLIENT_PERSISTENT; - } - - $addr = $this->addr . ':' . $this->port; - $fp = stream_socket_client($addr, $errno, $errstr, - $timeout, $flags, $context); - } else { - $fp = @$openfunc($this->addr, $this->port, $errno, - $errstr, $timeout, $context); - } - } else { - if ($this->timeout) { - $fp = @$openfunc($this->addr, $this->port, $errno, - $errstr, $this->timeout); - } else { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); - } - } - - if (!$fp) { - // @codingStandardsIgnoreLine - if ($errno == 0 && !strlen($errstr) && isset($php_errormsg)) { - // @codingStandardsIgnoreLine - $errstr = $php_errormsg; - } - @ini_set('track_errors', $old_track_errors); - return $this->raiseError($errstr, $errno); - } - - @ini_set('track_errors', $old_track_errors); - $this->fp = $fp; - - return $this->setBlocking($this->blocking); - } - - /** - * Disconnects from the peer, closes the socket. - * - * @access public - * @return mixed true on success or a PEAR_Error instance otherwise - */ - function disconnect() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - @fclose($this->fp); - $this->fp = null; - return true; - } - - /** - * Set the newline character/sequence to use. - * - * @param string $newline Newline character(s) - * @return boolean True - */ - function setNewline($newline) - { - $this->newline = $newline; - return true; - } - - /** - * Find out if the socket is in blocking mode. - * - * @access public - * @return boolean The current blocking mode. - */ - function isBlocking() - { - return $this->blocking; - } - - /** - * Sets whether the socket connection should be blocking or - * not. A read call to a non-blocking socket will return immediately - * if there is no data available, whereas it will block until there - * is data for blocking sockets. - * - * @param boolean $mode True for blocking sockets, false for nonblocking. - * - * @access public - * @return mixed true on success or a PEAR_Error instance otherwise - */ - function setBlocking($mode) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $this->blocking = $mode; - stream_set_blocking($this->fp, (int)$this->blocking); - return true; - } - - /** - * Sets the timeout value on socket descriptor, - * expressed in the sum of seconds and microseconds - * - * @param integer $seconds Seconds. - * @param integer $microseconds Microseconds. - * - * @access public - * @return mixed true on success or a PEAR_Error instance otherwise - */ - function setTimeout($seconds, $microseconds) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return socket_set_timeout($this->fp, $seconds, $microseconds); - } - - /** - * Sets the file buffering size on the stream. - * See php's stream_set_write_buffer for more information. - * - * @param integer $size Write buffer size. - * - * @access public - * @return mixed on success or an PEAR_Error object otherwise - */ - function setWriteBuffer($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $returned = stream_set_write_buffer($this->fp, $size); - if ($returned == 0) { - return true; - } - return $this->raiseError('Cannot set write buffer.'); - } - - /** - * Returns information about an existing socket resource. - * Currently returns four entries in the result array: - * - *

- * timed_out (bool) - The socket timed out waiting for data
- * blocked (bool) - The socket was blocked
- * eof (bool) - Indicates EOF event
- * unread_bytes (int) - Number of bytes left in the socket buffer
- *

- * - * @access public - * @return mixed Array containing information about existing socket - * resource or a PEAR_Error instance otherwise - */ - function getStatus() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return socket_get_status($this->fp); - } - - /** - * Get a specified line of data - * - * @param int $size ?? - * - * @access public - * @return $size bytes of data from the socket, or a PEAR_Error if - * not connected. - */ - function gets($size = null) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - if (is_null($size)) { - return @fgets($this->fp); - } else { - return @fgets($this->fp, $size); - } - } - - /** - * Read a specified amount of data. This is guaranteed to return, - * and has the added benefit of getting everything in one fread() - * chunk; if you know the size of the data you're getting - * beforehand, this is definitely the way to go. - * - * @param integer $size The number of bytes to read from the socket. - * - * @access public - * @return $size bytes of data from the socket, or a PEAR_Error if - * not connected. - */ - function read($size) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return @fread($this->fp, $size); - } - - /** - * Write a specified amount of data. - * - * @param string $data Data to write. - * @param integer $blocksize Amount of data to write at once. - * NULL means all at once. - * - * @access public - * @return mixed If the socket is not connected, returns an instance of - * PEAR_Error - * If the write succeeds, returns the number of bytes written - * If the write fails, returns false. - */ - function write($data, $blocksize = null) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - if (is_null($blocksize) && !OS_WINDOWS) { - return @fwrite($this->fp, $data); - } else { - if (is_null($blocksize)) { - $blocksize = 1024; - } - - $pos = 0; - $size = strlen($data); - while ($pos < $size) { - $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); - if (!$written) { - return $written; - } - $pos += $written; - } - - return $pos; - } - } - - /** - * Write a line of data to the socket, followed by a trailing newline. - * - * @param string $data Data to write - * - * @access public - * @return mixed fputs result, or an error - */ - function writeLine($data) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return fwrite($this->fp, $data . $this->newline); - } - - /** - * Tests for end-of-file on a socket descriptor. - * - * Also returns true if the socket is disconnected. - * - * @access public - * @return bool - */ - function eof() - { - return (!is_resource($this->fp) || feof($this->fp)); - } - - /** - * Reads a byte of data - * - * @access public - * @return 1 byte of data from the socket, or a PEAR_Error if - * not connected. - */ - function readByte() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - return ord(@fread($this->fp, 1)); - } - - /** - * Reads a word of data - * - * @access public - * @return 1 word of data from the socket, or a PEAR_Error if - * not connected. - */ - function readWord() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 2); - return (ord($buf[0]) + (ord($buf[1]) << 8)); - } - - /** - * Reads an int of data - * - * @access public - * @return integer 1 int of data from the socket, or a PEAR_Error if - * not connected. - */ - function readInt() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 4); - return (ord($buf[0]) + (ord($buf[1]) << 8) + - (ord($buf[2]) << 16) + (ord($buf[3]) << 24)); - } - - /** - * Reads a zero-terminated string of data - * - * @access public - * @return string, or a PEAR_Error if - * not connected. - */ - function readString() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $string = ''; - while (($char = @fread($this->fp, 1)) != "\x00") { - $string .= $char; - } - return $string; - } - - /** - * Reads an IP Address and returns it in a dot formatted string - * - * @access public - * @return Dot formatted string, or a PEAR_Error if - * not connected. - */ - function readIPAddress() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $buf = @fread($this->fp, 4); - return sprintf('%d.%d.%d.%d', ord($buf[0]), ord($buf[1]), - ord($buf[2]), ord($buf[3])); - } - - /** - * Read until either the end of the socket or a newline, whichever - * comes first. Strips the trailing newline from the returned data. - * - * @access public - * @return All available data up to a newline, without that - * newline, or until the end of the socket, or a PEAR_Error if - * not connected. - */ - function readLine() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $line = ''; - - $timeout = time() + $this->timeout; - - while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { - $line .= @fgets($this->fp, $this->lineLength); - if (substr($line, -1) == "\n") { - return rtrim($line, $this->newline); - } - } - return $line; - } - - /** - * Read until the socket closes, or until there is no more data in - * the inner PHP buffer. If the inner buffer is empty, in blocking - * mode we wait for at least 1 byte of data. Therefore, in - * blocking mode, if there is no data at all to be read, this - * function will never exit (unless the socket is closed on the - * remote end). - * - * @access public - * - * @return string All data until the socket closes, or a PEAR_Error if - * not connected. - */ - function readAll() - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $data = ''; - while (!feof($this->fp)) { - $data .= @fread($this->fp, $this->lineLength); - } - return $data; - } - - /** - * Runs the equivalent of the select() system call on the socket - * with a timeout specified by tv_sec and tv_usec. - * - * @param integer $state Which of read/write/error to check for. - * @param integer $tv_sec Number of seconds for timeout. - * @param integer $tv_usec Number of microseconds for timeout. - * - * @access public - * @return False if select fails, integer describing which of read/write/error - * are ready, or PEAR_Error if not connected. - */ - function select($state, $tv_sec, $tv_usec = 0) - { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - - $read = null; - $write = null; - $except = null; - if ($state & NET_SOCKET_READ) { - $read[] = $this->fp; - } - if ($state & NET_SOCKET_WRITE) { - $write[] = $this->fp; - } - if ($state & NET_SOCKET_ERROR) { - $except[] = $this->fp; - } - if (false === ($sr = stream_select($read, $write, $except, - $tv_sec, $tv_usec))) { - return false; - } - - $result = 0; - if (count($read)) { - $result |= NET_SOCKET_READ; - } - if (count($write)) { - $result |= NET_SOCKET_WRITE; - } - if (count($except)) { - $result |= NET_SOCKET_ERROR; - } - return $result; - } - - /** - * Turns encryption on/off on a connected socket. - * - * @param bool $enabled Set this parameter to true to enable encryption - * and false to disable encryption. - * @param integer $type Type of encryption. See stream_socket_enable_crypto() - * for values. - * - * @see http://se.php.net/manual/en/function.stream-socket-enable-crypto.php - * @access public - * @return false on error, true on success and 0 if there isn't enough data - * and the user should try again (non-blocking sockets only). - * A PEAR_Error object is returned if the socket is not - * connected - */ - function enableCrypto($enabled, $type) - { - if (version_compare(phpversion(), "5.1.0", ">=")) { - if (!is_resource($this->fp)) { - return $this->raiseError('not connected'); - } - return @stream_socket_enable_crypto($this->fp, $enabled, $type); - } else { - $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0'; - return $this->raiseError($msg); - } - } - -} diff --git a/wp-content/plugins/updraftplus/includes/PEAR/Net/URL.php b/wp-content/plugins/updraftplus/includes/PEAR/Net/URL.php deleted file mode 100644 index f9456167..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/Net/URL.php +++ /dev/null @@ -1,475 +0,0 @@ - | -// +-----------------------------------------------------------------------+ -// -// $Id: URL.php,v 1.49 2007/06/28 14:43:07 davidc Exp $ -// -// Net_URL Class - - -class Net_URL -{ - var $options = array('encode_query_keys' => false); - /** - * Full url - * @var string - */ - var $url; - - /** - * Protocol - * @var string - */ - var $protocol; - - /** - * Username - * @var string - */ - var $username; - - /** - * Password - * @var string - */ - var $password; - - /** - * Host - * @var string - */ - var $host; - - /** - * Port - * @var integer - */ - var $port; - - /** - * Path - * @var string - */ - var $path; - - /** - * Query string - * @var array - */ - var $querystring; - - /** - * Anchor - * @var string - */ - var $anchor; - - /** - * Whether to use [] - * @var bool - */ - var $useBrackets; - - /** - * PHP5 Constructor - * - * Parses the given url and stores the various parts - * Defaults are used in certain cases - * - * @param string $url Optional URL - * @param bool $useBrackets Whether to use square brackets when - * multiple querystrings with the same name - * exist - */ - public function __construct($url = null, $useBrackets = true) - { - $this->url = $url; - $this->useBrackets = $useBrackets; - - $this->initialize(); - } - - function initialize() - { - $HTTP_SERVER_VARS = !empty($_SERVER) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; - - $this->user = ''; - $this->pass = ''; - $this->host = ''; - $this->port = 80; - $this->path = ''; - $this->querystring = array(); - $this->anchor = ''; - - // Only use defaults if not an absolute URL given - if (!preg_match('/^[a-z0-9]+:\/\//i', $this->url)) { - $this->protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https' : 'http'); - - /** - * Figure out host/port - */ - if (!empty($HTTP_SERVER_VARS['HTTP_HOST']) && - preg_match('/^(.*)(:([0-9]+))?$/U', $HTTP_SERVER_VARS['HTTP_HOST'], $matches)) - { - $host = $matches[1]; - if (!empty($matches[3])) { - $port = $matches[3]; - } else { - $port = $this->getStandardPort($this->protocol); - } - } - - $this->user = ''; - $this->pass = ''; - $this->host = !empty($host) ? $host : (isset($HTTP_SERVER_VARS['SERVER_NAME']) ? $HTTP_SERVER_VARS['SERVER_NAME'] : 'localhost'); - $this->port = !empty($port) ? $port : (isset($HTTP_SERVER_VARS['SERVER_PORT']) ? $HTTP_SERVER_VARS['SERVER_PORT'] : $this->getStandardPort($this->protocol)); - $this->path = !empty($HTTP_SERVER_VARS['PHP_SELF']) ? $HTTP_SERVER_VARS['PHP_SELF'] : '/'; - $this->querystring = isset($HTTP_SERVER_VARS['QUERY_STRING']) ? $this->_parseRawQuerystring($HTTP_SERVER_VARS['QUERY_STRING']) : null; - $this->anchor = ''; - } - - // Parse the url and store the various parts - if (!empty($this->url)) { - $urlinfo = parse_url($this->url); - - // Default querystring - $this->querystring = array(); - - foreach ($urlinfo as $key => $value) { - switch ($key) { - case 'scheme': - $this->protocol = $value; - $this->port = $this->getStandardPort($value); - break; - - case 'user': - case 'pass': - case 'host': - case 'port': - $this->$key = $value; - break; - - case 'path': - if ($value[0] == '/') { - $this->path = $value; - } else { - $path = dirname($this->path) == DIRECTORY_SEPARATOR ? '' : dirname($this->path); - $this->path = sprintf('%s/%s', $path, $value); - } - break; - - case 'query': - $this->querystring = $this->_parseRawQueryString($value); - break; - - case 'fragment': - $this->anchor = $value; - break; - } - } - } - } - /** - * Returns full url - * - * @return string Full url - * @access public - */ - function getURL() - { - $querystring = $this->getQueryString(); - - $this->url = $this->protocol . '://' - . $this->user . (!empty($this->pass) ? ':' : '') - . $this->pass . (!empty($this->user) ? '@' : '') - . $this->host . ($this->port == $this->getStandardPort($this->protocol) ? '' : ':' . $this->port) - . $this->path - . (!empty($querystring) ? '?' . $querystring : '') - . (!empty($this->anchor) ? '#' . $this->anchor : ''); - - return $this->url; - } - - /** - * Adds or updates a querystring item (URL parameter). - * Automatically encodes parameters with rawurlencode() if $preencoded - * is false. - * You can pass an array to $value, it gets mapped via [] in the URL if - * $this->useBrackets is activated. - * - * @param string $name Name of item - * @param string $value Value of item - * @param bool $preencoded Whether value is urlencoded or not, default = not - * @access public - */ - function addQueryString($name, $value, $preencoded = false) - { - if ($this->getOption('encode_query_keys')) { - $name = rawurlencode($name); - } - - if ($preencoded) { - $this->querystring[$name] = $value; - } else { - $this->querystring[$name] = is_array($value) ? array_map('rawurlencode', $value): rawurlencode($value); - } - } - - /** - * Removes a querystring item - * - * @param string $name Name of item - * @access public - */ - function removeQueryString($name) - { - if ($this->getOption('encode_query_keys')) { - $name = rawurlencode($name); - } - - if (isset($this->querystring[$name])) { - unset($this->querystring[$name]); - } - } - - /** - * Sets the querystring to literally what you supply - * - * @param string $querystring The querystring data. Should be of the format foo=bar&x=y etc - * @access public - */ - function addRawQueryString($querystring) - { - $this->querystring = $this->_parseRawQueryString($querystring); - } - - /** - * Returns flat querystring - * - * @return string Querystring - * @access public - */ - function getQueryString() - { - if (!empty($this->querystring)) { - foreach ($this->querystring as $name => $value) { - // Encode var name - $name = rawurlencode($name); - - if (is_array($value)) { - foreach ($value as $k => $v) { - $querystring[] = $this->useBrackets ? sprintf('%s[%s]=%s', $name, $k, $v) : ($name . '=' . $v); - } - } elseif (!is_null($value)) { - $querystring[] = $name . '=' . $value; - } else { - $querystring[] = $name; - } - } - $querystring = implode(ini_get('arg_separator.output'), $querystring); - } else { - $querystring = ''; - } - - return $querystring; - } - - /** - * Parses raw querystring and returns an array of it - * - * @param string $querystring The querystring to parse - * @return array An array of the querystring data - * @access private - */ - function _parseRawQuerystring($querystring) - { - $parts = preg_split('/[' . preg_quote(ini_get('arg_separator.input'), '/') . ']/', $querystring, -1, PREG_SPLIT_NO_EMPTY); - $return = array(); - - foreach ($parts as $part) { - if (strpos($part, '=') !== false) { - $value = substr($part, strpos($part, '=') + 1); - $key = substr($part, 0, strpos($part, '=')); - } else { - $value = null; - $key = $part; - } - - if (!$this->getOption('encode_query_keys')) { - $key = rawurldecode($key); - } - - if (preg_match('#^(.*)\[([0-9a-z_-]*)\]#i', $key, $matches)) { - $key = $matches[1]; - $idx = $matches[2]; - - // Ensure is an array - if (empty($return[$key]) || !is_array($return[$key])) { - $return[$key] = array(); - } - - // Add data - if ($idx === '') { - $return[$key][] = $value; - } else { - $return[$key][$idx] = $value; - } - } elseif (!$this->useBrackets AND !empty($return[$key])) { - $return[$key] = (array)$return[$key]; - $return[$key][] = $value; - } else { - $return[$key] = $value; - } - } - - return $return; - } - - /** - * Resolves //, ../ and ./ from a path and returns - * the result. Eg: - * - * /foo/bar/../boo.php => /foo/boo.php - * /foo/bar/../../boo.php => /boo.php - * /foo/bar/.././/boo.php => /foo/boo.php - * - * This method can also be called statically. - * - * @param string $path URL path to resolve - * @return string The result - */ - function resolvePath($path) - { - $path = explode('/', str_replace('//', '/', $path)); - - for ($i=0; $i 1 OR ($i == 1 AND $path[0] != '') ) ) { - unset($path[$i]); - unset($path[$i-1]); - $path = array_values($path); - $i -= 2; - - } elseif ($path[$i] == '..' AND $i == 1 AND $path[0] == '') { - unset($path[$i]); - $path = array_values($path); - $i--; - - } else { - continue; - } - } - - return implode('/', $path); - } - - /** - * Returns the standard port number for a protocol - * - * @param string $scheme The protocol to lookup - * @return integer Port number or NULL if no scheme matches - * - * @author Philippe Jausions - */ - function getStandardPort($scheme) - { - switch (strtolower($scheme)) { - case 'http': return 80; - case 'https': return 443; - case 'ftp': return 21; - case 'imap': return 143; - case 'imaps': return 993; - case 'pop3': return 110; - case 'pop3s': return 995; - default: return null; - } - } - - /** - * Forces the URL to a particular protocol - * - * @param string $protocol Protocol to force the URL to - * @param integer $port Optional port (standard port is used by default) - */ - function setProtocol($protocol, $port = null) - { - $this->protocol = $protocol; - $this->port = is_null($port) ? $this->getStandardPort($protocol) : $port; - } - - /** - * Set an option - * - * This function set an option - * to be used thorough the script. - * - * @access public - * @param string $optionName The optionname to set - * @param string $value The value of this option. - */ - function setOption($optionName, $value) - { - if (!array_key_exists($optionName, $this->options)) { - return false; - } - - $this->options[$optionName] = $value; - $this->initialize(); - } - - /** - * Get an option - * - * This function gets an option - * from the $this->options array - * and return it's value. - * - * @access public - * @param string $opionName The name of the option to retrieve - * @see $this->options - */ - function getOption($optionName) - { - if (!isset($this->options[$optionName])) { - return false; - } - - return $this->options[$optionName]; - } - -} -?> diff --git a/wp-content/plugins/updraftplus/includes/PEAR/Net/URL2.php b/wp-content/plugins/updraftplus/includes/PEAR/Net/URL2.php deleted file mode 100644 index 8841ed76..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/Net/URL2.php +++ /dev/null @@ -1,1219 +0,0 @@ - - * @copyright 2007-2009 Peytz & Co. A/S - * @license https://spdx.org/licenses/BSD-3-Clause BSD-3-Clause - * @version CVS: $Id$ - * @link https://tools.ietf.org/html/rfc3986 - */ - -/** - * Represents a URL as per RFC 3986. - * - * @category Networking - * @package Net_URL2 - * @author Christian Schmidt - * @copyright 2007-2009 Peytz & Co. A/S - * @license https://spdx.org/licenses/BSD-3-Clause BSD-3-Clause - * @version Release: 2.2.0 - * @link https://pear.php.net/package/Net_URL2 - */ -class Net_URL2 -{ - /** - * Do strict parsing in resolve() (see RFC 3986, section 5.2.2). Default - * is true. - */ - const OPTION_STRICT = 'strict'; - - /** - * Represent arrays in query using PHP's [] notation. Default is true. - */ - const OPTION_USE_BRACKETS = 'use_brackets'; - - /** - * Drop zero-based integer sequences in query using PHP's [] notation. Default - * is true. - */ - const OPTION_DROP_SEQUENCE = 'drop_sequence'; - - /** - * URL-encode query variable keys. Default is true. - */ - const OPTION_ENCODE_KEYS = 'encode_keys'; - - /** - * Query variable separators when parsing the query string. Every character - * is considered a separator. Default is "&". - */ - const OPTION_SEPARATOR_INPUT = 'input_separator'; - - /** - * Query variable separator used when generating the query string. Default - * is "&". - */ - const OPTION_SEPARATOR_OUTPUT = 'output_separator'; - - /** - * Default options corresponds to how PHP handles $_GET. - */ - private $_options = array( - self::OPTION_STRICT => true, - self::OPTION_USE_BRACKETS => true, - self::OPTION_DROP_SEQUENCE => true, - self::OPTION_ENCODE_KEYS => true, - self::OPTION_SEPARATOR_INPUT => '&', - self::OPTION_SEPARATOR_OUTPUT => '&', - ); - - /** - * @var string|bool - */ - private $_scheme = false; - - /** - * @var string|bool - */ - private $_userinfo = false; - - /** - * @var string|bool - */ - private $_host = false; - - /** - * @var string|bool - */ - private $_port = false; - - /** - * @var string - */ - private $_path = ''; - - /** - * @var string|bool - */ - private $_query = false; - - /** - * @var string|bool - */ - private $_fragment = false; - - /** - * Constructor. - * - * @param string $url an absolute or relative URL - * @param array $options an array of OPTION_xxx constants - * - * @uses self::parseUrl() - */ - public function __construct($url, array $options = array()) - { - foreach ($options as $optionName => $value) { - if (array_key_exists($optionName, $this->_options)) { - $this->_options[$optionName] = $value; - } - } - - $this->parseUrl($url); - } - - /** - * Magic Setter. - * - * This method will magically set the value of a private variable ($var) - * with the value passed as the args - * - * @param string $var The private variable to set. - * @param mixed $arg An argument of any type. - * - * @return void - */ - public function __set($var, $arg) - { - $method = 'set' . $var; - if (method_exists($this, $method)) { - $this->$method($arg); - } - } - - /** - * Magic Getter. - * - * This is the magic get method to retrieve the private variable - * that was set by either __set() or it's setter... - * - * @param string $var The property name to retrieve. - * - * @return mixed $this->$var Either a boolean false if the - * property is not set or the value - * of the private property. - */ - public function __get($var) - { - $method = 'get' . $var; - if (method_exists($this, $method)) { - return $this->$method(); - } - - return false; - } - - /** - * Returns the scheme, e.g. "http" or "urn", or false if there is no - * scheme specified, i.e. if this is a relative URL. - * - * @return string|bool - */ - public function getScheme() - { - return $this->_scheme; - } - - /** - * Sets the scheme, e.g. "http" or "urn". Specify false if there is no - * scheme specified, i.e. if this is a relative URL. - * - * @param string|bool $scheme e.g. "http" or "urn", or false if there is no - * scheme specified, i.e. if this is a relative - * URL - * - * @return $this - * @see getScheme - */ - public function setScheme($scheme) - { - $this->_scheme = $scheme; - return $this; - } - - /** - * Returns the user part of the userinfo part (the part preceding the first - * ":"), or false if there is no userinfo part. - * - * @return string|bool - */ - public function getUser() - { - return $this->_userinfo !== false - ? preg_replace('(:.*$)', '', $this->_userinfo) - : false; - } - - /** - * Returns the password part of the userinfo part (the part after the first - * ":"), or false if there is no userinfo part (i.e. the URL does not - * contain "@" in front of the hostname) or the userinfo part does not - * contain ":". - * - * @return string|bool - */ - public function getPassword() - { - return $this->_userinfo !== false - ? substr(strstr($this->_userinfo, ':'), 1) - : false; - } - - /** - * Returns the userinfo part, or false if there is none, i.e. if the - * authority part does not contain "@". - * - * @return string|bool - */ - public function getUserinfo() - { - return $this->_userinfo; - } - - /** - * Sets the userinfo part. If two arguments are passed, they are combined - * in the userinfo part as username ":" password. - * - * @param string|bool $userinfo userinfo or username - * @param string|bool $password optional password, or false - * - * @return $this - */ - public function setUserinfo($userinfo, $password = false) - { - if ($password !== false) { - $userinfo .= ':' . $password; - } - - if ($userinfo !== false) { - $userinfo = $this->_encodeData($userinfo); - } - - $this->_userinfo = $userinfo; - return $this; - } - - /** - * Returns the host part, or false if there is no authority part, e.g. - * relative URLs. - * - * @return string|bool a hostname, an IP address, or false - */ - public function getHost() - { - return $this->_host; - } - - /** - * Sets the host part. Specify false if there is no authority part, e.g. - * relative URLs. - * - * @param string|bool $host a hostname, an IP address, or false - * - * @return $this - */ - public function setHost($host) - { - $this->_host = $host; - return $this; - } - - /** - * Returns the port number, or false if there is no port number specified, - * i.e. if the default port is to be used. - * - * @return string|bool - */ - public function getPort() - { - return $this->_port; - } - - /** - * Sets the port number. Specify false if there is no port number specified, - * i.e. if the default port is to be used. - * - * @param string|bool $port a port number, or false - * - * @return $this - */ - public function setPort($port) - { - $this->_port = $port; - return $this; - } - - /** - * Returns the authority part, i.e. [ userinfo "@" ] host [ ":" port ], or - * false if there is no authority. - * - * @return string|bool - */ - public function getAuthority() - { - if (false === $this->_host) { - return false; - } - - $authority = ''; - - if (strlen($this->_userinfo)) { - $authority .= $this->_userinfo . '@'; - } - - $authority .= $this->_host; - - if ($this->_port !== false) { - $authority .= ':' . $this->_port; - } - - return $authority; - } - - /** - * Sets the authority part, i.e. [ userinfo "@" ] host [ ":" port ]. Specify - * false if there is no authority. - * - * @param string|bool $authority a hostname or an IP address, possibly - * with userinfo prefixed and port number - * appended, e.g. "foo:bar@example.org:81". - * - * @return $this - */ - public function setAuthority($authority) - { - $this->_userinfo = false; - $this->_host = false; - $this->_port = false; - - if ('' === $authority) { - $this->_host = $authority; - return $this; - } - - if (!preg_match('(^(([^\@]*)\@)?(.+?)(:(\d*))?$)', $authority, $matches)) { - return $this; - } - - if ($matches[1]) { - $this->_userinfo = $this->_encodeData($matches[2]); - } - - $this->_host = $matches[3]; - - if (isset($matches[5]) && strlen($matches[5])) { - $this->_port = $matches[5]; - } - return $this; - } - - /** - * Returns the path part (possibly an empty string). - * - * @return string - */ - public function getPath() - { - return $this->_path; - } - - /** - * Sets the path part (possibly an empty string). - * - * @param string $path a path - * - * @return $this - */ - public function setPath($path) - { - $this->_path = $path; - return $this; - } - - /** - * Returns the query string (excluding the leading "?"), or false if "?" - * is not present in the URL. - * - * @return string|bool - * @see getQueryVariables - */ - public function getQuery() - { - return $this->_query; - } - - /** - * Sets the query string (excluding the leading "?"). Specify false if "?" - * is not present in the URL. - * - * @param string|bool $query a query string, e.g. "foo=1&bar=2" - * - * @return $this - * @see setQueryVariables - */ - public function setQuery($query) - { - $this->_query = $query; - return $this; - } - - /** - * Returns the fragment name, or false if "#" is not present in the URL. - * - * @return string|bool - */ - public function getFragment() - { - return $this->_fragment; - } - - /** - * Sets the fragment name. Specify false if "#" is not present in the URL. - * - * @param string|bool $fragment a fragment excluding the leading "#", or - * false - * - * @return $this - */ - public function setFragment($fragment) - { - $this->_fragment = $fragment; - return $this; - } - - /** - * Returns the query string like an array as the variables would appear in - * $_GET in a PHP script. If the URL does not contain a "?", an empty array - * is returned. - * - * @return array - */ - public function getQueryVariables() - { - $separator = $this->getOption(self::OPTION_SEPARATOR_INPUT); - $encodeKeys = $this->getOption(self::OPTION_ENCODE_KEYS); - $useBrackets = $this->getOption(self::OPTION_USE_BRACKETS); - - $return = array(); - - for ($part = strtok($this->_query, $separator); - strlen($part); - $part = strtok($separator) - ) { - list($key, $value) = explode('=', $part, 2) + array(1 => ''); - - if ($encodeKeys) { - $key = rawurldecode($key); - } - $value = rawurldecode($value); - - if ($useBrackets) { - $return = $this->_queryArrayByKey($key, $value, $return); - } else { - if (isset($return[$key])) { - $return[$key] = (array) $return[$key]; - $return[$key][] = $value; - } else { - $return[$key] = $value; - } - } - } - - return $return; - } - - /** - * Parse a single query key=value pair into an existing php array - * - * @param string $key query-key - * @param string $value query-value - * @param array $array of existing query variables (if any) - * - * @return mixed - */ - private function _queryArrayByKey($key, $value, array $array = array()) - { - if (!strlen($key)) { - return $array; - } - - $offset = $this->_queryKeyBracketOffset($key); - if ($offset === false) { - $name = $key; - } else { - $name = substr($key, 0, $offset); - } - - if (!strlen($name)) { - return $array; - } - - if (!$offset) { - // named value - $array[$name] = $value; - } else { - // array - $brackets = substr($key, $offset); - if (!isset($array[$name])) { - $array[$name] = null; - } - $array[$name] = $this->_queryArrayByBrackets( - $brackets, $value, $array[$name] - ); - } - - return $array; - } - - /** - * Parse a key-buffer to place value in array - * - * @param string $buffer to consume all keys from - * @param string $value to be set/add - * @param array $array to traverse and set/add value in - * - * @throws Exception - * @return array - */ - private function _queryArrayByBrackets($buffer, $value, array $array = null) - { - $entry = &$array; - - for ($iteration = 0; strlen($buffer); $iteration++) { - $open = $this->_queryKeyBracketOffset($buffer); - if ($open !== 0) { - // Opening bracket [ must exist at offset 0, if not, there is - // no bracket to parse and the value dropped. - // if this happens in the first iteration, this is flawed, see - // as well the second exception below. - if ($iteration) { - break; - } - // @codeCoverageIgnoreStart - throw new Exception( - 'Net_URL2 Internal Error: '. __METHOD__ .'(): ' . - 'Opening bracket [ must exist at offset 0' - ); - // @codeCoverageIgnoreEnd - } - - $close = strpos($buffer, ']', 1); - if (!$close) { - // this error condition should never be reached as this is a - // private method and bracket pairs are checked beforehand. - // See as well the first exception for the opening bracket. - // @codeCoverageIgnoreStart - throw new Exception( - 'Net_URL2 Internal Error: '. __METHOD__ .'(): ' . - 'Closing bracket ] must exist, not found' - ); - // @codeCoverageIgnoreEnd - } - - $index = substr($buffer, 1, $close - 1); - if (strlen($index)) { - $entry = &$entry[$index]; - } else { - if (!is_array($entry)) { - $entry = array(); - } - $entry[] = &$new; - $entry = &$new; - unset($new); - } - $buffer = substr($buffer, $close + 1); - } - - $entry = $value; - - return $array; - } - - /** - * Query-key has brackets ("...[]") - * - * @param string $key query-key - * - * @return bool|int offset of opening bracket, false if no brackets - */ - private function _queryKeyBracketOffset($key) - { - if (false !== $open = strpos($key, '[') - and false === strpos($key, ']', $open + 1) - ) { - $open = false; - } - - return $open; - } - - /** - * Sets the query string to the specified variable in the query string. - * - * @param array $array (name => value) array - * - * @return $this - */ - public function setQueryVariables(array $array) - { - if (!$array) { - $this->_query = false; - } else { - $this->_query = $this->buildQuery( - $array, - $this->getOption(self::OPTION_SEPARATOR_OUTPUT) - ); - } - return $this; - } - - /** - * Sets the specified variable in the query string. - * - * @param string $name variable name - * @param mixed $value variable value - * - * @return $this - */ - public function setQueryVariable($name, $value) - { - $array = $this->getQueryVariables(); - $array[$name] = $value; - $this->setQueryVariables($array); - return $this; - } - - /** - * Removes the specified variable from the query string. - * - * @param string $name a query string variable, e.g. "foo" in "?foo=1" - * - * @return void - */ - public function unsetQueryVariable($name) - { - $array = $this->getQueryVariables(); - unset($array[$name]); - $this->setQueryVariables($array); - } - - /** - * Returns a string representation of this URL. - * - * @return string - */ - public function getURL() - { - // See RFC 3986, section 5.3 - $url = ''; - - if ($this->_scheme !== false) { - $url .= $this->_scheme . ':'; - } - - $authority = $this->getAuthority(); - if ($authority === false && strtolower($this->_scheme) === 'file') { - $authority = ''; - } - - $url .= $this->_buildAuthorityAndPath($authority, $this->_path); - - if ($this->_query !== false) { - $url .= '?' . $this->_query; - } - - if ($this->_fragment !== false) { - $url .= '#' . $this->_fragment; - } - - return $url; - } - - /** - * Put authority and path together, wrapping authority - * into proper separators/terminators. - * - * @param string|bool $authority authority - * @param string $path path - * - * @return string - */ - private function _buildAuthorityAndPath($authority, $path) - { - if ($authority === false) { - return $path; - } - - $terminator = ($path !== '' && $path[0] !== '/') ? '/' : ''; - - return '//' . $authority . $terminator . $path; - } - - /** - * Returns a string representation of this URL. - * - * @return string - * @link https://php.net/language.oop5.magic#object.tostring - */ - public function __toString() - { - return $this->getURL(); - } - - /** - * Returns a normalized string representation of this URL. This is useful - * for comparison of URLs. - * - * @return string - */ - public function getNormalizedURL() - { - $url = clone $this; - $url->normalize(); - return $url->getUrl(); - } - - /** - * Normalizes the URL - * - * See RFC 3986, Section 6. Normalization and Comparison - * - * @link https://tools.ietf.org/html/rfc3986#section-6 - * - * @return void - */ - public function normalize() - { - // See RFC 3986, section 6 - - // Scheme is case-insensitive - if ($this->_scheme) { - $this->_scheme = strtolower($this->_scheme); - } - - // Hostname is case-insensitive - if ($this->_host) { - $this->_host = strtolower($this->_host); - } - - // Remove default port number for known schemes (RFC 3986, section 6.2.3) - if ('' === $this->_port - || $this->_port - && $this->_scheme - && $this->_port == getservbyname($this->_scheme, 'tcp') - ) { - $this->_port = false; - } - - // Normalize case of %XX percentage-encodings (RFC 3986, section 6.2.2.1) - // Normalize percentage-encoded unreserved characters (section 6.2.2.2) - $fields = array(&$this->_userinfo, &$this->_host, &$this->_path, - &$this->_query, &$this->_fragment); - foreach ($fields as &$field) { - if ($field !== false) { - $field = $this->_normalize("$field"); - } - } - unset($field); - - // Path segment normalization (RFC 3986, section 6.2.2.3) - $this->_path = self::removeDotSegments($this->_path); - - // Scheme based normalization (RFC 3986, section 6.2.3) - if (false !== $this->_host && '' === $this->_path) { - $this->_path = '/'; - } - - // path should start with '/' if there is authority (section 3.3.) - if (strlen($this->getAuthority()) - && strlen($this->_path) - && $this->_path[0] !== '/' - ) { - $this->_path = '/' . $this->_path; - } - } - - /** - * Normalize case of %XX percentage-encodings (RFC 3986, section 6.2.2.1) - * Normalize percentage-encoded unreserved characters (section 6.2.2.2) - * - * @param string|array $mixed string or array of strings to normalize - * - * @return string|array - * @see normalize - * @see _normalizeCallback() - */ - private function _normalize($mixed) - { - return preg_replace_callback( - '((?:%[0-9a-fA-Z]{2})+)', array($this, '_normalizeCallback'), - $mixed - ); - } - - /** - * Callback for _normalize() of %XX percentage-encodings - * - * @param array $matches as by preg_replace_callback - * - * @return string - * @see normalize - * @see _normalize - * @SuppressWarnings(PHPMD.UnusedPrivateMethod) - */ - private function _normalizeCallback($matches) - { - return self::urlencode(urldecode($matches[0])); - } - - /** - * Returns whether this instance represents an absolute URL. - * - * @return bool - */ - public function isAbsolute() - { - return (bool) $this->_scheme; - } - - /** - * Returns an Net_URL2 instance representing an absolute URL relative to - * this URL. - * - * @param Net_URL2|string $reference relative URL - * - * @throws Exception - * @return $this - */ - public function resolve($reference) - { - if (!$reference instanceof Net_URL2) { - $reference = new self($reference); - } - if (!$reference->_isFragmentOnly() && !$this->isAbsolute()) { - throw new Exception( - 'Base-URL must be absolute if reference is not fragment-only' - ); - } - - // A non-strict parser may ignore a scheme in the reference if it is - // identical to the base URI's scheme. - if (!$this->getOption(self::OPTION_STRICT) - && $reference->_scheme == $this->_scheme - ) { - $reference->_scheme = false; - } - - $target = new self(''); - if ($reference->_scheme !== false) { - $target->_scheme = $reference->_scheme; - $target->setAuthority($reference->getAuthority()); - $target->_path = self::removeDotSegments($reference->_path); - $target->_query = $reference->_query; - } else { - $authority = $reference->getAuthority(); - if ($authority !== false) { - $target->setAuthority($authority); - $target->_path = self::removeDotSegments($reference->_path); - $target->_query = $reference->_query; - } else { - if ($reference->_path == '') { - $target->_path = $this->_path; - if ($reference->_query !== false) { - $target->_query = $reference->_query; - } else { - $target->_query = $this->_query; - } - } else { - if (substr($reference->_path, 0, 1) == '/') { - $target->_path = self::removeDotSegments($reference->_path); - } else { - // Merge paths (RFC 3986, section 5.2.3) - if ($this->_host !== false && $this->_path == '') { - $target->_path = '/' . $reference->_path; - } else { - $i = strrpos($this->_path, '/'); - if ($i !== false) { - $target->_path = substr($this->_path, 0, $i + 1); - } - $target->_path .= $reference->_path; - } - $target->_path = self::removeDotSegments($target->_path); - } - $target->_query = $reference->_query; - } - $target->setAuthority($this->getAuthority()); - } - $target->_scheme = $this->_scheme; - } - - $target->_fragment = $reference->_fragment; - - return $target; - } - - /** - * URL is fragment-only - * - * @SuppressWarnings(PHPMD.UnusedPrivateMethod) - * @return bool - */ - private function _isFragmentOnly() - { - return ( - $this->_fragment !== false - && $this->_query === false - && $this->_path === '' - && $this->_port === false - && $this->_host === false - && $this->_userinfo === false - && $this->_scheme === false - ); - } - - /** - * Removes dots as described in RFC 3986, section 5.2.4, e.g. - * "/foo/../bar/baz" => "/bar/baz" - * - * @param string $path a path - * - * @return string a path - */ - public static function removeDotSegments($path) - { - $path = (string) $path; - $output = ''; - - // Make sure not to be trapped in an infinite loop due to a bug in this - // method - $loopLimit = 256; - $j = 0; - while ('' !== $path && $j++ < $loopLimit) { - if (substr($path, 0, 2) === './') { - // Step 2.A - $path = substr($path, 2); - } elseif (substr($path, 0, 3) === '../') { - // Step 2.A - $path = substr($path, 3); - } elseif (substr($path, 0, 3) === '/./' || $path === '/.') { - // Step 2.B - $path = '/' . substr($path, 3); - } elseif (substr($path, 0, 4) === '/../' || $path === '/..') { - // Step 2.C - $path = '/' . substr($path, 4); - $i = strrpos($output, '/'); - $output = $i === false ? '' : substr($output, 0, $i); - } elseif ($path === '.' || $path === '..') { - // Step 2.D - $path = ''; - } else { - // Step 2.E - $i = strpos($path, '/', $path[0] === '/'); - if ($i === false) { - $output .= $path; - $path = ''; - break; - } - $output .= substr($path, 0, $i); - $path = substr($path, $i); - } - } - - if ($path !== '') { - $message = sprintf( - 'Unable to remove dot segments; hit loop limit %d (left: %s)', - $j, var_export($path, true) - ); - trigger_error($message, E_USER_WARNING); - } - - return $output; - } - - /** - * Percent-encodes all non-alphanumeric characters except these: _ . - ~ - * Similar to PHP's rawurlencode(), except that it also encodes ~ in PHP - * 5.2.x and earlier. - * - * @param string $string string to encode - * - * @return string - */ - public static function urlencode($string) - { - $encoded = rawurlencode($string); - - // This is only necessary in PHP < 5.3. - $encoded = str_replace('%7E', '~', $encoded); - return $encoded; - } - - /** - * Returns a Net_URL2 instance representing the canonical URL of the - * currently executing PHP script. - * - * @throws Exception - * @return string - */ - public static function getCanonical() - { - if (!isset($_SERVER['REQUEST_METHOD'])) { - // ALERT - no current URL - throw new Exception('Script was not called through a webserver'); - } - - // Begin with a relative URL - $url = new self($_SERVER['PHP_SELF']); - $url->_scheme = isset($_SERVER['HTTPS']) ? 'https' : 'http'; - $url->_host = $_SERVER['SERVER_NAME']; - $port = $_SERVER['SERVER_PORT']; - if ($url->_scheme == 'http' && $port != 80 - || $url->_scheme == 'https' && $port != 443 - ) { - $url->_port = $port; - } - return $url; - } - - /** - * Returns the URL used to retrieve the current request. - * - * @return string - */ - public static function getRequestedURL() - { - return self::getRequested()->getUrl(); - } - - /** - * Returns a Net_URL2 instance representing the URL used to retrieve the - * current request. - * - * @throws Exception - * @return $this - */ - public static function getRequested() - { - if (!isset($_SERVER['REQUEST_METHOD'])) { - // ALERT - no current URL - throw new Exception('Script was not called through a webserver'); - } - - // Begin with a relative URL - $url = new self($_SERVER['REQUEST_URI']); - $url->_scheme = isset($_SERVER['HTTPS']) ? 'https' : 'http'; - // Set host and possibly port - $url->setAuthority($_SERVER['HTTP_HOST']); - return $url; - } - - /** - * Returns the value of the specified option. - * - * @param string $optionName The name of the option to retrieve - * - * @return mixed - */ - public function getOption($optionName) - { - return isset($this->_options[$optionName]) - ? $this->_options[$optionName] : false; - } - - /** - * A simple version of http_build_query in userland. The encoded string is - * percentage encoded according to RFC 3986. - * - * @param array $data An array, which has to be converted into - * QUERY_STRING. Anything is possible. - * @param string $separator Separator {@link self::OPTION_SEPARATOR_OUTPUT} - * @param string $key For stacked values (arrays in an array). - * - * @return string - */ - protected function buildQuery(array $data, $separator, $key = null) - { - $query = array(); - $drop_names = ( - $this->_options[self::OPTION_DROP_SEQUENCE] === true - && array_keys($data) === array_keys(array_values($data)) - ); - foreach ($data as $name => $value) { - if ($this->getOption(self::OPTION_ENCODE_KEYS) === true) { - $name = rawurlencode($name); - } - if ($key !== null) { - if ($this->getOption(self::OPTION_USE_BRACKETS) === true) { - $drop_names && $name = ''; - $name = $key . '[' . $name . ']'; - } else { - $name = $key; - } - } - if (is_array($value)) { - $query[] = $this->buildQuery($value, $separator, $name); - } else { - $query[] = $name . '=' . rawurlencode($value); - } - } - return implode($separator, $query); - } - - /** - * This method uses a regex to parse the url into the designated parts. - * - * @param string $url URL - * - * @return void - * @uses self::$_scheme, self::setAuthority(), self::$_path, self::$_query, - * self::$_fragment - * @see __construct - */ - protected function parseUrl($url) - { - // The regular expression is copied verbatim from RFC 3986, appendix B. - // The expression does not validate the URL but matches any string. - preg_match( - '(^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?)', - $url, $matches - ); - - // "path" is always present (possibly as an empty string); the rest - // are optional. - $this->_scheme = !empty($matches[1]) ? $matches[2] : false; - $this->setAuthority(!empty($matches[3]) ? $matches[4] : false); - $this->_path = $this->_encodeData($matches[5]); - $this->_query = !empty($matches[6]) - ? $this->_encodeData($matches[7]) - : false - ; - $this->_fragment = !empty($matches[8]) ? $matches[9] : false; - } - - /** - * Encode characters that might have been forgotten to encode when passing - * in an URL. Applied onto Userinfo, Path and Query. - * - * @param string $url URL - * - * @return string - * @see parseUrl - * @see setAuthority - * @link https://pear.php.net/bugs/bug.php?id=20425 - */ - private function _encodeData($url) - { - return preg_replace_callback( - '([\x-\x20\x22\x3C\x3E\x7F-\xFF]+)', - array($this, '_encodeCallback'), $url - ); - } - - /** - * callback for encoding character data - * - * @param array $matches Matches - * - * @return string - * @see _encodeData - * @SuppressWarnings(PHPMD.UnusedPrivateMethod) - */ - private function _encodeCallback(array $matches) - { - return rawurlencode($matches[0]); - } -} diff --git a/wp-content/plugins/updraftplus/includes/PEAR/PEAR.php b/wp-content/plugins/updraftplus/includes/PEAR/PEAR.php deleted file mode 100644 index 34c6aaf5..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/PEAR.php +++ /dev/null @@ -1,1060 +0,0 @@ - - * @author Stig Bakken - * @author Tomas V.V.Cox - * @author Greg Beaver - * @copyright 1997-2010 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version CVS: $Id: PEAR.php 313023 2011-07-06 19:17:11Z dufuz $ - * @link http://pear.php.net/package/PEAR - * @since File available since Release 0.1 - */ - -/**#@+ - * ERROR constants - */ -define('PEAR_ERROR_RETURN', 1); -define('PEAR_ERROR_PRINT', 2); -define('PEAR_ERROR_TRIGGER', 4); -define('PEAR_ERROR_DIE', 8); -define('PEAR_ERROR_CALLBACK', 16); -/** - * WARNING: obsolete - * @deprecated - */ -define('PEAR_ERROR_EXCEPTION', 32); -/**#@-*/ -define('PEAR_ZE2', (function_exists('version_compare') && - version_compare(zend_version(), "2-dev", "ge"))); - -if (substr(PHP_OS, 0, 3) == 'WIN') { - define('OS_WINDOWS', true); - define('OS_UNIX', false); - define('PEAR_OS', 'Windows'); -} else { - define('OS_WINDOWS', false); - define('OS_UNIX', true); - define('PEAR_OS', 'Unix'); // blatant assumption -} - -$GLOBALS['_PEAR_default_error_mode'] = PEAR_ERROR_RETURN; -$GLOBALS['_PEAR_default_error_options'] = E_USER_NOTICE; -$GLOBALS['_PEAR_destructor_object_list'] = array(); -$GLOBALS['_PEAR_shutdown_funcs'] = array(); -$GLOBALS['_PEAR_error_handler_stack'] = array(); - -/** - * Base class for other PEAR classes. Provides rudimentary - * emulation of destructors. - * - * If you want a destructor in your class, inherit PEAR and make a - * destructor method called _yourclassname (same name as the - * constructor, but with a "_" prefix). Also, in your constructor you - * have to call the PEAR constructor: parent::_construct();. - * The destructor method will be called without parameters. Note that - * at in some SAPI implementations (such as Apache), any output during - * the request shutdown (in which destructors are called) seems to be - * discarded. If you need to get any debug information from your - * destructor, use error_log(), syslog() or something similar. - * - * IMPORTANT! To use the emulated destructors you need to create the - * objects by reference: $obj =& new PEAR_child; - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Greg Beaver - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/package/PEAR - * @see PEAR_Error - * @since Class available since PHP 4.0.2 - * @link http://pear.php.net/manual/en/core.pear.php#core.pear.pear - */ -class PEAR -{ - /** - * Whether to enable internal debug messages. - * - * @var bool - * @access private - */ - var $_debug = false; - - /** - * Default error mode for this object. - * - * @var int - * @access private - */ - var $_default_error_mode = null; - - /** - * Default error options used for this object when error mode - * is PEAR_ERROR_TRIGGER. - * - * @var int - * @access private - */ - var $_default_error_options = null; - - /** - * Default error handler (callback) for this object, if error mode is - * PEAR_ERROR_CALLBACK. - * - * @var string - * @access private - */ - var $_default_error_handler = ''; - - /** - * Which class to use for error objects. - * - * @var string - * @access private - */ - var $_error_class = 'PEAR_Error'; - - /** - * An array of expected errors. - * - * @var array - * @access private - */ - var $_expected_errors = array(); - - /** - * Constructor. Registers this object in - * $_PEAR_destructor_object_list for destructor emulation if a - * destructor object exists. - * - * @param string $error_class (optional) which class to use for - * error objects, defaults to PEAR_Error. - * @access public - * @return self - */ - public function __construct($error_class = null) { - $classname = strtolower(get_class($this)); - if ($this->_debug) { - print "PEAR constructor called, class=$classname\n"; - } - - if ($error_class !== null) { - $this->_error_class = $error_class; - } - - while ($classname && strcasecmp($classname, "pear")) { - $destructor = "_$classname"; - if (method_exists($this, $destructor)) { - global $_PEAR_destructor_object_list; - $_PEAR_destructor_object_list[] = &$this; - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - break; - } else { - $classname = get_parent_class($classname); - } - } - } - - /** - * Destructor (the emulated type of...). Does nothing right now, - * but is included for forward compatibility, so subclass - * destructors should always call it. - * - * See the note in the class desciption about output from - * destructors. - * - * @access public - * @return void - */ - public function __destruct() { - if ($this->_debug) { - printf("PEAR destructor called, class=%s\n", strtolower(get_class($this))); - } - } - - /** - * If you have a class that's mostly/entirely static, and you need static - * properties, you can use this method to simulate them. Eg. in your method(s) - * do this: $myVar = &PEAR::getStaticProperty('myclass', 'myVar'); - * You MUST use a reference, or they will not persist! - * - * @access public - * @param string $class The calling classname, to prevent clashes - * @param string $var The variable to retrieve. - * @return mixed A reference to the variable. If not set it will be - * auto initialised to NULL. - */ - static function &getStaticProperty($class, $var) - { - static $properties; - if (!isset($properties[$class])) { - $properties[$class] = array(); - } - - if (!array_key_exists($var, $properties[$class])) { - $properties[$class][$var] = null; - } - - return $properties[$class][$var]; - } - - /** - * Use this function to register a shutdown method for static - * classes. - * - * @access public - * @param mixed $func The function name (or array of class/method) to call - * @param mixed $args The arguments to pass to the function - * @return void - */ - function registerShutdownFunc($func, $args = array()) - { - // if we are called statically, there is a potential - // that no shutdown func is registered. Bug #6445 - if (!isset($GLOBALS['_PEAR_SHUTDOWN_REGISTERED'])) { - register_shutdown_function("_PEAR_call_destructors"); - $GLOBALS['_PEAR_SHUTDOWN_REGISTERED'] = true; - } - $GLOBALS['_PEAR_shutdown_funcs'][] = array($func, $args); - } - - /** - * Tell whether a value is a PEAR error. - * - * @param mixed $data the value to test - * @param int $code if $data is an error object, return true - * only if $code is a string and - * $obj->getMessage() == $code or - * $code is an integer and $obj->getCode() == $code - * @access public - * @return bool true if parameter is an error - */ - static function isError($data, $code = null) - { - if (!is_a($data, 'PEAR_Error')) { - return false; - } - - if (is_null($code)) { - return true; - } elseif (is_string($code)) { - return $data->getMessage() == $code; - } - - return $data->getCode() == $code; - } - - /** - * Sets how errors generated by this object should be handled. - * Can be invoked both in objects and statically. If called - * statically, setErrorHandling sets the default behaviour for all - * PEAR objects. If called in an object, setErrorHandling sets - * the default behaviour for that object. - * - * @param int $mode - * One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION. - * - * @param mixed $options - * When $mode is PEAR_ERROR_TRIGGER, this is the error level (one - * of E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * - * When $mode is PEAR_ERROR_CALLBACK, this parameter is expected - * to be the callback function or method. A callback - * function is a string with the name of the function, a - * callback method is an array of two elements: the element - * at index 0 is the object, and the element at index 1 is - * the name of the method to call in the object. - * - * When $mode is PEAR_ERROR_PRINT or PEAR_ERROR_DIE, this is - * a printf format string used when printing the error - * message. - * - * @access public - * @return void - * @see PEAR_ERROR_RETURN - * @see PEAR_ERROR_PRINT - * @see PEAR_ERROR_TRIGGER - * @see PEAR_ERROR_DIE - * @see PEAR_ERROR_CALLBACK - * @see PEAR_ERROR_EXCEPTION - * - * @since PHP 4.0.5 - */ - function setErrorHandling($mode = null, $options = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $setmode = &$this->_default_error_mode; - $setoptions = &$this->_default_error_options; - } else { - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - } - - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - } - - /** - * This method is used to tell which errors you expect to get. - * Expected errors are always returned with error mode - * PEAR_ERROR_RETURN. Expected error codes are stored in a stack, - * and this method pushes a new element onto it. The list of - * expected errors are in effect until they are popped off the - * stack with the popExpect() method. - * - * Note that this method can not be called statically - * - * @param mixed $code a single error code or an array of error codes to expect - * - * @return int the new depth of the "expected errors" stack - * @access public - */ - function expectError($code = '*') - { - if (is_array($code)) { - array_push($this->_expected_errors, $code); - } else { - array_push($this->_expected_errors, array($code)); - } - return count($this->_expected_errors); - } - - /** - * This method pops one element off the expected error codes - * stack. - * - * @return array the list of error codes that were popped - */ - function popExpect() - { - return array_pop($this->_expected_errors); - } - - /** - * This method checks unsets an error code if available - * - * @param mixed error code - * @return bool true if the error code was unset, false otherwise - * @access private - * @since PHP 4.3.0 - */ - function _checkDelExpect($error_code) - { - $deleted = false; - foreach ($this->_expected_errors as $key => $error_array) { - if (in_array($error_code, $error_array)) { - unset($this->_expected_errors[$key][array_search($error_code, $error_array)]); - $deleted = true; - } - - // clean up empty arrays - if (0 == count($this->_expected_errors[$key])) { - unset($this->_expected_errors[$key]); - } - } - - return $deleted; - } - - /** - * This method deletes all occurences of the specified element from - * the expected error codes stack. - * - * @param mixed $error_code error code that should be deleted - * @return mixed list of error codes that were deleted or error - * @access public - * @since PHP 4.3.0 - */ - function delExpect($error_code) - { - $deleted = false; - if ((is_array($error_code) && (0 != count($error_code)))) { - // $error_code is a non-empty array here; we walk through it trying - // to unset all values - foreach ($error_code as $key => $error) { - $deleted = $this->_checkDelExpect($error) ? true : false; - } - - return $deleted ? true : PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } elseif (!empty($error_code)) { - // $error_code comes alone, trying to unset it - if ($this->_checkDelExpect($error_code)) { - return true; - } - - return PEAR::raiseError("The expected error you submitted does not exist"); // IMPROVE ME - } - - // $error_code is empty - return PEAR::raiseError("The expected error you submitted is empty"); // IMPROVE ME - } - - /** - * This method is a wrapper that returns an instance of the - * configured error class with this object's default error - * handling applied. If the $mode and $options parameters are not - * specified, the object's defaults are used. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param int $mode One of PEAR_ERROR_RETURN, PEAR_ERROR_PRINT, - * PEAR_ERROR_TRIGGER, PEAR_ERROR_DIE, - * PEAR_ERROR_CALLBACK, PEAR_ERROR_EXCEPTION. - * - * @param mixed $options If $mode is PEAR_ERROR_TRIGGER, this parameter - * specifies the PHP-internal error level (one of - * E_USER_NOTICE, E_USER_WARNING or E_USER_ERROR). - * If $mode is PEAR_ERROR_CALLBACK, this - * parameter specifies the callback function or - * method. In other error modes this parameter - * is ignored. - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @param string $error_class The returned error object will be - * instantiated from this class, if specified. - * - * @param bool $skipmsg If true, raiseError will only pass error codes, - * the error message parameter will be dropped. - * - * @access public - * @return object a PEAR error object - * @see PEAR::setErrorHandling - * @since PHP 4.0.5 - */ - function &raiseError($message = null, - $code = null, - $mode = null, - $options = null, - $userinfo = null, - $error_class = null, - $skipmsg = false) - { - // The error is yet a PEAR error object - if (is_object($message)) { - $code = $message->getCode(); - $userinfo = $message->getUserInfo(); - $error_class = $message->getType(); - $message->error_message_prefix = ''; - $message = $message->getMessage(); - } - - if ( - isset($this) && - isset($this->_expected_errors) && - count($this->_expected_errors) > 0 && - count($exp = end($this->_expected_errors)) - ) { - if ($exp[0] == "*" || - (is_int(reset($exp)) && in_array($code, $exp)) || - (is_string(reset($exp)) && in_array($message, $exp)) - ) { - $mode = PEAR_ERROR_RETURN; - } - } - - // No mode given, try global ones - if ($mode === null) { - // Class error handler - if (isset($this) && isset($this->_default_error_mode)) { - $mode = $this->_default_error_mode; - $options = $this->_default_error_options; - // Global error handler - } elseif (isset($GLOBALS['_PEAR_default_error_mode'])) { - $mode = $GLOBALS['_PEAR_default_error_mode']; - $options = $GLOBALS['_PEAR_default_error_options']; - } - } - - if ($error_class !== null) { - $ec = $error_class; - } elseif (isset($this) && isset($this->_error_class)) { - $ec = $this->_error_class; - } else { - $ec = 'PEAR_Error'; - } - - if (intval(PHP_VERSION) < 5) { - // little non-eval hack to fix bug #12147 - include 'PEAR/FixPHP5PEARWarnings.php'; - return $a; - } - - if ($skipmsg) { - $a = new $ec($code, $mode, $options, $userinfo); - } else { - $a = new $ec($message, $code, $mode, $options, $userinfo); - } - - return $a; - } - - /** - * Simpler form of raiseError with fewer options. In most cases - * message, code and userinfo are enough. - * - * @param mixed $message a text error message or a PEAR error object - * - * @param int $code a numeric error code (it is up to your class - * to define these if you want to use codes) - * - * @param string $userinfo If you need to pass along for example debug - * information, this parameter is meant for that. - * - * @access public - * @return object a PEAR error object - * @see PEAR::raiseError - */ - function &throwError($message = null, $code = null, $userinfo = null) - { - if (isset($this) && is_a($this, 'PEAR')) { - $a = &$this->raiseError($message, $code, null, null, $userinfo); - return $a; - } - - $a = &PEAR::raiseError($message, $code, null, null, $userinfo); - return $a; - } - - function staticPushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - $stack[] = array($def_mode, $def_options); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $def_mode = $mode; - $def_options = $options; - break; - - case PEAR_ERROR_CALLBACK: - $def_mode = $mode; - // class/object method callback - if (is_callable($options)) { - $def_options = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - $stack[] = array($mode, $options); - return true; - } - - function staticPopErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - $setmode = &$GLOBALS['_PEAR_default_error_mode']; - $setoptions = &$GLOBALS['_PEAR_default_error_options']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - switch ($mode) { - case PEAR_ERROR_EXCEPTION: - case PEAR_ERROR_RETURN: - case PEAR_ERROR_PRINT: - case PEAR_ERROR_TRIGGER: - case PEAR_ERROR_DIE: - case null: - $setmode = $mode; - $setoptions = $options; - break; - - case PEAR_ERROR_CALLBACK: - $setmode = $mode; - // class/object method callback - if (is_callable($options)) { - $setoptions = $options; - } else { - trigger_error("invalid error callback", E_USER_WARNING); - } - break; - - default: - trigger_error("invalid error mode", E_USER_WARNING); - break; - } - return true; - } - - /** - * Push a new error handler on top of the error handler options stack. With this - * you can easily override the actual error handler for some code and restore - * it later with popErrorHandling. - * - * @param mixed $mode (same as setErrorHandling) - * @param mixed $options (same as setErrorHandling) - * - * @return bool Always true - * - * @see PEAR::setErrorHandling - */ - function pushErrorHandling($mode, $options = null) - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - if (isset($this) && is_a($this, 'PEAR')) { - $def_mode = &$this->_default_error_mode; - $def_options = &$this->_default_error_options; - } else { - $def_mode = &$GLOBALS['_PEAR_default_error_mode']; - $def_options = &$GLOBALS['_PEAR_default_error_options']; - } - $stack[] = array($def_mode, $def_options); - - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - $stack[] = array($mode, $options); - return true; - } - - /** - * Pop the last error handler used - * - * @return bool Always true - * - * @see PEAR::pushErrorHandling - */ - function popErrorHandling() - { - $stack = &$GLOBALS['_PEAR_error_handler_stack']; - array_pop($stack); - list($mode, $options) = $stack[sizeof($stack) - 1]; - array_pop($stack); - if (isset($this) && is_a($this, 'PEAR')) { - $this->setErrorHandling($mode, $options); - } else { - PEAR::setErrorHandling($mode, $options); - } - return true; - } - - /** - * OS independant PHP extension load. Remember to take care - * on the correct extension name for case sensitive OSes. - * - * @param string $ext The extension name - * @return bool Success or not on the dl() call - */ - function loadExtension($ext) - { - if (extension_loaded($ext)) { - return true; - } - - // if either returns true dl() will produce a FATAL error, stop that - if ( - function_exists('dl') === false || - ini_get('enable_dl') != 1 || - ini_get('safe_mode') == 1 - ) { - return false; - } - - if (OS_WINDOWS) { - $suffix = '.dll'; - } elseif (PHP_OS == 'HP-UX') { - $suffix = '.sl'; - } elseif (PHP_OS == 'AIX') { - $suffix = '.a'; - } elseif (PHP_OS == 'OSX') { - $suffix = '.bundle'; - } else { - $suffix = '.so'; - } - - return @dl('php_'.$ext.$suffix) || @dl($ext.$suffix); - } -} - -if (PEAR_ZE2) { - include_once 'PEAR5.php'; -} - -function _PEAR_call_destructors() -{ - global $_PEAR_destructor_object_list; - if (is_array($_PEAR_destructor_object_list) && - sizeof($_PEAR_destructor_object_list)) - { - reset($_PEAR_destructor_object_list); - if (PEAR_ZE2) { - $destructLifoExists = PEAR5::getStaticProperty('PEAR', 'destructlifo'); - } else { - $destructLifoExists = PEAR::getStaticProperty('PEAR', 'destructlifo'); - } - - if ($destructLifoExists) { - $_PEAR_destructor_object_list = array_reverse($_PEAR_destructor_object_list); - } - - foreach ($_PEAR_destructor_object_list as $k => $objref) { - $classname = get_class($objref); - while ($classname) { - $destructor = "_$classname"; - if (method_exists($objref, $destructor)) { - $objref->$destructor(); - break; - } else { - $classname = get_parent_class($classname); - } - } - } - // Empty the object list to ensure that destructors are - // not called more than once. - $_PEAR_destructor_object_list = array(); - } - - // Now call the shutdown functions - if ( - isset($GLOBALS['_PEAR_shutdown_funcs']) && - is_array($GLOBALS['_PEAR_shutdown_funcs']) && - !empty($GLOBALS['_PEAR_shutdown_funcs']) - ) { - foreach ($GLOBALS['_PEAR_shutdown_funcs'] as $value) { - call_user_func_array($value[0], $value[1]); - } - } -} - -/** - * Standard PEAR error class for PHP 4 - * - * This class is supserseded by {@link PEAR_Exception} in PHP 5 - * - * @category pear - * @package PEAR - * @author Stig Bakken - * @author Tomas V.V. Cox - * @author Gregory Beaver - * @copyright 1997-2006 The PHP Group - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.9.4 - * @link http://pear.php.net/manual/en/core.pear.pear-error.php - * @see PEAR::raiseError(), PEAR::throwError() - * @since Class available since PHP 4.0.2 - */ -class PEAR_Error -{ - var $error_message_prefix = ''; - var $mode = PEAR_ERROR_RETURN; - var $level = E_USER_NOTICE; - var $code = -1; - var $message = ''; - var $userinfo = ''; - var $backtrace = null; - - /** - * PEAR_Error constructor - * - * @param string $message message - * - * @param int $code (optional) error code - * - * @param int $mode (optional) error mode, one of: PEAR_ERROR_RETURN, - * PEAR_ERROR_PRINT, PEAR_ERROR_DIE, PEAR_ERROR_TRIGGER, - * PEAR_ERROR_CALLBACK or PEAR_ERROR_EXCEPTION - * - * @param mixed $options (optional) error level, _OR_ in the case of - * PEAR_ERROR_CALLBACK, the callback function or object/method - * tuple. - * - * @param string $userinfo (optional) additional user/debug info - * - * @access public - * - */ - function __construct($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - if ($mode === null) { - $mode = PEAR_ERROR_RETURN; - } - $this->message = $message; - $this->code = $code; - $this->mode = $mode; - $this->userinfo = $userinfo; - - if (PEAR_ZE2) { - $skiptrace = PEAR5::getStaticProperty('PEAR_Error', 'skiptrace'); - } else { - $skiptrace = PEAR::getStaticProperty('PEAR_Error', 'skiptrace'); - } - - if (!$skiptrace) { - $this->backtrace = debug_backtrace(); - if (isset($this->backtrace[0]) && isset($this->backtrace[0]['object'])) { - unset($this->backtrace[0]['object']); - } - } - - if ($mode & PEAR_ERROR_CALLBACK) { - $this->level = E_USER_NOTICE; - $this->callback = $options; - } else { - if ($options === null) { - $options = E_USER_NOTICE; - } - - $this->level = $options; - $this->callback = null; - } - - if ($this->mode & PEAR_ERROR_PRINT) { - if (is_null($options) || is_int($options)) { - $format = "%s"; - } else { - $format = $options; - } - - printf($format, $this->getMessage()); - } - - if ($this->mode & PEAR_ERROR_TRIGGER) { - trigger_error($this->getMessage(), $this->level); - } - - if ($this->mode & PEAR_ERROR_DIE) { - $msg = $this->getMessage(); - if (is_null($options) || is_int($options)) { - $format = "%s"; - if (substr($msg, -1) != "\n") { - $msg .= "\n"; - } - } else { - $format = $options; - } - die(sprintf($format, $msg)); - } - - if ($this->mode & PEAR_ERROR_CALLBACK && is_callable($this->callback)) { - call_user_func($this->callback, $this); - } - - if ($this->mode & PEAR_ERROR_EXCEPTION) { - trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_Exception for exceptions", E_USER_WARNING); - eval('$e = new Exception($this->message, $this->code);throw($e);'); - } - } - - /** - * Get the error mode from an error object. - * - * @return int error mode - * @access public - */ - function getMode() - { - return $this->mode; - } - - /** - * Get the callback function/method from an error object. - * - * @return mixed callback function or object/method array - * @access public - */ - function getCallback() - { - return $this->callback; - } - - /** - * Get the error message from an error object. - * - * @return string full error message - * @access public - */ - function getMessage() - { - return ($this->error_message_prefix . $this->message); - } - - /** - * Get error code from an error object - * - * @return int error code - * @access public - */ - function getCode() - { - return $this->code; - } - - /** - * Get the name of this error/exception. - * - * @return string error/exception name (type) - * @access public - */ - function getType() - { - return get_class($this); - } - - /** - * Get additional user-supplied information. - * - * @return string user-supplied information - * @access public - */ - function getUserInfo() - { - return $this->userinfo; - } - - /** - * Get additional debug information supplied by the application. - * - * @return string debug information - * @access public - */ - function getDebugInfo() - { - return $this->getUserInfo(); - } - - /** - * Get the call backtrace from where the error was generated. - * Supported with PHP 4.3.0 or newer. - * - * @param int $frame (optional) what frame to fetch - * @return array Backtrace, or NULL if not available. - * @access public - */ - function getBacktrace($frame = null) - { - if (defined('PEAR_IGNORE_BACKTRACE')) { - return null; - } - if ($frame === null) { - return $this->backtrace; - } - return $this->backtrace[$frame]; - } - - function addUserInfo($info) - { - if (empty($this->userinfo)) { - $this->userinfo = $info; - } else { - $this->userinfo .= " ** $info"; - } - } - - function __toString() - { - return $this->getMessage(); - } - - /** - * Make a string representation of this object. - * - * @return string a string with an object summary - * @access public - */ - function toString() - { - $modes = array(); - $levels = array(E_USER_NOTICE => 'notice', - E_USER_WARNING => 'warning', - E_USER_ERROR => 'error'); - if ($this->mode & PEAR_ERROR_CALLBACK) { - if (is_array($this->callback)) { - $callback = (is_object($this->callback[0]) ? - strtolower(get_class($this->callback[0])) : - $this->callback[0]) . '::' . - $this->callback[1]; - } else { - $callback = $this->callback; - } - return sprintf('[%s: message="%s" code=%d mode=callback '. - 'callback=%s prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - $callback, $this->error_message_prefix, - $this->userinfo); - } - if ($this->mode & PEAR_ERROR_PRINT) { - $modes[] = 'print'; - } - if ($this->mode & PEAR_ERROR_TRIGGER) { - $modes[] = 'trigger'; - } - if ($this->mode & PEAR_ERROR_DIE) { - $modes[] = 'die'; - } - if ($this->mode & PEAR_ERROR_RETURN) { - $modes[] = 'return'; - } - return sprintf('[%s: message="%s" code=%d mode=%s level=%s '. - 'prefix="%s" info="%s"]', - strtolower(get_class($this)), $this->message, $this->code, - implode("|", $modes), $levels[$this->level], - $this->error_message_prefix, - $this->userinfo); - } -} - -/* - * Local Variables: - * mode: php - * tab-width: 4 - * c-basic-offset: 4 - * End: - */ diff --git a/wp-content/plugins/updraftplus/includes/PEAR/PEAR/Exception.php b/wp-content/plugins/updraftplus/includes/PEAR/PEAR/Exception.php deleted file mode 100644 index 21851905..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/PEAR/Exception.php +++ /dev/null @@ -1,389 +0,0 @@ - - * @author Hans Lellelid - * @author Bertrand Mansion - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @link http://pear.php.net/package/PEAR - * @since File available since Release 1.3.3 - */ - - -/** - * Base PEAR_Exception Class - * - * 1) Features: - * - * - Nestable exceptions (throw new PEAR_Exception($msg, $prev_exception)) - * - Definable triggers, shot when exceptions occur - * - Pretty and informative error messages - * - Added more context info available (like class, method or cause) - * - cause can be a PEAR_Exception or an array of mixed - * PEAR_Exceptions/PEAR_ErrorStack warnings - * - callbacks for specific exception classes and their children - * - * 2) Ideas: - * - * - Maybe a way to define a 'template' for the output - * - * 3) Inherited properties from PHP Exception Class: - * - * protected $message - * protected $code - * protected $line - * protected $file - * private $trace - * - * 4) Inherited methods from PHP Exception Class: - * - * __clone - * __construct - * getMessage - * getCode - * getFile - * getLine - * getTraceSafe - * getTraceSafeAsString - * __toString - * - * 5) Usage example - * - * - * require_once 'PEAR/Exception.php'; - * - * class Test { - * function foo() { - * throw new PEAR_Exception('Error Message', ERROR_CODE); - * } - * } - * - * function myLogger($pear_exception) { - * echo $pear_exception->getMessage(); - * } - * // each time a exception is thrown the 'myLogger' will be called - * // (its use is completely optional) - * PEAR_Exception::addObserver('myLogger'); - * $test = new Test; - * try { - * $test->foo(); - * } catch (PEAR_Exception $e) { - * print $e; - * } - * - * - * @category pear - * @package PEAR - * @author Tomas V.V.Cox - * @author Hans Lellelid - * @author Bertrand Mansion - * @author Greg Beaver - * @copyright 1997-2009 The Authors - * @license http://opensource.org/licenses/bsd-license.php New BSD License - * @version Release: 1.10.1 - * @link http://pear.php.net/package/PEAR - * @since Class available since Release 1.3.3 - * - */ -class PEAR_Exception extends Exception -{ - const OBSERVER_PRINT = -2; - const OBSERVER_TRIGGER = -4; - const OBSERVER_DIE = -8; - protected $cause; - private static $_observers = array(); - private static $_uniqueid = 0; - private $_trace; - - /** - * Supported signatures: - * - PEAR_Exception(string $message); - * - PEAR_Exception(string $message, int $code); - * - PEAR_Exception(string $message, Exception $cause); - * - PEAR_Exception(string $message, Exception $cause, int $code); - * - PEAR_Exception(string $message, PEAR_Error $cause); - * - PEAR_Exception(string $message, PEAR_Error $cause, int $code); - * - PEAR_Exception(string $message, array $causes); - * - PEAR_Exception(string $message, array $causes, int $code); - * @param string exception message - * @param int|Exception|PEAR_Error|array|null exception cause - * @param int|null exception code or null - * @throws PEAR_Exception if PEAR_Error class not exists or Exception not type of PEAR_Error - */ - public function __construct($message, $p2 = null, $p3 = null) - { - if (is_int($p2)) { - $code = $p2; - $this->cause = null; - } elseif (is_object($p2) || is_array($p2)) { - // using is_object allows both Exception and PEAR_Error - if (is_object($p2) && !($p2 instanceof Exception)) { - if (!class_exists('PEAR_Error') || !($p2 instanceof PEAR_Error)) { - throw new PEAR_Exception('exception cause must be Exception, ' . - 'array, or PEAR_Error'); - } - } - $code = $p3; - if (is_array($p2) && isset($p2['message'])) { - // fix potential problem of passing in a single warning - $p2 = array($p2); - } - $this->cause = $p2; - } else { - $code = null; - $this->cause = null; - } - parent::__construct($message, $code); - $this->signal(); - } - - /** - * @param mixed $callback - A valid php callback, see php func is_callable() - * - A PEAR_Exception::OBSERVER_* constant - * - An array(const PEAR_Exception::OBSERVER_*, - * mixed $options) - * @param string $label The name of the observer. Use this if you want - * to remove it later with removeObserver() - */ - public static function addObserver($callback, $label = 'default') - { - self::$_observers[$label] = $callback; - } - - public static function removeObserver($label = 'default') - { - unset(self::$_observers[$label]); - } - - /** - * @return int unique identifier for an observer - */ - public static function getUniqueId() - { - return self::$_uniqueid++; - } - - private function signal() - { - foreach (self::$_observers as $func) { - if (is_callable($func)) { - call_user_func($func, $this); - continue; - } - settype($func, 'array'); - switch ($func[0]) { - case self::OBSERVER_PRINT : - $f = (isset($func[1])) ? $func[1] : '%s'; - printf($f, $this->getMessage()); - break; - case self::OBSERVER_TRIGGER : - $f = (isset($func[1])) ? $func[1] : E_USER_NOTICE; - trigger_error($this->getMessage(), $f); - break; - case self::OBSERVER_DIE : - $f = (isset($func[1])) ? $func[1] : '%s'; - die(printf($f, $this->getMessage())); - break; - default: - trigger_error('invalid observer type', E_USER_WARNING); - } - } - } - - /** - * Return specific error information that can be used for more detailed - * error messages or translation. - * - * This method may be overridden in child exception classes in order - * to add functionality not present in PEAR_Exception and is a placeholder - * to define API - * - * The returned array must be an associative array of parameter => value like so: - *
-     * array('name' => $name, 'context' => array(...))
-     * 
- * @return array - */ - public function getErrorData() - { - return array(); - } - - /** - * Returns the exception that caused this exception to be thrown - * @access public - * @return Exception|array The context of the exception - */ - public function getCause() - { - return $this->cause; - } - - /** - * Function must be public to call on caused exceptions - * @param array - */ - public function getCauseMessage(&$causes) - { - $trace = $this->getTraceSafe(); - $cause = array('class' => get_class($this), - 'message' => $this->message, - 'file' => 'unknown', - 'line' => 'unknown'); - if (isset($trace[0])) { - if (isset($trace[0]['file'])) { - $cause['file'] = $trace[0]['file']; - $cause['line'] = $trace[0]['line']; - } - } - $causes[] = $cause; - if ($this->cause instanceof PEAR_Exception) { - $this->cause->getCauseMessage($causes); - } elseif ($this->cause instanceof Exception) { - $causes[] = array('class' => get_class($this->cause), - 'message' => $this->cause->getMessage(), - 'file' => $this->cause->getFile(), - 'line' => $this->cause->getLine()); - } elseif (class_exists('PEAR_Error') && $this->cause instanceof PEAR_Error) { - $causes[] = array('class' => get_class($this->cause), - 'message' => $this->cause->getMessage(), - 'file' => 'unknown', - 'line' => 'unknown'); - } elseif (is_array($this->cause)) { - foreach ($this->cause as $cause) { - if ($cause instanceof PEAR_Exception) { - $cause->getCauseMessage($causes); - } elseif ($cause instanceof Exception) { - $causes[] = array('class' => get_class($cause), - 'message' => $cause->getMessage(), - 'file' => $cause->getFile(), - 'line' => $cause->getLine()); - } elseif (class_exists('PEAR_Error') && $cause instanceof PEAR_Error) { - $causes[] = array('class' => get_class($cause), - 'message' => $cause->getMessage(), - 'file' => 'unknown', - 'line' => 'unknown'); - } elseif (is_array($cause) && isset($cause['message'])) { - // PEAR_ErrorStack warning - $causes[] = array( - 'class' => $cause['package'], - 'message' => $cause['message'], - 'file' => isset($cause['context']['file']) ? - $cause['context']['file'] : - 'unknown', - 'line' => isset($cause['context']['line']) ? - $cause['context']['line'] : - 'unknown', - ); - } - } - } - } - - public function getTraceSafe() - { - if (!isset($this->_trace)) { - $this->_trace = $this->getTrace(); - if (empty($this->_trace)) { - $backtrace = debug_backtrace(); - $this->_trace = array($backtrace[count($backtrace)-1]); - } - } - return $this->_trace; - } - - public function getErrorClass() - { - $trace = $this->getTraceSafe(); - return $trace[0]['class']; - } - - public function getErrorMethod() - { - $trace = $this->getTraceSafe(); - return $trace[0]['function']; - } - - public function __toString() - { - if (isset($_SERVER['REQUEST_URI'])) { - return $this->toHtml(); - } - return $this->toText(); - } - - public function toHtml() - { - $trace = $this->getTraceSafe(); - $causes = array(); - $this->getCauseMessage($causes); - $html = '' . "\n"; - foreach ($causes as $i => $cause) { - $html .= '\n"; - } - $html .= '' . "\n" - . '' - . '' - . '' . "\n"; - - foreach ($trace as $k => $v) { - $html .= '' - . '' - . '' . "\n"; - } - $html .= '' - . '' - . '' . "\n" - . '
' - . str_repeat('-', $i) . ' ' . $cause['class'] . ': ' - . htmlspecialchars($cause['message']) . ' in ' . $cause['file'] . ' ' - . 'on line ' . $cause['line'] . '' - . "
Exception trace
#FunctionLocation
' . $k . ''; - if (!empty($v['class'])) { - $html .= $v['class'] . $v['type']; - } - $html .= $v['function']; - $args = array(); - if (!empty($v['args'])) { - foreach ($v['args'] as $arg) { - if (is_null($arg)) $args[] = 'null'; - elseif (is_array($arg)) $args[] = 'Array'; - elseif (is_object($arg)) $args[] = 'Object('.get_class($arg).')'; - elseif (is_bool($arg)) $args[] = $arg ? 'true' : 'false'; - elseif (is_int($arg) || is_double($arg)) $args[] = $arg; - else { - $arg = (string)$arg; - $str = htmlspecialchars(substr($arg, 0, 16)); - if (strlen($arg) > 16) $str .= '…'; - $args[] = "'" . $str . "'"; - } - } - } - $html .= '(' . implode(', ',$args) . ')' - . '' . (isset($v['file']) ? $v['file'] : 'unknown') - . ':' . (isset($v['line']) ? $v['line'] : 'unknown') - . '
' . ($k+1) . '{main} 
'; - return $html; - } - - public function toText() - { - $causes = array(); - $this->getCauseMessage($causes); - $causeMsg = ''; - foreach ($causes as $i => $cause) { - $causeMsg .= str_repeat(' ', $i) . $cause['class'] . ': ' - . $cause['message'] . ' in ' . $cause['file'] - . ' on line ' . $cause['line'] . "\n"; - } - return $causeMsg . $this->getTraceAsString(); - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/PEAR/PEAR5.php b/wp-content/plugins/updraftplus/includes/PEAR/PEAR5.php deleted file mode 100644 index 42860678..00000000 --- a/wp-content/plugins/updraftplus/includes/PEAR/PEAR5.php +++ /dev/null @@ -1,33 +0,0 @@ -__signingKeyResource) { + if (false !== $this->__signingKeyResource && (!defined('PHP_MAJOR_VERSION') || PHP_MAJOR_VERSION < 8)) { // @phpcs:ignore PHPCompatibility.Constants.NewConstants.php_major_versionFound openssl_free_key($this->__signingKeyResource); } } @@ -323,9 +323,9 @@ public function setSignatureVersion($version = 'v2') { */ private function _triggerError($message, $file, $line, $code = 0) { if ($this->useExceptions) { - throw new UpdraftPlus_S3Exception($message, $file, $line, $code); + throw new UpdraftPlus_S3Exception($message, $file, $line, $code); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- The escaping should happen when the exception is caught and printed } else { - trigger_error($message, E_USER_WARNING); + trigger_error(esc_html($message), E_USER_WARNING); } } @@ -1272,68 +1272,6 @@ public function getAuthenticatedURL($bucket, $uri, $lifetime, $hostBucket = fals urlencode($this->__getHash("GET\n\n\n{$expires}\n/{$bucket}/{$uri}"))); } - /** - * Get upload POST parameters for form uploads - * - * @param string $bucket Bucket name - * @param string $uriPrefix Object URI prefix - * @param string $acl ACL constant - * @param integer $lifetime Lifetime in seconds - * @param integer $maxFileSize Maximum file size in bytes (default 5MB) - * @param string $successRedirect Redirect URL or 200 / 201 status code - * @param array $amzHeaders Array of x-amz-meta-* headers - * @param array $headers Array of request headers or content type as a string - * @param boolean $flashVars Includes additional "Filename" variable posted by Flash - * - * @return object - */ - public function getHttpUploadPostParams($bucket, $uriPrefix = '', $acl = self::ACL_PRIVATE, $lifetime = 3600, - $maxFileSize = 5242880, $successRedirect = "201", $amzHeaders = array(), $headers = array(), $flashVars = false) { - // Create policy object - $policy = new stdClass; - $policy->expiration = gmdate('Y-m-d\TH:i:s\Z', (time() + $lifetime)); - $policy->conditions = array(); - $obj = new stdClass; $obj->bucket = $bucket; array_push($policy->conditions, $obj); - $obj = new stdClass; $obj->acl = $acl; array_push($policy->conditions, $obj); - - $obj = new stdClass; // 200 for non-redirect uploads - if (is_numeric($successRedirect) && in_array((int)$successRedirect, array(200, 201))) - $obj->success_action_status = (string)$successRedirect; - else // URL - $obj->success_action_redirect = $successRedirect; - array_push($policy->conditions, $obj); - - if (self::ACL_PUBLIC_READ !== $acl) - array_push($policy->conditions, array('eq', '$acl', $acl)); - - array_push($policy->conditions, array('starts-with', '$key', $uriPrefix)); - if ($flashVars) array_push($policy->conditions, array('starts-with', '$Filename', '')); - foreach (array_keys($headers) as $headerKey) - array_push($policy->conditions, array('starts-with', '$'.$headerKey, '')); - foreach ($amzHeaders as $headerKey => $headerVal) { - $obj = new stdClass; - $obj->{$headerKey} = (string)$headerVal; - array_push($policy->conditions, $obj); - } - array_push($policy->conditions, array('content-length-range', 0, $maxFileSize)); - $policy = base64_encode(str_replace('\/', '/', json_encode($policy))); - - // Create parameters - $params = new stdClass; - $params->AWSAccessKeyId = $this->__accessKey; - $params->key = $uriPrefix.'${filename}'; - $params->acl = $acl; - $params->policy = $policy; unset($policy); - $params->signature = $this->__getHash($params->policy); - if (is_numeric($successRedirect) && in_array((int)$successRedirect, array(200, 201))) - $params->success_action_status = (string)$successRedirect; - else - $params->success_action_redirect = $successRedirect; - foreach ($headers as $headerKey => $headerVal) $params->{$headerKey} = (string)$headerVal; - foreach ($amzHeaders as $headerKey => $headerVal) $params->{$headerKey} = (string)$headerVal; - return $params; - } - /** * Get MIME type for file * @@ -1451,10 +1389,11 @@ public function __getSignatureV4($aHeaders, $headers, $method = 'GET', $uri = '' foreach ($aHeaders as $k => $v) { $amzHeaders[strtolower($k)] = trim($v); } - uksort($amzHeaders, 'strcmp'); // payload $payloadHash = isset($amzHeaders['x-amz-content-sha256']) ? $amzHeaders['x-amz-content-sha256'] : hash('sha256', $data); + if (!isset($amzHeaders['x-amz-content-sha256']) && (!defined('UPDRAFTPLUS_S3_EXCLUDE_SIGV4_CONTENT_SHA256_HEADER') || !UPDRAFTPLUS_S3_EXCLUDE_SIGV4_CONTENT_SHA256_HEADER)) $amzHeaders['x-amz-content-sha256'] = $payloadHash; + uksort($amzHeaders, 'strcmp'); // parameters $parameters = array(); @@ -1471,7 +1410,13 @@ public function __getSignatureV4($aHeaders, $headers, $method = 'GET', $uri = '' $amzRequests[] = $method; $uriQmPos = strpos($uri, '?'); $amzRequests[] = (false === $uriQmPos ? $uri : substr($uri, 0, $uriQmPos)); - $amzRequests[] = http_build_query($parameters); + $built_queries = ''; + foreach ($parameters as $query => $val) { + if (!empty($built_queries)) $built_queries .= '&'; + $built_queries .= "$query=".rawurlencode($val); + } + $amzRequests[] = $built_queries; + // add headers as string to requests foreach ($amzHeaders as $k => $v) { @@ -1618,7 +1563,7 @@ abstract class UpdraftPlus_AWSRequest { ); public $fp = false, $size = 0, $data = false, $response; - private $s3; + protected $s3; /** * Set request parameter @@ -1901,6 +1846,8 @@ public function getResponse() { ); } else { // Use V4 + if (isset($this->headers['Content-MD5']) && '' == $this->headers['Content-MD5']) unset($this->headers['Content-MD5']); // content-md5 is part of v2 signature, but it may be presented in the HTTP headers whilst doing PUT requests, we've seen this happening on Amazon S3 storage when testing credentials, but it shouldn't be added to v4's SignedHeaders if it's empty so we unset it + if (isset($this->headers['Content-Type']) && '' == $this->headers['Content-Type']) unset($this->headers['Content-Type']); // content-type may get included in the HTTP headers, but if it's not presented then it shouldn't be added to SignedHeaders $amzHeaders = $this->s3->__getSignatureV4( $this->amzHeaders, $this->headers, @@ -1964,6 +1911,24 @@ public function getResponse() { @curl_close($curl); + if (false !== $this->response->error && preg_match('/\.amazonaws\.com$/i', $this->endpoint) && 'PUT' === $this->verb) { + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, 'https://tls12.browserleaks.com/'); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FAILONERROR, true); + curl_setopt($curl, CURLOPT_HEADER, false); + curl_setopt($curl, CURLOPT_TIMEOUT, 10); + curl_setopt($curl, CURLOPT_VERBOSE, true); + $response = curl_exec($curl); + $info = curl_getinfo($curl); + curl_close($curl); + + if (200 === $info['http_code'] && 'TLS 1.2' !== $response) { + $updraftplus->log('Connecting to Amazon S3 failed. Your PHP installation failed a TLS v1.2 connection test, which is the minimum version required by Amazon. Please ask your webserver support how to upgrade your PHP and cURL library versions to use non-obsolete TLS versions.'); + $updraftplus->log(__('Connecting to Amazon S3 failed.', 'updraftplus').' '.__('Your PHP installation failed a TLS v1.2 connection test, which is the minimum version required by Amazon.', 'updraftplus').' '.__('Please ask your webserver support how to upgrade your PHP and cURL library versions to use non-obsolete TLS versions.', 'updraftplus'), 'warning'); + } + } + // Parse body into XML // The case in which there is not application/xml content-type header is to support a DreamObjects case seen, April 2018 if (false === $this->response->error && isset($this->response->body) && ((isset($this->response->headers['type']) && false !== strpos($this->response->headers['type'], 'application/xml')) || (!isset($this->response->headers['type']) && 0 === strpos($this->response->body, 'response->error['body_xml'] = $this->response->body->asXML(); - if (isset($this->response->body->Region)) $this->response->error['region'] = $this->response->body->Region; + if (isset($this->response->body->Region)) { + $this->response->error['region'] = $this->response->body->Region; + } elseif (false !== stripos($this->response->body->Code, 'AuthorizationHeaderMalformed') && !empty($this->response->body->Message) && preg_match("#the region '[^']+' is wrong; expecting '([^']+)'#i", $this->response->body->Message, $matches)) { + $this->response->error['region'] = $matches[1]; + } $this->response->error['message'] = isset($this->response->body->Message) ? $this->response->body->Message : ''; if (isset($this->response->body->Resource)) $this->response->error['resource'] = (string)$this->response->body->Resource; diff --git a/wp-content/plugins/updraftplus/includes/S3compat.php b/wp-content/plugins/updraftplus/includes/S3compat.php index 269647eb..31fe9cff 100644 --- a/wp-content/plugins/updraftplus/includes/S3compat.php +++ b/wp-content/plugins/updraftplus/includes/S3compat.php @@ -58,8 +58,11 @@ class UpdraftPlus_S3_Compat { const ACL_AUTHENTICATED_READ = 'authenticated-read'; const STORAGE_CLASS_STANDARD = 'STANDARD'; + + // AWS S3 client + private $client; - private $config = array('scheme' => 'https', 'service' => 's3'); + private $config; private $__access_key = null; // AWS Access key @@ -82,9 +85,9 @@ class UpdraftPlus_S3_Compat { public $use_ssl_validation = true; - public $use_exceptions = false; + public $useExceptions = false; - private $_server_side_encryption = null; + private $_serverSideEncryption = null; // SSL CURL SSL options - only needed if you are experiencing problems with your OpenSSL configuration public $ssl_key = null; @@ -132,13 +135,13 @@ public function __construct($access_key = null, $secret_key = null, $use_ssl = t // AWS SDK V3 requires we specify a version. String 'latest' can be used but not recommended, a full list of versions for each API found here: https://docs.aws.amazon.com/aws-sdk-php/v3/api/index.html // latest S3Client version as of 16/09/21 is version 2006-03-01 - $opts = array( + $this->config = array( 'credentials' => $credentials, 'version' => '2006-03-01', 'scheme' => ($use_ssl) ? 'https' : 'http', 'ua_append' => 'UpdraftPlus/'.$updraftplus->version, // Using signature v4 requires a region (but see the note below) - // 'signature' => 'v4', + // 'signature_version' => 'v4', // 'region' => $this->region // 'endpoint' => 'somethingorother.s3.amazonaws.com' ); @@ -147,16 +150,16 @@ public function __construct($access_key = null, $secret_key = null, $use_ssl = t // Can't specify signature v4, as that requires stating the region - which we don't necessarily yet know. // Later comment: however, it looks to me like in current UD (Sep 2017), $endpoint is never used for Amazon S3/Vault, and there may be cases (e.g. DigitalOcean Spaces) where we might prefer v4 (DO support v2 too, currently) without knowing a region. $this->endpoint = $endpoint; - $opts['endpoint'] = $endpoint; + $this->config['endpoint'] = $endpoint; } else { // Using signature v4 requires a region. Also, some regions (EU Central 1, China) require signature v4 - and all support it, so we may as well use it if we can. - $opts['signature'] = 'v4'; - $opts['region'] = $this->region; + $this->config['signature_version'] = 'v4'; + $this->config['region'] = $this->region; } - if ($use_ssl) $opts['ssl.certificate_authority'] = $ssl_ca_cert; + if ($use_ssl) $this->config['http']['verify'] = $ssl_ca_cert; - $this->client = new S3MultiRegionClient($opts); + $this->client = new S3MultiRegionClient($this->config); } /** @@ -246,25 +249,14 @@ public function return_provider() { public function setSSL($enabled, $validate = true) { $this->use_ssl = $enabled; $this->use_ssl_validation = $validate; - // http://guzzle.readthedocs.org/en/latest/clients.html#verify - if ($enabled) { - - // Do nothing - in UpdraftPlus, setSSLAuth will be called later, and we do the calls there -// $verify_peer = ($validate) ? true : false; -// $verify_host = ($validate) ? 2 : 0; -// -// $this->config['scheme'] = 'https'; -// $this->client->setConfig($this->config); -// -// $this->client->setSslVerification($validate, $verify_peer, $verify_host); + $scheme = ($enabled) ? 'https' : 'http'; - - } else { - $this->config['scheme'] = 'http'; -// $this->client->setConfig($this->config); + // The AWS SDK V3 client doesn't have the 'setConfig' method, so we must recreate the client instance to update the configs. However, we only do it when the '$config' variable is changed. + if ($this->config['scheme'] != $scheme) { + $this->config['scheme'] = $scheme; + $this->client = new S3MultiRegionClient($this->config); } - $this->client->setConfig($this->config); } public function getuseSSL() { @@ -288,27 +280,21 @@ public function getUseSSLValidation() { * @param string $ssl_ca_cert SSL CA cert (only required if you are having problems with your system CA cert) * @return void */ - public function setSSLAuth($ssl_cert = null, $ssl_key = null, $ssl_ca_cert = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found + public function setSSLAuth($ssl_cert = null, $ssl_key = null, $ssl_ca_cert = null) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Unused parameters are for future use. if (!$this->use_ssl) return; - if (!$this->use_ssl_validation) { - $this->client->setSslVerification(false); + if (!$this->use_ssl_validation || !$ssl_ca_cert) { + $verify = false; } else { - if (!$ssl_ca_cert) { - $client = $this->client; - // "Static class properties and methods, as well as class constants, could not be accessed using a dynamic (variable) classname in PHP 5.2 or earlier." But the present file is not loaded in PHP 5.2. - // @codingStandardsIgnoreLine - $this->config[$client::SSL_CERT_AUTHORITY] = false; - $this->client->setConfig($this->config); - } else { - $this->client->setSslVerification(realpath($ssl_ca_cert), true, 2); - } + $verify = ('system' === $ssl_ca_cert) ? true : realpath($ssl_ca_cert); } -// $this->client->setSslVerification($ssl_ca_cert, $verify_peer, $verify_host); -// $this->config['ssl.certificate_authority'] = $ssl_ca_cert; -// $this->client->setConfig($this->config); + // The AWS SDK V3 client doesn't have the 'setConfig' method, so we must recreate the client instance to update the configs. However, we only do it when the '$config' variable is changed. + if ($this->config['http']['verify'] != $verify) { + $this->config['http']['verify'] = $verify; + $this->client = new S3MultiRegionClient($this->config); + } } /** @@ -542,7 +528,7 @@ public function putBucket($bucket, $acl = self::ACL_PRIVATE, $location = false) * @param constant $storage_class Storage class constant * @return string | false */ - public function initiateMultipartUpload($bucket, $uri, $acl = self::ACL_PRIVATE, $meta_headers = array(), $request_headers = array(), $storage_class = self::STORAGE_CLASS_STANDARD) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found + public function initiateMultipartUpload($bucket, $uri, $acl = self::ACL_PRIVATE, $meta_headers = array(), $request_headers = array(), $storage_class = self::STORAGE_CLASS_STANDARD) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Unused parameter is present because the caller from UpdraftPlus_BackupModule_s3 class uses 6 arguments. $vars = array( 'ACL' => $acl, 'Bucket' => $bucket, @@ -763,13 +749,13 @@ public function getObject($bucket, $uri, $save_to = false, $resume = false) { $fp = $save_to; if (!is_bool($resume)) $range_header = $resume; } elseif (file_exists($save_to)) { - if ($resume && ($fp = @fopen($save_to, 'ab')) !== false) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if ($resume && ($fp = @fopen($save_to, 'ab')) !== false) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $range_header = "bytes=".filesize($save_to).'-'; } else { throw new Exception('Unable to open save file for writing: '.$save_to); } } else { - if (($fp = @fopen($save_to, 'wb')) !== false) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (($fp = @fopen($save_to, 'wb')) !== false) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $range_header = false; } else { throw new Exception('Unable to open save file for writing: '.$save_to); @@ -827,7 +813,7 @@ public function getBucketLocation($bucket) { } private function trigger_from_exception($e) { - trigger_error($e->getMessage().' ('.get_class($e).') (line: '.$e->getLine().', file: '.$e->getFile().')', E_USER_WARNING); + trigger_error(esc_html($e->getMessage().' ('.get_class($e).') (line: '.$e->getLine().', file: '.$e->getFile().')'), E_USER_WARNING); return false; } diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/BlobRestProxy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/BlobRestProxy.php deleted file mode 100644 index ed425fb4..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/BlobRestProxy.php +++ /dev/null @@ -1,2461 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Models\ServiceProperties; -use WindowsAzure\Common\Internal\ServiceRestProxy; -use WindowsAzure\Blob\Internal\IBlob; -use WindowsAzure\Blob\Models\BlobServiceOptions; -use WindowsAzure\Common\Models\GetServicePropertiesResult; -use WindowsAzure\Blob\Models\ListContainersOptions; -use WindowsAzure\Blob\Models\ListContainersResult; -use WindowsAzure\Blob\Models\CreateContainerOptions; -use WindowsAzure\Blob\Models\GetContainerPropertiesResult; -use WindowsAzure\Blob\Models\GetContainerACLResult; -use WindowsAzure\Blob\Models\SetContainerMetadataOptions; -use WindowsAzure\Blob\Models\DeleteContainerOptions; -use WindowsAzure\Blob\Models\ListBlobsOptions; -use WindowsAzure\Blob\Models\ListBlobsResult; -use WindowsAzure\Blob\Models\BlobType; -use WindowsAzure\Blob\Models\Block; -use WindowsAzure\Blob\Models\CreateBlobOptions; -use WindowsAzure\Blob\Models\BlobProperties; -use WindowsAzure\Blob\Models\GetBlobPropertiesOptions; -use WindowsAzure\Blob\Models\GetBlobPropertiesResult; -use WindowsAzure\Blob\Models\SetBlobPropertiesOptions; -use WindowsAzure\Blob\Models\SetBlobPropertiesResult; -use WindowsAzure\Blob\Models\GetBlobMetadataOptions; -use WindowsAzure\Blob\Models\GetBlobMetadataResult; -use WindowsAzure\Blob\Models\SetBlobMetadataOptions; -use WindowsAzure\Blob\Models\SetBlobMetadataResult; -use WindowsAzure\Blob\Models\GetBlobOptions; -use WindowsAzure\Blob\Models\GetBlobResult; -use WindowsAzure\Blob\Models\DeleteBlobOptions; -use WindowsAzure\Blob\Models\LeaseMode; -use WindowsAzure\Blob\Models\AcquireLeaseOptions; -use WindowsAzure\Blob\Models\AcquireLeaseResult; -use WindowsAzure\Blob\Models\CreateBlobPagesOptions; -use WindowsAzure\Blob\Models\CreateBlobPagesResult; -use WindowsAzure\Blob\Models\PageWriteOption; -use WindowsAzure\Blob\Models\ListPageBlobRangesOptions; -use WindowsAzure\Blob\Models\ListPageBlobRangesResult; -use WindowsAzure\Blob\Models\CreateBlobBlockOptions; -use WindowsAzure\Blob\Models\CommitBlobBlocksOptions; -use WindowsAzure\Blob\Models\BlockList; -use WindowsAzure\Blob\Models\ListBlobBlocksOptions; -use WindowsAzure\Blob\Models\ListBlobBlocksResult; -use WindowsAzure\Blob\Models\CopyBlobOptions; -use WindowsAzure\Blob\Models\CreateBlobSnapshotOptions; -use WindowsAzure\Blob\Models\CreateBlobSnapshotResult; -use WindowsAzure\Blob\Models\PageRange; -use WindowsAzure\Blob\Models\CopyBlobResult; -use WindowsAzure\Blob\Models\BreakLeaseResult; - -/** - * This class constructs HTTP requests and receive HTTP responses for blob - * service layer. - * - * @category Microsoft - * @package WindowsAzure\Blob - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlobRestProxy extends ServiceRestProxy implements IBlob -{ - /** - * @var int Defaults to 32MB - */ - private $_SingleBlobUploadThresholdInBytes = 33554432 ; - - /** - * Get the value for SingleBlobUploadThresholdInBytes - * - * @return int - */ - public function getSingleBlobUploadThresholdInBytes() - { - return $this->_SingleBlobUploadThresholdInBytes; - } - - /** - * Set the value for SingleBlobUploadThresholdInBytes, Max 64MB - * - * @param int $val The max size to send as a single blob block - * - * @return none - */ - public function setSingleBlobUploadThresholdInBytes($val) - { - if ($val > 67108864) { - // What should the proper action here be? - $val = 67108864; - } elseif ($val < 1) { - // another spot that could use looking at - $val = 33554432; - } - $this->_SingleBlobUploadThresholdInBytes = $val; - } - - /** - * Gets the copy blob source name with specified parameters. - * - * @param string $containerName The name of the container. - * @param string $blobName The name of the blob. - * @param Models\CopyBlobOptions $options The optional parameters. - * - * @return string - */ - private function _getCopyBlobSourceName($containerName, $blobName, $options) - { - $sourceName = $this->_getBlobUrl($containerName, $blobName); - - if (!is_null($options->getSourceSnapshot())) { - $sourceName .= '?snapshot=' . $options->getSourceSnapshot(); - } - - return $sourceName; - } - - /** - * Creates URI path for blob. - * - * @param string $container The container name. - * @param string $blob The blob name. - * - * @return string - */ - private function _createPath($container, $blob) - { - $encodedBlob = urlencode($blob); - // Unencode the forward slashes to match what the server expects. - $encodedBlob = str_replace('%2F', '/', $encodedBlob); - // Unencode the backward slashes to match what the server expects. - $encodedBlob = str_replace('%5C', '/', $encodedBlob); - // Re-encode the spaces (encoded as space) to the % encoding. - $encodedBlob = str_replace('+', '%20', $encodedBlob); - - // Empty container means accessing default container - if (empty($container)) { - return $encodedBlob; - } else { - return $container . '/' . $encodedBlob; - } - } - - /** - * Creates full URI to the given blob. - * - * @param string $container The container name. - * @param string $blob The blob name. - * - * @return string - */ - private function _getBlobUrl($container, $blob) - { - $encodedBlob = urlencode($blob); - // Unencode the forward slashes to match what the server expects. - $encodedBlob = str_replace('%2F', '/', $encodedBlob); - // Unencode the backward slashes to match what the server expects. - $encodedBlob = str_replace('%5C', '/', $encodedBlob); - // Re-encode the spaces (encoded as space) to the % encoding. - $encodedBlob = str_replace('+', '%20', $encodedBlob); - - // Empty container means accessing default container - if (empty($container)) { - $encodedBlob = $encodedBlob; - } else { - $encodedBlob = $container . '/' . $encodedBlob; - } - - return $this->getUri() . '/' . $encodedBlob; - } - - /** - * Creates GetBlobPropertiesResult from headers array. - * - * @param array $headers The HTTP response headers array. - * - * @return GetBlobPropertiesResult - */ - private function _getBlobPropertiesResultFromResponse($headers) - { - $result = new GetBlobPropertiesResult(); - $properties = new BlobProperties(); - $d = $headers[Resources::LAST_MODIFIED]; - $bType = $headers[Resources::X_MS_BLOB_TYPE]; - $cLength = intval($headers[Resources::CONTENT_LENGTH]); - $lStatus = Utilities::tryGetValue($headers, Resources::X_MS_LEASE_STATUS); - $cType = Utilities::tryGetValue($headers, Resources::CONTENT_TYPE); - $cMD5 = Utilities::tryGetValue($headers, Resources::CONTENT_MD5); - $cEncoding = Utilities::tryGetValue($headers, Resources::CONTENT_ENCODING); - $cLanguage = Utilities::tryGetValue($headers, Resources::CONTENT_LANGUAGE); - $cControl = Utilities::tryGetValue($headers, Resources::CACHE_CONTROL); - $etag = $headers[Resources::ETAG]; - $metadata = $this->getMetadataArray($headers); - - if (array_key_exists(Resources::X_MS_BLOB_SEQUENCE_NUMBER, $headers)) { - $sNumber = intval($headers[Resources::X_MS_BLOB_SEQUENCE_NUMBER]); - $properties->setSequenceNumber($sNumber); - } - - $properties->setBlobType($bType); - $properties->setCacheControl($cControl); - $properties->setContentEncoding($cEncoding); - $properties->setContentLanguage($cLanguage); - $properties->setContentLength($cLength); - $properties->setContentMD5($cMD5); - $properties->setContentType($cType); - $properties->setETag($etag); - $properties->setLastModified(Utilities::rfc1123ToDateTime($d)); - $properties->setLeaseStatus($lStatus); - - $result->setProperties($properties); - $result->setMetadata($metadata); - - return $result; - } - - /** - * Helper method for getContainerProperties and getContainerMetadata. - * - * @param string $container The container name. - * @param Models\BlobServiceOptions $options The optional parameters. - * @param string $operation The operation string. Should be - * 'metadata' to get metadata. - * - * @return Models\GetContainerPropertiesResult - */ - private function _getContainerPropertiesImpl($container, $options = null, - $operation = null - ) { - Validate::isString($container, 'container'); - - $method = Resources::HTTP_GET; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $path = $container; - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new BlobServiceOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'container' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - $operation - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - $result = new GetContainerPropertiesResult(); - $metadata = $this->getMetadataArray($response->getHeader()); - $date = $response->getHeader(Resources::LAST_MODIFIED); - $date = Utilities::rfc1123ToDateTime($date); - $result->setETag($response->getHeader(Resources::ETAG)); - $result->setMetadata($metadata); - $result->setLastModified($date); - - return $result; - } - - /** - * Adds optional create blob headers. - * - * @param CreateBlobOptions $options The optional parameters. - * @param array $headers The HTTP request headers. - * - * @return array - */ - private function _addCreateBlobOptionalHeaders($options, $headers) - { - $contentType = $options->getContentType(); - $metadata = $options->getMetadata(); - $blobContentType = $options->getBlobContentType(); - $blobContentEncoding = $options->getBlobContentEncoding(); - $blobContentLanguage = $options->getBlobContentLanguage(); - $blobContentMD5 = $options->getBlobContentMD5(); - $blobCacheControl = $options->getBlobCacheControl(); - $leaseId = $options->getLeaseId(); - - if (!is_null($contentType)) { - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - $options->getContentType() - ); - } else { - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - Resources::BINARY_FILE_TYPE - ); - } - $headers = $this->addMetadataHeaders($headers, $metadata); - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::CONTENT_ENCODING, - $options->getContentEncoding() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_LANGUAGE, - $options->getContentLanguage() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_MD5, - $options->getContentMD5() - ); - $this->addOptionalHeader( - $headers, - Resources::CACHE_CONTROL, - $options->getCacheControl() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $leaseId - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_TYPE, - $blobContentType - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_ENCODING, - $blobContentEncoding - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_LANGUAGE, - $blobContentLanguage - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_MD5, - $blobContentMD5 - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CACHE_CONTROL, - $blobCacheControl - ); - - return $headers; - } - - /** - * Adds Range header to the headers array. - * - * @param array $headers The HTTP request headers. - * @param integer $start The start byte. - * @param integer $end The end byte. - * - * @return array - */ - private function _addOptionalRangeHeader($headers, $start, $end) - { - if (!is_null($start) || !is_null($end)) { - $range = $start . '-' . $end; - $rangeValue = 'bytes=' . $range; - $this->addOptionalHeader($headers, Resources::RANGE, $rangeValue); - } - - return $headers; - } - - /** - * Does the actual work for leasing a blob. - * - * @param string $leaseAction The lease action string. - * @param string $container The container name. - * @param string $blob The blob to lease name. - * @param string $leaseId The existing lease id. - * @param BlobServiceOptions $options The optional parameters. - * @param AccessCondition $accessCondition The access conditions. - * - * @return array - */ - private function _putLeaseImpl($leaseAction, $container, $blob, $leaseId, - $options, $accessCondition = null - ) { - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - Validate::isString($container, 'container'); - - $method = Resources::HTTP_PUT; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::EMPTY_STRING; - - switch ($leaseAction) { - case LeaseMode::ACQUIRE_ACTION: - $this->addOptionalHeader($headers, Resources::X_MS_LEASE_DURATION, -1); - $statusCode = Resources::STATUS_CREATED; - break; - case LeaseMode::RENEW_ACTION: - $statusCode = Resources::STATUS_OK; - break; - case LeaseMode::RELEASE_ACTION: - $statusCode = Resources::STATUS_OK; - break; - case LeaseMode::BREAK_ACTION: - $statusCode = Resources::STATUS_ACCEPTED; - break; - default: - throw new \Exception(Resources::NOT_IMPLEMENTED_MSG); - } - - if (!is_null($options)) { - $options = new BlobServiceOptions(); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $accessCondition - ); - - $this->addOptionalHeader($headers, Resources::X_MS_LEASE_ID, $leaseId); - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ACTION, - $leaseAction - ); - $this->addOptionalQueryParam($queryParams, Resources::QP_COMP, 'lease'); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - return $response->getHeader(); - } - - /** - * Does actual work for create and clear blob pages. - * - * @param string $action Either clear or create. - * @param string $container The container name. - * @param string $blob The blob name. - * @param PageRange $range The page ranges. - * @param string|resource $content The content stream. - * @param CreateBlobPagesOptions $options The optional parameters. - * - * @return CreateBlobPagesResult - */ - private function _updatePageBlobPagesImpl($action, $container, $blob, $range, - $content, $options = null - ) { - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - Validate::isString($container, 'container'); - Validate::isTrue( - $range instanceof PageRange, - sprintf( - Resources::INVALID_PARAM_MSG, - 'range', - get_class(new PageRange()) - ) - ); - Validate::isTrue( - is_string($content) || is_resource($content), - sprintf(Resources::INVALID_PARAM_MSG, 'content', 'string|resource') - ); - - $method = Resources::HTTP_PUT; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_CREATED; - // If read file failed for any reason it will throw an exception. - $body = is_resource($content) ? stream_get_contents($content) : $content; - - if (is_null($options)) { - $options = new CreateBlobPagesOptions(); - } - - $headers = $this->_addOptionalRangeHeader( - $headers, $range->getStart(), $range->getEnd() - ); - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_MD5, - $options->getContentMD5() - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_PAGE_WRITE, - $action - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - Resources::URL_ENCODED_CONTENT_TYPE - ); - $this->addOptionalQueryParam($queryParams, Resources::QP_COMP, 'page'); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode, - $body - ); - - return CreateBlobPagesResult::create($response->getHeader()); - } - - /** - * Gets the properties of the Blob service. - * - * @param Models\BlobServiceOptions $options The optional parameters. - * - * @return WindowsAzure\Common\Models\GetServicePropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/hh452239.aspx - */ - public function getServiceProperties($options = null) - { - $method = Resources::HTTP_GET; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $path = Resources::EMPTY_STRING; - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new BlobServiceOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'service' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'properties' - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - $parsed = $this->dataSerializer->unserialize($response->getBody()); - - return GetServicePropertiesResult::create($parsed); - } - - /** - * Sets the properties of the Blob service. - * - * It's recommended to use getServiceProperties, alter the returned object and - * then use setServiceProperties with this altered object. - * - * @param ServiceProperties $serviceProperties The service properties. - * @param Models\BlobServiceOptions $options The optional parameters. - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/hh452235.aspx - */ - public function setServiceProperties($serviceProperties, $options = null) - { - Validate::isTrue( - $serviceProperties instanceof ServiceProperties, - Resources::INVALID_SVC_PROP_MSG - ); - - $method = Resources::HTTP_PUT; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $statusCode = Resources::STATUS_ACCEPTED; - $path = Resources::EMPTY_STRING; - $body = $serviceProperties->toXml($this->dataSerializer); - - if (is_null($options)) { - $options = new BlobServiceOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'service' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'properties' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - Resources::URL_ENCODED_CONTENT_TYPE - ); - - $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode, - $body - ); - } - - /** - * Lists all of the containers in the given storage account. - * - * @param Models\ListContainersOptions $options The optional parameters. - * - * @return WindowsAzure\Blob\Models\ListContainersResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179352.aspx - */ - public function listContainers($options = null) - { - $method = Resources::HTTP_GET; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $path = Resources::EMPTY_STRING; - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new ListContainersOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'list' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_PREFIX, - $options->getPrefix() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_MARKER, - $options->getMarker() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_MAX_RESULTS, - $options->getMaxResults() - ); - $isInclude = $options->getIncludeMetadata(); - $isInclude = $isInclude ? 'metadata' : null; - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_INCLUDE, - $isInclude - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - $parsed = $this->dataSerializer->unserialize($response->getBody()); - - return ListContainersResult::create($parsed); - } - - /** - * Creates a new container in the given storage account. - * - * @param string $container The container name. - * @param Models\CreateContainerOptions $options The optional parameters. - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179468.aspx - */ - public function createContainer($container, $options = null) - { - Validate::isString($container, 'container'); - Validate::notNullOrEmpty($container, 'container'); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(Resources::QP_REST_TYPE => 'container'); - $path = $container; - $statusCode = Resources::STATUS_CREATED; - - if (is_null($options)) { - $options = new CreateContainerOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $metadata = $options->getMetadata(); - $headers = $this->generateMetadataHeaders($metadata); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_PUBLIC_ACCESS, - $options->getPublicAccess() - ); - - $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - } - - /** - * Creates a new container in the given storage account. - * - * @param string $container The container name. - * @param Models\DeleteContainerOptions $options The optional parameters. - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx - */ - public function deleteContainer($container, $options = null) - { - Validate::isString($container, 'container'); - Validate::notNullOrEmpty($container, 'container'); - - $method = Resources::HTTP_DELETE; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $container; - $statusCode = Resources::STATUS_ACCEPTED; - - if (is_null($options)) { - $options = new DeleteContainerOptions(); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'container' - ); - - $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - } - - /** - * Returns all properties and metadata on the container. - * - * @param string $container name - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\GetContainerPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179370.aspx - */ - public function getContainerProperties($container, $options = null) - { - return $this->_getContainerPropertiesImpl($container, $options); - } - - /** - * Returns only user-defined metadata for the specified container. - * - * @param string $container name - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\GetContainerPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691976.aspx - */ - public function getContainerMetadata($container, $options = null) - { - return $this->_getContainerPropertiesImpl($container, $options, 'metadata'); - } - - /** - * Gets the access control list (ACL) and any container-level access policies - * for the container. - * - * @param string $container The container name. - * @param Models\BlobServiceOptions $options The optional parameters. - * - * @return Models\GetContainerAclResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179469.aspx - */ - public function getContainerAcl($container, $options = null) - { - Validate::isString($container, 'container'); - - $method = Resources::HTTP_GET; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $container; - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new BlobServiceOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'container' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'acl' - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - $access = $response->getHeader(Resources::X_MS_BLOB_PUBLIC_ACCESS); - $etag = $response->getHeader(Resources::ETAG); - $modified = $response->getHeader(Resources::LAST_MODIFIED); - $modifiedDate = Utilities::convertToDateTime($modified); - $parsed = $this->dataSerializer->unserialize($response->getBody()); - - return GetContainerAclResult::create($access, $etag, $modifiedDate, $parsed); - } - - /** - * Sets the ACL and any container-level access policies for the container. - * - * @param string $container name - * @param Models\ContainerAcl $acl access control list for container - * @param Models\BlobServiceOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179391.aspx - */ - public function setContainerAcl($container, $acl, $options = null) - { - Validate::isString($container, 'container'); - Validate::notNullOrEmpty($acl, 'acl'); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $container; - $statusCode = Resources::STATUS_OK; - $body = $acl->toXml($this->dataSerializer); - - if (is_null($options)) { - $options = new BlobServiceOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'container' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'acl' - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_PUBLIC_ACCESS, - $acl->getPublicAccess() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - Resources::URL_ENCODED_CONTENT_TYPE - ); - - $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode, - $body - ); - } - - /** - * Sets metadata headers on the container. - * - * @param string $container name - * @param array $metadata metadata key/value pair. - * @param Models\SetContainerMetadataOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179362.aspx - */ - public function setContainerMetadata($container, $metadata, $options = null) - { - Validate::isString($container, 'container'); - $this->validateMetadata($metadata); - - $method = Resources::HTTP_PUT; - $headers = $this->generateMetadataHeaders($metadata); - $postParams = array(); - $queryParams = array(); - $path = $container; - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new SetContainerMetadataOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'container' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'metadata' - ); - - $headers = $this->addOptionalAccessConditionHeader( - $headers, - $options->getAccessCondition() - ); - - $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - } - - /** - * Lists all of the blobs in the given container. - * - * @param string $container The container name. - * @param Models\ListBlobsOptions $options The optional parameters. - * - * @return Models\ListBlobsResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd135734.aspx - */ - public function listBlobs($container, $options = null) - { - Validate::isString($container, 'container'); - - $method = Resources::HTTP_GET; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $container; - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new ListBlobsOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_REST_TYPE, - 'container' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'list' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_PREFIX, - str_replace('\\', '/', $options->getPrefix()) - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_MARKER, - $options->getMarker() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_DELIMITER, - $options->getDelimiter() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_MAX_RESULTS, - $options->getMaxResults() - ); - - $includeMetadata = $options->getIncludeMetadata(); - $includeSnapshots = $options->getIncludeSnapshots(); - $includeUncommittedBlobs = $options->getIncludeUncommittedBlobs(); - - $includeValue = $this->groupQueryValues( - array( - $includeMetadata ? 'metadata' : null, - $includeSnapshots ? 'snapshots' : null, - $includeUncommittedBlobs ? 'uncommittedblobs' : null - ) - ); - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_INCLUDE, - $includeValue - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - $parsed = $this->dataSerializer->unserialize($response->getBody()); - - return ListBlobsResult::create($parsed); - } - - /** - * Creates a new page blob. Note that calling createPageBlob to create a page - * blob only initializes the blob. - * To add content to a page blob, call createBlobPages method. - * - * @param string $container The container name. - * @param string $blob The blob name. - * @param integer $length Specifies the maximum size for the - * page blob, up to 1 TB. The page blob size must be aligned to a 512-byte - * boundary. - * @param Models\CreateBlobOptions $options The optional parameters. - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx - */ - public function createPageBlob($container, $blob, $length, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - Validate::isInteger($length, 'length'); - Validate::notNull($length, 'length'); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_CREATED; - - if (is_null($options)) { - $options = new CreateBlobOptions(); - } - - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_TYPE, - BlobType::PAGE_BLOB - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_LENGTH, - $length - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_SEQUENCE_NUMBER, - $options->getSequenceNumber() - ); - $headers = $this->_addCreateBlobOptionalHeaders($options, $headers); - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - return CopyBlobResult::create($response->getHeader()); - } - - /** - * Creates a new block blob or updates the content of an existing block blob. - * - * Updating an existing block blob overwrites any existing metadata on the blob. - * Partial updates are not supported with createBlockBlob the content of the - * existing blob is overwritten with the content of the new blob. To perform a - * partial update of the content o f a block blob, use the createBlockList - * method. - * Note that the default content type is application/octet-stream. - * - * @param string $container The name of the container. - * @param string $blob The name of the blob. - * @param string|resource $content The content of the blob. - * @param Models\CreateBlobOptions $options The optional parameters. - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx - */ - public function createBlockBlob($container, $blob, $content, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - Validate::isTrue( - is_string($content) || is_resource($content), - sprintf(Resources::INVALID_PARAM_MSG, 'content', 'string|resource') - ); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $bodySize = false; - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_CREATED; - - if (is_null($options)) { - $options = new CreateBlobOptions(); - } - - if (is_resource($content)) { - $cStat = fstat($content); - // if the resource is a remote file, $cStat will be false - if ($cStat) { - $bodySize = $cStat['size']; - } - } else { - $bodySize = strlen($content); - } - - // if we have a size we can try to one shot this, else failsafe on block upload - if (is_int($bodySize) && $bodySize <= $this->_SingleBlobUploadThresholdInBytes) { - $headers = $this->_addCreateBlobOptionalHeaders($options, $headers); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_TYPE, - BlobType::BLOCK_BLOB - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - // If read file failed for any reason it will throw an exception. - $body = is_resource($content) ? stream_get_contents($content) : $content; - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode, - $body - ); - } else { - // This is for large or failsafe upload - $end = 0; - $counter = 0; - $body = ''; - $blockIds = array(); - // if threshold is lower than 4mb, honor threshold, else use 4mb - $blockSize = ($this->_SingleBlobUploadThresholdInBytes < 4194304) ? $this->_SingleBlobUploadThresholdInBytes : 4194304; - while(!$end) { - if (is_resource($content)) { - $body = fread($content, $blockSize); - if (feof($content)) { - $end = 1; - } - } else { - if (strlen($content) <= $blockSize) { - $body = $content; - $end = 1; - } else { - $body = substr($content, 0, $blockSize); - $content = substr_replace($content, '', 0, $blockSize); - } - } - $block = new Block(); - $block->setBlockId(base64_encode(str_pad($counter++, '0', 6))); - $block->setType('Uncommitted'); - array_push($blockIds, $block); - $this->createBlobBlock($container, $blob, $block->getBlockId(), $body); - } - $response = $this->commitBlobBlocks($container, $blob, $blockIds, $options); - } - return CopyBlobResult::create($response->getHeader()); - } - - /** - * Clears a range of pages from the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\PageRange $range Can be up to the value of the - * blob's full size. Note that ranges must be aligned to 512 (0-511, 512-1023) - * @param Models\CreateBlobPagesOptions $options optional parameters - * - * @return Models\CreateBlobPagesResult. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx - */ - public function clearBlobPages($container, $blob, $range, $options = null) - { - return $this->_updatePageBlobPagesImpl( - PageWriteOption::CLEAR_OPTION, - $container, - $blob, - $range, - Resources::EMPTY_STRING, - $options - ); - } - - /** - * Creates a range of pages to a page blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\PageRange $range Can be up to 4 MB in size - * Note that ranges must be aligned to 512 (0-511, 512-1023) - * @param string $content the blob contents. - * @param Models\CreateBlobPagesOptions $options optional parameters - * - * @return Models\CreateBlobPagesResult. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx - */ - public function createBlobPages($container, $blob, $range, $content, - $options = null - ) { - return $this->_updatePageBlobPagesImpl( - PageWriteOption::UPDATE_OPTION, - $container, - $blob, - $range, - $content, - $options - ); - } - - /** - * Creates a new block to be committed as part of a block blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $blockId must be less than or equal to - * 64 bytes in size. For a given blob, the length of the value specified for the - * blockid parameter must be the same size for each block. - * @param string $content the blob block contents - * @param Models\CreateBlobBlockOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd135726.aspx - */ - public function createBlobBlock($container, $blob, $blockId, $content, - $options = null - ) { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - Validate::isString($blockId, 'blockId'); - Validate::notNullOrEmpty($blockId, 'blockId'); - Validate::isTrue( - is_string($content) || is_resource($content), - sprintf(Resources::INVALID_PARAM_MSG, 'content', 'string|resource') - ); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_CREATED; - $body = $content; - - if (is_null($options)) { - $options = new CreateBlobBlockOptions(); - } - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_MD5, - $options->getContentMD5() - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - Resources::URL_ENCODED_CONTENT_TYPE - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'block' - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_BLOCKID, - base64_encode($blockId) - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode, - $body - ); - - return CopyBlobResult::create($response->getHeader()); - } - - /** - * This method writes a blob by specifying the list of block IDs that make up the - * blob. In order to be written as part of a blob, a block must have been - * successfully written to the server in a prior createBlobBlock method. - * - * You can call Put Block List to update a blob by uploading only those blocks - * that have changed, then committing the new and existing blocks together. - * You can do this by specifying whether to commit a block from the committed - * block list or from the uncommitted block list, or to commit the most recently - * uploaded version of the block, whichever list it may belong to. - * - * @param string $container The container name. - * @param string $blob The blob name. - * @param Models\BlockList|array $blockList The block entries. - * @param Models\CommitBlobBlocksOptions $options The optional parameters. - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179467.aspx - */ - public function commitBlobBlocks($container, $blob, $blockList, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - Validate::isTrue( - $blockList instanceof BlockList || is_array($blockList), - sprintf( - Resources::INVALID_PARAM_MSG, - 'blockList', - get_class(new BlockList()) - ) - ); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_CREATED; - $isArray = is_array($blockList); - $blockList = $isArray ? BlockList::create($blockList) : $blockList; - $body = $blockList->toXml($this->dataSerializer); - - if (is_null($options)) { - $options = new CommitBlobBlocksOptions(); - } - - $blobContentType = $options->getBlobContentType(); - $blobContentEncoding = $options->getBlobContentEncoding(); - $blobContentLanguage = $options->getBlobContentLanguage(); - $blobContentMD5 = $options->getBlobContentMD5(); - $blobCacheControl = $options->getBlobCacheControl(); - $leaseId = $options->getLeaseId(); - $contentType = Resources::URL_ENCODED_CONTENT_TYPE; - - $metadata = $options->getMetadata(); - $headers = $this->generateMetadataHeaders($metadata); - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $leaseId - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CACHE_CONTROL, - $blobCacheControl - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_TYPE, - $blobContentType - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_ENCODING, - $blobContentEncoding - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_LANGUAGE, - $blobContentLanguage - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_MD5, - $blobContentMD5 - ); - $this->addOptionalHeader( - $headers, - Resources::CONTENT_TYPE, - $contentType - ); - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'blocklist' - ); - - return $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode, - $body - ); - } - - /** - * Retrieves the list of blocks that have been uploaded as part of a block blob. - * - * There are two block lists maintained for a blob: - * 1) Committed Block List: The list of blocks that have been successfully - * committed to a given blob with commitBlobBlocks. - * 2) Uncommitted Block List: The list of blocks that have been uploaded for a - * blob using Put Block (REST API), but that have not yet been committed. - * These blocks are stored in Windows Azure in association with a blob, but do - * not yet form part of the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\ListBlobBlocksOptions $options optional parameters - * - * @return Models\ListBlobBlocksResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179400.aspx - */ - public function listBlobBlocks($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_GET; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new ListBlobBlocksOptions(); - } - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_BLOCK_LIST_TYPE, - $options->getBlockListType() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_SNAPSHOT, - $options->getSnapshot() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'blocklist' - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - $parsed = $this->dataSerializer->unserialize($response->getBody()); - - return ListBlobBlocksResult::create($response->getHeader(), $parsed); - } - - /** - * Returns all properties and metadata on the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\GetBlobPropertiesOptions $options optional parameters - * - * @return Models\GetBlobPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179394.aspx - */ - public function getBlobProperties($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_HEAD; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new GetBlobPropertiesOptions(); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_SNAPSHOT, - $options->getSnapshot() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - return $this->_getBlobPropertiesResultFromResponse($response->getHeader()); - } - - /** - * Returns all properties and metadata on the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\GetBlobMetadataOptions $options optional parameters - * - * @return Models\GetBlobMetadataResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179350.aspx - */ - public function getBlobMetadata($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_HEAD; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new GetBlobMetadataOptions(); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_SNAPSHOT, - $options->getSnapshot() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'metadata' - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - $metadata = $this->getMetadataArray($response->getHeader()); - - return GetBlobMetadataResult::create($response->getHeader(), $metadata); - } - - /** - * Returns a list of active page ranges for a page blob. Active page ranges are - * those that have been populated with data. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\ListPageBlobRangesOptions $options optional parameters - * - * @return Models\ListPageBlobRangesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691973.aspx - */ - public function listPageBlobRanges($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_GET; - $headers = array(); - $queryParams = array(); - $postParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new ListPageBlobRangesOptions(); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $headers = $this->_addOptionalRangeHeader( - $headers, $options->getRangeStart(), $options->getRangeEnd() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_SNAPSHOT, - $options->getSnapshot() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'pagelist' - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - $parsed = $this->dataSerializer->unserialize($response->getBody()); - - return ListPageBlobRangesResult::create($response->getHeader(), $parsed); - } - - /** - * Sets system properties defined for a blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\SetBlobPropertiesOptions $options optional parameters - * - * @return Models\SetBlobPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691966.aspx - */ - public function setBlobProperties($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new SetBlobPropertiesOptions(); - } - - $blobContentType = $options->getBlobContentType(); - $blobContentEncoding = $options->getBlobContentEncoding(); - $blobContentLanguage = $options->getBlobContentLanguage(); - $blobContentLength = $options->getBlobContentLength(); - $blobContentMD5 = $options->getBlobContentMD5(); - $blobCacheControl = $options->getBlobCacheControl(); - $leaseId = $options->getLeaseId(); - $sNumberAction = $options->getSequenceNumberAction(); - $sNumber = $options->getSequenceNumber(); - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $leaseId - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CACHE_CONTROL, - $blobCacheControl - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_TYPE, - $blobContentType - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_ENCODING, - $blobContentEncoding - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_LANGUAGE, - $blobContentLanguage - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_LENGTH, - $blobContentLength - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_CONTENT_MD5, - $blobContentMD5 - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_SEQUENCE_NUMBER_ACTION, - $sNumberAction - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_BLOB_SEQUENCE_NUMBER, - $sNumber - ); - - $this->addOptionalQueryParam($queryParams, Resources::QP_COMP, 'properties'); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - return SetBlobPropertiesResult::create($response->getHeader()); - } - - /** - * Sets metadata headers on the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param array $metadata key/value pair representation - * @param Models\SetBlobMetadataOptions $options optional parameters - * - * @return Models\SetBlobMetadataResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179414.aspx - */ - public function setBlobMetadata($container, $blob, $metadata, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - $this->validateMetadata($metadata); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_OK; - - if (is_null($options)) { - $options = new SetBlobMetadataOptions(); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - $headers = $this->addMetadataHeaders($headers, $metadata); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_COMP, - 'metadata' - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - - return SetBlobMetadataResult::create($response->getHeader()); - } - - /** - * Reads or downloads a blob from the system, including its metadata and - * properties. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\GetBlobOptions $options optional parameters - * - * @return Models\GetBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179440.aspx - */ - public function getBlob($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - - $method = Resources::HTTP_GET; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = array( - Resources::STATUS_OK, - Resources::STATUS_PARTIAL_CONTENT - ); - - if (is_null($options)) { - $options = new GetBlobOptions(); - } - - $getMD5 = $options->getComputeRangeMD5(); - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - $headers = $this->_addOptionalRangeHeader( - $headers, $options->getRangeStart(), $options->getRangeEnd() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - $this->addOptionalHeader( - $headers, - Resources::X_MS_RANGE_GET_CONTENT_MD5, - $getMD5 ? 'true' : null - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_SNAPSHOT, - $options->getSnapshot() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - $metadata = $this->getMetadataArray($response->getHeader()); - - return GetBlobResult::create( - $response->getHeader(), - $response->getBody(), - $metadata - ); - } - - /** - * Deletes a blob or blob snapshot. - * - * Note that if the snapshot entry is specified in the $options then only this - * blob snapshot is deleted. To delete all blob snapshots, do not set Snapshot - * and just set getDeleteSnaphotsOnly to true. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\DeleteBlobOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179413.aspx - */ - public function deleteBlob($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_DELETE; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $statusCode = Resources::STATUS_ACCEPTED; - - if (is_null($options)) { - $options = new DeleteBlobOptions(); - } - - if (is_null($options->getSnapshot())) { - $delSnapshots = $options->getDeleteSnaphotsOnly() ? 'only' : 'include'; - $this->addOptionalHeader( - $headers, - Resources::X_MS_DELETE_SNAPSHOTS, - $delSnapshots - ); - } else { - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_SNAPSHOT, - $options->getSnapshot() - ); - } - - $headers = $this->addOptionalAccessConditionHeader( - $headers, $options->getAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $statusCode - ); - } - - /** - * Creates a snapshot of a blob. - * - * @param string $container The name of the container. - * @param string $blob The name of the blob. - * @param Models\CreateBlobSnapshotOptions $options The optional parameters. - * - * @return Models\CreateBlobSnapshotResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691971.aspx - */ - public function createBlobSnapshot($container, $blob, $options = null) - { - Validate::isString($container, 'container'); - Validate::isString($blob, 'blob'); - Validate::notNullOrEmpty($blob, 'blob'); - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $path = $this->_createPath($container, $blob); - $expectedStatusCode = Resources::STATUS_CREATED; - - if (is_null($options)) { - $options = new CreateBlobSnapshotOptions(); - } - - $queryParams[Resources::QP_COMP] = 'snapshot'; - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $headers = $this->addOptionalAccessConditionHeader( - $headers, - $options->getAccessCondition() - ); - $headers = $this->addMetadataHeaders($headers, $options->getMetadata()); - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $path, - $expectedStatusCode - ); - - return CreateBlobSnapshotResult::create($response->getHeader()); - } - - /** - * Copies a source blob to a destination blob within the same storage account. - * - * @param string $destinationContainer name of the destination - * container - * @param string $destinationBlob name of the destination - * blob - * @param string $sourceContainer name of the source - * container - * @param string $sourceBlob name of the source - * blob - * @param Models\CopyBlobOptions $options optional parameters - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd894037.aspx - */ - public function copyBlob( - $destinationContainer, - $destinationBlob, - $sourceContainer, - $sourceBlob, - $options = null - ) { - - $method = Resources::HTTP_PUT; - $headers = array(); - $postParams = array(); - $queryParams = array(); - $destinationBlobPath = $this->_createPath( - $destinationContainer, - $destinationBlob - ); - $statusCode = Resources::STATUS_ACCEPTED; - - if (is_null($options)) { - $options = new CopyBlobOptions(); - } - - $this->addOptionalQueryParam( - $queryParams, - Resources::QP_TIMEOUT, - $options->getTimeout() - ); - - $sourceBlobPath = $this->_getCopyBlobSourceName( - $sourceContainer, - $sourceBlob, - $options - ); - - $headers = $this->addOptionalAccessConditionHeader( - $headers, - $options->getAccessCondition() - ); - - $headers = $this->addOptionalSourceAccessConditionHeader( - $headers, - $options->getSourceAccessCondition() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_COPY_SOURCE, - $sourceBlobPath - ); - - $headers = $this->addMetadataHeaders($headers, $options->getMetadata()); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_LEASE_ID, - $options->getLeaseId() - ); - - $this->addOptionalHeader( - $headers, - Resources::X_MS_SOURCE_LEASE_ID, - $options->getSourceLeaseId() - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParams, - $destinationBlobPath, - $statusCode - ); - - return CopyBlobResult::create($response->getHeader()); - } - - /** - * Establishes an exclusive one-minute write lock on a blob. To write to a locked - * blob, a client must provide a lease ID. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\AcquireLeaseOptions $options optional parameters - * - * @return Models\AcquireLeaseResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function acquireLease($container, $blob, $options = null) - { - $headers = $this->_putLeaseImpl( - LeaseMode::ACQUIRE_ACTION, - $container, - $blob, - null /* leaseId */, - is_null($options) ? new AcquireLeaseOptions() : $options, - is_null($options) ? null : $options->getAccessCondition() - ); - - return AcquireLeaseResult::create($headers); - } - - /** - * Renews an existing lease - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $leaseId lease id when acquiring - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\AcquireLeaseResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function renewLease($container, $blob, $leaseId, $options = null) - { - $headers = $this->_putLeaseImpl( - LeaseMode::RENEW_ACTION, - $container, - $blob, - $leaseId, - is_null($options) ? new BlobServiceOptions() : $options - ); - - return AcquireLeaseResult::create($headers); - } - - /** - * Frees the lease if it is no longer needed so that another client may - * immediately acquire a lease against the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $leaseId lease id when acquiring - * @param Models\BlobServiceOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function releaseLease($container, $blob, $leaseId, $options = null) - { - $this->_putLeaseImpl( - LeaseMode::RELEASE_ACTION, - $container, - $blob, - $leaseId, - is_null($options) ? new BlobServiceOptions() : $options - ); - } - - /** - * Ends the lease but ensure that another client cannot acquire a new lease until - * the current lease period has expired. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\BlobServiceOptions $options optional parameters - * - * @return BreakLeaseResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function breakLease($container, $blob, $options = null) - { - $headers = $this->_putLeaseImpl( - LeaseMode::BREAK_ACTION, - $container, - $blob, - null, - is_null($options) ? new BlobServiceOptions() : $options - ); - - return BreakLeaseResult::create($headers); - } -} diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Internal/IBlob.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Internal/IBlob.php deleted file mode 100644 index c3be961e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Internal/IBlob.php +++ /dev/null @@ -1,491 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Internal; -use WindowsAzure\Common\Internal\FilterableService; - -/** - * This interface has all REST APIs provided by Windows Azure for Blob service. - * - * @category Microsoft - * @package WindowsAzure\Blob\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd135733.aspx - */ -interface IBlob extends FilterableService -{ - /** - * Gets the properties of the Blob service. - * - * @param Models\BlobServiceOptions $options optional blob service options. - * - * @return WindowsAzure\Common\Models\GetServicePropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/hh452239.aspx - */ - public function getServiceProperties($options = null); - - /** - * Sets the properties of the Blob service. - * - * @param ServiceProperties $serviceProperties new service properties - * @param Models\BlobServiceOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/hh452235.aspx - */ - public function setServiceProperties($serviceProperties, $options = null); - - /** - * Lists all of the containers in the given storage account. - * - * @param Models\ListContainersOptions $options optional parameters - * - * @return WindowsAzure\Blob\Models\ListContainersResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179352.aspx - */ - public function listContainers($options = null); - - /** - * Creates a new container in the given storage account. - * - * @param string $container name - * @param Models\CreateContainerOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179468.aspx - */ - public function createContainer($container, $options = null); - - /** - * Creates a new container in the given storage account. - * - * @param string $container name - * @param Models\DeleteContainerOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179408.aspx - */ - public function deleteContainer($container, $options = null); - - /** - * Returns all properties and metadata on the container. - * - * @param string $container name - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\GetContainerPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179370.aspx - */ - public function getContainerProperties($container, $options = null); - - /** - * Returns only user-defined metadata for the specified container. - * - * @param string $container name - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\GetContainerPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691976.aspx - */ - public function getContainerMetadata($container, $options = null); - - /** - * Gets the access control list (ACL) and any container-level access policies - * for the container. - * - * @param string $container name - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\GetContainerAclResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179469.aspx - */ - public function getContainerAcl($container, $options = null); - - /** - * Sets the ACL and any container-level access policies for the container. - * - * @param string $container name - * @param Models\ContainerAcl $acl access control list for container - * @param Models\BlobServiceOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179391.aspx - */ - public function setContainerAcl($container, $acl, $options = null); - - /** - * Sets metadata headers on the container. - * - * @param string $container name - * @param array $metadata metadata key/value pair. - * @param Models\SetContainerMetadataOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179362.aspx - */ - public function setContainerMetadata($container, $metadata, $options = null); - - /** - * Lists all of the blobs in the given container. - * - * @param string $container name - * @param Models\ListBlobsOptions $options optional parameters - * - * @return Models\ListBlobsResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd135734.aspx - */ - public function listBlobs($container, $options = null); - - /** - * Creates a new page blob. Note that calling createPageBlob to create a page - * blob only initializes the blob. - * To add content to a page blob, call createBlobPages method. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param int $length specifies the maximum size for the - * page blob, up to 1 TB. The page blob size must be aligned to a 512-byte - * boundary. - * @param Models\CreateBlobOptions $options optional parameters - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx - */ - public function createPageBlob($container, $blob, $length, $options = null); - - /** - * Creates a new block blob or updates the content of an existing block blob. - * Updating an existing block blob overwrites any existing metadata on the blob. - * Partial updates are not supported with createBlockBlob; the content of the - * existing blob is overwritten with the content of the new blob. To perform a - * partial update of the content of a block blob, use the createBlockList method. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $content content of the blob - * @param Models\CreateBlobOptions $options optional parameters - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179451.aspx - */ - public function createBlockBlob($container, $blob, $content, $options = null); - - /** - * Clears a range of pages from the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\PageRange $range Can be up to the value of the - * blob's full size. - * @param Models\CreateBlobPagesOptions $options optional parameters - * - * @return Models\CreateBlobPagesResult. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx - */ - public function clearBlobPages($container, $blob, $range, $options = null); - - /** - * Creates a range of pages to a page blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\PageRange $range Can be up to 4 MB in size - * @param string $content the blob contents - * @param Models\CreateBlobPagesOptions $options optional parameters - * - * @return Models\CreateBlobPagesResult. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx - */ - public function createBlobPages($container, $blob, $range, $content, - $options = null - ); - - /** - * Creates a new block to be committed as part of a block blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $blockId must be less than or equal to - * 64 bytes in size. For a given blob, the length of the value specified for the - * blockid parameter must be the same size for each block. - * @param string $content the blob block contents - * @param Models\CreateBlobBlockOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd135726.aspx - */ - public function createBlobBlock($container, $blob, $blockId, $content, - $options = null - ); - - /** - * This method writes a blob by specifying the list of block IDs that make up the - * blob. In order to be written as part of a blob, a block must have been - * successfully written to the server in a prior createBlobBlock method. - * - * You can call Put Block List to update a blob by uploading only those blocks - * that have changed, then committing the new and existing blocks together. - * You can do this by specifying whether to commit a block from the committed - * block list or from the uncommitted block list, or to commit the most recently - * uploaded version of the block, whichever list it may belong to. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\BlockList $blockList the block list entries - * @param Models\CommitBlobBlocksOptions $options optional parameters - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179467.aspx - */ - public function commitBlobBlocks($container, $blob, $blockList, $options = null); - - /** - * Retrieves the list of blocks that have been uploaded as part of a block blob. - * - * There are two block lists maintained for a blob: - * 1) Committed Block List: The list of blocks that have been successfully - * committed to a given blob with commitBlobBlocks. - * 2) Uncommitted Block List: The list of blocks that have been uploaded for a - * blob using Put Block (REST API), but that have not yet been committed. - * These blocks are stored in Windows Azure in association with a blob, but do - * not yet form part of the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\ListBlobBlocksOptions $options optional parameters - * - * @return Models\ListBlobBlocksResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179400.aspx - */ - public function listBlobBlocks($container, $blob, $options = null); - - /** - * Returns all properties and metadata on the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\GetBlobPropertiesOptions $options optional parameters - * - * @return Models\GetBlobPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179394.aspx - */ - public function getBlobProperties($container, $blob, $options = null); - - /** - * Returns all properties and metadata on the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\GetBlobMetadataOptions $options optional parameters - * - * @return Models\GetBlobMetadataResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179350.aspx - */ - public function getBlobMetadata($container, $blob, $options = null); - - /** - * Returns a list of active page ranges for a page blob. Active page ranges are - * those that have been populated with data. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\ListPageBlobRangesOptions $options optional parameters - * - * @return Models\ListPageBlobRangesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691973.aspx - */ - public function listPageBlobRanges($container, $blob, $options = null); - - /** - * Sets system properties defined for a blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\SetBlobPropertiesOptions $options optional parameters - * - * @return Models\SetBlobPropertiesResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691966.aspx - */ - public function setBlobProperties($container, $blob, $options = null); - - /** - * Sets metadata headers on the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param array $metadata key/value pair representation - * @param Models\SetBlobMetadataOptions $options optional parameters - * - * @return Models\SetBlobMetadataResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179414.aspx - */ - public function setBlobMetadata($container, $blob, $metadata, $options = null); - - /** - * Reads or downloads a blob from the system, including its metadata and - * properties. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\GetBlobOptions $options optional parameters - * - * @return Models\GetBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179440.aspx - */ - public function getBlob($container, $blob, $options = null); - - /** - * Deletes a blob or blob snapshot. - * - * Note that if the snapshot entry is specified in the $options then only this - * blob snapshot is deleted. To delete all blob snapshots, do not set Snapshot - * and just set getDeleteSnaphotsOnly to true. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\DeleteBlobOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd179413.aspx - */ - public function deleteBlob($container, $blob, $options = null); - - /** - * Creates a snapshot of a blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\CreateBlobSnapshotOptions $options optional parameters - * - * @return Models\CreateBlobSnapshotResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691971.aspx - */ - public function createBlobSnapshot($container, $blob, $options = null); - - /** - * Copies a source blob to a destination blob within the same storage account. - * - * @param string $destinationContainer name of container - * @param string $destinationBlob name of blob - * @param string $sourceContainer name of container - * @param string $sourceBlob name of blob - * @param Models\CopyBlobOptions $options optional parameters - * - * @return CopyBlobResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/dd894037.aspx - */ - public function copyBlob($destinationContainer, $destinationBlob, - $sourceContainer, $sourceBlob, $options = null - ); - - /** - * Establishes an exclusive one-minute write lock on a blob. To write to a locked - * blob, a client must provide a lease ID. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\AcquireLeaseOptions $options optional parameters - * - * @return Models\AcquireLeaseResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function acquireLease($container, $blob, $options = null); - - /** - * Renews an existing lease - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $leaseId lease id when acquiring - * @param Models\BlobServiceOptions $options optional parameters - * - * @return Models\AcquireLeaseResult - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function renewLease($container, $blob, $leaseId, $options = null); - - /** - * Frees the lease if it is no longer needed so that another client may - * immediately acquire a lease against the blob. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param string $leaseId lease id when acquiring - * @param Models\BlobServiceOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function releaseLease($container, $blob, $leaseId, $options = null); - - /** - * Ends the lease but ensure that another client cannot acquire a new lease until - * the current lease period has expired. - * - * @param string $container name of the container - * @param string $blob name of the blob - * @param Models\BlobServiceOptions $options optional parameters - * - * @return none - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/ee691972.aspx - */ - public function breakLease($container, $blob, $options = null); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessCondition.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessCondition.php deleted file mode 100644 index 37494160..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessCondition.php +++ /dev/null @@ -1,247 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\WindowsAzureUtilities; - -/** - * Represents a set of access conditions to be used for operations against the - * storage services. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class AccessCondition -{ - /** - * Represents the header type. - * - * @var string - */ - private $_header = Resources::EMPTY_STRING; - - /** - * Represents the header value. - * - * @var string - */ - private $_value; - - /** - * Constructor - * - * @param string $headerType header name - * @param string $value header value - */ - protected function __construct($headerType, $value) - { - $this->setHeader($headerType); - $this->setValue($value); - } - - /** - * Specifies that no access condition is set. - * - * @return \WindowsAzure\Blob\Models\AccessCondition - */ - public static function none() - { - return new AccessCondition(Resources::EMPTY_STRING, null); - } - - /** - * Returns an access condition such that an operation will be performed only if - * the resource's ETag value matches the specified ETag value. - *

- * Setting this access condition modifies the request to include the HTTP - * If-Match conditional header. If this access condition is set, the - * operation is performed only if the ETag of the resource matches the specified - * ETag. - *

- * For more information, see - * - * Specifying Conditional Headers for Blob Service Operations. - * - * @param string $etag a string that represents the ETag value to check. - * - * @return \WindowsAzure\Blob\Models\AccessCondition - */ - public static function ifMatch($etag) - { - return new AccessCondition(Resources::IF_MATCH, $etag); - } - - /** - * Returns an access condition such that an operation will be performed only if - * the resource has been modified since the specified time. - *

- * Setting this access condition modifies the request to include the HTTP - * If-Modified-Since conditional header. If this access condition is set, - * the operation is performed only if the resource has been modified since the - * specified time. - *

- * For more information, see - * - * Specifying Conditional Headers for Blob Service Operations. - * - * @param \DateTime $lastModified date that represents the last-modified - * time to check for the resource. - * - * @return \WindowsAzure\Blob\Models\AccessCondition - */ - public static function ifModifiedSince($lastModified) - { - Validate::isDate($lastModified); - return new AccessCondition( - Resources::IF_MODIFIED_SINCE, - $lastModified - ); - } - - /** - * Returns an access condition such that an operation will be performed only if - * the resource's ETag value does not match the specified ETag value. - *

- * Setting this access condition modifies the request to include the HTTP - * If-None-Match conditional header. If this access condition is set, the - * operation is performed only if the ETag of the resource does not match the - * specified ETag. - *

- * For more information, - * see - * Specifying Conditional Headers for Blob Service Operations. - * - * @param string $etag string that represents the ETag value to check. - * - * @return \WindowsAzure\Blob\Models\AccessCondition - */ - public static function ifNoneMatch($etag) - { - return new AccessCondition(Resources::IF_NONE_MATCH, $etag); - } - - /** - * Returns an access condition such that an operation will be performed only if - * the resource has not been modified since the specified time. - *

- * Setting this access condition modifies the request to include the HTTP - * If-Unmodified-Since conditional header. If this access condition is - * set, the operation is performed only if the resource has not been modified - * since the specified time. - *

- * For more information, see - * - * Specifying Conditional Headers for Blob Service Operations. - * - * @param \DateTime $lastModified date that represents the last-modified - * time to check for the resource. - * - * @return \WindowsAzure\Blob\Models\AccessCondition - */ - public static function ifNotModifiedSince($lastModified) - { - Validate::isDate($lastModified); - return new AccessCondition( - Resources::IF_UNMODIFIED_SINCE, - $lastModified - ); - } - - /** - * Sets header type - * - * @param string $headerType can be one of Resources - * - * @return none. - */ - public function setHeader($headerType) - { - $valid = AccessCondition::isValid($headerType); - Validate::isTrue($valid, Resources::INVALID_HT_MSG); - - $this->_header = $headerType; - } - - /** - * Gets header type - * - * @return string. - */ - public function getHeader() - { - return $this->_header; - } - - /** - * Sets the header value - * - * @param string $value the value to use - * - * @return none - */ - public function setValue($value) - { - $this->_value = $value; - } - - /** - * Gets the header value - * - * @return string - */ - public function getValue() - { - return $this->_value; - } - - /** - * Check if the $headerType belongs to valid header types - * - * @param string $headerType candidate header type - * - * @return boolean - */ - public static function isValid($headerType) - { - if ( $headerType == Resources::EMPTY_STRING - || $headerType == Resources::IF_UNMODIFIED_SINCE - || $headerType == Resources::IF_MATCH - || $headerType == Resources::IF_MODIFIED_SINCE - || $headerType == Resources::IF_NONE_MATCH - ) { - return true; - } else { - return false; - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessPolicy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessPolicy.php deleted file mode 100644 index 5cf84069..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AccessPolicy.php +++ /dev/null @@ -1,143 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; - -/** - * Holds container access policy elements - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class AccessPolicy -{ - /** - * @var string - */ - private $_start; - - /** - * @var \DateTime - */ - private $_expiry; - - /** - * @var \DateTime - */ - private $_permission; - - /** - * Gets start. - * - * @return \DateTime. - */ - public function getStart() - { - return $this->_start; - } - - /** - * Sets start. - * - * @param \DateTime $start value. - * - * @return none. - */ - public function setStart($start) - { - Validate::isDate($start); - $this->_start = $start; - } - - /** - * Gets expiry. - * - * @return \DateTime. - */ - public function getExpiry() - { - return $this->_expiry; - } - - /** - * Sets expiry. - * - * @param \DateTime $expiry value. - * - * @return none. - */ - public function setExpiry($expiry) - { - Validate::isDate($expiry); - $this->_expiry = $expiry; - } - - /** - * Gets permission. - * - * @return string. - */ - public function getPermission() - { - return $this->_permission; - } - - /** - * Sets permission. - * - * @param string $permission value. - * - * @return none. - */ - public function setPermission($permission) - { - $this->_permission = $permission; - } - - /** - * Converts this current object to XML representation. - * - * @return array. - */ - public function toArray() - { - $array = array(); - - $array['Start'] = Utilities::convertToEdmDateTime($this->_start); - $array['Expiry'] = Utilities::convertToEdmDateTime($this->_expiry); - $array['Permission'] = $this->_permission; - - return $array; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseOptions.php deleted file mode 100644 index ed50fbf9..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseOptions.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Optional parameters for acquireLease wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class AcquireLeaseOptions extends BlobServiceOptions -{ - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseResult.php deleted file mode 100644 index fb654fe3..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/AcquireLeaseResult.php +++ /dev/null @@ -1,88 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * The result of calling acquireLease API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class AcquireLeaseResult -{ - /** - * @var string - */ - private $_leaseId; - - /** - * Creates AcquireLeaseResult from response headers - * - * @param array $headers response headers - * - * @return AcquireLeaseResult - */ - public static function create($headers) - { - $result = new AcquireLeaseResult(); - - $result->setLeaseId( - Utilities::tryGetValue($headers, Resources::X_MS_LEASE_ID) - ); - - return $result; - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Blob.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Blob.php deleted file mode 100644 index f03f74bb..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Blob.php +++ /dev/null @@ -1,176 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Represents windows azure blob object - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Blob -{ - /** - * @var string - */ - private $_name; - - /** - * @var string - */ - private $_url; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var array - */ - private $_metadata; - - /** - * @var BlobProperties - */ - private $_properties; - - /** - * Gets blob name. - * - * @return string. - */ - public function getName() - { - return $this->_name; - } - - /** - * Sets blob name. - * - * @param string $name value. - * - * @return none. - */ - public function setName($name) - { - $this->_name = $name; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } - - /** - * Gets blob url. - * - * @return string. - */ - public function getUrl() - { - return $this->_url; - } - - /** - * Sets blob url. - * - * @param string $url value. - * - * @return none. - */ - public function setUrl($url) - { - $this->_url = $url; - } - - /** - * Gets blob metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets blob metadata. - * - * @param string $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets blob properties. - * - * @return BlobProperties. - */ - public function getProperties() - { - return $this->_properties; - } - - /** - * Sets blob properties. - * - * @param BlobProperties $properties value. - * - * @return none. - */ - public function setProperties($properties) - { - $this->_properties = $properties; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobBlockType.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobBlockType.php deleted file mode 100644 index 998449f0..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobBlockType.php +++ /dev/null @@ -1,65 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds available blob block types - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlobBlockType -{ - const COMMITTED_TYPE = 'Committed'; - const UNCOMMITTED_TYPE = 'Uncommitted'; - const LATEST_TYPE = 'Latest'; - - /** - * Validates the provided type. - * - * @param string $type The entry type. - * - * @return boolean - */ - public static function isValid($type) - { - switch ($type) { - case self::COMMITTED_TYPE: - case self::LATEST_TYPE: - case self::UNCOMMITTED_TYPE: - return true; - - default: - return false; - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobPrefix.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobPrefix.php deleted file mode 100644 index 01b220ed..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobPrefix.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Represents BlobPrefix object - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlobPrefix -{ - /** - * @var string - */ - private $_name; - - /** - * Gets blob name. - * - * @return string. - */ - public function getName() - { - return $this->_name; - } - - /** - * Sets blob name. - * - * @param string $name value. - * - * @return none. - */ - public function setName($name) - { - $this->_name = $name; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobProperties.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobProperties.php deleted file mode 100644 index a2630332..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobProperties.php +++ /dev/null @@ -1,431 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Represents blob properties - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlobProperties -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var string - */ - private $_contentType; - - /** - * @var integer - */ - private $_contentLength; - - /** - * @var string - */ - private $_contentEncoding; - - /** - * @var string - */ - private $_contentLanguage; - - /** - * @var string - */ - private $_contentMD5; - - /** - * @var string - */ - private $_contentRange; - - /** - * @var string - */ - private $_cacheControl; - - /** - * @var string - */ - private $_blobType; - - /** - * @var string - */ - private $_leaseStatus; - - /** - * @var integer - */ - private $_sequenceNumber; - - /** - * Creates BlobProperties object from $parsed response in array representation - * - * @param array $parsed parsed response in array format. - * - * @return BlobProperties - */ - public static function create($parsed) - { - $result = new BlobProperties(); - $clean = array_change_key_case($parsed); - - $date = Utilities::tryGetValue($clean, Resources::LAST_MODIFIED); - $result->setBlobType(Utilities::tryGetValue($clean, 'blobtype')); - $result->setContentLength(intval($clean[Resources::CONTENT_LENGTH])); - $result->setETag(Utilities::tryGetValue($clean, Resources::ETAG)); - - if (!is_null($date)) { - $date = Utilities::rfc1123ToDateTime($date); - $result->setLastModified($date); - } - - $result->setLeaseStatus(Utilities::tryGetValue($clean, 'leasestatus')); - $result->setLeaseStatus( - Utilities::tryGetValue( - $clean, Resources::X_MS_LEASE_STATUS, $result->getLeaseStatus() - ) - ); - $result->setSequenceNumber( - intval( - Utilities::tryGetValue($clean, Resources::X_MS_BLOB_SEQUENCE_NUMBER) - ) - ); - $result->setContentRange( - Utilities::tryGetValue($clean, Resources::CONTENT_RANGE) - ); - $result->setCacheControl( - Utilities::tryGetValue($clean, Resources::CACHE_CONTROL) - ); - $result->setBlobType( - Utilities::tryGetValue( - $clean, Resources::X_MS_BLOB_TYPE, $result->getBlobType() - ) - ); - $result->setContentEncoding( - Utilities::tryGetValue($clean, Resources::CONTENT_ENCODING) - ); - $result->setContentLanguage( - Utilities::tryGetValue($clean, Resources::CONTENT_LANGUAGE) - ); - $result->setContentMD5( - Utilities::tryGetValue($clean, Resources::CONTENT_MD5) - ); - $result->setContentType( - Utilities::tryGetValue($clean, Resources::CONTENT_TYPE) - ); - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - $this->_etag = $etag; - } - - /** - * Gets blob contentType. - * - * @return string. - */ - public function getContentType() - { - return $this->_contentType; - } - - /** - * Sets blob contentType. - * - * @param string $contentType value. - * - * @return none. - */ - public function setContentType($contentType) - { - $this->_contentType = $contentType; - } - - /** - * Gets blob contentRange. - * - * @return string. - */ - public function getContentRange() - { - return $this->_contentRange; - } - - /** - * Sets blob contentRange. - * - * @param string $contentRange value. - * - * @return none. - */ - public function setContentRange($contentRange) - { - $this->_contentRange = $contentRange; - } - - /** - * Gets blob contentLength. - * - * @return integer. - */ - public function getContentLength() - { - return $this->_contentLength; - } - - /** - * Sets blob contentLength. - * - * @param integer $contentLength value. - * - * @return none. - */ - public function setContentLength($contentLength) - { - Validate::isInteger($contentLength, 'contentLength'); - $this->_contentLength = $contentLength; - } - - /** - * Gets blob contentEncoding. - * - * @return string. - */ - public function getContentEncoding() - { - return $this->_contentEncoding; - } - - /** - * Sets blob contentEncoding. - * - * @param string $contentEncoding value. - * - * @return none. - */ - public function setContentEncoding($contentEncoding) - { - $this->_contentEncoding = $contentEncoding; - } - - /** - * Gets blob contentLanguage. - * - * @return string. - */ - public function getContentLanguage() - { - return $this->_contentLanguage; - } - - /** - * Sets blob contentLanguage. - * - * @param string $contentLanguage value. - * - * @return none. - */ - public function setContentLanguage($contentLanguage) - { - $this->_contentLanguage = $contentLanguage; - } - - /** - * Gets blob contentMD5. - * - * @return string. - */ - public function getContentMD5() - { - return $this->_contentMD5; - } - - /** - * Sets blob contentMD5. - * - * @param string $contentMD5 value. - * - * @return none. - */ - public function setContentMD5($contentMD5) - { - $this->_contentMD5 = $contentMD5; - } - - /** - * Gets blob cacheControl. - * - * @return string. - */ - public function getCacheControl() - { - return $this->_cacheControl; - } - - /** - * Sets blob cacheControl. - * - * @param string $cacheControl value. - * - * @return none. - */ - public function setCacheControl($cacheControl) - { - $this->_cacheControl = $cacheControl; - } - - /** - * Gets blob blobType. - * - * @return string. - */ - public function getBlobType() - { - return $this->_blobType; - } - - /** - * Sets blob blobType. - * - * @param string $blobType value. - * - * @return none. - */ - public function setBlobType($blobType) - { - $this->_blobType = $blobType; - } - - /** - * Gets blob leaseStatus. - * - * @return string. - */ - public function getLeaseStatus() - { - return $this->_leaseStatus; - } - - /** - * Sets blob leaseStatus. - * - * @param string $leaseStatus value. - * - * @return none. - */ - public function setLeaseStatus($leaseStatus) - { - $this->_leaseStatus = $leaseStatus; - } - - /** - * Gets blob sequenceNumber. - * - * @return int. - */ - public function getSequenceNumber() - { - return $this->_sequenceNumber; - } - - /** - * Sets blob sequenceNumber. - * - * @param int $sequenceNumber value. - * - * @return none. - */ - public function setSequenceNumber($sequenceNumber) - { - Validate::isInteger($sequenceNumber, 'sequenceNumber'); - $this->_sequenceNumber = $sequenceNumber; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobServiceOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobServiceOptions.php deleted file mode 100644 index c744547b..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobServiceOptions.php +++ /dev/null @@ -1,65 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Blob service options. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlobServiceOptions -{ - private $_timeout; - - /** - * Gets timeout. - * - * @return string. - */ - public function getTimeout() - { - return $this->_timeout; - } - - /** - * Sets timeout. - * - * @param string $timeout value. - * - * @return none. - */ - public function setTimeout($timeout) - { - $this->_timeout = $timeout; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobType.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobType.php deleted file mode 100644 index 15da7672..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlobType.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Encapsulates blob types - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlobType -{ - const BLOCK_BLOB = 'BlockBlob'; - const PAGE_BLOB = 'PageBlob'; -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Block.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Block.php deleted file mode 100644 index 9fc2ae13..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Block.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds information about blob block. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Block -{ - /** - * @var string - */ - private $_blockId; - - /** - * @var string - */ - private $_type; - - /** - * Sets the blockId. - * - * @param string $blockId The id of the block. - * - * @return none - */ - public function setBlockId($blockId) - { - $this->_blockId = $blockId; - } - - /** - * Gets the blockId. - * - * @return string - */ - public function getBlockId() - { - return $this->_blockId; - } - - /** - * Sets the type. - * - * @param string $type The type of the block. - * - * @return none - */ - public function setType($type) - { - $this->_type = $type; - } - - /** - * Gets the type. - * - * @return string - */ - public function getType() - { - return $this->_type; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlockList.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlockList.php deleted file mode 100644 index 2e5abf60..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BlockList.php +++ /dev/null @@ -1,175 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Serialization\XmlSerializer; -use WindowsAzure\Blob\Models\Block; - -/** - * Holds block list used for commitBlobBlocks - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BlockList -{ - /** - * @var array - */ - private $_entries; - public static $xmlRootName = 'BlockList'; - - /** - * Creates block list from array of blocks. - * - * @param array $array The blocks array. - * - * @return BlockList - */ - public static function create($array) - { - $blockList = new BlockList(); - - foreach ($array as $value) { - $blockList->addEntry($value->getBlockId(), $value->getType()); - } - - return $blockList; - } - - /** - * Adds new entry to the block list entries. - * - * @param string $blockId The block id. - * @param string $type The entry type, you can use BlobBlockType. - * - * @return none - */ - public function addEntry($blockId, $type) - { - Validate::isString($blockId, 'blockId'); - Validate::isTrue( - BlobBlockType::isValid($type), - sprintf(Resources::INVALID_BTE_MSG, get_class(new BlobBlockType())) - ); - $block = new Block(); - $block->setBlockId($blockId); - $block->setType($type); - - $this->_entries[] = $block; - } - - /** - * Addds committed block entry. - * - * @param string $blockId The block id. - * - * @return none - */ - public function addCommittedEntry($blockId) - { - $this->addEntry($blockId, BlobBlockType::COMMITTED_TYPE); - } - - /** - * Addds uncommitted block entry. - * - * @param string $blockId The block id. - * - * @return none - */ - public function addUncommittedEntry($blockId) - { - $this->addEntry($blockId, BlobBlockType::UNCOMMITTED_TYPE); - } - - /** - * Addds latest block entry. - * - * @param string $blockId The block id. - * - * @return none - */ - public function addLatestEntry($blockId) - { - $this->addEntry($blockId, BlobBlockType::LATEST_TYPE); - } - - /** - * Gets blob block entry. - * - * @param string $blockId The id of the block. - * - * @return Block - */ - public function getEntry($blockId) - { - foreach ($this->_entries as $value) { - if ($blockId == $value->getBlockId()) { - return $value; - } - } - - return null; - } - - /** - * Gets all blob block entries. - * - * @return string - */ - public function getEntries() - { - return $this->_entries; - } - - /** - * Converts the BlockList object to XML representation - * - * @param XmlSerializer $xmlSerializer The XML serializer. - * - * @return string - */ - public function toXml($xmlSerializer) - { - $properties = array(XmlSerializer::ROOT_NAME => self::$xmlRootName); - $array = array(); - - foreach ($this->_entries as $value) { - $array[] = array( - $value->getType() => base64_encode($value->getBlockId()) - ); - } - - return $xmlSerializer->serialize($array, $properties); - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BreakLeaseResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BreakLeaseResult.php deleted file mode 100644 index ffe2c7f1..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/BreakLeaseResult.php +++ /dev/null @@ -1,86 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * The result of calling breakLease API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BreakLeaseResult -{ - /** - * @var string - */ - private $_leaseTime; - - /** - * Creates BreakLeaseResult from response headers - * - * @param array $headers response headers - * - * @return BreakLeaseResult - */ - public static function create($headers) - { - $result = new BreakLeaseResult(); - - $result->setLeaseTime( - Utilities::tryGetValue($headers, Resources::X_MS_LEASE_TIME) - ); - - return $result; - } - - /** - * Gets lease time. - * - * @return string - */ - public function getLeaseTime() - { - return $this->_leaseTime; - } - - /** - * Sets lease time. - * - * @param string $leaseTime the blob lease time. - * - * @return none - */ - public function setLeaseTime($leaseTime) - { - $this->_leaseTime = $leaseTime; - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CommitBlobBlocksOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CommitBlobBlocksOptions.php deleted file mode 100644 index a69b0e6c..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CommitBlobBlocksOptions.php +++ /dev/null @@ -1,258 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for commitBlobBlocks - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CommitBlobBlocksOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_blobContentType; - - /** - * @var string - */ - private $_blobContentEncoding; - - /** - * @var string - */ - private $_blobContentLanguage; - - /** - * @var string - */ - private $_blobContentMD5; - - /** - * @var string - */ - private $_blobCacheControl; - - /** - * @var array - */ - private $_metadata; - - /** - * @var string - */ - private $_leaseId; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets blob ContentType. - * - * @return string. - */ - public function getBlobContentType() - { - return $this->_blobContentType; - } - - /** - * Sets blob ContentType. - * - * @param string $blobContentType value. - * - * @return none. - */ - public function setBlobContentType($blobContentType) - { - $this->_blobContentType = $blobContentType; - } - - /** - * Gets blob ContentEncoding. - * - * @return string. - */ - public function getBlobContentEncoding() - { - return $this->_blobContentEncoding; - } - - /** - * Sets blob ContentEncoding. - * - * @param string $blobContentEncoding value. - * - * @return none. - */ - public function setBlobContentEncoding($blobContentEncoding) - { - $this->_blobContentEncoding = $blobContentEncoding; - } - - /** - * Gets blob ContentLanguage. - * - * @return string. - */ - public function getBlobContentLanguage() - { - return $this->_blobContentLanguage; - } - - /** - * Sets blob ContentLanguage. - * - * @param string $blobContentLanguage value. - * - * @return none. - */ - public function setBlobContentLanguage($blobContentLanguage) - { - $this->_blobContentLanguage = $blobContentLanguage; - } - - /** - * Gets blob ContentMD5. - * - * @return string. - */ - public function getBlobContentMD5() - { - return $this->_blobContentMD5; - } - - /** - * Sets blob ContentMD5. - * - * @param string $blobContentMD5 value. - * - * @return none. - */ - public function setBlobContentMD5($blobContentMD5) - { - $this->_blobContentMD5 = $blobContentMD5; - } - - /** - * Gets blob cache control. - * - * @return string. - */ - public function getBlobCacheControl() - { - return $this->_blobCacheControl; - } - - /** - * Sets blob cacheControl. - * - * @param string $blobCacheControl value to use. - * - * @return none. - */ - public function setBlobCacheControl($blobCacheControl) - { - $this->_blobCacheControl = $blobCacheControl; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets blob metadata. - * - * @param string $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Container.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Container.php deleted file mode 100644 index 198b544c..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/Container.php +++ /dev/null @@ -1,150 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * WindowsAzure container object. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Container -{ - /** - * @var string - */ - private $_name; - - /** - * @var string - */ - private $_url; - - /** - * @var array - */ - private $_metadata; - - /** - * @var ContainerProperties - */ - private $_properties; - - /** - * Gets container name. - * - * @return string. - */ - public function getName() - { - return $this->_name; - } - - /** - * Sets container name. - * - * @param string $name value. - * - * @return none. - */ - public function setName($name) - { - $this->_name = $name; - } - - /** - * Gets container url. - * - * @return string. - */ - public function getUrl() - { - return $this->_url; - } - - /** - * Sets container url. - * - * @param string $url value. - * - * @return none. - */ - public function setUrl($url) - { - $this->_url = $url; - } - - /** - * Gets container metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets container metadata. - * - * @param array $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets container properties - * - * @return ContainerProperties - */ - public function getProperties() - { - return $this->_properties; - } - - /** - * Sets container properties - * - * @param ContainerProperties $properties container properties - * - * @return none. - */ - public function setProperties($properties) - { - $this->_properties = $properties; - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerACL.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerACL.php deleted file mode 100644 index 0fdc6e30..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerACL.php +++ /dev/null @@ -1,219 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Blob\Models\AccessPolicy; -use WindowsAzure\Blob\Models\SignedIdentifier; -use WindowsAzure\Blob\Models\PublicAccessType; -use WindowsAzure\Common\Internal\Serialization\XmlSerializer; - -/** - * Holds conatiner ACL members. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ContainerAcl -{ - /** - * All available types can be found in PublicAccessType - * - * @var string - */ - private $_publicAccess; - - /** - * @var array - */ - private $_signedIdentifiers = array(); - - /* - * The root name of XML elemenet representation. - * - * @var string - */ - public static $xmlRootName = 'SignedIdentifiers'; - - - /** - * Parses the given array into signed identifiers. - * - * @param string $publicAccess The container public access. - * @param array $parsed The parsed response into array representation. - * - * @return none - */ - public static function create($publicAccess, $parsed) - { - $result = new ContainerAcl(); - $result->_publicAccess = $publicAccess; - $result->_signedIdentifiers = array(); - - if (!empty($parsed) && is_array($parsed['SignedIdentifier'])) { - $entries = $parsed['SignedIdentifier']; - $temp = Utilities::getArray($entries); - - foreach ($temp as $value) { - $startString = urldecode($value['AccessPolicy']['Start']); - $expiryString = urldecode($value['AccessPolicy']['Expiry']); - $start = Utilities::convertToDateTime($startString); - $expiry = Utilities::convertToDateTime($expiryString); - $permission = $value['AccessPolicy']['Permission']; - $id = $value['Id']; - $result->addSignedIdentifier($id, $start, $expiry, $permission); - } - } - - return $result; - } - - /** - * Gets container signed modifiers. - * - * @return array. - */ - public function getSignedIdentifiers() - { - return $this->_signedIdentifiers; - } - - /** - * Sets container signed modifiers. - * - * @param array $signedIdentifiers value. - * - * @return none. - */ - public function setSignedIdentifiers($signedIdentifiers) - { - $this->_signedIdentifiers = $signedIdentifiers; - } - - /** - * Gets container publicAccess. - * - * @return string. - */ - public function getPublicAccess() - { - return $this->_publicAccess; - } - - /** - * Sets container publicAccess. - * - * @param string $publicAccess value. - * - * @return none. - */ - public function setPublicAccess($publicAccess) - { - Validate::isTrue( - PublicAccessType::isValid($publicAccess), - Resources::INVALID_BLOB_PAT_MSG - ); - $this->_publicAccess = $publicAccess; - } - - /** - * Adds new signed modifier - * - * @param string $id a unique id for this modifier - * @param \DateTime $start The time at which the Shared Access Signature - * becomes valid. If omitted, start time for this call is assumed to be - * the time when the Blob service receives the request. - * @param \DateTime $expiry The time at which the Shared Access Signature - * becomes invalid. This field may be omitted if it has been specified as - * part of a container-level access policy. - * @param string $permission The permissions associated with the Shared - * Access Signature. The user is restricted to operations allowed by the - * permissions. Valid permissions values are read (r), write (w), delete (d) and - * list (l). - * - * @return none. - * - * @see http://msdn.microsoft.com/en-us/library/windowsazure/hh508996.aspx - */ - public function addSignedIdentifier($id, $start, $expiry, $permission) - { - Validate::isString($id, 'id'); - Validate::isDate($start); - Validate::isDate($expiry); - Validate::isString($permission, 'permission'); - - $accessPolicy = new AccessPolicy(); - $accessPolicy->setStart($start); - $accessPolicy->setExpiry($expiry); - $accessPolicy->setPermission($permission); - - $signedIdentifier = new SignedIdentifier(); - $signedIdentifier->setId($id); - $signedIdentifier->setAccessPolicy($accessPolicy); - - $this->_signedIdentifiers[] = $signedIdentifier; - } - - /** - * Converts this object to array representation for XML serialization - * - * @return array. - */ - public function toArray() - { - $array = array(); - - foreach ($this->_signedIdentifiers as $value) { - $array[] = $value->toArray(); - } - - return $array; - } - - /** - * Converts this current object to XML representation. - * - * @param XmlSerializer $xmlSerializer The XML serializer. - * - * @return string. - */ - public function toXml($xmlSerializer) - { - $properties = array( - XmlSerializer::DEFAULT_TAG => 'SignedIdentifier', - XmlSerializer::ROOT_NAME => self::$xmlRootName - ); - - return $xmlSerializer->serialize($this->toArray(), $properties); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerProperties.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerProperties.php deleted file mode 100644 index 48b0f061..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ContainerProperties.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds container properties fields - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ContainerProperties -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * Gets container lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets container lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - $this->_lastModified = $lastModified; - } - - /** - * Gets container etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets container etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - $this->_etag = $etag; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobOptions.php deleted file mode 100644 index a70855e8..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobOptions.php +++ /dev/null @@ -1,205 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * optional parameters for CopyBlobOptions wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CopyBlobOptions extends BlobServiceOptions -{ - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * @var AccessCondition - */ - private $_sourceAccessCondition; - - /** - * @var array - */ - private $_metadata; - - /** - * @var string - */ - private $_sourceSnapshot; - - /** - * @var string - */ - private $_leaseId; - - /** - * @var sourceLeaseId - */ - private $_sourceLeaseId; - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets source access condition - * - * @return SourceAccessCondition - */ - public function getSourceAccessCondition() - { - return $this->_sourceAccessCondition; - } - - /** - * Sets source access condition - * - * @param SourceAccessCondition $sourceAccessCondition value to use. - * - * @return none. - */ - public function setSourceAccessCondition($sourceAccessCondition) - { - $this->_sourceAccessCondition = $sourceAccessCondition; - } - - /** - * Gets metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets metadata. - * - * @param array $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets source snapshot. - * - * @return string - */ - public function getSourceSnapshot() - { - return $this->_sourceSnapshot; - } - - /** - * Sets source snapshot. - * - * @param string $sourceSnapshot value. - * - * @return none - */ - public function setSourceSnapshot($sourceSnapshot) - { - $this->_sourceSnapshot = $sourceSnapshot; - } - - /** - * Gets lease ID. - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease ID. - * - * @param string $leaseId value. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets source lease ID. - * - * @return string - */ - public function getSourceLeaseId() - { - return $this->_sourceLeaseId; - } - - /** - * Sets source lease ID. - * - * @param string $sourceLeaseId value. - * - * @return none - */ - public function setSourceLeaseId($sourceLeaseId) - { - $this->_sourceLeaseId = $sourceLeaseId; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobResult.php deleted file mode 100644 index d2302e3a..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CopyBlobResult.php +++ /dev/null @@ -1,120 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * The result of calling copyBlob API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CopyBlobResult -{ - /** - * @var string - */ - private $_etag; - - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * Creates CopyBlobResult object from the response of the copy blob request. - * - * @param array $headers The HTTP response headers in array representation. - * - * @return CopyBlobResult - */ - public static function create($headers) - { - $result = new CopyBlobResult(); - $result->setETag(Utilities::tryGetValueInsensitive( - Resources::ETAG, - $headers)); - if (Utilities::arrayKeyExistsInsensitive(Resources::LAST_MODIFIED, $headers)) { - $lastModified = Utilities::tryGetValueInsensitive( - Resources::LAST_MODIFIED, - $headers); - $result->setLastModified(Utilities::rfc1123ToDateTime($lastModified)); - } - - return $result; - } - - /** - * Gets ETag. - * - * @return string - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets ETag. - * - * @param string $etag value. - * - * @return none - */ - public function setETag($etag) - { - $this->_etag = $etag; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none - */ - public function setLastModified($lastModified) - { - $this->_lastModified = $lastModified; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobBlockOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobBlockOptions.php deleted file mode 100644 index 85e2b0c0..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobBlockOptions.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Optional parameters for createBlobBlock wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateBlobBlockOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_contentMD5; - - /** - * @var string - */ - private $_leaseId; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets blob contentMD5. - * - * @return string. - */ - public function getContentMD5() - { - return $this->_contentMD5; - } - - /** - * Sets blob contentMD5. - * - * @param string $contentMD5 value. - * - * @return none. - */ - public function setContentMD5($contentMD5) - { - $this->_contentMD5 = $contentMD5; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobOptions.php deleted file mode 100644 index 643b4ad6..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobOptions.php +++ /dev/null @@ -1,421 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * optional parameters for createXXXBlob wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateBlobOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_contentType; - - /** - * @var string - */ - private $_contentEncoding; - - /** - * @var string - */ - private $_contentLanguage; - - /** - * @var string - */ - private $_contentMD5; - - /** - * @var string - */ - private $_cacheControl; - - /** - * @var string - */ - private $_blobContentType; - - /** - * @var string - */ - private $_blobContentEncoding; - - /** - * @var string - */ - private $_blobContentLanguage; - - /** - * @var string - */ - private $_blobContentMD5; - - /** - * @var string - */ - private $_blobCacheControl; - - /** - * @var array - */ - private $_metadata; - - /** - * @var string - */ - private $_leaseId; - - /** - * @var integer - */ - private $_sequenceNumber; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets blob ContentType. - * - * @return string. - */ - public function getBlobContentType() - { - return $this->_blobContentType; - } - - /** - * Sets blob ContentType. - * - * @param string $blobContentType value. - * - * @return none. - */ - public function setBlobContentType($blobContentType) - { - $this->_blobContentType = $blobContentType; - } - - /** - * Gets blob ContentEncoding. - * - * @return string. - */ - public function getBlobContentEncoding() - { - return $this->_blobContentEncoding; - } - - /** - * Sets blob ContentEncoding. - * - * @param string $blobContentEncoding value. - * - * @return none. - */ - public function setBlobContentEncoding($blobContentEncoding) - { - $this->_blobContentEncoding = $blobContentEncoding; - } - - /** - * Gets blob ContentLanguage. - * - * @return string. - */ - public function getBlobContentLanguage() - { - return $this->_blobContentLanguage; - } - - /** - * Sets blob ContentLanguage. - * - * @param string $blobContentLanguage value. - * - * @return none. - */ - public function setBlobContentLanguage($blobContentLanguage) - { - $this->_blobContentLanguage = $blobContentLanguage; - } - - /** - * Gets blob ContentMD5. - * - * @return string. - */ - public function getBlobContentMD5() - { - return $this->_blobContentMD5; - } - - /** - * Sets blob ContentMD5. - * - * @param string $blobContentMD5 value. - * - * @return none. - */ - public function setBlobContentMD5($blobContentMD5) - { - $this->_blobContentMD5 = $blobContentMD5; - } - - /** - * Gets blob cache control. - * - * @return string. - */ - public function getBlobCacheControl() - { - return $this->_blobCacheControl; - } - - /** - * Sets blob cacheControl. - * - * @param string $blobCacheControl value to use. - * - * @return none. - */ - public function setBlobCacheControl($blobCacheControl) - { - $this->_blobCacheControl = $blobCacheControl; - } - - /** - * Gets blob contentType. - * - * @return string. - */ - public function getContentType() - { - return $this->_contentType; - } - - /** - * Sets blob contentType. - * - * @param string $contentType value. - * - * @return none. - */ - public function setContentType($contentType) - { - $this->_contentType = $contentType; - } - - /** - * Gets contentEncoding. - * - * @return string. - */ - public function getContentEncoding() - { - return $this->_contentEncoding; - } - - /** - * Sets contentEncoding. - * - * @param string $contentEncoding value. - * - * @return none. - */ - public function setContentEncoding($contentEncoding) - { - $this->_contentEncoding = $contentEncoding; - } - - /** - * Gets contentLanguage. - * - * @return string. - */ - public function getContentLanguage() - { - return $this->_contentLanguage; - } - - /** - * Sets contentLanguage. - * - * @param string $contentLanguage value. - * - * @return none. - */ - public function setContentLanguage($contentLanguage) - { - $this->_contentLanguage = $contentLanguage; - } - - /** - * Gets contentMD5. - * - * @return string. - */ - public function getContentMD5() - { - return $this->_contentMD5; - } - - /** - * Sets contentMD5. - * - * @param string $contentMD5 value. - * - * @return none. - */ - public function setContentMD5($contentMD5) - { - $this->_contentMD5 = $contentMD5; - } - - /** - * Gets cacheControl. - * - * @return string. - */ - public function getCacheControl() - { - return $this->_cacheControl; - } - - /** - * Sets cacheControl. - * - * @param string $cacheControl value to use. - * - * @return none. - */ - public function setCacheControl($cacheControl) - { - $this->_cacheControl = $cacheControl; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets blob metadata. - * - * @param string $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets blob sequenceNumber. - * - * @return int. - */ - public function getSequenceNumber() - { - return $this->_sequenceNumber; - } - - /** - * Sets blob sequenceNumber. - * - * @param int $sequenceNumber value. - * - * @return none. - */ - public function setSequenceNumber($sequenceNumber) - { - Validate::isInteger($sequenceNumber, 'sequenceNumber'); - $this->_sequenceNumber = $sequenceNumber; - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesOptions.php deleted file mode 100644 index bf87d11c..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesOptions.php +++ /dev/null @@ -1,122 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Optional parameters for create and clear blob pages - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateBlobPagesOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_contentMD5; - - /** - * @var string - */ - private $_leaseId; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets blob contentMD5. - * - * @return string. - */ - public function getContentMD5() - { - return $this->_contentMD5; - } - - /** - * Sets blob contentMD5. - * - * @param string $contentMD5 value. - * - * @return none. - */ - public function setContentMD5($contentMD5) - { - $this->_contentMD5 = $contentMD5; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesResult.php deleted file mode 100644 index 67551a89..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobPagesResult.php +++ /dev/null @@ -1,184 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds result of calling create or clear blob pages - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateBlobPagesResult -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var integer - */ - private $_sequenceNumber; - - /** - * @var string - */ - private $_contentMD5; - - /** - * Creates CreateBlobPagesResult object from $parsed response in array - * representation - * - * @param array $headers HTTP response headers - * - * @return CreateBlobPagesResult - */ - public static function create($headers) - { - $result = new CreateBlobPagesResult(); - $clean = array_change_key_case($headers); - - $date = $clean[Resources::LAST_MODIFIED]; - $date = Utilities::rfc1123ToDateTime($date); - $result->setETag($clean[Resources::ETAG]); - $result->setLastModified($date); - $result->setContentMD5( - Utilities::tryGetValue($clean, Resources::CONTENT_MD5) - ); - $result->setSequenceNumber( - intval( - Utilities::tryGetValue($clean, Resources::X_MS_BLOB_SEQUENCE_NUMBER) - ) - ); - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - Validate::isString($etag, 'etag'); - $this->_etag = $etag; - } - - /** - * Gets blob contentMD5. - * - * @return string. - */ - public function getContentMD5() - { - return $this->_contentMD5; - } - - /** - * Sets blob contentMD5. - * - * @param string $contentMD5 value. - * - * @return none. - */ - public function setContentMD5($contentMD5) - { - $this->_contentMD5 = $contentMD5; - } - - /** - * Gets blob sequenceNumber. - * - * @return int. - */ - public function getSequenceNumber() - { - return $this->_sequenceNumber; - } - - /** - * Sets blob sequenceNumber. - * - * @param int $sequenceNumber value. - * - * @return none. - */ - public function setSequenceNumber($sequenceNumber) - { - Validate::isInteger($sequenceNumber, 'sequenceNumber'); - $this->_sequenceNumber = $sequenceNumber; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotOptions.php deleted file mode 100644 index 3c19e13d..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotOptions.php +++ /dev/null @@ -1,123 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * The optional parameters for createBlobSnapshot wrapper. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateBlobSnapshotOptions extends BlobServiceOptions -{ - /** - * @var array - */ - private $_metadata; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * @var string - */ - private $_leaseId; - - /** - * Gets metadata. - * - * @return array - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets metadata. - * - * @param array $metadata The metadata array. - * - * @return none - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets access condition. - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition. - * - * @param AccessCondition $accessCondition The access condition object. - * - * @return none - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets lease Id. - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id. - * - * @param string $leaseId The lease Id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotResult.php deleted file mode 100644 index 6414616c..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateBlobSnapshotResult.php +++ /dev/null @@ -1,154 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; - -/** - * The result of creating Blob snapshot. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateBlobSnapshotResult -{ - /** - * A DateTime value which uniquely identifies the snapshot. - * @var string - */ - private $_snapshot; - - /** - * The ETag for the destination blob. - * @var string - */ - private $_etag; - - /** - * The date/time that the copy operation to the destination blob completed. - * @var \DateTime - */ - private $_lastModified; - - /** - * Creates CreateBlobSnapshotResult object from the response of the - * create Blob snapshot request. - * - * @param array $headers The HTTP response headers in array representation. - * - * @return CreateBlobSnapshotResult - */ - public static function create($headers) - { - $result = new CreateBlobSnapshotResult(); - $headerWithLowerCaseKey = array_change_key_case($headers); - - $result->setETag($headerWithLowerCaseKey[Resources::ETAG]); - - $result->setLastModified( - Utilities::rfc1123ToDateTime( - $headerWithLowerCaseKey[Resources::LAST_MODIFIED] - ) - ); - - $result->setSnapshot($headerWithLowerCaseKey[Resources::X_MS_SNAPSHOT]); - - return $result; - } - - /** - * Gets snapshot. - * - * @return string - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets snapshot. - * - * @param string $snapshot value. - * - * @return none - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } - - /** - * Gets ETag. - * - * @return string - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets ETag. - * - * @param string $etag value. - * - * @return none - */ - public function setETag($etag) - { - $this->_etag = $etag; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none - */ - public function setLastModified($lastModified) - { - $this->_lastModified = $lastModified; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateContainerOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateContainerOptions.php deleted file mode 100644 index 24bb7384..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/CreateContainerOptions.php +++ /dev/null @@ -1,123 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Blob\Models\BlobServiceOptions; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for createContainer API - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CreateContainerOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_publicAccess; - - /** - * @var array - */ - private $_metadata; - - /** - * Gets container public access. - * - * @return string. - */ - public function getPublicAccess() - { - return $this->_publicAccess; - } - - /** - * Specifies whether data in the container may be accessed publicly and the level - * of access. Possible values include: - * 1) container: Specifies full public read access for container and blob data. - * Clients can enumerate blobs within the container via anonymous request, but - * cannot enumerate containers within the storage account. - * 2) blob: Specifies public read access for blobs. Blob data within this - * container can be read via anonymous request, but container data is not - * available. Clients cannot enumerate blobs within the container via - * anonymous request. - * If this value is not specified in the request, container data is private to - * the account owner. - * - * @param string $publicAccess access modifier for the container - * - * @return none. - */ - public function setPublicAccess($publicAccess) - { - Validate::isString($publicAccess, 'publicAccess'); - $this->_publicAccess = $publicAccess; - } - - /** - * Gets user defined metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets user defined metadata. This metadata should be added without the header - * prefix (x-ms-meta-*). - * - * @param array $metadata user defined metadata object in array form. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Adds new metadata element. This element should be added without the header - * prefix (x-ms-meta-*). - * - * @param string $key metadata key element. - * @param string $value metadata value element. - * - * @return none. - */ - public function addMetadata($key, $value) - { - $this->_metadata[$key] = $value; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteBlobOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteBlobOptions.php deleted file mode 100644 index 79865a90..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteBlobOptions.php +++ /dev/null @@ -1,151 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for deleteBlob wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class DeleteBlobOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * @var boolean - */ - private $_deleteSnaphotsOnly; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } - - /** - * Gets blob deleteSnaphotsOnly. - * - * @return boolean. - */ - public function getDeleteSnaphotsOnly() - { - return $this->_deleteSnaphotsOnly; - } - - /** - * Sets blob deleteSnaphotsOnly. - * - * @param string $deleteSnaphotsOnly value. - * - * @return boolean. - */ - public function setDeleteSnaphotsOnly($deleteSnaphotsOnly) - { - Validate::isBoolean($deleteSnaphotsOnly); - $this->_deleteSnaphotsOnly = $deleteSnaphotsOnly; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteContainerOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteContainerOptions.php deleted file mode 100644 index a96494a0..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/DeleteContainerOptions.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * The optional for deleteContainer API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class DeleteContainerOptions extends BlobServiceOptions -{ - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataOptions.php deleted file mode 100644 index 210ef943..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataOptions.php +++ /dev/null @@ -1,122 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Optional parameters for getBlobMetadata wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetBlobMetadataOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataResult.php deleted file mode 100644 index 4309009f..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobMetadataResult.php +++ /dev/null @@ -1,147 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds results of calling getBlobMetadata wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetBlobMetadataResult -{ - - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var array - */ - private $_metadata; - - /** - * Creates GetBlobMetadataResult from response headers. - * - * @param array $headers The HTTP response headers. - * @param array $metadata The blob metadata array. - * - * @return GetBlobMetadataResult - */ - public static function create($headers, $metadata) - { - $result = new GetBlobMetadataResult(); - $date = $headers[Resources::LAST_MODIFIED]; - $result->setLastModified(Utilities::rfc1123ToDateTime($date)); - $result->setETag($headers[Resources::ETAG]); - $result->setMetadata(is_null($metadata) ? array() : $metadata); - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - Validate::isString($etag, 'etag'); - $this->_etag = $etag; - } - - /** - * Gets blob metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets blob metadata. - * - * @param string $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobOptions.php deleted file mode 100644 index 6d4292f6..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobOptions.php +++ /dev/null @@ -1,207 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for getBlob wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetBlobOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * @var boolean - */ - private $_computeRangeMD5; - - /** - * @var integer - */ - private $_rangeStart; - - /** - * @var integer - */ - private $_rangeEnd; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } - - /** - * Gets rangeStart - * - * @return integer - */ - public function getRangeStart() - { - return $this->_rangeStart; - } - - /** - * Sets rangeStart - * - * @param integer $rangeStart the blob lease id. - * - * @return none - */ - public function setRangeStart($rangeStart) - { - Validate::isInteger($rangeStart, 'rangeStart'); - $this->_rangeStart = $rangeStart; - } - - /** - * Gets rangeEnd - * - * @return integer - */ - public function getRangeEnd() - { - return $this->_rangeEnd; - } - - /** - * Sets rangeEnd - * - * @param integer $rangeEnd range end value in bytes - * - * @return none - */ - public function setRangeEnd($rangeEnd) - { - Validate::isInteger($rangeEnd, 'rangeEnd'); - $this->_rangeEnd = $rangeEnd; - } - - /** - * Gets computeRangeMD5 - * - * @return boolean - */ - public function getComputeRangeMD5() - { - return $this->_computeRangeMD5; - } - - /** - * Sets computeRangeMD5 - * - * @param boolean $computeRangeMD5 value - * - * @return none - */ - public function setComputeRangeMD5($computeRangeMD5) - { - Validate::isBoolean($computeRangeMD5); - $this->_computeRangeMD5 = $computeRangeMD5; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesOptions.php deleted file mode 100644 index 0c5b96b6..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesOptions.php +++ /dev/null @@ -1,122 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Optional parameters for getBlobProperties wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetBlobPropertiesOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesResult.php deleted file mode 100644 index 7c291f4e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobPropertiesResult.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds result of calling getBlobProperties - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetBlobPropertiesResult -{ - /** - * @var BlobProperties - */ - private $_properties; - - /** - * @var array - */ - private $_metadata; - - /** - * Gets blob metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets blob metadata. - * - * @param string $metadata value. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets blob properties. - * - * @return BlobProperties. - */ - public function getProperties() - { - return $this->_properties; - } - - /** - * Sets blob properties. - * - * @param BlobProperties $properties value. - * - * @return none. - */ - public function setProperties($properties) - { - $this->_properties = $properties; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobResult.php deleted file mode 100644 index 70de1977..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetBlobResult.php +++ /dev/null @@ -1,143 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Blob\Models\BlobProperties; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds result of GetBlob API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetBlobResult -{ - /** - * @var BlobProperties - */ - private $_properties; - - /** - * @var array - */ - private $_metadata; - - /** - * @var resource - */ - private $_contentStream; - - /** - * Creates GetBlobResult from getBlob call. - * - * @param array $headers The HTTP response headers. - * @param string $body The response body. - * @param array $metadata The blob metadata. - * - * @return GetBlobResult - */ - public static function create($headers, $body, $metadata) - { - $result = new GetBlobResult(); - $result->setContentStream(Utilities::stringToStream($body)); - $result->setProperties(BlobProperties::create($headers)); - $result->setMetadata(is_null($metadata) ? array() : $metadata); - - return $result; - } - - /** - * Gets blob metadata. - * - * @return array - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets blob metadata. - * - * @param string $metadata value. - * - * @return none - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } - - /** - * Gets blob properties. - * - * @return BlobProperties - */ - public function getProperties() - { - return $this->_properties; - } - - /** - * Sets blob properties. - * - * @param BlobProperties $properties value. - * - * @return none - */ - public function setProperties($properties) - { - $this->_properties = $properties; - } - - /** - * Gets blob contentStream. - * - * @return resource - */ - public function getContentStream() - { - return $this->_contentStream; - } - - /** - * Sets blob contentStream. - * - * @param resource $contentStream The stream handle. - * - * @return none - */ - public function setContentStream($contentStream) - { - $this->_contentStream = $contentStream; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerACLResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerACLResult.php deleted file mode 100644 index b68d56e5..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerACLResult.php +++ /dev/null @@ -1,145 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Blob\Models\ContainerAcl; - -/** - * Holds container ACL - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetContainerAclResult -{ - /** - * @var ContainerAcl - */ - private $_containerACL; - - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * Parses the given array into signed identifiers - * - * @param string $publicAccess container public access - * @param string $etag container etag - * @param \DateTime $lastModified last modification date - * @param array $parsed parsed response into array - * representation - * - * @return none. - */ - public static function create($publicAccess, $etag, $lastModified, $parsed) - { - $result = new GetContainerAclResult(); - $result->setETag($etag); - $result->setLastModified($lastModified); - $acl = ContainerAcl::create($publicAccess, $parsed); - $result->setContainerAcl($acl); - - return $result; - } - - /** - * Gets container ACL - * - * @return ContainerAcl - */ - public function getContainerAcl() - { - return $this->_containerACL; - } - - /** - * Sets container ACL - * - * @param ContainerAcl $containerACL value. - * - * @return none. - */ - public function setContainerAcl($containerACL) - { - $this->_containerACL = $containerACL; - } - - /** - * Gets container lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets container lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - $this->_lastModified = $lastModified; - } - - /** - * Gets container etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets container etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - $this->_etag = $etag; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerPropertiesResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerPropertiesResult.php deleted file mode 100644 index 2e1a9428..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/GetContainerPropertiesResult.php +++ /dev/null @@ -1,126 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds result of getContainerProperties and getContainerMetadata - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetContainerPropertiesResult -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var array - */ - private $_metadata; - - /** - * Any operation that modifies the container or its properties or metadata - * updates the last modified time. Operations on blobs do not affect the last - * modified time of the container. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets container lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - $this->_lastModified = $lastModified; - } - - /** - * The entity tag for the container. If the request version is 2011-08-18 or - * newer, the ETag value will be in quotes. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets container etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - $this->_etag = $etag; - } - - /** - * Gets user defined metadata. - * - * @return array. - */ - public function getMetadata() - { - return $this->_metadata; - } - - /** - * Sets user defined metadata. This metadata should be added without the header - * prefix (x-ms-meta-*). - * - * @param array $metadata user defined metadata object in array form. - * - * @return none. - */ - public function setMetadata($metadata) - { - $this->_metadata = $metadata; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/LeaseMode.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/LeaseMode.php deleted file mode 100644 index d8aedd40..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/LeaseMode.php +++ /dev/null @@ -1,46 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Modes for leasing a blob - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class LeaseMode -{ - const ACQUIRE_ACTION = 'acquire'; - const RENEW_ACTION = 'renew'; - const RELEASE_ACTION = 'release'; - const BREAK_ACTION = 'break'; -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksOptions.php deleted file mode 100644 index e85cff60..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksOptions.php +++ /dev/null @@ -1,187 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for listBlobBlock wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListBlobBlocksOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var boolean - */ - private $_includeUncommittedBlobs; - - /** - * @var boolean - */ - private $_includeCommittedBlobs; - - /** - * Holds result of list type. You can access it by this order: - * $_listType[$this->_includeUncommittedBlobs][$this->_includeCommittedBlobs] - * - * @var array - */ - private static $_listType; - - /** - * Constructs the static variable $listType. - */ - public function __construct() - { - self::$_listType[true][true] = 'all'; - self::$_listType[true][false] = 'uncommitted'; - self::$_listType[false][true] = 'committed'; - self::$_listType[false][false] = 'all'; - - $this->_includeUncommittedBlobs = false; - $this->_includeCommittedBlobs = false; - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } - - /** - * Sets the include uncommittedBlobs flag. - * - * @param bool $includeUncommittedBlobs value. - * - * @return none. - */ - public function setIncludeUncommittedBlobs($includeUncommittedBlobs) - { - Validate::isBoolean($includeUncommittedBlobs); - $this->_includeUncommittedBlobs = $includeUncommittedBlobs; - } - - /** - * Indicates if uncommittedBlobs is included or not. - * - * @return boolean. - */ - public function getIncludeUncommittedBlobs() - { - return $this->_includeUncommittedBlobs; - } - - /** - * Sets the include committedBlobs flag. - * - * @param bool $includeCommittedBlobs value. - * - * @return none. - */ - public function setIncludeCommittedBlobs($includeCommittedBlobs) - { - Validate::isBoolean($includeCommittedBlobs); - $this->_includeCommittedBlobs = $includeCommittedBlobs; - } - - /** - * Indicates if committedBlobs is included or not. - * - * @return boolean. - */ - public function getIncludeCommittedBlobs() - { - return $this->_includeCommittedBlobs; - } - - /** - * Gets block list type. - * - * @return string - */ - public function getBlockListType() - { - $includeUncommitted = $this->_includeUncommittedBlobs; - $includeCommitted = $this->_includeCommittedBlobs; - - return self::$_listType[$includeUncommitted][$includeCommitted]; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksResult.php deleted file mode 100644 index baf42ed3..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobBlocksResult.php +++ /dev/null @@ -1,274 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds result of listBlobBlocks - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListBlobBlocksResult -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var string - */ - private $_contentType; - - /** - * @var integer - */ - private $_contentLength; - - /** - * @var array - */ - private $_committedBlocks; - - /** - * @var array - */ - private $_uncommittedBlocks; - - /** - * Gets block entries from parsed response - * - * @param array $parsed HTTP response - * @param string $type Block type - * - * @return array - */ - private static function _getEntries($parsed, $type) - { - $entries = array(); - - if (is_array($parsed)) { - $rawEntries = array(); - - if ( array_key_exists($type, $parsed) - && is_array($parsed[$type]) - && !empty($parsed[$type]) - ) { - $rawEntries = Utilities::getArray($parsed[$type]['Block']); - } - - foreach ($rawEntries as $value) { - $entries[base64_decode($value['Name'])] = $value['Size']; - } - } - - return $entries; - } - - /** - * Creates ListBlobBlocksResult from given response headers and parsed body - * - * @param array $headers HTTP response headers - * @param array $parsed HTTP response body in array representation - * - * @return ListBlobBlocksResult - */ - public static function create($headers, $parsed) - { - $result = new ListBlobBlocksResult(); - $clean = array_change_key_case($headers); - - $result->setETag(Utilities::tryGetValue($clean, Resources::ETAG)); - $date = Utilities::tryGetValue($clean, Resources::LAST_MODIFIED); - if (!is_null($date)) { - $date = Utilities::rfc1123ToDateTime($date); - $result->setLastModified($date); - } - $result->setContentLength( - intval( - Utilities::tryGetValue($clean, Resources::X_MS_BLOB_CONTENT_LENGTH) - ) - ); - $result->setContentType( - Utilities::tryGetValue($clean, Resources::CONTENT_TYPE) - ); - - $result->_uncommittedBlocks = self::_getEntries( - $parsed, 'UncommittedBlocks' - ); - $result->_committedBlocks = self::_getEntries($parsed, 'CommittedBlocks'); - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - $this->_etag = $etag; - } - - /** - * Gets blob contentType. - * - * @return string. - */ - public function getContentType() - { - return $this->_contentType; - } - - /** - * Sets blob contentType. - * - * @param string $contentType value. - * - * @return none. - */ - public function setContentType($contentType) - { - $this->_contentType = $contentType; - } - - /** - * Gets blob contentLength. - * - * @return integer. - */ - public function getContentLength() - { - return $this->_contentLength; - } - - /** - * Sets blob contentLength. - * - * @param integer $contentLength value. - * - * @return none. - */ - public function setContentLength($contentLength) - { - Validate::isInteger($contentLength, 'contentLength'); - $this->_contentLength = $contentLength; - } - - /** - * Gets uncommitted blocks - * - * @return array - */ - public function getUncommittedBlocks() - { - return $this->_uncommittedBlocks; - } - - /** - * Sets uncommitted blocks - * - * @param array $uncommittedBlocks The uncommitted blocks entries - * - * @return none. - */ - public function setUncommittedBlocks($uncommittedBlocks) - { - $this->_uncommittedBlocks = $uncommittedBlocks; - } - - /** - * Gets committed blocks - * - * @return array - */ - public function getCommittedBlocks() - { - return $this->_committedBlocks; - } - - /** - * Sets committed blocks - * - * @param array $committedBlocks The committed blocks entries - * - * @return none. - */ - public function setCommittedBlocks($committedBlocks) - { - $this->_committedBlocks = $committedBlocks; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsOptions.php deleted file mode 100644 index b7491899..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsOptions.php +++ /dev/null @@ -1,238 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for listBlobs API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListBlobsOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_prefix; - - /** - * @var string - */ - private $_marker; - - /** - * @var string - */ - private $_delimiter; - - /** - * @var integer - */ - private $_maxResults; - - /** - * @var boolean - */ - private $_includeMetadata; - - /** - * @var boolean - */ - private $_includeSnapshots; - - /** - * @var boolean - */ - private $_includeUncommittedBlobs; - - /** - * Gets prefix. - * - * @return string. - */ - public function getPrefix() - { - return $this->_prefix; - } - - /** - * Sets prefix. - * - * @param string $prefix value. - * - * @return none. - */ - public function setPrefix($prefix) - { - Validate::isString($prefix, 'prefix'); - $this->_prefix = $prefix; - } - - /** - * Gets delimiter. - * - * @return string. - */ - public function getDelimiter() - { - return $this->_delimiter; - } - - /** - * Sets prefix. - * - * @param string $delimiter value. - * - * @return none. - */ - public function setDelimiter($delimiter) - { - Validate::isString($delimiter, 'delimiter'); - $this->_delimiter = $delimiter; - } - - /** - * Gets marker. - * - * @return string. - */ - public function getMarker() - { - return $this->_marker; - } - - /** - * Sets marker. - * - * @param string $marker value. - * - * @return none. - */ - public function setMarker($marker) - { - Validate::isString($marker, 'marker'); - $this->_marker = $marker; - } - - /** - * Gets max results. - * - * @return integer. - */ - public function getMaxResults() - { - return $this->_maxResults; - } - - /** - * Sets max results. - * - * @param integer $maxResults value. - * - * @return none. - */ - public function setMaxResults($maxResults) - { - Validate::isInteger($maxResults, 'maxResults'); - $this->_maxResults = $maxResults; - } - - /** - * Indicates if metadata is included or not. - * - * @return boolean. - */ - public function getIncludeMetadata() - { - return $this->_includeMetadata; - } - - /** - * Sets the include metadata flag. - * - * @param bool $includeMetadata value. - * - * @return none. - */ - public function setIncludeMetadata($includeMetadata) - { - Validate::isBoolean($includeMetadata); - $this->_includeMetadata = $includeMetadata; - } - - /** - * Indicates if snapshots is included or not. - * - * @return boolean. - */ - public function getIncludeSnapshots() - { - return $this->_includeSnapshots; - } - - /** - * Sets the include snapshots flag. - * - * @param bool $includeSnapshots value. - * - * @return none. - */ - public function setIncludeSnapshots($includeSnapshots) - { - Validate::isBoolean($includeSnapshots); - $this->_includeSnapshots = $includeSnapshots; - } - - /** - * Indicates if uncommittedBlobs is included or not. - * - * @return boolean. - */ - public function getIncludeUncommittedBlobs() - { - return $this->_includeUncommittedBlobs; - } - - /** - * Sets the include uncommittedBlobs flag. - * - * @param bool $includeUncommittedBlobs value. - * - * @return none. - */ - public function setIncludeUncommittedBlobs($includeUncommittedBlobs) - { - Validate::isBoolean($includeUncommittedBlobs); - $this->_includeUncommittedBlobs = $includeUncommittedBlobs; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsResult.php deleted file mode 100644 index 22d1b829..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListBlobsResult.php +++ /dev/null @@ -1,339 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Blob\Models\Blob; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\InvalidArgumentTypeException; - -/** - * Hold result of calliing listBlobs wrapper. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListBlobsResult -{ - /** - * @var array - */ - private $_blobPrefixes; - - /** - * @var array - */ - private $_blobs; - - /** - * @var string - */ - private $_delimiter; - - /** - * @var string - */ - private $_prefix; - - /** - * @var string - */ - private $_marker; - - /** - * @var string - */ - private $_nextMarker; - - /** - * @var integer - */ - private $_maxResults; - - /** - * @var string - */ - private $_containerName; - - /** - * Creates ListBlobsResult object from parsed XML response. - * - * @param array $parsed XML response parsed into array. - * - * @return ListBlobsResult - */ - public static function create($parsed) - { - $result = new ListBlobsResult(); - $result->_containerName = Utilities::tryGetKeysChainValue( - $parsed, - Resources::XTAG_ATTRIBUTES, - Resources::XTAG_CONTAINER_NAME - ); - $result->_prefix = Utilities::tryGetValue( - $parsed, Resources::QP_PREFIX - ); - $result->_marker = Utilities::tryGetValue( - $parsed, Resources::QP_MARKER - ); - $result->_nextMarker = Utilities::tryGetValue( - $parsed, Resources::QP_NEXT_MARKER - ); - $result->_maxResults = intval( - Utilities::tryGetValue($parsed, Resources::QP_MAX_RESULTS, 0) - ); - $result->_delimiter = Utilities::tryGetValue( - $parsed, Resources::QP_DELIMITER - ); - $result->_blobs = array(); - $result->_blobPrefixes = array(); - $rawBlobs = array(); - $rawBlobPrefixes = array(); - - if ( is_array($parsed['Blobs']) - && array_key_exists('Blob', $parsed['Blobs']) - ) { - $rawBlobs = Utilities::getArray($parsed['Blobs']['Blob']); - } - - foreach ($rawBlobs as $value) { - $blob = new Blob(); - $blob->setName($value['Name']); - if (isset($value['Url'])) $blob->setUrl($value['Url']); - $blob->setSnapshot(Utilities::tryGetValue($value, 'Snapshot')); - $blob->setProperties( - BlobProperties::create( - Utilities::tryGetValue($value, 'Properties') - ) - ); - $blob->setMetadata( - Utilities::tryGetValue($value, Resources::QP_METADATA, array()) - ); - - $result->_blobs[] = $blob; - } - - if ( is_array($parsed['Blobs']) - && array_key_exists('BlobPrefix', $parsed['Blobs']) - ) { - $rawBlobPrefixes = Utilities::getArray($parsed['Blobs']['BlobPrefix']); - } - - foreach ($rawBlobPrefixes as $value) { - $blobPrefix = new BlobPrefix(); - $blobPrefix->setName($value['Name']); - - $result->_blobPrefixes[] = $blobPrefix; - } - - return $result; - } - - /** - * Gets blobs. - * - * @return array - */ - public function getBlobs() - { - return $this->_blobs; - } - - /** - * Sets blobs. - * - * @param array $blobs list of blobs - * - * @return none - */ - public function setBlobs($blobs) - { - $this->_blobs = array(); - foreach ($blobs as $blob) { - $this->_blobs[] = clone $blob; - } - } - - /** - * Gets blobPrefixes. - * - * @return array - */ - public function getBlobPrefixes() - { - return $this->_blobPrefixes; - } - - /** - * Sets blobPrefixes. - * - * @param array $blobPrefixes list of blobPrefixes - * - * @return none - */ - public function setBlobPrefixes($blobPrefixes) - { - $this->_blobPrefixes = array(); - foreach ($blobPrefixes as $blob) { - $this->_blobPrefixes[] = clone $blob; - } - } - - /** - * Gets prefix. - * - * @return string - */ - public function getPrefix() - { - return $this->_prefix; - } - - /** - * Sets prefix. - * - * @param string $prefix value. - * - * @return none - */ - public function setPrefix($prefix) - { - $this->_prefix = $prefix; - } - - /** - * Gets prefix. - * - * @return string - */ - public function getDelimiter() - { - return $this->_delimiter; - } - - /** - * Sets prefix. - * - * @param string $delimiter value. - * - * @return none - */ - public function setDelimiter($delimiter) - { - $this->_delimiter = $delimiter; - } - - /** - * Gets marker. - * - * @return string - */ - public function getMarker() - { - return $this->_marker; - } - - /** - * Sets marker. - * - * @param string $marker value. - * - * @return none - */ - public function setMarker($marker) - { - $this->_marker = $marker; - } - - /** - * Gets max results. - * - * @return integer - */ - public function getMaxResults() - { - return $this->_maxResults; - } - - /** - * Sets max results. - * - * @param integer $maxResults value. - * - * @return none - */ - public function setMaxResults($maxResults) - { - $this->_maxResults = $maxResults; - } - - /** - * Gets next marker. - * - * @return string - */ - public function getNextMarker() - { - return $this->_nextMarker; - } - - /** - * Sets next marker. - * - * @param string $nextMarker value. - * - * @return none - */ - public function setNextMarker($nextMarker) - { - $this->_nextMarker = $nextMarker; - } - - /** - * Gets container name. - * - * @return string - */ - public function getContainerName() - { - return $this->_containerName; - } - - /** - * Sets container name. - * - * @param string $containerName value. - * - * @return none - */ - public function setContainerName($containerName) - { - $this->_containerName = $containerName; - } -} diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersOptions.php deleted file mode 100644 index 0a787bee..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersOptions.php +++ /dev/null @@ -1,172 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Blob\Models\BlobServiceOptions; -use \WindowsAzure\Common\Internal\Validate; - -/** - * Options for listBlobs API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListContainersOptions extends BlobServiceOptions -{ - /** - * Filters the results to return only containers whose name begins with the - * specified prefix. - * - * @var string - */ - private $_prefix; - - /** - * Identifies the portion of the list to be returned with the next list operation - * The operation returns a marker value within the - * response body if the list returned was not complete. The marker value may - * then be used in a subsequent call to request the next set of list items. - * The marker value is opaque to the client. - * - * @var string - */ - private $_marker; - - /** - * Specifies the maximum number of containers to return. If the request does not - * specify maxresults, or specifies a value greater than 5,000, the server will - * return up to 5,000 items. If the parameter is set to a value less than or - * equal to zero, the server will return status code 400 (Bad Request). - * - * @var string - */ - private $_maxResults; - - /** - * Include this parameter to specify that the container's metadata be returned - * as part of the response body. - * - * @var bool - */ - private $_includeMetadata; - - /** - * Gets prefix. - * - * @return string. - */ - public function getPrefix() - { - return $this->_prefix; - } - - /** - * Sets prefix. - * - * @param string $prefix value. - * - * @return none. - */ - public function setPrefix($prefix) - { - Validate::isString($prefix, 'prefix'); - $this->_prefix = $prefix; - } - - /** - * Gets marker. - * - * @return string. - */ - public function getMarker() - { - return $this->_marker; - } - - /** - * Sets marker. - * - * @param string $marker value. - * - * @return none. - */ - public function setMarker($marker) - { - Validate::isString($marker, 'marker'); - $this->_marker = $marker; - } - - /** - * Gets max results. - * - * @return string. - */ - public function getMaxResults() - { - return $this->_maxResults; - } - - /** - * Sets max results. - * - * @param string $maxResults value. - * - * @return none. - */ - public function setMaxResults($maxResults) - { - Validate::isString($maxResults, 'maxResults'); - $this->_maxResults = $maxResults; - } - - /** - * Indicates if metadata is included or not. - * - * @return string. - */ - public function getIncludeMetadata() - { - return $this->_includeMetadata; - } - - /** - * Sets the include metadata flag. - * - * @param bool $includeMetadata value. - * - * @return none. - */ - public function setIncludeMetadata($includeMetadata) - { - Validate::isBoolean($includeMetadata); - $this->_includeMetadata = $includeMetadata; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersResult.php deleted file mode 100644 index 55be9c4e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListContainersResult.php +++ /dev/null @@ -1,261 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Blob\Models\Container; - -/** - * Container to hold list container response object. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListContainersResult -{ - /** - * @var array - */ - private $_containers; - - /** - * @var string - */ - private $_prefix; - - /** - * @var string - */ - private $_marker; - - /** - * @var string - */ - private $_nextMarker; - - /** - * @var integer - */ - private $_maxResults; - - /** - * @var string - */ - private $_accountName; - - /** - * Creates ListBlobResult object from parsed XML response. - * - * @param array $parsedResponse XML response parsed into array. - * - * @return ListBlobResult - */ - public static function create($parsedResponse) - { - $result = new ListContainersResult(); - $result->_accountName = Utilities::tryGetKeysChainValue( - $parsedResponse, - Resources::XTAG_ATTRIBUTES, - Resources::XTAG_ACCOUNT_NAME - ); - $result->_prefix = Utilities::tryGetValue( - $parsedResponse, Resources::QP_PREFIX - ); - $result->_marker = Utilities::tryGetValue( - $parsedResponse, Resources::QP_MARKER - ); - $result->_nextMarker = Utilities::tryGetValue( - $parsedResponse, Resources::QP_NEXT_MARKER - ); - $result->_maxResults = Utilities::tryGetValue( - $parsedResponse, Resources::QP_MAX_RESULTS - ); - $result->_containers = array(); - $rawContainer = array(); - - if ( !empty($parsedResponse['Containers']) ) { - $containersArray = $parsedResponse['Containers']['Container']; - $rawContainer = Utilities::getArray($containersArray); - } - - foreach ($rawContainer as $value) { - $container = new Container(); - $container->setName($value['Name']); - $container->setUrl($value['Url']); - $container->setMetadata( - Utilities::tryGetValue($value, Resources::QP_METADATA, array()) - ); - $properties = new ContainerProperties(); - $date = $value['Properties']['Last-Modified']; - $date = Utilities::rfc1123ToDateTime($date); - $properties->setLastModified($date); - $properties->setETag($value['Properties']['Etag']); - $container->setProperties($properties); - $result->_containers[] = $container; - } - - return $result; - } - - /** - * Sets containers. - * - * @param array $containers list of containers. - * - * @return none - */ - public function setContainers($containers) - { - $this->_containers = array(); - foreach ($containers as $container) { - $this->_containers[] = clone $container; - } - } - - /** - * Gets containers. - * - * @return array - */ - public function getContainers() - { - return $this->_containers; - } - - /** - * Gets prefix. - * - * @return string - */ - public function getPrefix() - { - return $this->_prefix; - } - - /** - * Sets prefix. - * - * @param string $prefix value. - * - * @return none - */ - public function setPrefix($prefix) - { - $this->_prefix = $prefix; - } - - /** - * Gets marker. - * - * @return string - */ - public function getMarker() - { - return $this->_marker; - } - - /** - * Sets marker. - * - * @param string $marker value. - * - * @return none - */ - public function setMarker($marker) - { - $this->_marker = $marker; - } - - /** - * Gets max results. - * - * @return string - */ - public function getMaxResults() - { - return $this->_maxResults; - } - - /** - * Sets max results. - * - * @param string $maxResults value. - * - * @return none - */ - public function setMaxResults($maxResults) - { - $this->_maxResults = $maxResults; - } - - /** - * Gets next marker. - * - * @return string - */ - public function getNextMarker() - { - return $this->_nextMarker; - } - - /** - * Sets next marker. - * - * @param string $nextMarker value. - * - * @return none - */ - public function setNextMarker($nextMarker) - { - $this->_nextMarker = $nextMarker; - } - - /** - * Gets account name. - * - * @return string - */ - public function getAccountName() - { - return $this->_accountName; - } - - /** - * Sets account name. - * - * @param string $accountName value. - * - * @return none - */ - public function setAccountName($accountName) - { - $this->_accountName = $accountName; - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesOptions.php deleted file mode 100644 index c6bc42c0..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesOptions.php +++ /dev/null @@ -1,179 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for listPageBlobRanges wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListPageBlobRangesOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_snapshot; - - /** - * @var integer - */ - private $_rangeStart; - - /** - * @var integer - */ - private $_rangeEnd; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets blob snapshot. - * - * @return string. - */ - public function getSnapshot() - { - return $this->_snapshot; - } - - /** - * Sets blob snapshot. - * - * @param string $snapshot value. - * - * @return none. - */ - public function setSnapshot($snapshot) - { - $this->_snapshot = $snapshot; - } - - /** - * Gets rangeStart - * - * @return integer - */ - public function getRangeStart() - { - return $this->_rangeStart; - } - - /** - * Sets rangeStart - * - * @param integer $rangeStart the blob lease id. - * - * @return none - */ - public function setRangeStart($rangeStart) - { - Validate::isInteger($rangeStart, 'rangeStart'); - $this->_rangeStart = $rangeStart; - } - - /** - * Gets rangeEnd - * - * @return integer - */ - public function getRangeEnd() - { - return $this->_rangeEnd; - } - - /** - * Sets rangeEnd - * - * @param integer $rangeEnd range end value in bytes - * - * @return none - */ - public function setRangeEnd($rangeEnd) - { - Validate::isInteger($rangeEnd, 'rangeEnd'); - $this->_rangeEnd = $rangeEnd; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesResult.php deleted file mode 100644 index d1f33243..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/ListPageBlobRangesResult.php +++ /dev/null @@ -1,196 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Blob\Models\PageRange; - -/** - * Holds result of calling listPageBlobRanges wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ListPageBlobRangesResult -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var integer - */ - private $_contentLength; - - /** - * @var array - */ - private $_pageRanges; - - /** - * Creates BlobProperties object from $parsed response in array representation - * - * @param array $headers HTTP response headers - * @param array $parsed parsed response in array format. - * - * @return ListPageBlobRangesResult - */ - public static function create($headers, $parsed) - { - $result = new ListPageBlobRangesResult(); - $headers = array_change_key_case($headers); - - $date = $headers[Resources::LAST_MODIFIED]; - $date = Utilities::rfc1123ToDateTime($date); - $blobLength = intval($headers[Resources::X_MS_BLOB_CONTENT_LENGTH]); - $rawPageRanges = array(); - - if (!empty($parsed['PageRange'])) { - $parsed = array_change_key_case($parsed); - $rawPageRanges = Utilities::getArray($parsed['pagerange']); - } - - $result->_pageRanges = array(); - foreach ($rawPageRanges as $value) { - $result->_pageRanges[] = new PageRange( - intval($value['Start']), intval($value['End']) - ); - } - - $result->setContentLength($blobLength); - $result->setETag($headers[Resources::ETAG]); - $result->setLastModified($date); - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - Validate::isString($etag, 'etag'); - $this->_etag = $etag; - } - - /** - * Gets blob contentLength. - * - * @return integer. - */ - public function getContentLength() - { - return $this->_contentLength; - } - - /** - * Sets blob contentLength. - * - * @param integer $contentLength value. - * - * @return none. - */ - public function setContentLength($contentLength) - { - Validate::isInteger($contentLength, 'contentLength'); - $this->_contentLength = $contentLength; - } - - /** - * Gets page ranges - * - * @return array - */ - public function getPageRanges() - { - return $this->_pageRanges; - } - - /** - * Sets page ranges - * - * @param array $pageRanges page ranges to set - * - * @return none - */ - public function setPageRanges($pageRanges) - { - $this->_pageRanges = array(); - foreach ($pageRanges as $pageRange) { - $this->_pageRanges[] = clone $pageRange; - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageRange.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageRange.php deleted file mode 100644 index e7687fbf..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageRange.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds info about page range used in HTTP requests - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class PageRange -{ - /** - * @var integer - */ - private $_start; - - /** - * @var integer - */ - private $_end; - - /** - * Constructor - * - * @param integer $start the page start value - * @param integer $end the page end value - * - * @return PageRange - */ - public function __construct($start = null, $end = null) - { - $this->_start = $start; - $this->_end = $end; - } - - /** - * Sets page start range - * - * @param integer $start the page range start - * - * @return none. - */ - public function setStart($start) - { - $this->_start = $start; - } - - /** - * Gets page start range - * - * @return integer - */ - public function getStart() - { - return $this->_start; - } - - /** - * Sets page end range - * - * @param integer $end the page range end - * - * @return none. - */ - public function setEnd($end) - { - $this->_end = $end; - } - - /** - * Gets page end range - * - * @return integer - */ - public function getEnd() - { - return $this->_end; - } - - /** - * Gets page range length - * - * @return integer - */ - public function getLength() - { - return $this->_end - $this->_start + 1; - } - - /** - * Sets page range length - * - * @param integer $value new page range - * - * @return none - */ - public function setLength($value) - { - $this->_end = $this->_start + $value - 1; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageWriteOption.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageWriteOption.php deleted file mode 100644 index 5ef2f2e9..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PageWriteOption.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * Holds available blob page write options - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class PageWriteOption -{ - const CLEAR_OPTION = 'clear'; - const UPDATE_OPTION = 'update'; -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PublicAccessType.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PublicAccessType.php deleted file mode 100644 index 856f3bc4..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/PublicAccessType.php +++ /dev/null @@ -1,66 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; - -/** - * Holds public acces types for a container. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class PublicAccessType -{ - const NONE = Resources::EMPTY_STRING; - const BLOBS_ONLY = 'blob'; - const CONTAINER_AND_BLOBS = 'container'; - - /** - * Validates the public access. - * - * @param string $type The public access type. - * - * @return boolean - */ - public static function isValid($type) - { - switch ($type) { - case self::NONE: - case self::BLOBS_ONLY: - case self::CONTAINER_AND_BLOBS: - return true; - - default: - return false; - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataOptions.php deleted file mode 100644 index a873dbee..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataOptions.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; - -/** - * The optional parameters for setBlobMetadata API. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SetBlobMetadataOptions extends BlobServiceOptions -{ - /** - * @var string - */ - private $_leaseId; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataResult.php deleted file mode 100644 index f5338ca1..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobMetadataResult.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds results of calling getBlobMetadata wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SetBlobMetadataResult -{ - - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * Creates SetBlobMetadataResult from response headers. - * - * @param array $headers response headers - * - * @return SetBlobMetadataResult - */ - public static function create($headers) - { - $result = new SetBlobMetadataResult(); - $date = $headers[Resources::LAST_MODIFIED]; - $result->setLastModified(Utilities::rfc1123ToDateTime($date)); - $result->setETag($headers[Resources::ETAG]); - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - Validate::isString($etag, 'etag'); - $this->_etag = $etag; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesOptions.php deleted file mode 100644 index 9fc7f4c2..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesOptions.php +++ /dev/null @@ -1,292 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Validate; - -/** - * Optional parameters for setBlobProperties wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SetBlobPropertiesOptions extends BlobServiceOptions -{ - /** - * @var BlobProperties - */ - private $_blobProperties; - - /** - * @var string - */ - private $_leaseId; - - /** - * @var string - */ - private $_sequenceNumberAction; - - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Creates a new SetBlobPropertiesOptions with a specified BlobProperties - * instance. - * - * @param BlobProperties $blobProperties The blob properties instance. - */ - public function __construct($blobProperties = null) - { - $this->_blobProperties = is_null($blobProperties) - ? new BlobProperties() : clone $blobProperties; - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } - - /** - * Gets blob sequenceNumber. - * - * @return integer. - */ - public function getSequenceNumber() - { - return $this->_blobProperties->getSequenceNumber(); - } - - /** - * Sets blob sequenceNumber. - * - * @param integer $sequenceNumber value. - * - * @return none. - */ - public function setSequenceNumber($sequenceNumber) - { - $this->_blobProperties->setSequenceNumber($sequenceNumber); - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getSequenceNumberAction() - { - return $this->_sequenceNumberAction; - } - - /** - * Sets lease Id for the blob - * - * @param string $sequenceNumberAction action. - * - * @return none - */ - public function setSequenceNumberAction($sequenceNumberAction) - { - $this->_sequenceNumberAction = $sequenceNumberAction; - } - - /** - * Gets lease Id for the blob - * - * @return string - */ - public function getLeaseId() - { - return $this->_leaseId; - } - - /** - * Sets lease Id for the blob - * - * @param string $leaseId the blob lease id. - * - * @return none - */ - public function setLeaseId($leaseId) - { - $this->_leaseId = $leaseId; - } - - /** - * Gets blob blobContentLength. - * - * @return integer. - */ - public function getBlobContentLength() - { - return $this->_blobProperties->getContentLength(); - } - - /** - * Sets blob blobContentLength. - * - * @param integer $blobContentLength value. - * - * @return none. - */ - public function setBlobContentLength($blobContentLength) - { - $this->_blobProperties->setContentLength($blobContentLength); - } - - /** - * Gets blob ContentType. - * - * @return string. - */ - public function getBlobContentType() - { - return $this->_blobProperties->getContentType(); - } - - /** - * Sets blob ContentType. - * - * @param string $blobContentType value. - * - * @return none. - */ - public function setBlobContentType($blobContentType) - { - $this->_blobProperties->setContentType($blobContentType); - } - - /** - * Gets blob ContentEncoding. - * - * @return string. - */ - public function getBlobContentEncoding() - { - return $this->_blobProperties->getContentEncoding(); - } - - /** - * Sets blob ContentEncoding. - * - * @param string $blobContentEncoding value. - * - * @return none. - */ - public function setBlobContentEncoding($blobContentEncoding) - { - $this->_blobProperties->setContentEncoding($blobContentEncoding); - } - - /** - * Gets blob ContentLanguage. - * - * @return string. - */ - public function getBlobContentLanguage() - { - return $this->_blobProperties->getContentLanguage(); - } - - /** - * Sets blob ContentLanguage. - * - * @param string $blobContentLanguage value. - * - * @return none. - */ - public function setBlobContentLanguage($blobContentLanguage) - { - $this->_blobProperties->setContentLanguage($blobContentLanguage); - } - - /** - * Gets blob ContentMD5. - * - * @return string. - */ - public function getBlobContentMD5() - { - return $this->_blobProperties->getContentMD5(); - } - - /** - * Sets blob ContentMD5. - * - * @param string $blobContentMD5 value. - * - * @return none. - */ - public function setBlobContentMD5($blobContentMD5) - { - $this->_blobProperties->setContentMD5($blobContentMD5); - } - - /** - * Gets blob cache control. - * - * @return string. - */ - public function getBlobCacheControl() - { - return $this->_blobProperties->getCacheControl(); - } - - /** - * Sets blob cacheControl. - * - * @param string $blobCacheControl value to use. - * - * @return none. - */ - public function setBlobCacheControl($blobCacheControl) - { - $this->_blobProperties->setCacheControl($blobCacheControl); - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesResult.php deleted file mode 100644 index 95ae57a0..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetBlobPropertiesResult.php +++ /dev/null @@ -1,149 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds result of calling setBlobProperties wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SetBlobPropertiesResult -{ - /** - * @var \DateTime - */ - private $_lastModified; - - /** - * @var string - */ - private $_etag; - - /** - * @var integer - */ - private $_sequenceNumber; - - /** - * Creates SetBlobPropertiesResult from response headers. - * - * @param array $headers response headers - * - * @return SetBlobPropertiesResult - */ - public static function create($headers) - { - $result = new SetBlobPropertiesResult(); - $date = $headers[Resources::LAST_MODIFIED]; - $result->setLastModified(Utilities::rfc1123ToDateTime($date)); - $result->setETag($headers[Resources::ETAG]); - if (array_key_exists(Resources::X_MS_BLOB_SEQUENCE_NUMBER, $headers)) { - $sNumber = $headers[Resources::X_MS_BLOB_SEQUENCE_NUMBER]; - $result->setSequenceNumber(intval($sNumber)); - } - - return $result; - } - - /** - * Gets blob lastModified. - * - * @return \DateTime. - */ - public function getLastModified() - { - return $this->_lastModified; - } - - /** - * Sets blob lastModified. - * - * @param \DateTime $lastModified value. - * - * @return none. - */ - public function setLastModified($lastModified) - { - Validate::isDate($lastModified); - $this->_lastModified = $lastModified; - } - - /** - * Gets blob etag. - * - * @return string. - */ - public function getETag() - { - return $this->_etag; - } - - /** - * Sets blob etag. - * - * @param string $etag value. - * - * @return none. - */ - public function setETag($etag) - { - Validate::isString($etag, 'etag'); - $this->_etag = $etag; - } - - /** - * Gets blob sequenceNumber. - * - * @return int. - */ - public function getSequenceNumber() - { - return $this->_sequenceNumber; - } - - /** - * Sets blob sequenceNumber. - * - * @param int $sequenceNumber value. - * - * @return none. - */ - public function setSequenceNumber($sequenceNumber) - { - Validate::isInteger($sequenceNumber, 'sequenceNumber'); - $this->_sequenceNumber = $sequenceNumber; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetContainerMetadataOptions.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetContainerMetadataOptions.php deleted file mode 100644 index 35fada3b..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SetContainerMetadataOptions.php +++ /dev/null @@ -1,78 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Blob\Models\AccessCondition; -use WindowsAzure\Blob\Models\BlobServiceOptions; - -/** - * Optional parameters for setContainerMetadata wrapper - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SetContainerMetadataOptions extends BlobServiceOptions -{ - /** - * @var AccessCondition - */ - private $_accessCondition; - - /** - * Constructs the access condition object with none option. - */ - public function __construct() - { - $this->_accessCondition = AccessCondition::none(); - } - - /** - * Gets access condition - * - * @return AccessCondition - */ - public function getAccessCondition() - { - return $this->_accessCondition; - } - - /** - * Sets access condition - * - * @param AccessCondition $accessCondition value to use. - * - * @return none. - */ - public function setAccessCondition($accessCondition) - { - $this->_accessCondition = $accessCondition; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SignedIdentifier.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SignedIdentifier.php deleted file mode 100644 index fa8e754a..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Blob/Models/SignedIdentifier.php +++ /dev/null @@ -1,104 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Blob\Models; -use WindowsAzure\Blob\Models\AccessPolicy; - -/** - * Holds container signed identifiers. - * - * @category Microsoft - * @package WindowsAzure\Blob\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SignedIdentifier -{ - private $_id; - private $_accessPolicy; - - /** - * Gets id. - * - * @return string. - */ - public function getId() - { - return $this->_id; - } - - /** - * Sets id. - * - * @param string $id value. - * - * @return none. - */ - public function setId($id) - { - $this->_id = $id; - } - - /** - * Gets accessPolicy. - * - * @return string. - */ - public function getAccessPolicy() - { - return $this->_accessPolicy; - } - - /** - * Sets accessPolicy. - * - * @param string $accessPolicy value. - * - * @return none. - */ - public function setAccessPolicy($accessPolicy) - { - $this->_accessPolicy = $accessPolicy; - } - - /** - * Converts this current object to XML representation. - * - * @return array. - */ - public function toArray() - { - $array = array(); - - $array['SignedIdentifier']['Id'] = $this->_id; - $array['SignedIdentifier']['AccessPolicy'] = $this->_accessPolicy->toArray(); - - return $array; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/CloudConfigurationManager.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/CloudConfigurationManager.php deleted file mode 100644 index a1aa6c14..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/CloudConfigurationManager.php +++ /dev/null @@ -1,167 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\ConnectionStringSource; - -/** - * Configuration manager for accessing Windows Azure settings. - * - * @category Microsoft - * @package WindowsAzure\Common - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class CloudConfigurationManager -{ - /** - * @var boolean - */ - private static $_isInitialized = false; - - /** - * The list of connection string sources. - * - * @var array - */ - private static $_sources; - - /** - * Restrict users from creating instances from this class - */ - private function __construct() - { - - } - - /** - * Initializes the connection string source providers. - * - * @return none - */ - private static function _init() - { - if (!self::$_isInitialized) { - self::$_sources = array(); - - // Get list of default connection string sources. - $default = ConnectionStringSource::getDefaultSources(); - foreach ($default as $name => $provider) { - self::$_sources[$name] = $provider; - } - - self::$_isInitialized = true; - } - } - - /** - * Gets a connection string from all available sources. - * - * @param string $key The connection string key name. - * - * @return string If the key does not exist return null. - */ - public static function getConnectionString($key) - { - Validate::isString($key, 'key'); - - self::_init(); - $value = null; - - foreach (self::$_sources as $source) { - $value = call_user_func_array($source, array($key)); - - if (!empty($value)) { - break; - } - } - - return $value; - } - - /** - * Registers a new connection string source provider. If the source to get - * registered is a default source, only the name of the source is required. - * - * @param string $name The source name. - * @param callable $provider The source callback. - * @param boolean $prepend When true, the $provider is processed first when - * calling getConnectionString. When false (the default) the $provider is - * processed after the existing callbacks. - * - * @return none - */ - public static function registerSource($name, $provider = null, $prepend = false) - { - Validate::isString($name, 'name'); - Validate::notNullOrEmpty($name, 'name'); - - self::_init(); - $default = ConnectionStringSource::getDefaultSources(); - - // Try to get callback if the user is trying to register a default source. - $provider = Utilities::tryGetValue($default, $name, $provider); - - Validate::notNullOrEmpty($provider, 'callback'); - - if ($prepend) { - self::$_sources = array_merge( - array($name => $provider), - self::$_sources - ); - - } else { - self::$_sources[$name] = $provider; - } - } - - /** - * Unregisters a connection string source. - * - * @param string $name The source name. - * - * @return callable - */ - public static function unregisterSource($name) - { - Validate::isString($name, 'name'); - Validate::notNullOrEmpty($name, 'name'); - - self::_init(); - - $sourceCallback = Utilities::tryGetValue(self::$_sources, $name); - - if (!is_null($sourceCallback)) { - unset(self::$_sources[$name]); - } - - return $sourceCallback; - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomBase.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomBase.php deleted file mode 100644 index b313d4c8..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomBase.php +++ /dev/null @@ -1,326 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Atom\AtomLink; - -/** - * The base class of ATOM library. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class AtomBase -{ - /** - * The attributes of the feed. - * - * @var array - */ - protected $attributes; - - /** - * Creates an ATOM base object with default parameters. - */ - public function __construct() - { - $this->attributes = array(); - $atomlink = new AtomLink(); - } - - /** - * Gets the attributes of the ATOM class. - * - * @return array - */ - public function getAttributes() - { - return $this->attributes; - } - - /** - * Sets the attributes of the ATOM class. - * - * @param array $attributes The attributes of the array. - * - * @return array - */ - public function setAttributes($attributes) - { - Validate::isArray($attributes, 'attributes'); - $this->attributes = $attributes; - } - - /** - * Sets an attribute to the ATOM object instance. - * - * @param string $attributeKey The key of the attribute. - * @param mixed $attributeValue The value of the attribute. - * - * @return none - */ - public function setAttribute($attributeKey, $attributeValue) - { - $this->attributes[$attributeKey] = $attributeValue; - } - - /** - * Gets an attribute with a specified attribute key. - * - * @param string $attributeKey The key of the attribute. - * - * @return none - */ - public function getAttribute($attributeKey) - { - return $this->attributes[$attributeKey]; - } - - /** - * Processes author node. - * - * @param array $xmlWriter The XML writer. - * @param array $itemArray An array of item to write. - * @param array $elementName The name of the element. - * - * @return array - */ - protected function writeArrayItem($xmlWriter, $itemArray, $elementName) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - Validate::isArray($itemArray, 'itemArray'); - Validate::isString($elementName, 'elementName'); - - foreach ($itemArray as $itemInstance) { - $xmlWriter->startElementNS( - 'atom', - $elementName, - Resources::ATOM_NAMESPACE - ); - $itemInstance->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - } - - /** - * Processes author node. - * - * @param array $xmlArray An array of simple xml elements. - * - * @return array - */ - protected function processAuthorNode($xmlArray) - { - $author = array(); - $authorItem = $xmlArray[Resources::AUTHOR]; - - if (is_array($authorItem)) { - foreach ($xmlArray[Resources::AUTHOR] as $authorXmlInstance) { - $authorInstance = new Person(); - $authorInstance->parseXml($authorXmlInstance->asXML()); - $author[] = $authorInstance; - } - } else { - $authorInstance = new Person(); - $authorInstance->parseXml($authorItem->asXML()); - $author[] = $authorInstance; - } - return $author; - } - - /** - * Processes entry node. - * - * @param array $xmlArray An array of simple xml elements. - * - * @return array - */ - protected function processEntryNode($xmlArray) - { - $entry = array(); - $entryItem = $xmlArray[Resources::ENTRY]; - - if (is_array($entryItem)) { - foreach ($xmlArray[Resources::ENTRY] as $entryXmlInstance) { - $entryInstance = new Entry(); - $entryInstance->fromXml($entryXmlInstance); - $entry[] = $entryInstance; - } - } else { - $entryInstance = new Entry(); - $entryInstance->fromXml($entryItem); - $entry[] = $entryInstance; - } - return $entry; - } - - /** - * Processes category node. - * - * @param array $xmlArray An array of simple xml elements. - * - * @return array - */ - protected function processCategoryNode($xmlArray) - { - $category = array(); - $categoryItem = $xmlArray[Resources::CATEGORY]; - - if (is_array($categoryItem)) { - foreach ($xmlArray[Resources::CATEGORY] as $categoryXmlInstance) { - $categoryInstance = new Category(); - $categoryInstance->parseXml($categoryXmlInstance->asXML()); - $category[] = $categoryInstance; - } - } else { - $categoryInstance = new Category(); - $categoryInstance->parseXml($categoryItem->asXML()); - $category[] = $categoryInstance; - } - return $category; - } - - /** - * Processes contributor node. - * - * @param array $xmlArray An array of simple xml elements. - * - * @return array - */ - protected function processContributorNode($xmlArray) - { - $category = array(); - $contributorItem = $xmlArray[Resources::CONTRIBUTOR]; - - if (is_array($contributorItem)) { - foreach ($xmlArray[Resources::CONTRIBUTOR] as $contributorXmlInstance) { - $contributorInstance = new Person(); - $contributorInstance->parseXml($contributorXmlInstance->asXML()); - $contributor[] = $contributorInstance; - } - } elseif (is_string($contributorItem)) { - $contributorInstance = new Person(); - $contributorInstance->setName((string)$contributorItem); - $contributor[] = $contributorInstance; - } else { - $contributorInstance = new Person(); - $contributorInstance->parseXml($contributorItem->asXML()); - $contributor[] = $contributorInstance; - } - return $contributor; - } - - /** - * Processes link node. - * - * @param array $xmlArray An array of simple xml elements. - * - * @return array - */ - protected function processLinkNode($xmlArray) - { - $link = array(); - $linkValue = $xmlArray[Resources::LINK]; - - if (is_array($linkValue)) { - foreach ($xmlArray[Resources::LINK] as $linkValueInstance) { - $linkInstance = new AtomLink(); - $linkInstance->parseXml($linkValueInstance->asXML()); - $link[] = $linkInstance; - } - } else { - $linkInstance = new AtomLink(); - $linkInstance->parseXml($linkValue->asXML()); - $link[] = $linkInstance; - } - - return $link; - } - - /** - * Writes an optional attribute for ATOM. - * - * @param \XMLWriter $xmlWriter The XML writer. - * @param string $attributeName The name of the attribute. - * @param mixed $attributeValue The value of the attribute. - * - * @return none - */ - protected function writeOptionalAttribute( - $xmlWriter, - $attributeName, - $attributeValue - ) { - Validate::notNull($xmlWriter, 'xmlWriter'); - Validate::isString($attributeName, 'attributeName'); - - if (!empty($attributeValue)) { - $xmlWriter->writeAttribute( - $attributeName, - $attributeValue - ); - } - } - - /** - * Writes the optional elements namespaces. - * - * @param \XmlWriter $xmlWriter The XML writer. - * @param string $prefix The prefix. - * @param string $elementName The element name. - * @param string $namespace The namespace name. - * @param string $elementValue The element value. - * - * @return none - */ - protected function writeOptionalElementNS( - $xmlWriter, - $prefix, - $elementName, - $namespace, - $elementValue - ) { - Validate::notNull($xmlWriter, 'xmlWriter'); - Validate::isString($elementName, 'elementName'); - - if (!empty($elementValue)) { - $xmlWriter->writeElementNS( - $prefix, - $elementName, - $namespace, - $elementValue - ); - } - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomLink.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomLink.php deleted file mode 100644 index d1c8246e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/AtomLink.php +++ /dev/null @@ -1,343 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; - -/** - * This link defines a reference from an entry or feed to a Web resource. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class AtomLink extends AtomBase -{ - /** - * The undefined content. - * - * @var string - */ - protected $undefinedContent; - - /** - * The HREF of the link. - * - * @var string - */ - protected $href; - - /** - * The rel attribute of the link. - * - * @var string - */ - protected $rel; - - /** - * The media type of the link. - * - * @var string - */ - protected $type; - - /** - * The language of HREF. - * - * @var string - */ - protected $hreflang; - - /** - * The titile of the link. - * - * @var string - */ - protected $title; - - /** - * The length of the link. - * - * @var integer - */ - protected $length; - - /** - * Creates a AtomLink instance with specified text. - */ - public function __construct() - { - } - - /** - * Parse an ATOM Link xml. - * - * @param string $xmlString an XML based string of ATOM Link. - * - * @return none - */ - public function parseXml($xmlString) - { - Validate::notNull($xmlString, 'xmlString'); - Validate::isString($xmlString, 'xmlString'); - $atomLinkXml = simplexml_load_string($xmlString); - $attributes = $atomLinkXml->attributes(); - - if (!empty($attributes['href'])) { - $this->href = (string)$attributes['href']; - } - - if (!empty($attributes['rel'])) { - $this->rel = (string)$attributes['rel']; - } - - if (!empty($attributes['type'])) { - $this->type = (string)$attributes['type']; - } - - if (!empty($attributes['hreflang'])) { - $this->hreflang = (string)$attributes['hreflang']; - } - - if (!empty($attributes['title'])) { - $this->title = (string)$attributes['title']; - } - - if (!empty($attributes['length'])) { - $this->length = (integer)$attributes['length']; - } - - $undefinedContent = (string)$atomLinkXml; - if (empty($undefinedContent)) { - $this->undefinedContent = null; - } else { - $this->undefinedContent = (string)$atomLinkXml; - } - } - - /** - * Gets the href of the link. - * - * @return string - */ - public function getHref() - { - return $this->href; - } - - /** - * Sets the href of the link. - * - * @param string $href The href of the link. - * - * @return none - */ - public function setHref($href) - { - $this->href = $href; - } - - /** - * Gets the rel of the atomLink. - * - * @return string - */ - public function getRel() - { - return $this->rel; - } - - /** - * Sets the rel of the link. - * - * @param string $rel The rel of the atomLink. - * - * @return none - */ - public function setRel($rel) - { - $this->rel = $rel; - } - - /** - * Gets the type of the link. - * - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * Sets the type of the link. - * - * @param string $type The type of the link. - * - * @return none - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * Gets the language of the href. - * - * @return string - */ - public function getHrefLang() - { - return $this->hrefLang; - } - - /** - * Sets the language of the href. - * - * @param string $hrefLang The language of the href. - * - * @return none - */ - public function setHrefLang($hrefLang) - { - $this->hrefLang = $hrefLang; - } - - /** - * Gets the title of the link. - * - * @return string - */ - public function getTitle() - { - return $this->title; - } - - /** - * Sets the title of the link. - * - * @param string $title The title of the link. - * - * @return none - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * Gets the length of the link. - * - * @return string - */ - public function getLength() - { - return $this->length; - } - - /** - * Sets the length of the link. - * - * @param string $length The length of the link. - * - * @return none - */ - public function setLength($length) - { - $this->length = $length; - } - - /** - * Gets the undefined content. - * - * @return string - */ - public function getUndefinedContent() - { - return $this->undefinedContent; - } - - /** - * Sets the undefined content. - * - * @param string $undefinedContent The undefined content. - * - * @return none - */ - public function setUndefinedContent($undefinedContent) - { - $this->undefinedContent = $undefinedContent; - } - - /** - * Writes an XML representing the ATOM link item. - * - * @param \XMLWriter $xmlWriter The xml writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->startElementNS( - 'atom', - Resources::LINK, - Resources::ATOM_NAMESPACE - ); - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - /** - * Writes the inner XML representing the ATOM link item. - * - * @param \XMLWriter $xmlWriter The xml writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - - $this->writeOptionalAttribute($xmlWriter, 'href', $this->href); - $this->writeOptionalAttribute($xmlWriter, 'rel', $this->rel); - $this->writeOptionalAttribute($xmlWriter, 'type', $this->type); - $this->writeOptionalAttribute($xmlWriter, 'hreflang', $this->hreflang); - $this->writeOptionalAttribute($xmlWriter, 'title', $this->title); - $this->writeOptionalAttribute($xmlWriter, 'length', $this->length); - - if (!empty($this->undefinedContent)) { - $xmlWriter->writeRaw($this->undefinedContent); - } - - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Category.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Category.php deleted file mode 100644 index 6d480eb1..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Category.php +++ /dev/null @@ -1,253 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; - -/** - * The category class of the ATOM standard. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Category extends AtomBase -{ - /** - * The term of the category. - * - * @var string - */ - protected $term; - - /** - * The scheme of the category. - * - * @var string - */ - protected $scheme; - - /** - * The label of the category. - * - * @var string - */ - protected $label; - - /** - * The undefined content of the category. - * - * @var string - */ - protected $undefinedContent; - - /** - * Creates a Category instance with specified text. - * - * @param string $undefinedContent The undefined content of the category. - * - * @return none - */ - public function __construct($undefinedContent = Resources::EMPTY_STRING) - { - $this->undefinedContent = $undefinedContent; - } - - /** - * Creates an ATOM Category instance with specified xml string. - * - * @param string $xmlString an XML based string of ATOM CONTENT. - * - * @return none - */ - public function parseXml($xmlString) - { - Validate::notNull($xmlString, 'xmlString'); - Validate::isString($xmlString, 'xmlString'); - $categoryXml = simplexml_load_string($xmlString); - $attributes = $categoryXml->attributes(); - if (!empty($attributes['term'])) { - $this->term = (string)$attributes['term']; - } - - if (!empty($attributes['scheme'])) { - $this->scheme = (string)$attributes['scheme']; - } - - if (!empty($attributes['label'])) { - $this->label = (string)$attributes['label']; - } - - $this->undefinedContent =(string)$categoryXml; - } - - /** - * Gets the term of the category. - * - * @return string - */ - public function getTerm() - { - return $this->term; - } - - /** - * Sets the term of the category. - * - * @param string $term The term of the category. - * - * @return none - */ - public function setTerm($term) - { - $this->term = $term; - } - - /** - * Gets the scheme of the category. - * - * @return string - */ - public function getScheme() - { - return $this->scheme; - } - - /** - * Sets the scheme of the category. - * - * @param string $scheme The scheme of the category. - * - * @return none - */ - public function setScheme($scheme) - { - $this->scheme = $scheme; - } - - /** - * Gets the label of the category. - * - * @return string The label. - */ - public function getLabel() - { - return $this->label; - } - - /** - * Sets the label of the category. - * - * @param string $label The label of the category. - * - * @return none - */ - public function setLabel($label) - { - $this->label = $label; - } - - /** - * Gets the undefined content of the category. - * - * @return string - */ - public function getUndefinedContent() - { - return $this->undefinedContent; - } - - /** - * Sets the undefined content of the category. - * - * @param string $undefinedContent The undefined content of the category. - * - * @return none - */ - public function setUndefinedContent($undefinedContent) - { - $this->undefinedContent = $undefinedContent; - } - - /** - * Writes an XML representing the category. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->startElementNS( - 'atom', - 'category', - Resources::ATOM_NAMESPACE - ); - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - /** - * Writes an XML representing the category. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $this->writeOptionalAttribute( - $xmlWriter, - 'term', - $this->term - ); - - $this->writeOptionalAttribute( - $xmlWriter, - 'scheme', - $this->scheme - ); - - $this->writeOptionalAttribute( - $xmlWriter, - 'label', - $this->label - ); - - if (!empty($this->undefinedContent)) { - $xmlWriter->WriteRaw($this->undefinedContent); - } - - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Content.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Content.php deleted file mode 100644 index 8511c12c..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Content.php +++ /dev/null @@ -1,213 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Atom\AtomProperties; -/** - * The content class of ATOM standard. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Content extends AtomBase -{ - /** - * The text of the content. - * - * @var string - */ - protected $text; - - /** - * The type of the content. - * - * @var string - */ - protected $type; - - /** - * Source XML object - * - * @var \SimpleXMLElement - */ - protected $xml; - - /** - * Creates a Content instance with specified text. - * - * @param string $text The text of the content. - * - * @return none - */ - public function __construct($text = null) - { - $this->text = $text; - } - - /** - * Creates an ATOM CONTENT instance with specified xml string. - * - * @param string $xmlString an XML based string of ATOM CONTENT. - * - * @return none - */ - public function parseXml($xmlString) - { - Validate::notNull($xmlString, 'xmlString'); - Validate::isString($xmlString, 'xmlString'); - - $this->fromXml(simplexml_load_string($xmlString)); - } - - /** - * Creates an ATOM CONTENT instance with specified simpleXML object - * - * @param \SimpleXMLElement $contentXml xml element of ATOM CONTENT - * - * @return none - */ - public function fromXml($contentXml) - { - Validate::notNull($contentXml, 'contentXml'); - Validate::isA($contentXml, '\SimpleXMLElement', 'contentXml'); - - $attributes = $contentXml->attributes(); - - if (!empty($attributes['type'])) { - $this->content = (string)$attributes['type']; - } - - $text = ''; - foreach ($contentXml->children() as $child) { - $text .= $child->asXML(); - } - - $this->text = $text; - - $this->xml = $contentXml; - } - - /** - * Gets the text of the content. - * - * @return string - */ - public function getText() - { - return $this->text; - } - - /** - * Sets the text of the content. - * - * @param string $text The text of the content. - * - * @return none - */ - public function setText($text) - { - $this->text = $text; - } - - /** - * Gets the xml object of the content. - * - * @return \SimpleXMLElement - */ - public function getXml() - { - return $this->xml; - } - - /** - * Gets the type of the content. - * - * @return string - */ - public function getType() - { - return $this->type; - } - - /** - * Sets the type of the content. - * - * @param string $type The type of the content. - * - * @return none - */ - public function setType($type) - { - $this->type = $type; - } - - /** - * Writes an XML representing the content. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->startElementNS( - 'atom', - 'content', - Resources::ATOM_NAMESPACE - ); - - $this->writeOptionalAttribute( - $xmlWriter, - 'type', - $this->type - ); - - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - /** - * Writes an inner XML representing the content. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->writeRaw($this->text); - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Entry.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Entry.php deleted file mode 100644 index eba3eb12..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Entry.php +++ /dev/null @@ -1,645 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; - -/** - * The Entry class of ATOM standard. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Entry extends AtomBase -{ - // @codingStandardsIgnoreStart - - /** - * The author of the entry. - * - * @var Person - */ - protected $author; - - /** - * The category of the entry. - * - * @var array - */ - protected $category; - - /** - * The content of the entry. - * - * @var string - */ - protected $content; - - /** - * The contributor of the entry. - * - * @var string - */ - protected $contributor; - - /** - * An unqiue ID representing the entry. - * - * @var string - */ - protected $id; - - /** - * The link of the entry. - * - * @var string - */ - protected $link; - - /** - * Is the entry published. - * - * @var boolean - */ - protected $published; - - /** - * The copy right of the entry. - * - * @var string - */ - protected $rights; - - /** - * The source of the entry. - * - * @var string - */ - protected $source; - - /** - * The summary of the entry. - * - * @var string - */ - protected $summary; - - /** - * The title of the entry. - * - * @var string - */ - protected $title; - - /** - * Is the entry updated. - * - * @var \DateTime - */ - protected $updated; - - /** - * The extension element of the entry. - * - * @var string - */ - protected $extensionElement; - - /** - * Creates an ATOM Entry instance with default parameters. - */ - public function __construct() - { - $this->attributes = array(); - } - - /** - * Populate the properties of an ATOM Entry instance with specified XML.. - * - * @param string $xmlString A string representing an ATOM entry instance. - * - * @return none - */ - public function parseXml($xmlString) - { - Validate::notNull($xmlString, 'xmlString'); - - $this->fromXml(simplexml_load_string($xmlString)); - } - - /** - * Creates an ATOM ENTRY instance with specified simpleXML object - * - * @param \SimpleXMLElement $entryXml xml element of ATOM ENTRY - * - * @return none - */ - public function fromXml($entryXml) { - Validate::notNull($entryXml, 'entryXml'); - Validate::isA($entryXml, '\SimpleXMLElement', 'entryXml'); - - $this->attributes = (array)$entryXml->attributes(); - $entryArray = (array)$entryXml; - - if (array_key_exists(Resources::AUTHOR, $entryArray)) { - $this->author = $this->processAuthorNode($entryArray); - } - - if (array_key_exists(Resources::CATEGORY, $entryArray)) { - $this->category = $this->processCategoryNode($entryArray); - } - - if (array_key_exists('content', $entryArray)) { - $content = new Content(); - $content->fromXml($entryArray['content']); - $this->content = $content; - } - - if (array_key_exists(Resources::CONTRIBUTOR, $entryArray)) { - $this->contributor = $this->processContributorNode($entryArray); - } - - if (array_key_exists('id', $entryArray)) { - $this->id = (string)$entryArray['id']; - } - - if (array_key_exists(Resources::LINK, $entryArray)) { - $this->link = $this->processLinkNode($entryArray); - } - - if (array_key_exists('published', $entryArray)) { - $this->published = $entryArray['published']; - } - - if (array_key_exists('rights', $entryArray)) { - $this->rights = $entryArray['rights']; - } - - if (array_key_exists('source', $entryArray)) { - $source = new Source(); - $source->parseXml($entryArray['source']->asXML()); - $this->source = $source; - } - - if (array_key_exists('title', $entryArray)) { - $this->title = $entryArray['title']; - } - - if (array_key_exists('updated', $entryArray)) { - $this->updated = \DateTime::createFromFormat( - \DateTime::ATOM, - (string)$entryArray['updated'] - ); - } - } - - /** - * Gets the author of the entry. - * - * @return Person - */ - public function getAuthor() - { - return $this->author; - } - - /** - * Sets the author of the entry. - * - * @param Person $author The author of the entry. - * - * @return none - */ - public function setAuthor($author) - { - $this->author = $author; - } - - /** - * Gets the category. - * - * @return array - */ - public function getCategory() - { - return $this->category; - } - - /** - * Sets the category. - * - * @param string $category The category of the entry. - * - * @return none - */ - public function setCategory($category) - { - $this->category = $category; - } - - /** - * Gets the content. - * - * @return Content. - */ - public function getContent() - { - return $this->content; - } - - /** - * Sets the content. - * - * @param Content $content Sets the content of the entry. - * - * @return none - */ - public function setContent($content) - { - $this->content = $content; - } - - /** - * Gets the contributor. - * - * @return string - */ - public function getContributor() - { - return $this->contributor; - } - - /** - * Sets the contributor. - * - * @param string $contributor The contributor of the entry. - * - * @return none - */ - public function setContributor($contributor) - { - $this->contributor = $contributor; - } - - /** - * Gets the ID of the entry. - * - * @return string - */ - public function getId() - { - return $this->id; - } - - /** - * Sets the ID of the entry. - * - * @param string $id The id of the entry. - * - * @return none - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * Gets the link of the entry. - * - * @return string - */ - public function getLink() - { - return $this->link; - } - - /** - * Sets the link of the entry. - * - * @param string $link The link of the entry. - * - * @return none - */ - public function setLink($link) - { - $this->link = $link; - } - - /** - * Gets published of the entry. - * - * @return boolean - */ - public function getPublished() - { - return $this->published; - } - - /** - * Sets published of the entry. - * - * @param boolean $published Is the entry published. - * - * @return none - */ - public function setPublished($published) - { - $this->published = $published; - } - - /** - * Gets the rights of the entry. - * - * @return string - */ - public function getRights() - { - return $this->rights; - } - - /** - * Sets the rights of the entry. - * - * @param string $rights The rights of the entry. - * - * @return none - */ - public function setRights($rights) - { - $this->rights = $rights; - } - - /** - * Gets the source of the entry. - * - * @return string - */ - public function getSource() - { - return $this->source; - } - - /** - * Sets the source of the entry. - * - * @param string $source The source of the entry. - * - * @return none - */ - public function setSource($source) - { - $this->source = $source; - } - - /** - * Gets the summary of the entry. - * - * @return string - */ - public function getSummary() - { - return $this->summary; - } - - /** - * Sets the summary of the entry. - * - * @param string $summary The summary of the entry. - * - * @return none - */ - public function setSummary($summary) - { - $this->summary = $summary; - } - - /** - * Gets the title of the entry. - * - * @return string - */ - public function getTitle() - { - return $this->title; - } - - /** - * Sets the title of the entry. - * - * @param string $title The title of the entry. - * - * @return none - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * Gets updated. - * - * @return \DateTime - */ - public function getUpdated() - { - return $this->updated; - } - - /** - * Sets updated - * - * @param \DateTime $updated updated. - * - * @return none - */ - public function setUpdated($updated) - { - $this->updated = $updated; - } - - /** - * Gets extension element. - * - * @return string - */ - public function getExtensionElement() - { - return $this->extensionElement; - } - - /** - * Sets extension element. - * - * @param string $extensionElement The extension element of the entry. - * - * @return none - */ - public function setExtensionElement($extensionElement) - { - $this->extensionElement = $extensionElement; - } - - /** - * Writes a inner XML string representing the entry. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->startElementNS( - 'atom', - Resources::ENTRY, - Resources::ATOM_NAMESPACE - ); - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - /** - * Writes a inner XML string representing the entry. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - if (!is_null($this->attributes)) { - if (is_array($this->attributes)) { - foreach ( - $this->attributes - as $attributeName => $attributeValue - ) { - $xmlWriter->writeAttribute($attributeName, $attributeValue); - } - } - } - - if (!is_null($this->author)) { - $this->writeArrayItem( - $xmlWriter, - $this->author, - Resources::AUTHOR - ); - } - - if (!is_null($this->category)) { - $this->writeArrayItem( - $xmlWriter, - $this->category, - Resources::CATEGORY - ); - } - - if (!is_null($this->content)) { - $this->content->writeXml($xmlWriter); - } - - if (!is_null($this->contributor)) { - $this->writeArrayItem( - $xmlWriter, - $this->contributor, - Resources::CONTRIBUTOR - ); - } - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'id', - Resources::ATOM_NAMESPACE, - $this->id - ); - - if (!is_null($this->link)) { - $this->writeArrayItem( - $xmlWriter, - $this->link, - Resources::LINK - ); - } - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'published', - Resources::ATOM_NAMESPACE, - $this->published - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'rights', - Resources::ATOM_NAMESPACE, - $this->rights - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'source', - Resources::ATOM_NAMESPACE, - $this->source - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'summary', - Resources::ATOM_NAMESPACE, - $this->summary - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'title', - Resources::ATOM_NAMESPACE, - $this->title - ); - - if (!is_null($this->updated)) { - $xmlWriter->writeElementNS( - 'atom', - 'updated', - Resources::ATOM_NAMESPACE, - $this->updated->format(\DateTime::ATOM) - ); - } - } -} - -// @codingStandardsIgnoreEnd \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Feed.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Feed.php deleted file mode 100644 index 5036f0e6..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Feed.php +++ /dev/null @@ -1,730 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; - -/** - * The feed class of ATOM library. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Feed extends AtomBase -{ - // @codingStandardsIgnoreStart - - /** - * The entry of the feed. - * - * @var array - */ - protected $entry; - - /** - * the author of the feed. - * - * @var array - */ - protected $author; - - /** - * The category of the feed. - * - * @var array - */ - protected $category; - - /** - * The contributor of the feed. - * - * @var array - */ - protected $contributor; - - /** - * The generator of the feed. - * - * @var Generator - */ - protected $generator; - - /** - * The icon of the feed. - * - * @var string - */ - protected $icon; - - /** - * The ID of the feed. - * - * @var string - */ - protected $id; - - /** - * The link of the feed. - * - * @var array - */ - protected $link; - - /** - * The logo of the feed. - * - * @var string - */ - protected $logo; - - /** - * The rights of the feed. - * - * @var string - */ - protected $rights; - - /** - * The subtitle of the feed. - * - * @var string - */ - protected $subtitle; - - /** - * The title of the feed. - * - * @var string - */ - protected $title; - - /** - * The update of the feed. - * - * @var \DateTime - */ - protected $updated; - - /** - * The extension element of the feed. - * - * @var string - */ - protected $extensionElement; - - /** - * Creates an ATOM FEED object with default parameters. - */ - public function __construct() - { - $this->attributes = array(); - } - - /** - * Creates a feed object with specified XML string. - * - * @param string $xmlString An XML string representing the feed object. - * - * @return none - */ - public function parseXml($xmlString) - { - $feedXml = simplexml_load_string($xmlString); - $attributes = $feedXml->attributes(); - $feedArray = (array)$feedXml; - if (!empty($attributes)) { - $this->attributes = (array)$attributes; - } - - if (array_key_exists('author', $feedArray)) { - $this->author = $this->processAuthorNode($feedArray); - } - - if (array_key_exists('entry', $feedArray)) { - $this->entry = $this->processEntryNode($feedArray); - } - - if (array_key_exists('category', $feedArray)) { - $this->category = $this->processCategoryNode($feedArray); - } - - if (array_key_exists('contributor', $feedArray)) { - $this->contributor = $this->processContributorNode($feedArray); - } - - if (array_key_exists('generator', $feedArray)) { - $generator = new Generator(); - $generatorValue = $feedArray['generator']; - if (is_string($generatorValue)) { - $generator->setText($generatorValue); - } else { - $generator->parseXml($generatorValue->asXML()); - } - - $this->generator = $generator; - } - - if (array_key_exists('icon', $feedArray)) { - $this->icon = (string)$feedArray['icon']; - } - - if (array_key_exists('id', $feedArray)) { - $this->id = (string)$feedArray['id']; - } - - if (array_key_exists('link', $feedArray)) { - $this->link = $this->processLinkNode($feedArray); - } - - if (array_key_exists('logo', $feedArray)) { - $this->logo = (string)$feedArray['logo']; - } - - if (array_key_exists('rights', $feedArray)) { - $this->rights = (string)$feedArray['rights']; - } - - if (array_key_exists('subtitle', $feedArray)) { - $this->subtitle = (string)$feedArray['subtitle']; - } - - if (array_key_exists('title', $feedArray)) { - $this->title = (string)$feedArray['title']; - } - - if (array_key_exists('updated', $feedArray)) { - $this->updated = \DateTime::createFromFormat( - \DateTime::ATOM, - (string)$feedArray['updated'] - ); - } - } - - /** - * Gets the attributes of the feed. - * - * @return array - */ - public function getAttributes() - { - return $this->attributes; - } - - /** - * Sets the attributes of the feed. - * - * @param array $attributes The attributes of the array. - * - * @return array - */ - public function setAttributes($attributes) - { - Validate::isArray($attributes, 'attributes'); - $this->attributes = $attributes; - } - - /** - * Adds an attribute to the feed object instance. - * - * @param string $attributeKey The key of the attribute. - * @param mixed $attributeValue The value of the attribute. - * - * @return none - */ - public function addAttribute($attributeKey, $attributeValue) - { - $this->attributes[$attributeKey] = $attributeValue; - } - - /** - * Gets the author of the feed. - * - * @return Person - */ - public function getAuthor() - { - return $this->author; - } - - /** - * Sets the author of the feed. - * - * @param Person $author The author of the feed. - * - * @return none - */ - public function setAuthor($author) - { - Validate::isArray($author, 'author'); - $person = new Person(); - foreach ($author as $authorInstance) { - Validate::isInstanceOf($authorInstance, $person, 'author'); - } - $this->author = $author; - } - - /** - * Gets the category of the feed. - * - * @return Category - */ - public function getCategory() - { - return $this->category; - } - - /** - * Sets the category of the feed. - * - * @param Category $category The category of the feed. - * - * @return none - */ - public function setCategory($category) - { - Validate::isArray($category, 'category'); - $categoryClassInstance = new Category(); - foreach ($category as $categoryInstance) { - Validate::isInstanceOf( - $categoryInstance, - $categoryClassInstance, - 'category' - ); - } - $this->category = $category; - } - - /** - * Gets contributor. - * - * @return array - */ - public function getContributor() - { - return $this->contributor; - } - - /** - * Sets contributor. - * - * @param string $contributor The contributor of the feed. - * - * @return none - */ - public function setContributor($contributor) - { - Validate::isArray($contributor, 'contributor'); - $person = new Person(); - foreach ($contributor as $contributorInstance) { - Validate::isInstanceOf($contributorInstance, $person, 'contributor'); - } - $this->contributor = $contributor; - } - - /** - * Gets generator. - * - * @return string - */ - public function getGenerator() - { - return $this->generator; - } - - /** - * Sets the generator. - * - * @param string $generator Sets the generator of the feed. - * - * @return none - */ - public function setGenerator($generator) - { - $this->generator = $generator; - } - - /** - * Gets the icon of the feed. - * - * @return string - */ - public function getIcon() - { - return $this->icon; - } - - /** - * Sets the icon of the feed. - * - * @param string $icon The icon of the feed. - * - * @return none - */ - public function setIcon($icon) - { - $this->icon = $icon; - } - - /** - * Gets the ID of the feed. - * - * @return string - */ - public function getId() - { - return $this->id; - } - - /** - * Sets the ID of the feed. - * - * @param string $id The ID of the feed. - * - * @return none - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * Gets the link of the feed. - * - * @return array - */ - public function getLink() - { - return $this->link; - } - - /** - * Sets the link of the feed. - * - * @param array $link The link of the feed. - * - * @return none - */ - public function setLink($link) - { - Validate::isArray($link, 'link'); - $this->link = $link; - } - - /** - * Gets the logo of the feed. - * - * @return string - */ - public function getLogo() - { - return $this->logo; - } - - /** - * Sets the logo of the feed. - * - * @param string $logo The logo of the feed. - * - * @return none - */ - public function setLogo($logo) - { - $this->logo = $logo; - } - - /** - * Gets the rights of the feed. - * - * @return string - */ - public function getRights() - { - return $this->rights; - } - - /** - * Sets the rights of the feed. - * - * @param string $rights The rights of the feed. - * - * @return none - */ - public function setRights($rights) - { - $this->rights = $rights; - } - - /** - * Gets the sub title. - * - * @return string - */ - public function getSubtitle() - { - return $this->subtitle; - } - - /** - * Sets the sub title of the feed. - * - * @param string $subtitle Sets the sub title of the feed. - * - * @return none - */ - public function setSubtitle($subtitle) - { - $this->subtitle = $subtitle; - } - - /** - * Gets the title of the feed. - * - * @return string. - */ - public function getTitle() - { - return $this->title; - } - - /** - * Sets the title of the feed. - * - * @param string $title The title of the feed. - * - * @return none - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * Gets the updated. - * - * @return \DateTime - */ - public function getUpdated() - { - return $this->updated; - } - - /** - * Sets the updated. - * - * @param \DateTime $updated updated - * - * @return none - */ - public function setUpdated($updated) - { - Validate::isInstanceOf($updated, new \DateTime(), 'updated'); - $this->updated = $updated; - } - - /** - * Gets the extension element. - * - * @return string - */ - public function getExtensionElement() - { - return $this->extensionElement; - } - - /** - * Sets the extension element. - * - * @param string $extensionElement The extension element. - * - * @return none - */ - public function setExtensionElement($extensionElement) - { - $this->extensionElement = $extensionElement; - } - - /** - * Gets the entry of the feed. - * - * @return Entry - */ - public function getEntry() - { - return $this->entry; - } - - /** - * Sets the entry of the feed. - * - * @param Entry $entry The entry of the feed. - * - * @return none - */ - public function setEntry($entry) - { - $this->entry = $entry; - } - - /** - * Writes an XML representing the feed object. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - - $xmlWriter->startElementNS('atom', 'feed', Resources::ATOM_NAMESPACE); - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - /** - * Writes an XML representing the feed object. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - - if (!is_null($this->attributes)) { - if (is_array($this->attributes)) { - foreach ( - $this->attributes - as $attributeName => $attributeValue - ) { - $xmlWriter->writeAttribute($attributeName, $attributeValue); - } - } - } - - if (!is_null($this->author)) { - $this->writeArrayItem( - $xmlWriter, - $this->author, - Resources::AUTHOR - ); - } - - if (!is_null($this->category)) { - $this->writeArrayItem( - $xmlWriter, - $this->category, - Resources::CATEGORY - ); - } - - if (!is_null($this->contributor)) { - $this->writeArrayItem( - $xmlWriter, - $this->contributor, - Resources::CONTRIBUTOR - ); - } - - if (!is_null($this->generator)) { - $this->generator->writeXml($xmlWriter); - } - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'icon', - Resources::ATOM_NAMESPACE, - $this->icon - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'logo', - Resources::ATOM_NAMESPACE, - $this->logo - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'id', - Resources::ATOM_NAMESPACE, - $this->id - ); - - if (!is_null($this->link)) { - $this->writeArrayItem( - $xmlWriter, - $this->link, - Resources::LINK - ); - } - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'rights', - Resources::ATOM_NAMESPACE, - $this->rights - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'subtitle', - Resources::ATOM_NAMESPACE, - $this->subtitle - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'title', - Resources::ATOM_NAMESPACE, - $this->title - ); - - if (!is_null($this->updated)) { - $xmlWriter->writeElementNS( - 'atom', - 'updated', - Resources::ATOM_NAMESPACE, - $this->updated->format(\DateTime::ATOM) - ); - } - - } -} - -// @codingStandardsIgnoreEnd \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Generator.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Generator.php deleted file mode 100644 index ffa63361..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Generator.php +++ /dev/null @@ -1,200 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; - -/** - * The generator class of ATOM library. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Generator extends AtomBase -{ - /** - * The of the generator. - * - * @var string - */ - protected $text; - - /** - * The Uri of the generator. - * - * @var string - */ - protected $uri; - - /** - * The version of the generator. - * - * @var string - */ - protected $version; - - /** - * Creates a generator instance with specified XML string. - * - * @param string $xmlString A string representing a generator - * instance. - * - * @return none - */ - public static function parseXml($xmlString) - { - $generatorXml = new \SimpleXMLElement($xmlString); - $generatorArray = (array)$generatorXml; - $attributes = $generatorXml->attributes(); - if (!empty($attributes['uri'])) { - $this->uri = (string)$attributes['uri']; - } - - if (!empty($attributes['version'])) { - $this->version = (string)$attributes['version']; - } - - $this->text = (string)$generatorXml; - } - - /** - * Creates an ATOM generator instance with specified name. - * - * @param string $text The text content of the generator. - * - * @return none - */ - public function __construct($text = null) - { - if (!empty($text)) { - $this->text = $text; - } - } - - /** - * Gets the text of the generator. - * - * @return string - */ - public function getText() - { - return $this->text; - } - - /** - * Sets the text of the generator. - * - * @param string $text The text of the generator. - * - * @return none - */ - public function setText($text) - { - $this->text = $text; - } - - /** - * Gets the URI of the generator. - * - * @return string - */ - public function getUri() - { - return $this->uri; - } - - /** - * Sets the URI of the generator. - * - * @param string $uri The URI of the generator. - * - * @return none - */ - public function setUri($uri) - { - $this->uri = $uri; - } - - - /** - * Gets the version of the generator. - * - * @return string - */ - public function getVersion() - { - return $this->version; - } - - /** - * Sets the version of the generator. - * - * @param string $version The version of the generator. - * - * @return none - */ - public function setVersion($version) - { - $this->version = $version; - } - - /** - * Writes an XML representing the generator. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - $xmlWriter->startElementNS( - 'atom', - Resources::CATEGORY, - Resources::ATOM_NAMESPACE - ); - - $this->writeOptionalAttribute( - $xmlWriter, - 'uri', - $this->uri - ); - - $this->writeOptionalAttribute( - $xmlWriter, - 'version', - $this->version - ); - - $xmlWriter->writeRaw($this->text); - $xmlWriter->endElement(); - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Person.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Person.php deleted file mode 100644 index cc108a49..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Person.php +++ /dev/null @@ -1,222 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; - -/** - * The person class of ATOM library. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Person extends AtomBase -{ - /** - * The name of the person. - * - * @var string - */ - protected $name; - - /** - * The Uri of the person. - * - * @var string - */ - protected $uri; - - /** - * The email of the person. - * - * @var string - */ - protected $email; - - /** - * Creates an ATOM person instance with specified name. - * - * @param string $name The name of the person. - */ - public function __construct($name = Resources::EMPTY_STRING) - { - $this->name = $name; - } - - /** - * Populates the properties with a specified XML string. - * - * @param string $xmlString An XML based string representing - * the Person instance. - * - * @return none - */ - public function parseXml($xmlString) - { - $personXml = simplexml_load_string($xmlString); - $attributes = $personXml->attributes(); - $personArray = (array)$personXml; - - if (array_key_exists('name', $personArray)) { - $this->name = (string)$personArray['name']; - } - - if (array_key_exists('uri', $personArray)) { - $this->uri = (string)$personArray['uri']; - } - - if (array_key_exists('email', $personArray)) { - $this->email = (string)$personArray['email']; - } - } - - /** - * Gets the name of the person. - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Sets the name of the person. - * - * @param string $name The name of the person. - * - * @return none - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * Gets the URI of the person. - * - * @return string - */ - public function getUri() - { - return $this->uri; - } - - /** - * Sets the URI of the person. - * - * @param string $uri The URI of the person. - * - * @return none - */ - public function setUri($uri) - { - $this->uri = $uri; - } - - - /** - * Gets the email of the person. - * - * @return string - */ - public function getEmail() - { - return $this->email; - } - - /** - * Sets the email of the person. - * - * @param string $email The email of the person. - * - * @return none - */ - public function setEmail($email) - { - $this->email = $email; - } - - /** - * Writes an XML representing the person. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->startElementNS( - 'atom', - 'person', - Resources::ATOM_NAMESPACE - ); - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - - /** - * Writes a inner XML representing the person. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->writeElementNS( - 'atom', - 'name', - Resources::ATOM_NAMESPACE, - $this->name - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'uri', - Resources::ATOM_NAMESPACE, - $this->uri - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'email', - Resources::ATOM_NAMESPACE, - $this->email - ); - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Source.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Source.php deleted file mode 100644 index 21030c94..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Atom/Source.php +++ /dev/null @@ -1,632 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Atom; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; - -/** - * The source class of ATOM library. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Atom - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/WindowsAzure/azure-sdk-for-php - */ - -class Source extends AtomBase -{ - // @codingStandardsIgnoreStart - - /** - * The author the source. - * - * @var array - */ - protected $author; - - /** - * The category of the source. - * - * @var array - */ - protected $category; - - /** - * The contributor of the source. - * - * @var array - */ - protected $contributor; - - /** - * The generator of the source. - * - * @var Generator - */ - protected $generator; - - /** - * The icon of the source. - * - * @var string - */ - protected $icon; - - /** - * The ID of the source. - * - * @var string - */ - protected $id; - - /** - * The link of the source. - * - * @var AtomLink - */ - protected $link; - - /** - * The logo of the source. - * - * @var string - */ - protected $logo; - - /** - * The rights of the source. - * - * @var string - */ - protected $rights; - - /** - * The subtitle of the source. - * - * @var string - */ - protected $subtitle; - - /** - * The title of the source. - * - * @var string - */ - protected $title; - - /** - * The update of the source. - * - * @var \DateTime - */ - protected $updated; - - /** - * The extension element of the source. - * - * @var string - */ - protected $extensionElement; - - /** - * Creates an ATOM FEED object with default parameters. - */ - public function __construct() - { - $this->attributes = array(); - $this->category = array(); - $this->contributor = array(); - $this->author = array(); - } - - /** - * Creates a source object with specified XML string. - * - * @param string $xmlString The XML string representing a source. - * - * @return none - */ - public function parseXml($xmlString) - { - $sourceXml = new \SimpleXMLElement($xmlString); - $attributes = $sourceXml->attributes(); - $sourceArray = (array)$sourceXml; - - if (array_key_exists(Resources::AUTHOR, $sourceArray)) { - $this->content = $this->processAuthorNode($sourceArray); - } - - if (array_key_exists(Resources::CATEGORY, $sourceArray)) { - $this->category = $this->processCategoryNode($sourceArray); - } - - if (array_key_exists(Resources::CONTRIBUTOR, $sourceArray)) { - $this->contributor = $this->processContributorNode($sourceArray); - } - - if (array_key_exists('generator', $sourceArray)) { - $generator = new Generator(); - $generator->setText((string)$sourceArray['generator']->asXML()); - $this->generator = $generator; - } - - if (array_key_exists('icon', $sourceArray)) { - $this->icon = (string)$sourceArray['icon']; - } - - if (array_key_exists('id', $sourceArray)) { - $this->id = (string)$sourceArray['id']; - } - - if (array_key_exists(Resources::LINK, $sourceArray)) { - $this->link = $this->processLinkNode($sourceArray); - } - - if (array_key_exists('logo', $sourceArray)) { - $this->logo = (string)$sourceArray['logo']; - } - - if (array_key_exists('rights', $sourceArray)) { - $this->rights = (string)$sourceArray['rights']; - } - - if (array_key_exists('subtitle', $sourceArray)) { - $this->subtitle = (string)$sourceArray['subtitle']; - } - - if (array_key_exists('title', $sourceArray)) { - $this->title = (string)$sourceArray['title']; - } - - if (array_key_exists('updated', $sourceArray)) { - $this->updated = \DateTime::createFromFormat( - \DateTime::ATOM, - (string)$sourceArray['updated'] - ); - } - } - - /** - * Gets the author of the source. - * - * @return array - */ - public function getAuthor() - { - return $this->author; - } - - /** - * Sets the author of the source. - * - * @param array $author An array of authors of the sources. - * - * @return none - */ - public function setAuthor($author) - { - $this->author = $author; - } - - /** - * Gets the category of the source. - * - * @return array - */ - public function getCategory() - { - return $this->category; - } - - /** - * Sets the category of the source. - * - * @param array $category The category of the source. - * - * @return none - */ - public function setCategory($category) - { - $this->category = $category; - } - - /** - * Gets contributor. - * - * @return array - */ - public function getContributor() - { - return $this->contributor; - } - - /** - * Sets contributor. - * - * @param array $contributor The contributors of the source. - * - * @return none - */ - public function setContributor($contributor) - { - $this->contributor = $contributor; - } - - /** - * Gets generator. - * - * @return Generator - */ - public function getGenerator() - { - return $this->generator; - } - - /** - * Sets the generator. - * - * @param Generator $generator Sets the generator of the source. - * - * @return none - */ - public function setGenerator($generator) - { - $this->generator = $generator; - } - - /** - * Gets the icon of the source. - * - * @return string - */ - public function getIcon() - { - return $this->icon; - } - - /** - * Sets the icon of the source. - * - * @param string $icon The icon of the source. - * - * @return string - */ - public function setIcon($icon) - { - $this->icon = $icon; - } - - /** - * Gets the ID of the source. - * - * @return string - */ - public function getId() - { - return $this->id; - } - - /** - * Sets the ID of the source. - * - * @param string $id The ID of the source. - * - * @return string - */ - public function setId($id) - { - $this->id = $id; - } - - /** - * Gets the link of the source. - * - * @return array - */ - public function getLink() - { - return $this->link; - } - - /** - * Sets the link of the source. - * - * @param array $link The link of the source. - * - * @return none - */ - public function setLink($link) - { - $this->link = $link; - } - - /** - * Gets the logo of the source. - * - * @return string - */ - public function getLogo() - { - return $this->logo; - } - - /** - * Sets the logo of the source. - * - * @param string $logo The logo of the source. - * - * @return none - */ - public function setLogo($logo) - { - $this->logo = $logo; - } - - /** - * Gets the rights of the source. - * - * @return string - */ - public function getRights() - { - return $this->rights; - } - - /** - * Sets the rights of the source. - * - * @param string $rights The rights of the source. - * - * @return none - */ - public function setRights($rights) - { - $this->rights = $rights; - } - - /** - * Gets the sub title. - * - * @return string - */ - public function getSubtitle() - { - return $this->subtitle; - } - - /** - * Sets the sub title of the source. - * - * @param string $subtitle Sets the sub title of the source. - * - * @return none - */ - public function setSubtitle($subtitle) - { - $this->subtitle = $subtitle; - } - - /** - * Gets the title of the source. - * - * @return string. - */ - public function getTitle() - { - return $this->title; - } - - /** - * Sets the title of the source. - * - * @param string $title The title of the source. - * - * @return none - */ - public function setTitle($title) - { - $this->title = $title; - } - - /** - * Gets the updated. - * - * @return \DateTime - */ - public function getUpdated() - { - return $this->updated; - } - - /** - * Sets the updated. - * - * @param \DateTime $updated updated - * - * @return none - */ - public function setUpdated($updated) - { - $this->updated = $updated; - } - - /** - * Gets the extension element. - * - * @return string - */ - public function getExtensionElement() - { - return $this->extensionElement; - } - - /** - * Sets the extension element. - * - * @param string $extensionElement The extension element. - * - * @return none - */ - public function setExtensionElement($extensionElement) - { - $this->extensionElement = $extensionElement; - } - - /** - * Writes an XML representing the source object. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - $xmlWriter->startElementNS( - 'atom', - 'source', - Resources::ATOM_NAMESPACE - ); - $this->writeInnerXml($xmlWriter); - $xmlWriter->endElement(); - } - /** - * Writes a inner XML representing the source object. - * - * @param \XMLWriter $xmlWriter The XML writer. - * - * @return none - */ - public function writeInnerXml($xmlWriter) - { - Validate::notNull($xmlWriter, 'xmlWriter'); - if (!is_null($this->attributes)) { - if (is_array($this->attributes)) { - foreach ($this->attributes as $attributeName => $attributeValue) { - $xmlWriter->writeAttribute($attributeName, $attributeValue); - } - } - } - - if (!is_null($this->author)) { - Validate::isArray($this->author, Resources::AUTHOR); - $this->writeArrayItem($xmlWriter, $this->author, Resources::AUTHOR); - } - - if (!is_null($this->category)) { - Validate::isArray($this->category, Resources::CATEGORY); - $this->writeArrayItem( - $xmlWriter, - $this->category, - Resources::CATEGORY - ); - } - - if (!is_null($this->contributor)) { - Validate::isArray($this->contributor, Resources::CONTRIBUTOR); - $this->writeArrayItem( - $xmlWriter, - $this->contributor, - Resources::CONTRIBUTOR - ); - } - - if (!is_null($this->generator)) { - $this->generator->writeXml($xmlWriter); - } - - if (!is_null($this->icon)) { - $xmlWriter->writeElementNS( - 'atom', - 'icon', - Resources::ATOM_NAMESPACE, - $this->icon - ); - } - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'logo', - Resources::ATOM_NAMESPACE, - $this->logo - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'id', - Resources::ATOM_NAMESPACE, - $this->id - ); - - if (!is_null($this->link)) { - Validate::isArray($this->link, Resources::LINK); - $this->writeArrayItem( - $xmlWriter, - $this->link, - Resources::LINK - ); - } - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'rights', - Resources::ATOM_NAMESPACE, - $this->rights - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'subtitle', - Resources::ATOM_NAMESPACE, - $this->subtitle - ); - - $this->writeOptionalElementNS( - $xmlWriter, - 'atom', - 'title', - Resources::ATOM_NAMESPACE, - $this->title - ); - - if (!is_null($this->updated)) { - $xmlWriter->writeElementNS( - 'atom', - 'updated', - Resources::ATOM_NAMESPACE, - $this->updated->format(\DateTime::ATOM) - ); - } - } -} - -// @codingStandardsIgnoreEnd \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/IAuthScheme.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/IAuthScheme.php deleted file mode 100644 index 9966dd72..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/IAuthScheme.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Authentication; - -/** - * Interface for azure authentication schemes. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Authentication - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -interface IAuthScheme -{ - /** - * Returns authorization header to be included in the request. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see Specifying the Authorization Header section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @abstract - * - * @return string - */ - public function getAuthorizationHeader($headers, $url, $queryParams, - $httpMethod - ); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/OAuthScheme.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/OAuthScheme.php deleted file mode 100644 index 2107bc52..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/OAuthScheme.php +++ /dev/null @@ -1,142 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link http://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Authentication; -use WindowsAzure\Common\Internal\Authentication\IAuthScheme; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\OAuthRestProxy; -use WindowsAzure\Common\Models\OAuthAccessToken; - -/** - * Provides shared key authentication scheme for OAuth. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Authentication - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link http://github.com/windowsazure/azure-sdk-for-php - */ -class OAuthScheme implements IAuthScheme -{ - /** - * @var string - */ - protected $accountName; - - /** - * @var string - */ - protected $accountKey; - - /** - * @var WindowsAzure\Common\Models\OAuthAccessToken - */ - protected $accessToken; - - /** - * @var WindowsAzure\Common\Internal\OAuthRestProxy - */ - protected $oauthService; - - /** - * @var string - */ - protected $grantType; - - /** - * @var string - */ - protected $scope; - - /** - * Constructor. - * - * @param string $accountName account name. - * @param string $accountKey account - * secondary key. - * - * @param string $grantType grant type - * for OAuth request. - * - * @param string $scope scope for - * OAurh request. - * - * @param WindowsAzure\Common\Internal\OAuthRestProxy $oauthService account - * primary or secondary key. - */ - public function __construct( - $accountName, - $accountKey, - $grantType, - $scope, - $oauthService - ) { - Validate::isString($accountName, 'accountName'); - Validate::isString($accountKey, 'accountKey'); - Validate::isString($grantType, 'grantType'); - Validate::isString($scope, 'scope'); - Validate::notNull($oauthService, 'oauthService'); - - $this->accountName = $accountName; - $this->accountKey = $accountKey; - $this->grantType = $grantType; - $this->scope = $scope; - $this->oauthService = $oauthService; - } - - /** - * Returns authorization header to be included in the request. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see Specifying the Authorization Header section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - public function getAuthorizationHeader($headers, $url, $queryParams, $httpMethod) - { - if (($this->accessToken == null) - || ($this->accessToken->getExpiresIn() < time()) - ) { - $this->accessToken = $this->oauthService->getAccessToken( - $this->grantType, - $this->accountName, - $this->accountKey, - $this->scope - ); - } - - return Resources::OAUTH_ACCESS_TOKEN_PREFIX . - $this->accessToken->getAccessToken(); - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/SharedKeyAuthScheme.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/SharedKeyAuthScheme.php deleted file mode 100644 index 23a42487..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/SharedKeyAuthScheme.php +++ /dev/null @@ -1,137 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Authentication; -use WindowsAzure\Common\Internal\Authentication\StorageAuthScheme; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Provides shared key authentication scheme for blob and queue. For more info - * check: http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Authentication - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class SharedKeyAuthScheme extends StorageAuthScheme -{ - protected $includedHeaders; - - /** - * Constructor. - * - * @param string $accountName storage account name. - * @param string $accountKey storage account primary or secondary key. - * - * @return - * WindowsAzure\Common\Internal\Authentication\SharedKeyAuthScheme - */ - public function __construct($accountName, $accountKey) - { - parent::__construct($accountName, $accountKey); - - $this->includedHeaders = array(); - $this->includedHeaders[] = Resources::CONTENT_ENCODING; - $this->includedHeaders[] = Resources::CONTENT_LANGUAGE; - $this->includedHeaders[] = Resources::CONTENT_LENGTH; - $this->includedHeaders[] = Resources::CONTENT_MD5; - $this->includedHeaders[] = Resources::CONTENT_TYPE; - $this->includedHeaders[] = Resources::DATE; - $this->includedHeaders[] = Resources::IF_MODIFIED_SINCE; - $this->includedHeaders[] = Resources::IF_MATCH; - $this->includedHeaders[] = Resources::IF_NONE_MATCH; - $this->includedHeaders[] = Resources::IF_UNMODIFIED_SINCE; - $this->includedHeaders[] = Resources::RANGE; - } - - /** - * Computes the authorization signature for blob and queue shared key. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see Blob and Queue Services (Shared Key Authentication) at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - protected function computeSignature($headers, $url, $queryParams, $httpMethod) - { - $canonicalizedHeaders = parent::computeCanonicalizedHeaders($headers); - - $canonicalizedResource = parent::computeCanonicalizedResource( - $url, $queryParams - ); - - - $stringToSign = array(); - $stringToSign[] = strtoupper($httpMethod); - - foreach ($this->includedHeaders as $header) { - $stringToSign[] = Utilities::tryGetValue($headers, $header); - } - - if (count($canonicalizedHeaders) > 0) { - $stringToSign[] = implode("\n", $canonicalizedHeaders); - } - - $stringToSign[] = $canonicalizedResource; - $stringToSign = implode("\n", $stringToSign); - - return $stringToSign; - } - - /** - * Returns authorization header to be included in the request. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see Specifying the Authorization Header section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - public function getAuthorizationHeader($headers, $url, $queryParams, $httpMethod) - { - $signature = $this->computeSignature( - $headers, $url, $queryParams, $httpMethod - ); - - return 'SharedKey ' . $this->accountName . ':' . base64_encode( - hash_hmac('sha256', $signature, base64_decode($this->accountKey), true) - ); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/StorageAuthScheme.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/StorageAuthScheme.php deleted file mode 100644 index f883d055..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/StorageAuthScheme.php +++ /dev/null @@ -1,215 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Authentication; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Authentication\IAuthScheme; - - -/** - * Base class for azure authentication schemes. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Authentication - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -abstract class StorageAuthScheme implements IAuthScheme -{ - protected $accountName; - protected $accountKey; - - /** - * Constructor. - * - * @param string $accountName storage account name. - * @param string $accountKey storage account primary or secondary key. - * - * @return - * WindowsAzure\Common\Internal\Authentication\StorageAuthScheme - */ - public function __construct($accountName, $accountKey) - { - $this->accountKey = $accountKey; - $this->accountName = $accountName; - } - - /** - * Computes canonicalized headers for headers array. - * - * @param array $headers request headers. - * - * @see Constructing the Canonicalized Headers String section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return array - */ - protected function computeCanonicalizedHeaders($headers) - { - $canonicalizedHeaders = array(); - $normalizedHeaders = array(); - $validPrefix = Resources::X_MS_HEADER_PREFIX; - - if (is_null($normalizedHeaders)) { - return $canonicalizedHeaders; - } - - foreach ($headers as $header => $value) { - // Convert header to lower case. - $header = strtolower($header); - - // Retrieve all headers for the resource that begin with x-ms-, - // including the x-ms-date header. - if (Utilities::startsWith($header, $validPrefix)) { - // Unfold the string by replacing any breaking white space - // (meaning what splits the headers, which is \r\n) with a single - // space. - $value = str_replace("\r\n", ' ', $value); - - // Trim any white space around the colon in the header. - $value = ltrim($value); - $header = rtrim($header); - - $normalizedHeaders[$header] = $value; - } - } - - // Sort the headers lexicographically by header name, in ascending order. - // Note that each header may appear only once in the string. - ksort($normalizedHeaders); - - foreach ($normalizedHeaders as $key => $value) { - $canonicalizedHeaders[] = $key . ':' . $value; - } - - return $canonicalizedHeaders; - } - - /** - * Computes canonicalized resources from URL using Table formar - * - * @param string $url request url. - * @param array $queryParams request query variables. - * - * @see Constructing the Canonicalized Resource String section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - protected function computeCanonicalizedResourceForTable($url, $queryParams) - { - $queryParams = array_change_key_case($queryParams); - - // 1. Beginning with an empty string (""), append a forward slash (/), - // followed by the name of the account that owns the accessed resource. - $canonicalizedResource = '/' . $this->accountName; - - // 2. Append the resource's encoded URI path, without any query parameters. - $canonicalizedResource .= parse_url($url, PHP_URL_PATH); - - // 3. The query string should include the question mark and the comp - // parameter (for example, ?comp=metadata). No other parameters should - // be included on the query string. - if (array_key_exists(Resources::QP_COMP, $queryParams)) { - $canonicalizedResource .= '?' . Resources::QP_COMP . '='; - $canonicalizedResource .= $queryParams[Resources::QP_COMP]; - } - - return $canonicalizedResource; - } - - /** - * Computes canonicalized resources from URL. - * - * @param string $url request url. - * @param array $queryParams request query variables. - * - * @see Constructing the Canonicalized Resource String section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - protected function computeCanonicalizedResource($url, $queryParams) - { - $queryParams = array_change_key_case($queryParams); - - // 1. Beginning with an empty string (""), append a forward slash (/), - // followed by the name of the account that owns the accessed resource. - $canonicalizedResource = '/' . $this->accountName; - - // 2. Append the resource's encoded URI path, without any query parameters. - $canonicalizedResource .= parse_url($url, PHP_URL_PATH); - - // 3. Retrieve all query parameters on the resource URI, including the comp - // parameter if it exists. - // 4. Sort the query parameters lexicographically by parameter name, in - // ascending order. - if (count($queryParams) > 0) { - ksort($queryParams); - } - - // 5. Convert all parameter names to lowercase. - // 6. URL-decode each query parameter name and value. - // 7. Append each query parameter name and value to the string in the - // following format: - // parameter-name:parameter-value - // 9. Group query parameters - // 10. Append a new line character (\n) after each name-value pair. - foreach ($queryParams as $key => $value) { - // Grouping query parameters - $values = explode(Resources::SEPARATOR, $value); - sort($values); - $separated = implode(Resources::SEPARATOR, $values); - - $canonicalizedResource .= "\n" . $key . ':' . $separated; - } - - return $canonicalizedResource; - } - - /** - * Computes the authorization signature. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see check all authentication schemes at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @abstract - * - * @return string - */ - abstract protected function computeSignature($headers, $url, $queryParams, - $httpMethod - ); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/TableSharedKeyLiteAuthScheme.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/TableSharedKeyLiteAuthScheme.php deleted file mode 100644 index 43221dac..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Authentication/TableSharedKeyLiteAuthScheme.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link http://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Authentication; -use WindowsAzure\Common\Internal\Authentication\StorageAuthScheme; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Provides shared key authentication scheme for blob and queue. For more info - * check: http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Authentication - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link http://github.com/windowsazure/azure-sdk-for-php - */ -class TableSharedKeyLiteAuthScheme extends StorageAuthScheme -{ - protected $includedHeaders; - - /** - * Constructor. - * - * @param string $accountName storage account name. - * @param string $accountKey storage account primary or secondary key. - * - * @return TableSharedKeyLiteAuthScheme - */ - public function __construct($accountName, $accountKey) - { - parent::__construct($accountName, $accountKey); - - $this->includedHeaders = array(); - $this->includedHeaders[] = Resources::DATE; - } - - /** - * Computes the authorization signature for blob and queue shared key. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see Blob and Queue Services (Shared Key Authentication) at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - protected function computeSignature($headers, $url, $queryParams, $httpMethod) - { - $canonicalizedResource = parent::computeCanonicalizedResourceForTable( - $url, $queryParams - ); - - $stringToSign = array(); - - foreach ($this->includedHeaders as $header) { - $stringToSign[] = Utilities::tryGetValue($headers, $header); - } - - $stringToSign[] = $canonicalizedResource; - $stringToSign = implode("\n", $stringToSign); - - return $stringToSign; - } - - /** - * Returns authorization header to be included in the request. - * - * @param array $headers request headers. - * @param string $url reuqest url. - * @param array $queryParams query variables. - * @param string $httpMethod request http method. - * - * @see Specifying the Authorization Header section at - * http://msdn.microsoft.com/en-us/library/windowsazure/dd179428.aspx - * - * @return string - */ - public function getAuthorizationHeader($headers, $url, $queryParams, $httpMethod) - { - $signature = $this->computeSignature( - $headers, $url, $queryParams, $httpMethod - ); - - return 'SharedKeyLite ' . $this->accountName . ':' . base64_encode( - hash_hmac('sha256', $signature, base64_decode($this->accountKey), true) - ); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringParser.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringParser.php deleted file mode 100644 index 6e0f744f..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringParser.php +++ /dev/null @@ -1,365 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * Helper methods for parsing connection strings. The rules for formatting connection - * strings are defined here: - * www.connectionstrings.com/articles/show/important-rules-for-connection-strings - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ConnectionStringParser -{ - /** - * @var string - */ - private $_argumentName; - - /** - * @var string - */ - private $_value; - - /** - * @var integer - */ - private $_pos; - - /** - * @var string - */ - private $_state; - - /** - * Parses the connection string into a collection of key/value pairs. - * - * @param string $argumentName Name of the argument to be used in error - * messages. - * @param string $connectionString Connection string. - * - * @return array - * - * @static - */ - public static function parseConnectionString($argumentName, $connectionString) - { - Validate::isString($argumentName, 'argumentName'); - Validate::notNullOrEmpty($argumentName, 'argumentName'); - Validate::isString($connectionString, 'connectionString'); - Validate::notNullOrEmpty($connectionString, 'connectionString'); - - $parser = new ConnectionStringParser($argumentName, $connectionString); - return $parser->_parse(); - } - - /** - * Initializes the object. - * - * @param string $argumentName Name of the argument to be used in error - * messages. - * @param string $value Connection string. - */ - private function __construct($argumentName, $value) - { - $this->_argumentName = $argumentName; - $this->_value = $value; - $this->_pos = 0; - $this->_state = ParserState::EXPECT_KEY; - } - - /** - * Parses the connection string. - * - * @return array - * - * @throws \RuntimeException - */ - private function _parse() - { - $key = null; - $value = null; - $connectionStringValues = array(); - - while (true) { - $this->_skipWhiteSpaces(); - - if ( $this->_pos == strlen($this->_value) - && $this->_state != ParserState::EXPECT_VALUE - ) { - // Not stopping after the end has been reached and a value is - // expected results in creating an empty value, which we expect. - break; - } - - switch ($this->_state) { - case ParserState::EXPECT_KEY: - $key = $this->_extractKey(); - $this->_state = ParserState::EXPECT_ASSIGNMENT; - break; - - case ParserState::EXPECT_ASSIGNMENT: - $this->_skipOperator('='); - $this->_state = ParserState::EXPECT_VALUE; - break; - - case ParserState::EXPECT_VALUE: - $value = $this->_extractValue(); - $this->_state = ParserState::EXPECT_SEPARATOR; - $connectionStringValues[$key] = $value; - $key = null; - $value = null; - break; - - default: - $this->_skipOperator(';'); - $this->_state = ParserState::EXPECT_KEY; - break; - } - } - - // Must end parsing in the valid state (expected key or separator) - if ($this->_state == ParserState::EXPECT_ASSIGNMENT) { - throw $this->_createException( - $this->_pos, - Resources::MISSING_CONNECTION_STRING_CHAR, - '=' - ); - } - - return $connectionStringValues; - } - - /** - *Generates an invalid connection string exception with the detailed error - * message. - * - * @param integer $position The position of the error. - * @param string $errorString The short error formatting string. - * - * @return \RuntimeException - */ - private function _createException($position, $errorString) - { - $arguments = func_get_args(); - - // Remove first argument (position) - unset($arguments[0]); - - // Create a short error message. - $errorString = sprintf($errorString, $arguments); - - // Add position. - $errorString = sprintf( - Resources::ERROR_PARSING_STRING, - $errorString, - $position - ); - - // Create final error message. - $errorString = sprintf( - Resources::INVALID_CONNECTION_STRING, - $this->_argumentName, - $errorString - ); - - return new \RuntimeException($errorString); - } - - /** - * Skips whitespaces at the current position. - * - * @return none - */ - private function _skipWhiteSpaces() - { - while ( $this->_pos < strlen($this->_value) - && ctype_space($this->_value[$this->_pos]) - ) { - $this->_pos++; - } - } - - /** - * Extracts the key's value. - * - * @return string - */ - private function _extractValue() - { - $value = Resources::EMPTY_STRING; - - if ($this->_pos < strlen($this->_value)) { - $ch = $this->_value[$this->_pos]; - - if ($ch == '"' || $ch == '\'') { - // Value is contained between double quotes or skipped single quotes. - $this->_pos++; - $value = $this->_extractString($ch); - } else { - $firstPos = $this->_pos; - $isFound = false; - - while ($this->_pos < strlen($this->_value) && !$isFound) { - $ch = $this->_value[$this->_pos]; - - if ($ch == ';') { - $isFound = true; - } else { - $this->_pos++; - } - } - - $value = rtrim( - substr($this->_value, $firstPos, $this->_pos - $firstPos) - ); - } - } - - return $value; - } - - /** - * Extracts key at the current position. - * - * @return string - */ - private function _extractKey() - { - $key = null; - $firstPos = $this->_pos; - $ch = $this->_value[$this->_pos]; - - if ($ch == '"' || $ch == '\'') { - $this->_pos++; - $key = $this->_extractString($ch); - } else if ($ch == ';' || $ch == '=') { - // Key name was expected. - throw $this->_createException( - $firstPos, - Resources::ERROR_CONNECTION_STRING_MISSING_KEY - ); - } else { - while ($this->_pos < strlen($this->_value)) { - $ch = $this->_value[$this->_pos]; - - // At this point we've read the key, break. - if ($ch == '=') { - break; - } - - $this->_pos++; - } - $key = rtrim(substr($this->_value, $firstPos, $this->_pos - $firstPos)); - } - - if (strlen($key) == 0) { - // Empty key name. - throw $this->_createException( - $firstPos, - Resources::ERROR_CONNECTION_STRING_EMPTY_KEY - ); - } - - return $key; - } - - /** - * Extracts the string until the given quotation mark. - * - * @param string $quote The quotation mark terminating the string. - * - * @return string - */ - private function _extractString($quote) - { - $firstPos = $this->_pos; - - while ( $this->_pos < strlen($this->_value) - && $this->_value[$this->_pos] != $quote - ) { - $this->_pos++; - } - - if ($this->_pos == strlen($this->_value)) { - // Runaway string. - throw $this->_createException( - $this->_pos, - Resources::ERROR_CONNECTION_STRING_MISSING_CHARACTER, - $quote - ); - } - - return substr($this->_value, $firstPos, $this->_pos++ - $firstPos); - } - - /** - * Skips specified operator. - * - * @param string $operatorChar The operator character. - * - * @return none - * - * @throws \RuntimeException - */ - private function _skipOperator($operatorChar) - { - if ($this->_value[$this->_pos] != $operatorChar) { - // Character was expected. - throw $this->_createException( - $this->_pos, - Resources::MISSING_CONNECTION_STRING_CHAR, - $operatorChar - ); - } - - $this->_pos++; - } -} - -/** - * State of the connection string parser. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ParserState -{ - const EXPECT_KEY = 'ExpectKey'; - const EXPECT_ASSIGNMENT = 'ExpectAssignment'; - const EXPECT_VALUE = 'ExpectValue'; - const EXPECT_SEPARATOR = 'ExpectSeparator'; -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringSource.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringSource.php deleted file mode 100644 index 43d377e4..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ConnectionStringSource.php +++ /dev/null @@ -1,98 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * Holder for default connection string sources used in CloudConfigurationManager. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ConnectionStringSource -{ - /** - * The list of all sources which comes as default. - * - * @var type - */ - private static $_defaultSources; - - /** - * @var boolean - */ - private static $_isInitialized; - - /** - * Environment variable source name. - */ - const ENVIRONMENT_SOURCE = 'environment_source'; - - /** - * Initializes the default sources. - * - * @return none - */ - private static function _init() - { - if (!self::$_isInitialized) { - self::$_defaultSources = array( - self::ENVIRONMENT_SOURCE => array(__CLASS__, 'environmentSource') - ); - self::$_isInitialized = true; - } - } - - /** - * Gets a connection string value from the system environment. - * - * @param string $key The connection string name. - * - * @return string - */ - public static function environmentSource($key) - { - Validate::isString($key, 'key'); - - return getenv($key); - } - - /** - * Gets list of default sources. - * - * @return array - */ - public static function getDefaultSources() - { - self::_init(); - return self::$_defaultSources; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/FilterableService.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/FilterableService.php deleted file mode 100644 index 8c024a00..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/FilterableService.php +++ /dev/null @@ -1,52 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * Interface for service with filers. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -interface FilterableService -{ - /** - * Adds new filter to proxy object and returns new BlobRestProxy with - * that filter. - * - * @param WindowsAzure\Common\Internal\IServiceFilter $filter Filter to add for - * the pipeline. - * - * @return mix. - */ - public function withFilter($filter); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/AuthenticationFilter.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/AuthenticationFilter.php deleted file mode 100644 index db9cf9e8..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/AuthenticationFilter.php +++ /dev/null @@ -1,93 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\IServiceFilter; -use WindowsAzure\Common\Internal\Authentication\SharedKeyAuthScheme; -use WindowsAzure\Common\Internal\Authentication\TableSharedKeyLiteAuthScheme; -use WindowsAzure\Common\Internal\InvalidArgumentTypeException; - -/** - * Adds authentication header to the http request object. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class AuthenticationFilter implements IServiceFilter -{ - /** - * @var WindowsAzure\Common\Internal\Authentication\StorageAuthScheme - */ - private $_authenticationScheme; - - /** - * Creates AuthenticationFilter with the passed scheme. - * - * @param StorageAuthScheme $authenticationScheme The authentication scheme. - */ - public function __construct($authenticationScheme) - { - $this->_authenticationScheme = $authenticationScheme; - } - - /** - * Adds authentication header to the request headers. - * - * @param HttpClient $request HTTP channel object. - * - * @return \HTTP_Request2 - */ - public function handleRequest($request) - { - $signedKey = $this->_authenticationScheme->getAuthorizationHeader( - $request->getHeaders(), $request->getUrl(), - $request->getUrl()->getQueryVariables(), $request->getMethod() - ); - $request->setHeader(Resources::AUTHENTICATION, $signedKey); - - return $request; - } - - /** - * Does nothing with the response. - * - * @param HttpClient $request HTTP channel object. - * @param \HTTP_Request2_Response $response HTTP response object. - * - * @return \HTTP_Request2_Response - */ - public function handleResponse($request, $response) - { - // Do nothing with the response. - return $response; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/DateFilter.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/DateFilter.php deleted file mode 100644 index 9fce5137..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/DateFilter.php +++ /dev/null @@ -1,72 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\IServiceFilter; - -/** - * Adds date header to the http request. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class DateFilter implements IServiceFilter -{ - /** - * Adds date (in GMT format) header to the request headers. - * - * @param HttpClient $request HTTP channel object. - * - * @return \HTTP_Request2 - */ - public function handleRequest($request) - { - $date = gmdate(Resources::AZURE_DATE_FORMAT, time()); - $request->setHeader(Resources::DATE, $date); - - return $request; - } - - /** - * Does nothing with the response. - * - * @param HttpClient $request HTTP channel object. - * @param \HTTP_Request2_Response $response HTTP response object. - * - * @return \HTTP_Request2_Response - */ - public function handleResponse($request, $response) - { - // Do nothing with the response. - return $response; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/ExponentialRetryPolicy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/ExponentialRetryPolicy.php deleted file mode 100644 index 3b75a529..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/ExponentialRetryPolicy.php +++ /dev/null @@ -1,134 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; - -/** - * The exponential retry policy. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ExponentialRetryPolicy extends RetryPolicy -{ - /** - * @var integer - */ - private $_deltaBackoffIntervalInMs; - - /** - * @var integer - */ - private $_maximumAttempts; - - /** - * @var integer - */ - private $_resolvedMaxBackoff; - - /** - * @var integer - */ - private $_resolvedMinBackoff; - - /** - * @var array - */ - private $_retryableStatusCodes; - - /** - * Initializes new object from ExponentialRetryPolicy. - * - * @param array $retryableStatusCodes The retryable status codes. - * @param integer $deltaBackoff The backoff time delta. - * @param integer $maximumAttempts The number of max attempts. - */ - public function __construct($retryableStatusCodes, - $deltaBackoff = parent::DEFAULT_CLIENT_BACKOFF, - $maximumAttempts = parent::DEFAULT_CLIENT_RETRY_COUNT - ) { - $this->_deltaBackoffIntervalInMs = $deltaBackoff; - $this->_maximumAttempts = $maximumAttempts; - $this->_resolvedMaxBackoff = parent::DEFAULT_MAX_BACKOFF; - $this->_resolvedMinBackoff = parent::DEFAULT_MIN_BACKOFF; - $this->_retryableStatusCodes = $retryableStatusCodes; - sort($retryableStatusCodes); - } - - /** - * Indicates if there should be a retry or not. - * - * @param integer $retryCount The retry count. - * @param \HTTP_Request2_Response $response The HTTP response object. - * - * @return boolean - */ - public function shouldRetry($retryCount, $response) - { - if ( $retryCount >= $this->_maximumAttempts - || array_search($response->getStatus(), $this->_retryableStatusCodes) - || is_null($response) - ) { - return false; - } else { - return true; - } - } - - /** - * Calculates the backoff for the retry policy. - * - * @param integer $retryCount The retry count. - * @param \HTTP_Request2_Response $response The HTTP response object. - * - * @return integer - */ - public function calculateBackoff($retryCount, $response) - { - // Calculate backoff Interval between 80% and 120% of the desired - // backoff, multiply by 2^n -1 for - // exponential - $incrementDelta = (int) (pow(2, $retryCount) - 1); - $boundedRandDelta = (int) ($this->_deltaBackoffIntervalInMs * 0.8) - + mt_rand( - 0, - (int) ($this->_deltaBackoffIntervalInMs * 1.2) - - (int) ($this->_deltaBackoffIntervalInMs * 0.8) - ); - $incrementDelta *= $boundedRandDelta; - - // Enforce max / min backoffs - return min( - $this->_resolvedMinBackoff + $incrementDelta, - $this->_resolvedMaxBackoff - ); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/HeadersFilter.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/HeadersFilter.php deleted file mode 100644 index c3fa0f9b..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/HeadersFilter.php +++ /dev/null @@ -1,93 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\IServiceFilter; - -/** - * Adds all passed headers to the HTTP request headers. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class HeadersFilter implements IServiceFilter -{ - /** - * @var array - */ - private $_headers; - - /** - * Constructor - * - * @param array $headers static headers to be added. - * - * @return HeadersFilter - */ - public function __construct($headers) - { - $this->_headers = $headers; - } - - /** - * Adds static header(s) to the HTTP request headers - * - * @param HttpClient $request HTTP channel object. - * - * @return \HTTP_Request2 - */ - public function handleRequest($request) - { - foreach ($this->_headers as $key => $value) { - $headers = $request->getHeaders(); - if (!array_key_exists($key, $headers)) { - $request->setHeader($key, $value); - } - } - - return $request; - } - - /** - * Does nothing with the response. - * - * @param HttpClient $request HTTP channel object. - * @param \HTTP_Request2_Response $response HTTP response object. - * - * @return \HTTP_Request2_Response - */ - public function handleResponse($request, $response) - { - // Do nothing with the response. - return $response; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicy.php deleted file mode 100644 index 15849990..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicy.php +++ /dev/null @@ -1,66 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; - -/** - * The retry policy abstract class. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -abstract class RetryPolicy -{ - const DEFAULT_CLIENT_BACKOFF = 30000; - const DEFAULT_CLIENT_RETRY_COUNT = 3; - const DEFAULT_MAX_BACKOFF = 90000; - const DEFAULT_MIN_BACKOFF = 300; - - /** - * Indicates if there should be a retry or not. - * - * @param integer $retryCount The retry count. - * @param \HTTP_Request2_Response $response The HTTP response object. - * - * @return boolean - */ - public abstract function shouldRetry($retryCount, $response); - - /** - * Calculates the backoff for the retry policy. - * - * @param integer $retryCount The retry count. - * @param \HTTP_Request2_Response $response The HTTP response object. - * - * @return integer - */ - public abstract function calculateBackoff($retryCount, $response); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicyFilter.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicyFilter.php deleted file mode 100644 index b98b5a82..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/RetryPolicyFilter.php +++ /dev/null @@ -1,99 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; -use WindowsAzure\Common\Internal\IServiceFilter; - -/** - * Short description - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class RetryPolicyFilter implements IServiceFilter -{ - /** - * @var RetryPolicy - */ - private $_retryPolicy; - - /** - * Initializes new object from RetryPolicyFilter. - * - * @param RetryPolicy $retryPolicy The retry policy object. - */ - public function __construct($retryPolicy) - { - $this->_retryPolicy = $retryPolicy; - } - - /** - * Handles the request before sending. - * - * @param \HTTP_Request2 $request The HTTP request. - * - * @return \HTTP_Request2 - */ - public function handleRequest($request) - { - return $request; - } - - /** - * Handles the response after sending. - * - * @param \HTTP_Request2 $request The HTTP request. - * @param \HTTP_Request2_Response $response The HTTP response. - * - * @return \HTTP_Request2_Response - */ - public function handleResponse($request, $response) - { - for ($retryCount = 0;; $retryCount++) { - $shouldRetry = $this->_retryPolicy->shouldRetry( - $retryCount, - $response - ); - - if (!$shouldRetry) { - return $response; - } - - // Backoff for some time according to retry policy - $backoffTime = $this->_retryPolicy->calculateBackoff( - $retryCount, - $response - ); - sleep($backoffTime * 0.001); - $response = $request->send(array()); - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/WrapFilter.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/WrapFilter.php deleted file mode 100644 index 82b19699..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Filters/WrapFilter.php +++ /dev/null @@ -1,113 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Filters; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\IServiceFilter; -use WindowsAzure\Common\Internal\Authentication\SharedKeyAuthScheme; -use WindowsAzure\Common\Internal\Authentication\TableSharedKeyLiteAuthScheme; -use WindowsAzure\Common\Internal\InvalidArgumentTypeException; -use WindowsAzure\ServiceBus\Internal\WrapTokenManager; - - -/** - * Adds WRAP authentication header to the http request object. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Filters - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class WrapFilter implements IServiceFilter -{ - /** - * @var WrapTokenManager - */ - private $_wrapTokenManager; - - /** - * Creates a WrapFilter with specified WRAP parameters. - * - * @param string $wrapUri The URI of the WRAP service. - * @param string $wrapUsername The user name of the WRAP account. - * @param string $wrapPassword The password of the WRAP account. - * @param IWrap $wrapRestProxy The WRAP service REST proxy. - */ - public function __construct( - $wrapUri, - $wrapUsername, - $wrapPassword, - $wrapRestProxy - ) { - $this->_wrapTokenManager = new WrapTokenManager( - $wrapUri, - $wrapUsername, - $wrapPassword, - $wrapRestProxy - ); - } - - /** - * Adds WRAP authentication header to the request headers. - * - * @param HttpClient $request HTTP channel object. - * - * @return \HTTP_Request2 - */ - public function handleRequest($request) - { - Validate::notNull($request, 'request'); - $wrapAccessToken = $this->_wrapTokenManager->getAccessToken( - $request->getUrl() - ); - - $authorization = sprintf( - Resources::WRAP_AUTHORIZATION, - $wrapAccessToken - ); - - $request->setHeader(Resources::AUTHENTICATION, $authorization); - - return $request; - } - - /** - * Returns the original response. - * - * @param HttpClient $request A HTTP channel object. - * @param \HTTP_Request2_Response $response A HTTP response object. - * - * @return \HTTP_Request2_Response - */ - public function handleResponse($request, $response) - { - return $response; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchRequest.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchRequest.php deleted file mode 100644 index f1e9f511..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchRequest.php +++ /dev/null @@ -1,162 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; -require_once 'PEAR.php'; -require_once 'Mail/mimePart.php'; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Batch request marshaler - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BatchRequest -{ - /** - * Http call context list - * - * @var array - */ - private $_contexts; - - /** - * Headers - * - * @var array - */ - private $_headers; - - /** - * Request body - * - * @var string - */ - private $_body; - - /** - * Constructor - */ - public function __construct() - { - $this->_contexts = array(); - } - - /** - * Append new context to batch request - * - * @param WindowsAzure\Common\Internal\Http\HttpCallContext $context Http call - * context to add to batch request - * - * @return none - */ - public function appendContext($context) - { - $this->_contexts[] = $context; - } - - /** - * Encode contexts - * - * @return none - */ - public function encode() - { - $mimeType = Resources::MULTIPART_MIXED_TYPE; - $batchGuid = Utilities::getGuid(); - $batchId = sprintf('batch_%s', $batchGuid); - $contentType1 = array('content_type' => "$mimeType"); - $changeSetGuid = Utilities::getGuid(); - $changeSetId = sprintf('changeset_%s', $changeSetGuid); - $contentType2 = array('content_type' => "$mimeType; boundary=$changeSetId"); - $options = array( - 'encoding' => 'binary', - 'content_type' => Resources::HTTP_TYPE - ); - - // Create changeset MIME part - $changeSet = new \Mail_mimePart(); - - $i = 1; - foreach ($this->_contexts as $context) { - $context->addHeader(Resources::CONTENT_ID, $i); - $changeSet->addSubpart((string)$context, $options); - - $i++; - } - - // Encode the changeset MIME part - $changeSetEncoded = $changeSet->encode($changeSetId); - - // Create the batch MIME part - $batch = new \Mail_mimePart(Resources::EMPTY_STRING, $contentType1); - - // Add changeset encoded to batch MIME part - $batch->addSubpart($changeSetEncoded['body'], $contentType2); - - // Encode batch MIME part - $batchEncoded = $batch->encode($batchId); - - $this->_headers = $batchEncoded['headers']; - $this->_body = $batchEncoded['body']; - } - - /** - * Get "Request body" - * - * @return string - */ - public function getBody() - { - return $this->_body; - } - - /** - * Get "Headers" - * - * @return array - */ - public function getHeaders() - { - return $this->_headers; - } - - /** - * Get request contexts - * - * @return array - */ - public function getContexts() - { - return $this->_contexts; - } -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchResponse.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchResponse.php deleted file mode 100644 index c3b291e3..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/BatchResponse.php +++ /dev/null @@ -1,125 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; -require_once 'PEAR.php'; -require_once 'Mail/mimeDecode.php'; -require_once 'HTTP/Request2/Response.php'; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\ServiceException; - -/** - * Batch response parser - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class BatchResponse -{ - /** - * Http responses list - * - * @var array - */ - private $_contexts; - - /** - * Constructor - * - * @param string $content Http response - * as string - * - * @param WindowsAzure\Common\Internal\Http\BatchRequest $request Source batch - * request object - */ - public function __construct($content, $request = null) - { - $params['include_bodies'] = true; - $params['input'] = $content; - $mimeDecoder = new \Mail_mimeDecode($content); - $structure = $mimeDecoder->decode($params); - $parts = $structure->parts; - $this->_contexts = array(); - $requestContexts = null; - - if ($request != null) { - Validate::isA( - $request, - 'WindowsAzure\Common\Internal\Http\BatchRequest', - 'request' - ); - $requestContexts = $request->getContexts(); - } - - $i = 0; - foreach ($parts as $part) { - if (!empty($part->body)) { - $headerEndPos = strpos($part->body, "\r\n\r\n"); - - $header = substr($part->body, 0, $headerEndPos); - $body = substr($part->body, $headerEndPos + 4); - $headerStrings = explode("\r\n", $header); - - $response = new \HTTP_Request2_Response(array_shift($headerStrings)); - foreach ($headerStrings as $headerString) { - $response->parseHeaderLine($headerString); - } - $response->appendBody($body); - - $this->_contexts[] = $response; - - if (is_array($requestContexts)) { - $expectedCodes = $requestContexts[$i]->getStatusCodes(); - $statusCode = $response->getStatus(); - - if (!in_array($statusCode, $expectedCodes)) { - $reason = $response->getReasonPhrase(); - - throw new ServiceException($statusCode, $reason, $body); - } - } - - $i++; - } - } - } - - /** - * Get parsed contexts as array - * - * @return array - */ - public function getContexts() - { - return $this->_contexts; - } - -} - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpCallContext.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpCallContext.php deleted file mode 100644 index ed19d083..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpCallContext.php +++ /dev/null @@ -1,446 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Http\Url; - -/** - * Holds basic elements for making HTTP call. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Http - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class HttpCallContext -{ - /** - * The HTTP method used to make this call. - * - * @var string - */ - private $_method; - - /** - * HTTP request headers. - * - * @var array - */ - private $_headers; - - /** - * The URI query parameters. - * - * @var array - */ - private $_queryParams; - - /** - * The HTTP POST parameters. - * - * @var array. - */ - private $_postParameters; - - /** - * @var string - */ - private $_uri; - - /** - * The URI path. - * - * @var string - */ - private $_path; - - /** - * The expected status codes. - * - * @var array - */ - private $_statusCodes; - - /** - * The HTTP request body. - * - * @var string - */ - private $_body; - - /** - * Default constructor. - */ - public function __construct() - { - $this->_method = null; - $this->_body = null; - $this->_path = null; - $this->_uri = null; - $this->_queryParams = array(); - $this->_postParameters = array(); - $this->_statusCodes = array(); - $this->_headers = array(); - } - - /** - * Gets method. - * - * @return string - */ - public function getMethod() - { - return $this->_method; - } - - /** - * Sets method. - * - * @param string $method The method value. - * - * @return none - */ - public function setMethod($method) - { - Validate::isString($method, 'method'); - - $this->_method = $method; - } - - /** - * Gets headers. - * - * @return array - */ - public function getHeaders() - { - return $this->_headers; - } - - /** - * Sets headers. - * - * Ignores the header if its value is empty. - * - * @param array $headers The headers value. - * - * @return none - */ - public function setHeaders($headers) - { - $this->_headers = array(); - foreach ($headers as $key => $value) { - $this->addHeader($key, $value); - } - } - - /** - * Gets queryParams. - * - * @return array - */ - public function getQueryParameters() - { - return $this->_queryParams; - } - - /** - * Sets queryParams. - * - * Ignores the query variable if its value is empty. - * - * @param array $queryParams The queryParams value. - * - * @return none - */ - public function setQueryParameters($queryParams) - { - $this->_queryParams = array(); - foreach ($queryParams as $key => $value) { - $this->addQueryParameter($key, $value); - } - } - - /** - * Gets uri. - * - * @return string - */ - public function getUri() - { - return $this->_uri; - } - - /** - * Sets uri. - * - * @param string $uri The uri value. - * - * @return none - */ - public function setUri($uri) - { - Validate::isString($uri, 'uri'); - - $this->_uri = $uri; - } - - /** - * Gets path. - * - * @return string - */ - public function getPath() - { - return $this->_path; - } - - /** - * Sets path. - * - * @param string $path The path value. - * - * @return none - */ - public function setPath($path) - { - Validate::isString($path, 'path'); - - $this->_path = $path; - } - - /** - * Gets statusCodes. - * - * @return array - */ - public function getStatusCodes() - { - return $this->_statusCodes; - } - - /** - * Sets statusCodes. - * - * @param array $statusCodes The statusCodes value. - * - * @return none - */ - public function setStatusCodes($statusCodes) - { - $this->_statusCodes = array(); - foreach ($statusCodes as $value) { - $this->addStatusCode($value); - } - } - - /** - * Gets body. - * - * @return string - */ - public function getBody() - { - return $this->_body; - } - - /** - * Sets body. - * - * @param string $body The body value. - * - * @return none - */ - public function setBody($body) - { - Validate::isString($body, 'body'); - - $this->_body = $body; - } - - /** - * Adds or sets header pair. - * - * @param string $name The HTTP header name. - * @param string $value The HTTP header value. - * - * @return none - */ - public function addHeader($name, $value) - { - Validate::isString($name, 'name'); - Validate::isString($value, 'value'); - - $this->_headers[$name] = $value; - } - - /** - * Adds or sets header pair. - * - * Ignores header if it's value satisfies empty(). - * - * @param string $name The HTTP header name. - * @param string $value The HTTP header value. - * - * @return none - */ - public function addOptionalHeader($name, $value) - { - Validate::isString($name, 'name'); - Validate::isString($value, 'value'); - - if (!empty($value)) { - $this->_headers[$name] = $value; - } - } - - /** - * Removes header from the HTTP request headers. - * - * @param string $name The HTTP header name. - * - * @return none - */ - public function removeHeader($name) - { - Validate::isString($name, 'name'); - Validate::notNullOrEmpty($name, 'name'); - - unset($this->_headers[$name]); - } - - /** - * Adds or sets query parameter pair. - * - * @param string $name The URI query parameter name. - * @param string $value The URI query parameter value. - * - * @return none - */ - public function addQueryParameter($name, $value) - { - Validate::isString($name, 'name'); - Validate::isString($value, 'value'); - - $this->_queryParams[$name] = $value; - } - - /** - * Gets HTTP POST parameters. - * - * @return array - */ - public function getPostParameters() - { - return $this->_postParameters; - } - - /** - * Sets HTTP POST parameters. - * - * @param array $postParameters The HTTP POST parameters. - * - * @return none - */ - public function setPostParameters($postParameters) - { - Validate::isArray($postParameters, 'postParameters'); - $this->_postParameters = $postParameters; - } - - /** - * Adds or sets query parameter pair. - * - * Ignores query parameter if it's value satisfies empty(). - * - * @param string $name The URI query parameter name. - * @param string $value The URI query parameter value. - * - * @return none - */ - public function addOptionalQueryParameter($name, $value) - { - Validate::isString($name, 'name'); - Validate::isString($value, 'value'); - - if (!empty($value)) { - $this->_queryParams[$name] = $value; - } - } - - /** - * Adds status code to the expected status codes. - * - * @param integer $statusCode The expected status code. - * - * @return none - */ - public function addStatusCode($statusCode) - { - Validate::isInteger($statusCode, 'statusCode'); - - $this->_statusCodes[] = $statusCode; - } - - /** - * Gets header value. - * - * @param string $name The header name. - * - * @return mix - */ - public function getHeader($name) - { - return Utilities::tryGetValue($this->_headers, $name); - } - - /** - * Converts the context object to string. - * - * @return string - */ - public function __toString() - { - $headers = Resources::EMPTY_STRING; - $uri = new Url($this->_uri); - $uri = $uri->getUrl(); - - foreach ($this->_headers as $key => $value) { - $headers .= "$key: $value\n"; - } - - $str = "$this->_method $uri$this->_path HTTP/1.1\n$headers\n"; - $str .= "$this->_body"; - - return $str; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpClient.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpClient.php deleted file mode 100644 index eb2c87a9..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/HttpClient.php +++ /dev/null @@ -1,388 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; -use WindowsAzure\Common\Internal\Http\IHttpClient; -use WindowsAzure\Common\Internal\IServiceFilter; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\ServiceException; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Http\IUrl; - -require_once 'HTTP/Request2.php'; - -/** - * HTTP client which sends and receives HTTP requests and responses. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Http - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class HttpClient implements IHttpClient -{ - /** - * @var \HTTP_Request2 - */ - private $_request; - - /** - * @var WindowsAzure\Common\Internal\Http\IUrl - */ - private $_requestUrl; - - /** - * Holds the latest response object - * - * @var \HTTP_Request2_Response - */ - private $_response; - - /** - * Holds expected status code after sending the request. - * - * @var array - */ - private $_expectedStatusCodes; - - /** - * Initializes new HttpClient object. - * - * @param string $certificatePath The certificate path. - * @param string $certificateAuthorityPath The path of the certificate authority. - * - * @return WindowsAzure\Common\Internal\Http\HttpClient - */ - function __construct( - $certificatePath = Resources::EMPTY_STRING, - $certificateAuthorityPath = Resources::EMPTY_STRING - ) { - - $config = array( - Resources::USE_BRACKETS => true, - Resources::SSL_VERIFY_PEER => false, - Resources::SSL_VERIFY_HOST => false - ); - - if (!empty($certificatePath)) { - $config[Resources::SSL_LOCAL_CERT] = $certificatePath; - $config[Resources::SSL_VERIFY_HOST] = true; - } - - if (!empty($certificateAuthorityPath)) { - $config[Resources::SSL_CAFILE] = $certificateAuthorityPath; - $config[Resources::SSL_VERIFY_PEER] = true; - } - - $this->_request = new \HTTP_Request2( - null, null, $config - ); - - $this->setHeader('user-agent', null); - - $this->_requestUrl = null; - $this->_response = null; - $this->_expectedStatusCodes = array(); - } - - /** - * Makes deep copy from the current object. - * - * @return WindowsAzure\Common\Internal\Http\HttpClient - */ - public function __clone() - { - $this->_request = clone $this->_request; - - if (!is_null($this->_requestUrl)) { - $this->_requestUrl = clone $this->_requestUrl; - } - } - - /** - * Sets the request url. - * - * @param WindowsAzure\Common\Internal\Http\IUrl $url request url. - * - * @return none. - */ - public function setUrl($url) - { - $this->_requestUrl = $url; - } - - /** - * Gets request url. Note that you must check if the returned object is null or - * not. - * - * @return WindowsAzure\Common\Internal\Http\IUrl - */ - public function getUrl() - { - return $this->_requestUrl; - } - - /** - * Sets request's HTTP method. You can use \HTTP_Request2 constants like - * Resources::HTTP_GET or strings like 'GET'. - * - * @param string $method request's HTTP method. - * - * @return none - */ - public function setMethod($method) - { - $this->_request->setMethod($method); - } - - /** - * Gets request's HTTP method. - * - * @return string - */ - public function getMethod() - { - return $this->_request->getMethod(); - } - - /** - * Gets request's headers. The returned array key (header names) are all in - * lower case even if they were set having some upper letters. - * - * @return array - */ - public function getHeaders() - { - return $this->_request->getHeaders(); - } - - /** - * Sets a an existing request header to value or creates a new one if the $header - * doesn't exist. - * - * @param string $header header name. - * @param string $value header value. - * @param bool $replace whether to replace previous header with the same name - * or append to its value (comma separated) - * - * @return none - */ - public function setHeader($header, $value, $replace = false) - { - Validate::isString($value, 'value'); - - $this->_request->setHeader($header, $value, $replace); - } - - /** - * Sets request headers using array - * - * @param array $headers headers key-value array - * - * @return none - */ - public function setHeaders($headers) - { - foreach ($headers as $key => $value) { - $this->setHeader($key, $value); - } - } - - /** - * Sets HTTP POST parameters. - * - * @param array $postParameters The HTTP POST parameters. - * - * @return none - */ - public function setPostParameters($postParameters) - { - $this->_request->addPostParameter($postParameters); - } - - /** - * Processes the reuqest through HTTP pipeline with passed $filters, - * sends HTTP request to the wire and process the response in the HTTP pipeline. - * - * @param array $filters HTTP filters which will be applied to the request before - * send and then applied to the response. - * @param IUrl $url Request url. - * - * @throws WindowsAzure\Common\ServiceException - * - * @return string The response body - */ - public function send($filters, $url = null) - { - if (isset($url)) { - $this->setUrl($url); - $this->_request->setUrl($this->_requestUrl->getUrl()); - } - - $contentLength = Resources::EMPTY_STRING; - if ( strtoupper($this->getMethod()) != Resources::HTTP_GET - && strtoupper($this->getMethod()) != Resources::HTTP_DELETE - && strtoupper($this->getMethod()) != Resources::HTTP_HEAD - ) { - $contentLength = 0; - - if (!is_null($this->getBody())) { - $contentLength = strlen($this->getBody()); - } - $this->_request->setHeader(Resources::CONTENT_LENGTH, $contentLength); - } - - foreach ($filters as $filter) { - $this->_request = $filter->handleRequest($this)->_request; - } - - $this->_response = $this->_request->send(); - - $start = count($filters) - 1; - for ($index = $start; $index >= 0; $index--) { - $this->_response = $filters[$index]->handleResponse( - $this, $this->_response - ); - } - - self::throwIfError( - $this->_response->getStatus(), - $this->_response->getReasonPhrase(), - $this->_response->getBody(), - $this->_expectedStatusCodes - ); - - return $this->_response->getBody(); - } - - /** - * Sets successful status code - * - * @param array|string $statusCodes successful status code. - * - * @return none - */ - public function setExpectedStatusCode($statusCodes) - { - if (!is_array($statusCodes)) { - $this->_expectedStatusCodes[] = $statusCodes; - } else { - $this->_expectedStatusCodes = $statusCodes; - } - } - - /** - * Gets successful status code - * - * @return array - */ - public function getSuccessfulStatusCode() - { - return $this->_expectedStatusCodes; - } - - /** - * Sets configuration parameter. - * - * @param string $name The configuration parameter name. - * @param mix $value The configuration parameter value. - * - * @return none - */ - public function setConfig($name, $value = null) - { - $this->_request->setConfig($name, $value); - } - - /** - * Gets value for configuration parameter. - * - * @param string $name configuration parameter name. - * - * @return string - */ - public function getConfig($name) - { - return $this->_request->getConfig($name); - } - - /** - * Sets the request body. - * - * @param string $body body to use. - * - * @return none - */ - public function setBody($body) - { - Validate::isString($body, 'body'); - $this->_request->setBody($body); - } - - /** - * Gets the request body. - * - * @return string - */ - public function getBody() - { - return $this->_request->getBody(); - } - - /** - * Gets the response object. - * - * @return \HTTP_Request2_Response - */ - public function getResponse() - { - return $this->_response; - } - - /** - * Throws ServiceException if the recieved status code is not expected. - * - * @param string $actual The received status code. - * @param string $reason The reason phrase. - * @param string $message The detailed message (if any). - * @param array $expected The expected status codes. - * - * @return none - * - * @static - * - * @throws ServiceException - */ - public static function throwIfError($actual, $reason, $message, $expected) - { - if (!in_array($actual, $expected)) { - throw new ServiceException($actual, $reason, $message); - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IHttpClient.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IHttpClient.php deleted file mode 100644 index 425d5266..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IHttpClient.php +++ /dev/null @@ -1,204 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; - -/** - * Defines required methods for a HTTP client proxy. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Http - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -interface IHttpClient -{ - /** - * Sets the request url. - * - * @param WindowsAzure\Common\Internal\Http\IUrl $url request url. - * - * @return none. - */ - public function setUrl($url); - - /** - * Gets request url. - * - * @return WindowsAzure\Common\Internal\Http\IUrl - */ - public function getUrl(); - - /** - * Sets request's HTTP method. - * - * @param string $method request's HTTP method. - * - * @return none. - */ - public function setMethod($method); - - /** - * Gets request's HTTP method. - * - * @return string - */ - public function getMethod(); - - /** - * Gets request's headers - * - * @return array - */ - public function getHeaders(); - - /** - * Sets a an existing request header to value or creates a new one if the $header - * doesn't exist. - * - * @param string $header header name. - * @param string $value header value. - * @param bool $replace whether to replace previous header with the same name - * or append to its value (comma separated) - * - * @return none. - */ - public function setHeader($header, $value, $replace = false); - - /** - * Sets request headers using array - * - * @param array $headers headers key-value array - * - * @return none. - */ - public function setHeaders($headers); - - /** - * Sets HTTP POST parameters. - * - * @param array $postParameters The HTTP POST parameters. - * - * @return none - */ - public function setPostParameters($postParameters); - - /** - * Processes the reuqest through HTTP pipeline with passed $filters, - * sends HTTP request to the wire and process the response in the HTTP pipeline. - * - * @param array $filters HTTP filters which will be applied to the request before - * send and then applied to the response. - * @param IUrl $url Request url. - * - * @return string The response body. - */ - public function send($filters, $url = null); - - /** - * Sets successful status code - * - * @param array|string $statusCodes successful status code. - * - * @return none. - */ - public function setExpectedStatusCode($statusCodes); - - /** - * Gets successful status code - * - * @return array. - */ - public function getSuccessfulStatusCode(); - - /** - * Sets a configuration element for the request. - * - * @param string $name configuration parameter name. - * @param mix $value configuration parameter value. - * - * @return none. - */ - public function setConfig($name, $value = null); - - /** - * Gets value for configuration parameter. - * - * @param string $name configuration parameter name. - * - * @return string. - */ - public function getConfig($name); - - /** - * Sets the request body. - * - * @param string $body body to use. - * - * @return none. - */ - public function setBody($body); - - /** - * Gets the request body. - * - * @return string. - */ - public function getBody(); - - /** - * Makes deep copy from the current object. - * - * @return WindowsAzure\Common\Internal\Http\HttpClient - */ - public function __clone(); - - /** - * Gets the response object. - * - * @return \HTTP_Request2_Response. - */ - public function getResponse(); - - /** - * Throws ServiceException if the recieved status code is not expected. - * - * @param string $actual The received status code. - * @param string $reason The reason phrase. - * @param string $message The detailed message (if any). - * @param array $expected The expected status codes. - * - * @return none - * - * @static - * - * @throws ServiceException - */ - public static function throwIfError($actual, $reason, $message, $expected); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IUrl.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IUrl.php deleted file mode 100644 index 36d862ef..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/IUrl.php +++ /dev/null @@ -1,114 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; - -/** - * Defines what are main url functionalities that should be supported - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Http - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -interface IUrl -{ - /** - * Returns the query portion of the url - * - * @return string - */ - public function getQuery(); - - /** - * Returns the query portion of the url in array form - * - * @return array - */ - public function getQueryVariables(); - - /** - * Sets a an existing query parameter to value or creates a new one if the $key - * doesn't exist. - * - * @param string $key query parameter name. - * @param string $value query value. - * - * @return none. - */ - public function setQueryVariable($key, $value); - - /** - * Gets actual URL string. - * - * @return string. - */ - public function getUrl(); - - /** - * Sets url path - * - * @param string $urlPath url path to set. - * - * @return none. - */ - public function setUrlPath($urlPath); - - /** - * Appends url path - * - * @param string $urlPath url path to append. - * - * @return none. - */ - public function appendUrlPath($urlPath); - - /** - * Gets actual URL string. - * - * @return string. - */ - public function __toString(); - - /** - * Makes deep copy from the current object. - * - * @return WindowsAzure\Common\Internal\Http\Url - */ - public function __clone(); - - /** - * Sets the query string to the specified variables in $array - * - * @param array $array key/value representation of query variables. - * - * @return none. - */ - public function setQueryVariables($array); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/Url.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/Url.php deleted file mode 100644 index dfbed04b..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Http/Url.php +++ /dev/null @@ -1,192 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Http; -require_once 'Net/URL2.php'; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Http\IUrl; - -/** - * Default IUrl implementation. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Http - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Url implements IUrl -{ - /** - * @var \Net_URL2 - */ - private $_url; - - /** - * Sets the url path to '/' if it's empty - * - * @param string $url the url string - * - * @return none. - */ - private function _setPathIfEmpty($url) - { - $path = parse_url($url, PHP_URL_PATH); - - if (empty($path)) { - $this->setUrlPath('/'); - } - } - - /** - * Constructor - * - * @param string $url the url to set. - * - * @return WindowsAzure\Common\Internal\Http\Url - */ - public function __construct($url) - { - $errorMessage = Resources::INVALID_URL_MSG; - Validate::isTrue(filter_var($url, FILTER_VALIDATE_URL), $errorMessage); - - $this->_url = new \Net_URL2($url); - $this->_setPathIfEmpty($url); - } - - /** - * Makes deep copy from the current object. - * - * @return WindowsAzure\Common\Internal\Http\Url - */ - public function __clone() - { - $this->_url = clone $this->_url; - } - - /** - * Returns the query portion of the url - * - * @return string - */ - public function getQuery() - { - return $this->_url->getQuery(); - } - - /** - * Returns the query portion of the url in array form - * - * @return array - */ - public function getQueryVariables() - { - return $this->_url->getQueryVariables(); - } - - /** - * Sets a an existing query parameter to value or creates a new one if the $key - * doesn't exist. - * - * @param string $key query parameter name. - * @param string $value query value. - * - * @return none - */ - public function setQueryVariable($key, $value) - { - Validate::isString($key, 'key'); - Validate::isString($value, 'value'); - - $this->_url->setQueryVariable($key, $value); - } - - /** - * Gets actual URL string. - * - * @return string. - */ - public function getUrl() - { - return $this->_url->getURL(); - } - - /** - * Sets url path - * - * @param string $urlPath url path to set. - * - * @return none. - */ - public function setUrlPath($urlPath) - { - Validate::isString($urlPath, 'urlPath'); - - $this->_url->setPath($urlPath); - } - - /** - * Appends url path - * - * @param string $urlPath url path to append. - * - * @return none. - */ - public function appendUrlPath($urlPath) - { - Validate::isString($urlPath, 'urlPath'); - - $newUrlPath = parse_url($this->_url, PHP_URL_PATH) . $urlPath; - $this->_url->setPath($newUrlPath); - } - - /** - * Gets actual URL string. - * - * @return string. - */ - public function __toString() - { - return $this->_url->getURL(); - } - - /** - * Sets the query string to the specified variables in $array - * - * @param array $array key/value representation of query variables. - * - * @return none. - */ - public function setQueryVariables($array) - { - foreach ($array as $key => $value) { - $this->setQueryVariable($key, $value); - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/IServiceFilter.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/IServiceFilter.php deleted file mode 100644 index f04012ec..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/IServiceFilter.php +++ /dev/null @@ -1,61 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * ServceFilter is called when the sending the request and after receiving the - * response. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -interface IServiceFilter -{ - /** - * Processes HTTP request before send. - * - * @param mix $request HTTP request object. - * - * @return mix processed HTTP request object. - */ - public function handleRequest($request); - - /** - * Processes HTTP response after send. - * - * @param mix $request HTTP request object. - * @param mix $response HTTP response object. - * - * @return mix processed HTTP response object. - */ - public function handleResponse($request, $response); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/InvalidArgumentTypeException.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/InvalidArgumentTypeException.php deleted file mode 100644 index 5d55763e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/InvalidArgumentTypeException.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; - -/** - * Exception thrown if an argument type does not match with the expected type. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class InvalidArgumentTypeException extends \InvalidArgumentException -{ - /** - * Constructor. - * - * @param string $validType The valid type that should be provided by the user. - * @param string $name The parameter name. - * - * @return WindowsAzure\Common\Internal\InvalidArgumentTypeException - */ - public function __construct($validType, $name = null) - { - parent::__construct( - sprintf(Resources::INVALID_PARAM_MSG, $name, $validType) - ); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Logger.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Logger.php deleted file mode 100644 index 285e116d..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Logger.php +++ /dev/null @@ -1,83 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * Logger class for debugging purpose. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Logger -{ - /** - * @var string - */ - private static $_filePath; - - /** - * Logs $var to file. - * - * @param mix $var The data to log. - * @param string $tip The help message. - * - * @static - * - * @return none - */ - public static function log($var, $tip = Resources::EMPTY_STRING) - { - if (!empty($tip)) { - error_log($tip . "\n", 3, self::$_filePath); - } - - if (is_array($var) || is_object($var)) { - error_log(print_r($var, true), 3, self::$_filePath); - } else { - error_log($var . "\n", 3, self::$_filePath); - } - } - - /** - * Sets file path to use. - * - * @param string $filePath The log file path. - * - * @static - * - * @return none - */ - public static function setLogFile($filePath) - { - self::$_filePath = $filePath; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/MediaServicesSettings.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/MediaServicesSettings.php deleted file mode 100644 index 18d207f6..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/MediaServicesSettings.php +++ /dev/null @@ -1,267 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; - -/** - * Represents the settings used to sign and access a request against the service - * management. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class MediaServicesSettings extends ServiceSettings -{ - /** - * @var string - */ - private $_accountName; - - /** - * @var string - */ - private $_accessKey; - - /** - * @var string - */ - private $_endpointUri; - - /** - * @var string - */ - private $_oauthEndpointUri; - - /** - * Validator for the MediaServicesAccountName setting. It has to be provided. - * - * @var array - */ - private static $_accountNameSetting; - - /** - * Validator for the MediaServicesAccessKey setting. It has to be provided. - * - * @var array - */ - private static $_accessKeySetting; - - /** - * Validator for the MediaServicesEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_endpointUriSetting; - - /** - * Validator for the MediaServicesOAuthEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_oauthEndpointUriSetting; - - /** - * @var boolean - */ - protected static $isInitialized = false; - - /** - * Holds the expected setting keys. - * - * @var array - */ - protected static $validSettingKeys = array(); - - /** - * Initializes static members of the class. - * - * @return none - */ - protected static function init() - { - self::$_endpointUriSetting = self::settingWithFunc( - Resources::MEDIA_SERVICES_ENDPOINT_URI_NAME, - Validate::getIsValidUri() - ); - - self::$_oauthEndpointUriSetting = self::settingWithFunc( - Resources::MEDIA_SERVICES_OAUTH_ENDPOINT_URI_NAME, - Validate::getIsValidUri() - ); - - self::$_accountNameSetting = self::setting( - Resources::MEDIA_SERVICES_ACCOUNT_NAME - ); - - self::$_accessKeySetting = self::setting( - Resources::MEDIA_SERVICES_ACCESS_KEY - ); - - self::$validSettingKeys[] = Resources::MEDIA_SERVICES_ENDPOINT_URI_NAME; - self::$validSettingKeys[] = Resources::MEDIA_SERVICES_OAUTH_ENDPOINT_URI_NAME; - self::$validSettingKeys[] = Resources::MEDIA_SERVICES_ACCOUNT_NAME; - self::$validSettingKeys[] = Resources::MEDIA_SERVICES_ACCESS_KEY; - } - - /** - * Creates new media services settings instance. - * - * @param string $accountName The user provided account name. - * @param string $accessKey The user provided primary access key - * @param string $endpointUri The service management endpoint uri. - * @param string $oauthEndpointUri The OAuth service endpoint uri. - */ - public function __construct( - $accountName, - $accessKey, - $endpointUri = null, - $oauthEndpointUri = null - ) { - Validate::notNullOrEmpty($accountName, 'accountName'); - Validate::notNullOrEmpty($accessKey, 'accountKey'); - Validate::isString($accountName, 'accountName'); - Validate::isString($accessKey, 'accountKey'); - - if ($endpointUri != null) { - Validate::isValidUri($endpointUri); - } else { - $endpointUri = Resources::MEDIA_SERVICES_URL; - } - - if ($oauthEndpointUri != null) { - Validate::isValidUri($oauthEndpointUri); - } else { - $oauthEndpointUri = Resources::MEDIA_SERVICES_OAUTH_URL; - } - - $this->_accountName = $accountName; - $this->_accessKey = $accessKey; - $this->_endpointUri = $endpointUri; - $this->_oauthEndpointUri = $oauthEndpointUri; - } - - /** - * Creates a MediaServicesSettings object from the given connection string. - * - * @param string $connectionString The media services settings connection string. - * - * @return MediaServicesSettings - */ - public static function createFromConnectionString($connectionString) - { - $tokenizedSettings = self::parseAndValidateKeys($connectionString); - - $matchedSpecs = self::matchedSpecification( - $tokenizedSettings, - self::allRequired( - self::$_accountNameSetting, - self::$_accessKeySetting - ), - self::optional( - self::$_endpointUriSetting, - self::$_oauthEndpointUriSetting - ) - ); - if ($matchedSpecs) { - $endpointUri = Utilities::tryGetValueInsensitive( - Resources::MEDIA_SERVICES_ENDPOINT_URI_NAME, - $tokenizedSettings, - Resources::MEDIA_SERVICES_URL - ); - - $oauthEndpointUri = Utilities::tryGetValueInsensitive( - Resources::MEDIA_SERVICES_OAUTH_ENDPOINT_URI_NAME, - $tokenizedSettings, - Resources::MEDIA_SERVICES_OAUTH_URL - ); - - $accountName = Utilities::tryGetValueInsensitive( - Resources::MEDIA_SERVICES_ACCOUNT_NAME, - $tokenizedSettings - ); - - $accessKey = Utilities::tryGetValueInsensitive( - Resources::MEDIA_SERVICES_ACCESS_KEY, - $tokenizedSettings - ); - - return new MediaServicesSettings( - $accountName, - $accessKey, - $endpointUri, - $oauthEndpointUri - ); - } - - self::noMatch($connectionString); - } - - /** - * Gets media services account name. - * - * @return string - */ - public function getAccountName() - { - return $this->_accountName; - } - - /** - * Gets media services access key. - * - * @return string - */ - public function getAccessKey() - { - return $this->_accessKey; - } - - /** - * Gets media services endpoint uri. - * - * @return string - */ - public function getEndpointUri() - { - return $this->_endpointUri; - } - - /** - * Gets media services OAuth endpoint uri. - * - * @return string - */ - public function getOAuthEndpointUri() - { - return $this->_oauthEndpointUri; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/OAuthRestProxy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/OAuthRestProxy.php deleted file mode 100644 index bfcbb26b..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/OAuthRestProxy.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\ServiceRestProxy; -use WindowsAzure\Common\Models\OAuthAccessToken; -use WindowsAzure\Common\Internal\Serialization\JsonSerializer; - -/** - * OAuth rest proxy. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class OAuthRestProxy extends ServiceRestProxy -{ - /** - * Initializes new OAuthRestProxy object. - * - * @param IHttpClient $channel The HTTP client used to send HTTP requests. - * @param string $uri The storage account uri. - */ - public function __construct($channel, $uri) - { - parent::__construct( - $channel, - $uri, - Resources::EMPTY_STRING, - new JsonSerializer() - ); - } - - - /** - * Get OAuth access token. - * - * @param string $grantType OAuth request grant_type field value. - * @param string $clientId OAuth request clent_id field value. - * @param string $clientSecret OAuth request clent_secret field value. - * @param string $scope OAuth request scope field value. - * - * @return WindowsAzure\Common\Internal\Models\OAuthAccessToken - */ - public function getAccessToken($grantType, $clientId, $clientSecret, $scope) - { - $method = Resources::HTTP_POST; - $headers = array(); - $queryParams = array(); - $postParameters = array(); - $statusCode = Resources::STATUS_OK; - - $postParameters = $this->addPostParameter( - $postParameters, - Resources::OAUTH_GRANT_TYPE, - $grantType - ); - - $postParameters = $this->addPostParameter( - $postParameters, - Resources::OAUTH_CLIENT_ID, - $clientId - ); - - $postParameters = $this->addPostParameter( - $postParameters, - Resources::OAUTH_CLIENT_SECRET, - $clientSecret - ); - - $postParameters = $this->addPostParameter( - $postParameters, - Resources::OAUTH_SCOPE, - $scope - ); - - $response = $this->send( - $method, - $headers, - $queryParams, - $postParameters, - Resources::EMPTY_STRING, - $statusCode - ); - - return OAuthAccessToken::create( - $this->dataSerializer->unserialize($response->getBody()) - ); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Resources.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Resources.php deleted file mode 100644 index bbc8fadf..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Resources.php +++ /dev/null @@ -1,458 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * Project resources. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Resources -{ - // @codingStandardsIgnoreStart - - // Connection strings - const USE_DEVELOPMENT_STORAGE_NAME = 'UseDevelopmentStorage'; - const DEVELOPMENT_STORAGE_PROXY_URI_NAME = 'DevelopmentStorageProxyUri'; - const DEFAULT_ENDPOINTS_PROTOCOL_NAME = 'DefaultEndpointsProtocol'; - const ACCOUNT_NAME_NAME = 'AccountName'; - const ACCOUNT_KEY_NAME = 'AccountKey'; - const BLOB_ENDPOINT_NAME = 'BlobEndpoint'; - const QUEUE_ENDPOINT_NAME = 'QueueEndpoint'; - const TABLE_ENDPOINT_NAME = 'TableEndpoint'; - const SHARED_ACCESS_SIGNATURE_NAME = 'SharedAccessSignature'; - const DEV_STORE_NAME = 'devstoreaccount1'; - const DEV_STORE_KEY = 'Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='; - const BLOB_BASE_DNS_NAME = 'blob.core.windows.net'; - const QUEUE_BASE_DNS_NAME = 'queue.core.windows.net'; - const TABLE_BASE_DNS_NAME = 'table.core.windows.net'; - const DEV_STORE_CONNECTION_STRING = 'BlobEndpoint=127.0.0.1:10000;QueueEndpoint=127.0.0.1:10001;TableEndpoint=127.0.0.1:10002;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw=='; - const SUBSCRIPTION_ID_NAME = 'SubscriptionID'; - const CERTIFICATE_PATH_NAME = 'CertificatePath'; - const SERVICE_MANAGEMENT_ENDPOINT_NAME = 'ServiceManagementEndpoint'; - const SERVICE_BUS_ENDPOINT_NAME = 'Endpoint'; - const SHARED_SECRET_ISSUER_NAME = 'SharedSecretIssuer'; - const SHARED_SECRET_VALUE_NAME = 'SharedSecretValue'; - const STS_ENDPOINT_NAME = 'StsEndpoint'; - const MEDIA_SERVICES_ENDPOINT_URI_NAME = 'MediaServicesEndpoint'; - const MEDIA_SERVICES_ACCOUNT_NAME = 'AccountName'; - const MEDIA_SERVICES_ACCESS_KEY = 'AccessKey'; - const MEDIA_SERVICES_OAUTH_ENDPOINT_URI_NAME = 'OAuthEndpoint'; - - // Messages - const INVALID_TYPE_MSG = 'The provided variable should be of type: '; - const INVALID_META_MSG = 'Metadata cannot contain newline characters.'; - const AZURE_ERROR_MSG = "Fail:\nCode: %s\nValue: %s\ndetails (if any): %s."; - const NOT_IMPLEMENTED_MSG = 'This method is not implemented.'; - const NULL_OR_EMPTY_MSG = "'%s' can't be NULL or empty."; - const NULL_MSG = "'%s' can't be NULL."; - const INVALID_URL_MSG = 'Provided URL is invalid.'; - const INVALID_HT_MSG = 'The header type provided is invalid.'; - const INVALID_EDM_MSG = 'The provided EDM type is invalid.'; - const INVALID_PROP_MSG = 'One of the provided properties is not an instance of class Property'; - const INVALID_ENTITY_MSG = 'The provided entity object is invalid.'; - const INVALID_VERSION_MSG = 'Server does not support any known protocol versions.'; - const INVALID_BO_TYPE_MSG = 'Batch operation name is not supported or invalid.'; - const INVALID_BO_PN_MSG = 'Batch operation parameter is not supported.'; - const INVALID_OC_COUNT_MSG = 'Operations and contexts must be of same size.'; - const INVALID_EXC_OBJ_MSG = 'Exception object type should be ServiceException.'; - const NULL_TABLE_KEY_MSG = 'Partition and row keys can\'t be NULL.'; - const BATCH_ENTITY_DEL_MSG = 'The entity was deleted successfully.'; - const INVALID_PROP_VAL_MSG = "'%s' property value must satisfy %s."; - const INVALID_PARAM_MSG = "The provided variable '%s' should be of type '%s'"; - const INVALID_STRING_LENGTH = "The provided variable '%s' should be of %s characters long"; - const INVALID_BTE_MSG = "The blob block type must exist in %s"; - const INVALID_BLOB_PAT_MSG = 'The provided access type is invalid.'; - const INVALID_SVC_PROP_MSG = 'The provided service properties is invalid.'; - const UNKNOWN_SRILZER_MSG = 'The provided serializer type is unknown'; - const INVALID_CREATE_SERVICE_OPTIONS_MSG = 'Must provide valid location or affinity group.'; - const INVALID_UPDATE_SERVICE_OPTIONS_MSG = 'Must provide either description or label.'; - const INVALID_CONFIG_MSG = 'Config object must be of type Configuration'; - const INVALID_ACH_MSG = 'The provided access condition header is invalid'; - const INVALID_RECEIVE_MODE_MSG = 'The receive message option is in neither RECEIVE_AND_DELETE nor PEEK_LOCK mode.'; - const INVALID_CONFIG_URI = "The provided URI '%s' is invalid. It has to pass the check 'filter_var(, FILTER_VALIDATE_URL)'."; - const INVALID_CONFIG_VALUE = "The provided config value '%s' does not belong to the valid values subset:\n%s"; - const INVALID_ACCOUNT_KEY_FORMAT = "The provided account key '%s' is not a valid base64 string. It has to pass the check 'base64_decode(, true)'."; - const MISSING_CONNECTION_STRING_SETTINGS = "The provided connection string '%s' does not have complete configuration settings."; - const INVALID_CONNECTION_STRING_SETTING_KEY = "The setting key '%s' is not found in the expected configuration setting keys:\n%s"; - const INVALID_CERTIFICATE_PATH = "The provided certificate path '%s' is invalid."; - const INSTANCE_TYPE_VALIDATION_MSG = 'The type of %s is %s but is expected to be %s.'; - const MISSING_CONNECTION_STRING_CHAR = "Missing %s character"; - const ERROR_PARSING_STRING = "'%s' at position %d."; - const INVALID_CONNECTION_STRING = "Argument '%s' is not a valid connection string: '%s'"; - const ERROR_CONNECTION_STRING_MISSING_KEY = 'Missing key name'; - const ERROR_CONNECTION_STRING_EMPTY_KEY = 'Empty key name'; - const ERROR_CONNECTION_STRING_MISSING_CHARACTER = "Missing %s character"; - const ERROR_EMPTY_SETTINGS = 'No keys were found in the connection string'; - const MISSING_LOCK_LOCATION_MSG = 'The lock location of the brokered message is missing.'; - const INVALID_SLOT = "The provided deployment slot '%s' is not valid. Only 'staging' and 'production' are accepted."; - const INVALID_DEPLOYMENT_LOCATOR_MSG = 'A slot or deployment name must be provided.'; - const INVALID_CHANGE_MODE_MSG = "The change mode must be 'Auto' or 'Manual'. Use Mode class constants for that purpose."; - const INVALID_DEPLOYMENT_STATUS_MSG = "The change mode must be 'Running' or 'Suspended'. Use DeploymentStatus class constants for that purpose."; - const ERROR_OAUTH_GET_ACCESS_TOKEN = 'Unable to get oauth access token for endpoint \'%s\', account name \'%s\''; - const ERROR_OAUTH_SERVICE_MISSING = 'OAuth service missing for account name \'%s\''; - const ERROR_METHOD_NOT_FOUND = 'Method \'%s\' not found in object class \'%s\''; - const ERROR_INVALID_DATE_STRING = 'Parameter \'%s\' is not a date formatted string \'%s\''; - - // HTTP Headers - const X_MS_HEADER_PREFIX = 'x-ms-'; - const X_MS_META_HEADER_PREFIX = 'x-ms-meta-'; - const X_MS_APPROXIMATE_MESSAGES_COUNT = 'x-ms-approximate-messages-count'; - const X_MS_POPRECEIPT = 'x-ms-popreceipt'; - const X_MS_TIME_NEXT_VISIBLE = 'x-ms-time-next-visible'; - const X_MS_BLOB_PUBLIC_ACCESS = 'x-ms-blob-public-access'; - const X_MS_VERSION = 'x-ms-version'; - const X_MS_DATE = 'x-ms-date'; - const X_MS_BLOB_SEQUENCE_NUMBER = 'x-ms-blob-sequence-number'; - const X_MS_BLOB_SEQUENCE_NUMBER_ACTION = 'x-ms-sequence-number-action'; - const X_MS_BLOB_TYPE = 'x-ms-blob-type'; - const X_MS_BLOB_CONTENT_TYPE = 'x-ms-blob-content-type'; - const X_MS_BLOB_CONTENT_ENCODING = 'x-ms-blob-content-encoding'; - const X_MS_BLOB_CONTENT_LANGUAGE = 'x-ms-blob-content-language'; - const X_MS_BLOB_CONTENT_MD5 = 'x-ms-blob-content-md5'; - const X_MS_BLOB_CACHE_CONTROL = 'x-ms-blob-cache-control'; - const X_MS_BLOB_CONTENT_LENGTH = 'x-ms-blob-content-length'; - const X_MS_COPY_SOURCE = 'x-ms-copy-source'; - const X_MS_RANGE = 'x-ms-range'; - const X_MS_RANGE_GET_CONTENT_MD5 = 'x-ms-range-get-content-md5'; - const X_MS_LEASE_DURATION = 'x-ms-lease-duration'; - const X_MS_LEASE_ID = 'x-ms-lease-id'; - const X_MS_LEASE_TIME = 'x-ms-lease-time'; - const X_MS_LEASE_STATUS = 'x-ms-lease-status'; - const X_MS_LEASE_ACTION = 'x-ms-lease-action'; - const X_MS_DELETE_SNAPSHOTS = 'x-ms-delete-snapshots'; - const X_MS_PAGE_WRITE = 'x-ms-page-write'; - const X_MS_SNAPSHOT = 'x-ms-snapshot'; - const X_MS_SOURCE_IF_MODIFIED_SINCE = 'x-ms-source-if-modified-since'; - const X_MS_SOURCE_IF_UNMODIFIED_SINCE = 'x-ms-source-if-unmodified-since'; - const X_MS_SOURCE_IF_MATCH = 'x-ms-source-if-match'; - const X_MS_SOURCE_IF_NONE_MATCH = 'x-ms-source-if-none-match'; - const X_MS_SOURCE_LEASE_ID = 'x-ms-source-lease-id'; - const X_MS_CONTINUATION_NEXTTABLENAME = 'x-ms-continuation-nexttablename'; - const X_MS_CONTINUATION_NEXTPARTITIONKEY = 'x-ms-continuation-nextpartitionkey'; - const X_MS_CONTINUATION_NEXTROWKEY = 'x-ms-continuation-nextrowkey'; - const X_MS_REQUEST_ID = 'x-ms-request-id'; - const ETAG = 'etag'; - const LAST_MODIFIED = 'last-modified'; - const DATE = 'date'; - const AUTHENTICATION = 'authorization'; - const WRAP_AUTHORIZATION = 'WRAP access_token="%s"'; - const CONTENT_ENCODING = 'content-encoding'; - const CONTENT_LANGUAGE = 'content-language'; - const CONTENT_LENGTH = 'content-length'; - const CONTENT_LENGTH_NO_SPACE = 'contentlength'; - const CONTENT_MD5 = 'content-md5'; - const CONTENT_TYPE = 'content-type'; - const CONTENT_ID = 'content-id'; - const CONTENT_RANGE = 'content-range'; - const CACHE_CONTROL = 'cache-control'; - const IF_MODIFIED_SINCE = 'if-modified-since'; - const IF_MATCH = 'if-match'; - const IF_NONE_MATCH = 'if-none-match'; - const IF_UNMODIFIED_SINCE = 'if-unmodified-since'; - const RANGE = 'range'; - const DATA_SERVICE_VERSION = 'dataserviceversion'; - const MAX_DATA_SERVICE_VERSION = 'maxdataserviceversion'; - const ACCEPT_HEADER = 'accept'; - const ACCEPT_CHARSET = 'accept-charset'; - const USER_AGENT = 'User-Agent'; - - // Type - const QUEUE_TYPE_NAME = 'IQueue'; - const BLOB_TYPE_NAME = 'IBlob'; - const TABLE_TYPE_NAME = 'ITable'; - const SERVICE_MANAGEMENT_TYPE_NAME = 'IServiceManagement'; - const SERVICE_BUS_TYPE_NAME = 'IServiceBus'; - const WRAP_TYPE_NAME = 'IWrap'; - - // WRAP - const WRAP_ACCESS_TOKEN = 'wrap_access_token'; - const WRAP_ACCESS_TOKEN_EXPIRES_IN = 'wrap_access_token_expires_in'; - const WRAP_NAME = 'wrap_name'; - const WRAP_PASSWORD = 'wrap_password'; - const WRAP_SCOPE = 'wrap_scope'; - - // OAuth - const OAUTH_GRANT_TYPE = 'grant_type'; - const OAUTH_CLIENT_ID = 'client_id'; - const OAUTH_CLIENT_SECRET = 'client_secret'; - const OAUTH_SCOPE = 'scope'; - const OAUTH_GT_CLIENT_CREDENTIALS = 'client_credentials'; - const OAUTH_ACCESS_TOKEN = 'access_token'; - const OAUTH_EXPIRES_IN = 'expires_in'; - const OAUTH_ACCESS_TOKEN_PREFIX = 'Bearer '; - - // HTTP Methods - const HTTP_GET = 'GET'; - const HTTP_PUT = 'PUT'; - const HTTP_POST = 'POST'; - const HTTP_HEAD = 'HEAD'; - const HTTP_DELETE = 'DELETE'; - const HTTP_MERGE = 'MERGE'; - - // Misc - const EMPTY_STRING = ''; - const SEPARATOR = ','; - const AZURE_DATE_FORMAT = 'D, d M Y H:i:s T'; - const TIMESTAMP_FORMAT = 'Y-m-d H:i:s'; - const EMULATED = 'EMULATED'; - const EMULATOR_BLOB_URI = '127.0.0.1:10000'; - const EMULATOR_QUEUE_URI = '127.0.0.1:10001'; - const EMULATOR_TABLE_URI = '127.0.0.1:10002'; - const ASTERISK = '*'; - const SERVICE_MANAGEMENT_URL = 'https://management.core.windows.net'; - const HTTP_SCHEME = 'http'; - const HTTPS_SCHEME = 'https'; - const SETTING_NAME = 'SettingName'; - const SETTING_CONSTRAINT = 'SettingConstraint'; - const DEV_STORE_URI = 'http://127.0.0.1'; - const SERVICE_URI_FORMAT = "%s://%s.%s"; - const WRAP_ENDPOINT_URI_FORMAT = "https://%s-sb.accesscontrol.windows.net/WRAPv0.9"; - - // Xml Namespaces - const WA_XML_NAMESPACE = 'http://schemas.microsoft.com/windowsazure'; - const ATOM_XML_NAMESPACE = 'http://www.w3.org/2005/Atom'; - const DS_XML_NAMESPACE = 'http://schemas.microsoft.com/ado/2007/08/dataservices'; - const DSM_XML_NAMESPACE = 'http://schemas.microsoft.com/ado/2007/08/dataservices/metadata'; - const XSI_XML_NAMESPACE = 'http://www.w3.org/2001/XMLSchema-instance'; - - - // Header values - const SDK_USER_AGENT = 'Azure-SDK-For-PHP/0.4.1'; - const STORAGE_API_LATEST_VERSION = '2014-02-14'; // was 2012-02-12; see HS#7569 - const SM_API_LATEST_VERSION = '2011-10-01'; - const DATA_SERVICE_VERSION_VALUE = '1.0;NetFx'; - const MAX_DATA_SERVICE_VERSION_VALUE = '2.0;NetFx'; - const ACCEPT_HEADER_VALUE = 'application/atom+xml,application/xml'; - const ATOM_ENTRY_CONTENT_TYPE = 'application/atom+xml;type=entry;charset=utf-8'; - const ATOM_FEED_CONTENT_TYPE = 'application/atom+xml;type=feed;charset=utf-8'; - const ACCEPT_CHARSET_VALUE = 'utf-8'; - const INT32_MAX = 2147483647; - const MEDIA_SERVICES_API_LATEST_VERSION = '2.2'; - const MEDIA_SERVICES_DATA_SERVICE_VERSION_VALUE = '3.0;NetFx'; - const MEDIA_SERVICES_MAX_DATA_SERVICE_VERSION_VALUE = '3.0;NetFx'; - - // Query parameter names - const QP_PREFIX = 'Prefix'; - const QP_MAX_RESULTS = 'MaxResults'; - const QP_METADATA = 'Metadata'; - const QP_MARKER = 'Marker'; - const QP_NEXT_MARKER = 'NextMarker'; - const QP_COMP = 'comp'; - const QP_VISIBILITY_TIMEOUT = 'visibilitytimeout'; - const QP_POPRECEIPT = 'popreceipt'; - const QP_NUM_OF_MESSAGES = 'numofmessages'; - const QP_PEEK_ONLY = 'peekonly'; - const QP_MESSAGE_TTL = 'messagettl'; - const QP_INCLUDE = 'include'; - const QP_TIMEOUT = 'timeout'; - const QP_DELIMITER = 'Delimiter'; - const QP_REST_TYPE = 'restype'; - const QP_SNAPSHOT = 'snapshot'; - const QP_BLOCKID = 'blockid'; - const QP_BLOCK_LIST_TYPE = 'blocklisttype'; - const QP_SELECT = '$select'; - const QP_TOP = '$top'; - const QP_SKIP = '$skip'; - const QP_FILTER = '$filter'; - const QP_NEXT_TABLE_NAME = 'NextTableName'; - const QP_NEXT_PK = 'NextPartitionKey'; - const QP_NEXT_RK = 'NextRowKey'; - const QP_ACTION = 'action'; - const QP_EMBED_DETAIL = 'embed-detail'; - - // Query parameter values - const QPV_REGENERATE = 'regenerate'; - const QPV_CONFIG = 'config'; - const QPV_STATUS = 'status'; - const QPV_UPGRADE = 'upgrade'; - const QPV_WALK_UPGRADE_DOMAIN = 'walkupgradedomain'; - const QPV_REBOOT = 'reboot'; - const QPV_REIMAGE = 'reimage'; - const QPV_ROLLBACK = 'rollback'; - - // Request body content types - const URL_ENCODED_CONTENT_TYPE = 'application/x-www-form-urlencoded'; - const XML_CONTENT_TYPE = 'application/xml'; - const BINARY_FILE_TYPE = 'application/octet-stream'; - const XML_ATOM_CONTENT_TYPE = 'application/atom+xml'; - const HTTP_TYPE = 'application/http'; - const MULTIPART_MIXED_TYPE = 'multipart/mixed'; - - // Common used XML tags - const XTAG_ATTRIBUTES = '@attributes'; - const XTAG_NAMESPACE = '@namespace'; - const XTAG_LABEL = 'Label'; - const XTAG_NAME = 'Name'; - const XTAG_DESCRIPTION = 'Description'; - const XTAG_LOCATION = 'Location'; - const XTAG_AFFINITY_GROUP = 'AffinityGroup'; - const XTAG_HOSTED_SERVICES = 'HostedServices'; - const XTAG_STORAGE_SERVICES = 'StorageServices'; - const XTAG_STORAGE_SERVICE = 'StorageService'; - const XTAG_DISPLAY_NAME = 'DisplayName'; - const XTAG_SERVICE_NAME = 'ServiceName'; - const XTAG_URL = 'Url'; - const XTAG_ID = 'ID'; - const XTAG_STATUS = 'Status'; - const XTAG_HTTP_STATUS_CODE = 'HttpStatusCode'; - const XTAG_CODE = 'Code'; - const XTAG_MESSAGE = 'Message'; - const XTAG_STORAGE_SERVICE_PROPERTIES = 'StorageServiceProperties'; - const XTAG_ENDPOINT = 'Endpoint'; - const XTAG_ENDPOINTS = 'Endpoints'; - const XTAG_PRIMARY = 'Primary'; - const XTAG_SECONDARY = 'Secondary'; - const XTAG_KEY_TYPE = 'KeyType'; - const XTAG_STORAGE_SERVICE_KEYS = 'StorageServiceKeys'; - const XTAG_ERROR = 'Error'; - const XTAG_HOSTED_SERVICE = 'HostedService'; - const XTAG_HOSTED_SERVICE_PROPERTIES = 'HostedServiceProperties'; - const XTAG_CREATE_HOSTED_SERVICE = 'CreateHostedService'; - const XTAG_CREATE_STORAGE_SERVICE_INPUT = 'CreateStorageServiceInput'; - const XTAG_UPDATE_STORAGE_SERVICE_INPUT = 'UpdateStorageServiceInput'; - const XTAG_CREATE_AFFINITY_GROUP = 'CreateAffinityGroup'; - const XTAG_UPDATE_AFFINITY_GROUP = 'UpdateAffinityGroup'; - const XTAG_UPDATE_HOSTED_SERVICE = 'UpdateHostedService'; - const XTAG_PACKAGE_URL = 'PackageUrl'; - const XTAG_CONFIGURATION = 'Configuration'; - const XTAG_START_DEPLOYMENT = 'StartDeployment'; - const XTAG_TREAT_WARNINGS_AS_ERROR = 'TreatWarningsAsError'; - const XTAG_CREATE_DEPLOYMENT = 'CreateDeployment'; - const XTAG_DEPLOYMENT_SLOT = 'DeploymentSlot'; - const XTAG_PRIVATE_ID = 'PrivateID'; - const XTAG_ROLE_INSTANCE_LIST = 'RoleInstanceList'; - const XTAG_UPGRADE_DOMAIN_COUNT = 'UpgradeDomainCount'; - const XTAG_ROLE_LIST = 'RoleList'; - const XTAG_SDK_VERSION = 'SdkVersion'; - const XTAG_INPUT_ENDPOINT_LIST = 'InputEndpointList'; - const XTAG_LOCKED = 'Locked'; - const XTAG_ROLLBACK_ALLOWED = 'RollbackAllowed'; - const XTAG_UPGRADE_STATUS = 'UpgradeStatus'; - const XTAG_UPGRADE_TYPE = 'UpgradeType'; - const XTAG_CURRENT_UPGRADE_DOMAIN_STATE = 'CurrentUpgradeDomainState'; - const XTAG_CURRENT_UPGRADE_DOMAIN = 'CurrentUpgradeDomain'; - const XTAG_ROLE_NAME = 'RoleName'; - const XTAG_INSTANCE_NAME = 'InstanceName'; - const XTAG_INSTANCE_STATUS = 'InstanceStatus'; - const XTAG_INSTANCE_UPGRADE_DOMAIN = 'InstanceUpgradeDomain'; - const XTAG_INSTANCE_FAULT_DOMAIN = 'InstanceFaultDomain'; - const XTAG_INSTANCE_SIZE = 'InstanceSize'; - const XTAG_INSTANCE_STATE_DETAILS = 'InstanceStateDetails'; - const XTAG_INSTANCE_ERROR_CODE = 'InstanceErrorCode'; - const XTAG_OS_VERSION = 'OsVersion'; - const XTAG_ROLE_INSTANCE = 'RoleInstance'; - const XTAG_ROLE = 'Role'; - const XTAG_INPUT_ENDPOINT = 'InputEndpoint'; - const XTAG_VIP = 'Vip'; - const XTAG_PORT = 'Port'; - const XTAG_DEPLOYMENT = 'Deployment'; - const XTAG_DEPLOYMENTS = 'Deployments'; - const XTAG_REGENERATE_KEYS = 'RegenerateKeys'; - const XTAG_SWAP = 'Swap'; - const XTAG_PRODUCTION = 'Production'; - const XTAG_SOURCE_DEPLOYMENT = 'SourceDeployment'; - const XTAG_CHANGE_CONFIGURATION = 'ChangeConfiguration'; - const XTAG_MODE = 'Mode'; - const XTAG_UPDATE_DEPLOYMENT_STATUS = 'UpdateDeploymentStatus'; - const XTAG_ROLE_TO_UPGRADE = 'RoleToUpgrade'; - const XTAG_FORCE = 'Force'; - const XTAG_UPGRADE_DEPLOYMENT = 'UpgradeDeployment'; - const XTAG_UPGRADE_DOMAIN = 'UpgradeDomain'; - const XTAG_WALK_UPGRADE_DOMAIN = 'WalkUpgradeDomain'; - const XTAG_ROLLBACK_UPDATE_OR_UPGRADE = 'RollbackUpdateOrUpgrade'; - const XTAG_CONTAINER_NAME = 'ContainerName'; - const XTAG_ACCOUNT_NAME = 'AccountName'; - - // Service Bus - const LIST_TOPICS_PATH = '$Resources/Topics'; - const LIST_QUEUES_PATH = '$Resources/Queues'; - const LIST_RULES_PATH = '%s/subscriptions/%s/rules'; - const LIST_SUBSCRIPTIONS_PATH = '%s/subscriptions'; - const RECEIVE_MESSAGE_PATH = '%s/messages/head'; - const RECEIVE_SUBSCRIPTION_MESSAGE_PATH = '%s/subscriptions/%s/messages/head'; - const SEND_MESSAGE_PATH = '%s/messages'; - const RULE_PATH = '%s/subscriptions/%s/rules/%s'; - const SUBSCRIPTION_PATH = '%s/subscriptions/%s'; - const DEFAULT_RULE_NAME = '$Default'; - const UNIQUE_ID_PREFIX = 'urn:uuid:'; - const SERVICE_BUS_NAMESPACE = 'http://schemas.microsoft.com/netservices/2010/10/servicebus/connect'; - const BROKER_PROPERTIES = 'BrokerProperties'; - const XMLNS_ATOM = 'xmlns:atom'; - const XMLNS = 'xmlns'; - const ATOM_NAMESPACE = 'http://www.w3.org/2005/Atom'; - - // ATOM string - const AUTHOR = 'author'; - const CATEGORY = 'category'; - const CONTRIBUTOR = 'contributor'; - const ENTRY = 'entry'; - const LINK = 'link'; - const PROPERTIES = 'properties'; - const ELEMENT = 'element'; - - // PHP URL Keys - const PHP_URL_SCHEME = 'scheme'; - const PHP_URL_HOST = 'host'; - const PHP_URL_PORT = 'port'; - const PHP_URL_USER = 'user'; - const PHP_URL_PASS = 'pass'; - const PHP_URL_PATH = 'path'; - const PHP_URL_QUERY = 'query'; - const PHP_URL_FRAGMENT = 'fragment'; - - // Status Codes - const STATUS_OK = 200; - const STATUS_CREATED = 201; - const STATUS_ACCEPTED = 202; - const STATUS_NO_CONTENT = 204; - const STATUS_PARTIAL_CONTENT = 206; - const STATUS_MOVED_PERMANENTLY = 301; - - // HTTP_Request2 config parameter names - const USE_BRACKETS = 'use_brackets'; - const SSL_VERIFY_PEER = 'ssl_verify_peer'; - const SSL_VERIFY_HOST = 'ssl_verify_host'; - const SSL_LOCAL_CERT = 'ssl_local_cert'; - const SSL_CAFILE = 'ssl_cafile'; - const CONNECT_TIMEOUT = 'connect_timeout'; - - // Media services - const MEDIA_SERVICES_URL = 'https://media.windows.net/API/'; - const MEDIA_SERVICES_OAUTH_URL = 'https://wamsprodglobal001acs.accesscontrol.windows.net/v2/OAuth2-13'; - const MEDIA_SERVICES_OAUTH_SCOPE = 'urn:WindowsAzureMediaServices'; - const MEDIA_SERVICES_INPUT_ASSETS_REL = 'http://schemas.microsoft.com/ado/2007/08/dataservices/related/InputMediaAssets'; - const MEDIA_SERVICES_ASSET_REL = 'http://schemas.microsoft.com/ado/2007/08/dataservices/related/Asset'; - const MEDIA_SERVICES_ENCRYPTION_VERSION = '1.0'; - - - // @codingStandardsIgnoreEnd -} diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/RestProxy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/RestProxy.php deleted file mode 100644 index 7e4510c7..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/RestProxy.php +++ /dev/null @@ -1,207 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Http\Url; - -/** - * Base class for all REST proxies. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class RestProxy -{ - /** - * @var WindowsAzure\Common\Internal\Http\IHttpClient - */ - private $_channel; - - /** - * @var array - */ - private $_filters; - - /** - * @var WindowsAzure\Common\Internal\Serialization\ISerializer - */ - protected $dataSerializer; - - /** - * @var string - */ - private $_uri; - - /** - * Initializes new RestProxy object. - * - * @param IHttpClient $channel The HTTP client used to send HTTP requests. - * @param ISerializer $dataSerializer The data serializer. - * @param string $uri The uri of the service. - */ - public function __construct($channel, $dataSerializer, $uri) - { - $this->_channel = $channel; - $this->_filters = array(); - $this->dataSerializer = $dataSerializer; - $this->_uri = $uri; - } - - /** - * Gets HTTP filters that will process each request. - * - * @return array - */ - public function getFilters() - { - return $this->_filters; - } - - /** - * Gets the Uri of the service. - * - * @return string - */ - public function getUri() - { - return $this->_uri; - } - - /** - * Sets the Uri of the service. - * - * @param string $uri The URI of the request. - * - * @return none - */ - public function setUri($uri) - { - $this->_uri = $uri; - } - - /** - * Sends HTTP request with the specified HTTP call context. - * - * @param WindowsAzure\Common\Internal\Http\HttpCallContext $context The HTTP - * call context. - * - * @return \HTTP_Request2_Response - */ - protected function sendContext($context) - { - $channel = clone $this->_channel; - $contextUrl = $context->getUri(); - $url = new Url(empty($contextUrl) ? $this->_uri : $contextUrl); - $headers = $context->getHeaders(); - $statusCodes = $context->getStatusCodes(); - $body = $context->getBody(); - $queryParams = $context->getQueryParameters(); - $postParameters = $context->getPostParameters(); - $path = $context->getPath(); - - $channel->setMethod($context->getMethod()); - $channel->setExpectedStatusCode($statusCodes); - $channel->setBody($body); - $channel->setHeaders($headers); - - if (count($postParameters) > 0) { - $channel->setPostParameters($postParameters); - } - $url->setQueryVariables($queryParams); - $url->appendUrlPath($path); - - $channel->send($this->_filters, $url); - - return $channel->getResponse(); - } - - /** - * Adds new filter to new service rest proxy object and returns that object back. - * - * @param WindowsAzure\Common\Internal\IServiceFilter $filter Filter to add for - * the pipeline. - * - * @return RestProxy. - */ - public function withFilter($filter) - { - $serviceProxyWithFilter = clone $this; - $serviceProxyWithFilter->_filters[] = $filter; - - return $serviceProxyWithFilter; - } - - /** - * Adds optional query parameter. - * - * Doesn't add the value if it satisfies empty(). - * - * @param array &$queryParameters The query parameters. - * @param string $key The query variable name. - * @param string $value The query variable value. - * - * @return none - */ - protected function addOptionalQueryParam(&$queryParameters, $key, $value) - { - Validate::isArray($queryParameters, 'queryParameters'); - Validate::isString($key, 'key'); - Validate::isString($value, 'value'); - - if (!is_null($value) && Resources::EMPTY_STRING !== $value) { - $queryParameters[$key] = $value; - } - } - - /** - * Adds optional header. - * - * Doesn't add the value if it satisfies empty(). - * - * @param array &$headers The HTTP header parameters. - * @param string $key The HTTP header name. - * @param string $value The HTTP header value. - * - * @return none - */ - protected function addOptionalHeader(&$headers, $key, $value) - { - Validate::isArray($headers, 'headers'); - Validate::isString($key, 'key'); - Validate::isString($value, 'value'); - - if (!is_null($value) && Resources::EMPTY_STRING !== $value) { - $headers[$key] = $value; - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/ISerializer.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/ISerializer.php deleted file mode 100644 index 14ea193b..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/ISerializer.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Serialization; - -/** - * The serialization interface. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Serialization - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -interface ISerializer -{ - - /** - * Serialize an object into a XML. - * - * @param Object $targetObject The target object to be serialized. - * @param string $rootName The name of the root. - * - * @return string - */ - public static function objectSerialize($targetObject, $rootName); - - /** - * Serializes given array. The array indices must be string to use them as - * as element name. - * - * @param array $array The object to serialize represented in array. - * @param array $properties The used properties in the serialization process. - * - * @return string - */ - public function serialize($array, $properties = null); - - - /** - * Unserializes given serialized string. - * - * @param string $serialized The serialized object in string representation. - * - * @return array - */ - public function unserialize($serialized); -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/JsonSerializer.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/JsonSerializer.php deleted file mode 100644 index 0b545014..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/JsonSerializer.php +++ /dev/null @@ -1,96 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Serialization; -use WindowsAzure\Common\Internal\Validate; -/** - * Perform JSON serialization / deserialization - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Serialization - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class JsonSerializer implements ISerializer -{ - /** - * Serialize an object with specified root element name. - * - * @param object $targetObject The target object. - * @param string $rootName The name of the root element. - * - * @return string - */ - public static function objectSerialize($targetObject, $rootName) - { - Validate::notNull($targetObject, 'targetObject'); - Validate::isString($rootName, 'rootName'); - - $contianer = new \stdClass(); - - $contianer->$rootName = $targetObject; - - return json_encode($contianer); - } - - /** - * Serializes given array. The array indices must be string to use them as - * as element name. - * - * @param array $array The object to serialize represented in array. - * @param array $properties The used properties in the serialization process. - * - * @return string - */ - public function serialize($array, $properties = null) - { - Validate::isArray($array, 'array'); - - return json_encode($array); - } - - /** - * Unserializes given serialized string to array. - * - * @param string $serialized The serialized object in string representation. - * - * @return array - */ - public function unserialize($serialized) - { - Validate::isString($serialized, 'serialized'); - - $json = json_decode($serialized); - if ($json && !is_array($json)) { - return get_object_vars($json); - } else { - return $json; - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/XmlSerializer.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/XmlSerializer.php deleted file mode 100644 index b7b1a915..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Serialization/XmlSerializer.php +++ /dev/null @@ -1,245 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal\Serialization; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; - -/** - * Short description - * - * @category Microsoft - * @package WindowsAzure\Common\Internal\Serialization - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class XmlSerializer implements ISerializer -{ - const STANDALONE = 'standalone'; - const ROOT_NAME = 'rootName'; - const DEFAULT_TAG = 'defaultTag'; - - /** - * Converts a SimpleXML object to an Array recursively - * ensuring all sub-elements are arrays as well. - * - * @param string $sxml The SimpleXML object. - * @param array $arr The array into which to store results. - * - * @return array - */ - private function _sxml2arr($sxml, $arr = null) - { - foreach ((array) $sxml as $key => $value) { - if (is_object($value) || (is_array($value))) { - $arr[$key] = $this->_sxml2arr($value); - } else { - $arr[$key] = $value; - } - } - - return $arr; - } - - /** - * Takes an array and produces XML based on it. - * - * @param XMLWriter $xmlw XMLWriter object that was previously instanted - * and is used for creating the XML. - * @param array $data Array to be converted to XML. - * @param string $defaultTag Default XML tag to be used if none specified. - * - * @return void - */ - private function _arr2xml(\XMLWriter $xmlw, $data, $defaultTag = null) - { - foreach ($data as $key => $value) { - if ($key === Resources::XTAG_ATTRIBUTES) { - foreach ($value as $attributeName => $attributeValue) { - $xmlw->writeAttribute($attributeName, $attributeValue); - } - } else if (is_array($value)) { - if (!is_int($key)) { - if ($key != Resources::EMPTY_STRING) { - $xmlw->startElement($key); - } else { - $xmlw->startElement($defaultTag); - } - } - - $this->_arr2xml($xmlw, $value); - - if (!is_int($key)) { - $xmlw->endElement(); - } - } else { - $xmlw->writeElement($key, $value); - } - } - } - - /** - * Gets the attributes of a specified object if get attributes - * method is exposed. - * - * @param object $targetObject The target object. - * @param array $methodArray The array of method of the target object. - * - * @return mixed - */ - private static function _getInstanceAttributes($targetObject, $methodArray) - { - foreach ($methodArray as $method) { - if ($method->name == 'getAttributes') { - $classProperty = $method->invoke($targetObject); - return $classProperty; - } - } - return null; - } - - /** - * Serialize an object with specified root element name. - * - * @param object $targetObject The target object. - * @param string $rootName The name of the root element. - * - * @return string - */ - public static function objectSerialize($targetObject, $rootName) - { - Validate::notNull($targetObject, 'targetObject'); - Validate::isString($rootName, 'rootName'); - $xmlWriter = new \XmlWriter(); - $xmlWriter->openMemory(); - $xmlWriter->setIndent(true); - $reflectionClass = new \ReflectionClass($targetObject); - $methodArray = $reflectionClass->getMethods(); - $attributes = self::_getInstanceAttributes( - $targetObject, - $methodArray - ); - - $xmlWriter->startElement($rootName); - if (!is_null($attributes)) { - foreach (array_keys($attributes) as $attributeKey) { - $xmlWriter->writeAttribute( - $attributeKey, - $attributes[$attributeKey] - ); - } - } - - foreach ($methodArray as $method) { - if ((strpos($method->name, 'get') === 0) - && $method->isPublic() - && ($method->name != 'getAttributes') - ) { - $variableName = substr($method->name, 3); - $variableValue = $method->invoke($targetObject); - if (!empty($variableValue)) { - if (gettype($variableValue) === 'object') { - $xmlWriter->writeRaw( - XmlSerializer::objectSerialize( - $variableValue, $variableName - ) - ); - } else { - $xmlWriter->writeElement($variableName, $variableValue); - } - } - } - } - $xmlWriter->endElement(); - return $xmlWriter->outputMemory(true); - } - - /** - * Serializes given array. The array indices must be string to use them as - * as element name. - * - * @param array $array The object to serialize represented in array. - * @param array $properties The used properties in the serialization process. - * - * @return string - */ - public function serialize($array, $properties = null) - { - $xmlVersion = '1.0'; - $xmlEncoding = 'UTF-8'; - $standalone = Utilities::tryGetValue($properties, self::STANDALONE); - $defaultTag = Utilities::tryGetValue($properties, self::DEFAULT_TAG); - $rootName = Utilities::tryGetValue($properties, self::ROOT_NAME); - $docNamespace = Utilities::tryGetValue( - $array, - Resources::XTAG_NAMESPACE, - null - ); - - if (!is_array($array)) { - return false; - } - - $xmlw = new \XmlWriter(); - $xmlw->openMemory(); - $xmlw->setIndent(true); - $xmlw->startDocument($xmlVersion, $xmlEncoding, $standalone); - - if (is_null($docNamespace)) { - $xmlw->startElement($rootName); - } else { - foreach ($docNamespace as $uri => $prefix) { - $xmlw->startElementNS($prefix, $rootName, $uri); - break; - } - } - - unset($array[Resources::XTAG_NAMESPACE]); - self::_arr2xml($xmlw, $array, $defaultTag); - - $xmlw->endElement(); - - return $xmlw->outputMemory(true); - } - - /** - * Unserializes given serialized string. - * - * @param string $serialized The serialized object in string representation. - * - * @return array - */ - public function unserialize($serialized) - { - $sxml = new \SimpleXMLElement($serialized); - - return $this->_sxml2arr($sxml); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceBusSettings.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceBusSettings.php deleted file mode 100644 index ea9ed734..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceBusSettings.php +++ /dev/null @@ -1,267 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; - -/** - * Represents the settings used to sign and access a request against the service - * bus. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ServiceBusSettings extends ServiceSettings -{ - /** - * @var string - */ - private $_serviceBusEndpointUri; - - /** - * @var string - */ - private $_wrapEndpointUri; - - /** - * @var string - */ - private $_wrapName; - - /** - * @var string - */ - private $_wrapPassword; - - /** - * @var string - */ - private $_namespace; - - /** - * Validator for the SharedSecretValue setting. It has to be provided. - * - * @var array - */ - private static $_wrapPasswordSetting; - - /** - * Validator for the SharedSecretIssuer setting. It has to be provided. - * - * @var array - */ - private static $_wrapNameSetting; - - /** - * Validator for the Endpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_serviceBusEndpointSetting; - - /** - * Validator for the StsEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_wrapEndpointUriSetting; - - /** - * @var boolean - */ - protected static $isInitialized = false; - - /** - * Holds the expected setting keys. - * - * @var array - */ - protected static $validSettingKeys = array(); - - /** - * Initializes static members of the class. - * - * @return none - */ - protected static function init() - { - self::$_serviceBusEndpointSetting = self::settingWithFunc( - Resources::SERVICE_BUS_ENDPOINT_NAME, - Validate::getIsValidUri() - ); - - self::$_wrapNameSetting = self::setting( - Resources::SHARED_SECRET_ISSUER_NAME - ); - - self::$_wrapPasswordSetting = self::setting( - Resources::SHARED_SECRET_VALUE_NAME - ); - - self::$_wrapEndpointUriSetting = self::settingWithFunc( - Resources::STS_ENDPOINT_NAME, - Validate::getIsValidUri() - ); - - self::$validSettingKeys[] = Resources::SERVICE_BUS_ENDPOINT_NAME; - self::$validSettingKeys[] = Resources::SHARED_SECRET_ISSUER_NAME; - self::$validSettingKeys[] = Resources::SHARED_SECRET_VALUE_NAME; - self::$validSettingKeys[] = Resources::STS_ENDPOINT_NAME; - } - - /** - * Creates new Service Bus settings instance. - * - * @param string $serviceBusEndpoint The Service Bus endpoint uri. - * @param string $namespace The service namespace. - * @param string $wrapName The wrap name. - * @param string $wrapPassword The wrap password. - */ - public function __construct( - $serviceBusEndpoint, - $namespace, - $wrapEndpointUri, - $wrapName, - $wrapPassword - ) { - $this->_namespace = $namespace; - $this->_serviceBusEndpointUri = $serviceBusEndpoint; - $this->_wrapEndpointUri = $wrapEndpointUri; - $this->_wrapName = $wrapName; - $this->_wrapPassword = $wrapPassword; - } - - /** - * Creates a ServiceBusSettings object from the given connection string. - * - * @param string $connectionString The storage settings connection string. - * - * @return ServiceBusSettings - */ - public static function createFromConnectionString($connectionString) - { - $tokenizedSettings = self::parseAndValidateKeys($connectionString); - - $matchedSpecs = self::matchedSpecification( - $tokenizedSettings, - self::allRequired( - self::$_serviceBusEndpointSetting, - self::$_wrapNameSetting, - self::$_wrapPasswordSetting - ), - self::optional(self::$_wrapEndpointUriSetting) - ); - - if ($matchedSpecs) { - $endpoint = Utilities::tryGetValueInsensitive( - Resources::SERVICE_BUS_ENDPOINT_NAME, - $tokenizedSettings - ); - - // Parse the namespace part from the URI - $namespace = explode('.', parse_url($endpoint, PHP_URL_HOST)); - $namespace = $namespace[0]; - $wrapEndpointUri = Utilities::tryGetValueInsensitive( - Resources::STS_ENDPOINT_NAME, - $tokenizedSettings, - sprintf(Resources::WRAP_ENDPOINT_URI_FORMAT, $namespace) - ); - $issuerName = Utilities::tryGetValueInsensitive( - Resources::SHARED_SECRET_ISSUER_NAME, - $tokenizedSettings - ); - $issuerValue = Utilities::tryGetValueInsensitive( - Resources::SHARED_SECRET_VALUE_NAME, - $tokenizedSettings - ); - - return new ServiceBusSettings( - $endpoint, - $namespace, - $wrapEndpointUri, - $issuerName, - $issuerValue - ); - } - - self::noMatch($connectionString); - } - - /** - * Gets the Service Bus endpoint URI. - * - * @return string - */ - public function getServiceBusEndpointUri() - { - return $this->_serviceBusEndpointUri; - } - - /** - * Gets the wrap endpoint URI. - * - * @return string - */ - public function getWrapEndpointUri() - { - return $this->_wrapEndpointUri; - } - - /** - * Gets the wrap name. - * - * @return string - */ - public function getWrapName() - { - return $this->_wrapName; - } - - /** - * Gets the wrap password. - * - * @return string - */ - public function getWrapPassword() - { - return $this->_wrapPassword; - } - - /** - * Gets the namespace name. - * - * @return string - */ - public function getNamespace() - { - return $this->_namespace; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceManagementSettings.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceManagementSettings.php deleted file mode 100644 index d5e9836f..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceManagementSettings.php +++ /dev/null @@ -1,207 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; - -/** - * Represents the settings used to sign and access a request against the service - * management. For more information about service management connection strings check - * this page: http://msdn.microsoft.com/en-us/library/windowsazure/gg466228.aspx - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ServiceManagementSettings extends ServiceSettings -{ - /** - * @var string - */ - private $_subscriptionId; - - /** - * @var string - */ - private $_certificatePath; - - /** - * @var string - */ - private $_endpointUri; - - /** - * Validator for the ServiceManagementEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_endpointSetting; - - /** - * Validator for the CertificatePath setting. It has to be provided. - * - * @var array - */ - private static $_certificatePathSetting; - - /** - * Validator for the SubscriptionId setting. It has to be provided. - * - * @var array - */ - private static $_subscriptionIdSetting; - - /** - * @var boolean - */ - protected static $isInitialized = false; - - /** - * Holds the expected setting keys. - * - * @var array - */ - protected static $validSettingKeys = array(); - - /** - * Initializes static members of the class. - * - * @return none - */ - protected static function init() - { - self::$_endpointSetting = self::settingWithFunc( - Resources::SERVICE_MANAGEMENT_ENDPOINT_NAME, - Validate::getIsValidUri() - ); - - self::$_certificatePathSetting = self::setting( - Resources::CERTIFICATE_PATH_NAME - ); - - self::$_subscriptionIdSetting = self::setting( - Resources::SUBSCRIPTION_ID_NAME - ); - - self::$validSettingKeys[] = Resources::SUBSCRIPTION_ID_NAME; - self::$validSettingKeys[] = Resources::CERTIFICATE_PATH_NAME; - self::$validSettingKeys[] = Resources::SERVICE_MANAGEMENT_ENDPOINT_NAME; - } - - /** - * Creates new service management settings instance. - * - * @param string $subscriptionId The user provided subscription id. - * @param string $endpointUri The service management endpoint uri. - * @param string $certificatePath The management certificate path. - */ - public function __construct($subscriptionId, $endpointUri, $certificatePath) - { - $this->_certificatePath = $certificatePath; - $this->_endpointUri = $endpointUri; - $this->_subscriptionId = $subscriptionId; - } - - /** - * Creates a ServiceManagementSettings object from the given connection string. - * - * @param string $connectionString The storage settings connection string. - * - * @return ServiceManagementSettings - */ - public static function createFromConnectionString($connectionString) - { - $tokenizedSettings = self::parseAndValidateKeys($connectionString); - - $matchedSpecs = self::matchedSpecification( - $tokenizedSettings, - self::allRequired( - self::$_subscriptionIdSetting, - self::$_certificatePathSetting - ), - self::optional( - self::$_endpointSetting - ) - ); - if ($matchedSpecs) { - $endpointUri = Utilities::tryGetValueInsensitive( - Resources::SERVICE_MANAGEMENT_ENDPOINT_NAME, - $tokenizedSettings, - Resources::SERVICE_MANAGEMENT_URL - ); - $subscriptionId = Utilities::tryGetValueInsensitive( - Resources::SUBSCRIPTION_ID_NAME, - $tokenizedSettings - ); - $certificatePath = Utilities::tryGetValueInsensitive( - Resources::CERTIFICATE_PATH_NAME, - $tokenizedSettings - ); - - return new ServiceManagementSettings( - $subscriptionId, - $endpointUri, - $certificatePath - ); - } - - self::noMatch($connectionString); - } - - /** - * Gets service management endpoint uri. - * - * @return string - */ - public function getEndpointUri() - { - return $this->_endpointUri; - } - - /** - * Gets the subscription id. - * - * @return string - */ - public function getSubscriptionId() - { - return $this->_subscriptionId; - } - - /** - * Gets the certificate path. - * - * @return string - */ - public function getCertificatePath() - { - return $this->_certificatePath; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceRestProxy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceRestProxy.php deleted file mode 100644 index 44f77ab1..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceRestProxy.php +++ /dev/null @@ -1,347 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\RestProxy; -use WindowsAzure\Common\Internal\Http\Url; -use WindowsAzure\Common\Internal\Http\HttpCallContext; - -/** - * Base class for all services rest proxies. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ServiceRestProxy extends RestProxy -{ - /** - * @var string - */ - private $_accountName; - - /** - * Initializes new ServiceRestProxy object. - * - * @param IHttpClient $channel The HTTP client used to send HTTP requests. - * @param string $uri The storage account uri. - * @param string $accountName The name of the account. - * @param ISerializer $dataSerializer The data serializer. - */ - public function __construct($channel, $uri, $accountName, $dataSerializer) - { - parent::__construct($channel, $dataSerializer, $uri); - $this->_accountName = $accountName; - } - - /** - * Gets the account name. - * - * @return string - */ - public function getAccountName() - { - return $this->_accountName; - } - - /** - * Sends HTTP request with the specified HTTP call context. - * - * @param WindowsAzure\Common\Internal\Http\HttpCallContext $context The HTTP - * call context. - * - * @return \HTTP_Request2_Response - */ - protected function sendContext($context) - { - $context->setUri($this->getUri()); - return parent::sendContext($context); - } - - /** - * Sends HTTP request with the specified parameters. - * - * @param string $method HTTP method used in the request - * @param array $headers HTTP headers. - * @param array $queryParams URL query parameters. - * @param array $postParameters The HTTP POST parameters. - * @param string $path URL path - * @param int $statusCode Expected status code received in the response - * @param string $body Request body - * - * @return \HTTP_Request2_Response - */ - protected function send( - $method, - $headers, - $queryParams, - $postParameters, - $path, - $statusCode, - $body = Resources::EMPTY_STRING - ) { - $context = new HttpCallContext(); - $context->setBody($body); - $context->setHeaders($headers); - $context->setMethod($method); - $context->setPath($path); - $context->setQueryParameters($queryParams); - $context->setPostParameters($postParameters); - - if (is_array($statusCode)) { - $context->setStatusCodes($statusCode); - } else { - $context->addStatusCode($statusCode); - } - - return $this->sendContext($context); - } - - - /** - * Adds optional header to headers if set - * - * @param array $headers The array of request headers. - * @param AccessCondition $accessCondition The access condition object. - * - * @return array - */ - public function addOptionalAccessConditionHeader($headers, $accessCondition) - { - if (!is_null($accessCondition)) { - $header = $accessCondition->getHeader(); - - if ($header != Resources::EMPTY_STRING) { - $value = $accessCondition->getValue(); - if ($value instanceof \DateTime) { - $value = gmdate( - Resources::AZURE_DATE_FORMAT, - $value->getTimestamp() - ); - } - $headers[$header] = $value; - } - } - - return $headers; - } - - /** - * Adds optional header to headers if set - * - * @param array $headers The array of request headers. - * @param AccessCondition $accessCondition The access condition object. - * - * @return array - */ - public function addOptionalSourceAccessConditionHeader( - $headers, - $accessCondition - ) { - if (!is_null($accessCondition)) { - $header = $accessCondition->getHeader(); - $headerName = null; - if (!empty($header)) { - switch($header) { - case Resources::IF_MATCH: - $headerName = Resources::X_MS_SOURCE_IF_MATCH; - break; - - case Resources::IF_UNMODIFIED_SINCE: - $headerName = Resources::X_MS_SOURCE_IF_UNMODIFIED_SINCE; - break; - - case Resources::IF_MODIFIED_SINCE: - $headerName = Resources::X_MS_SOURCE_IF_MODIFIED_SINCE; - break; - - case Resources::IF_NONE_MATCH: - $headerName = Resources::X_MS_SOURCE_IF_NONE_MATCH; - break; - - default: - throw new \Exception(Resources::INVALID_ACH_MSG); - break; - } - } - $value = $accessCondition->getValue(); - if ($value instanceof \DateTime) { - $value = gmdate( - Resources::AZURE_DATE_FORMAT, - $value->getTimestamp() - ); - } - - $this->addOptionalHeader($headers, $headerName, $value); - } - - return $headers; - } - - /** - * Adds HTTP POST parameter to the specified - * - * @param array $postParameters An array of HTTP POST parameters. - * @param string $key The key of a HTTP POST parameter. - * @param string $value the value of a HTTP POST parameter. - * - * @return array - */ - public function addPostParameter( - $postParameters, - $key, - $value - ) { - Validate::isArray($postParameters, 'postParameters'); - $postParameters[$key] = $value; - return $postParameters; - } - - /** - * Groups set of values into one value separated with Resources::SEPARATOR - * - * @param array $values array of values to be grouped. - * - * @return string - */ - public function groupQueryValues($values) - { - Validate::isArray($values, 'values'); - $joined = Resources::EMPTY_STRING; - - foreach ($values as $value) { - if (!is_null($value) && !empty($value)) { - $joined .= $value . Resources::SEPARATOR; - } - } - - return trim($joined, Resources::SEPARATOR); - } - - /** - * Adds metadata elements to headers array - * - * @param array $headers HTTP request headers - * @param array $metadata user specified metadata - * - * @return array - */ - protected function addMetadataHeaders($headers, $metadata) - { - $this->validateMetadata($metadata); - - $metadata = $this->generateMetadataHeaders($metadata); - $headers = array_merge($headers, $metadata); - - return $headers; - } - - /** - * Generates metadata headers by prefixing each element with 'x-ms-meta'. - * - * @param array $metadata user defined metadata. - * - * @return array. - */ - public function generateMetadataHeaders($metadata) - { - $metadataHeaders = array(); - - if (is_array($metadata) && !is_null($metadata)) { - foreach ($metadata as $key => $value) { - $headerName = Resources::X_MS_META_HEADER_PREFIX; - if ( strpos($value, "\r") !== false - || strpos($value, "\n") !== false - ) { - throw new \InvalidArgumentException(Resources::INVALID_META_MSG); - } - - $headerName .= strtolower($key); - $metadataHeaders[$headerName] = $value; - } - } - - return $metadataHeaders; - } - - /** - * Gets metadata array by parsing them from given headers. - * - * @param array $headers HTTP headers containing metadata elements. - * - * @return array. - */ - public function getMetadataArray($headers) - { - $metadata = array(); - foreach ($headers as $key => $value) { - $isMetadataHeader = Utilities::startsWith( - strtolower($key), - Resources::X_MS_META_HEADER_PREFIX - ); - - if ($isMetadataHeader) { - $MetadataName = str_replace( - Resources::X_MS_META_HEADER_PREFIX, - Resources::EMPTY_STRING, - strtolower($key) - ); - - $metadata[$MetadataName] = $value; - } - } - - return $metadata; - } - - /** - * Validates the provided metadata array. - * - * @param mix $metadata The metadata array. - * - * @return none - */ - public function validateMetadata($metadata) - { - if (!is_null($metadata)) { - Validate::isArray($metadata, 'metadata'); - } else { - $metadata = array(); - } - - foreach ($metadata as $key => $value) { - Validate::isString($key, 'metadata key'); - Validate::isString($value, 'metadata value'); - } - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceSettings.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceSettings.php deleted file mode 100644 index 29355a83..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/ServiceSettings.php +++ /dev/null @@ -1,287 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\Resources; - -/** - * Base class for all REST services settings. - * - * Derived classes must implement the following members: - * 1- $isInitialized: A static property that indicates whether the class's static - * members have been initialized. - * 2- init(): A protected static method that initializes static members. - * 3- $validSettingKeys: A static property that contains valid setting keys for this - * service. - * 4- createFromConnectionString($connectionString): A public static function that - * takes a connection string and returns the created settings object. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -abstract class ServiceSettings -{ - /** - * Throws an exception if the connection string format does not match any of the - * available formats. - * - * @param type $connectionString The invalid formatted connection string. - * - * @return none - * - * @throws \RuntimeException - */ - protected static function noMatch($connectionString) - { - throw new \RuntimeException( - sprintf(Resources::MISSING_CONNECTION_STRING_SETTINGS, $connectionString) - ); - } - - /** - * Parses the connection string and then validate that the parsed keys belong to - * the $validSettingKeys - * - * @param string $connectionString The user provided connection string. - * - * @return array The tokenized connection string keys. - * - * @throws \RuntimeException - */ - protected static function parseAndValidateKeys($connectionString) - { - // Initialize the static values if they are not initialized yet. - if (!static::$isInitialized) { - static::init(); - static::$isInitialized = true; - } - - $tokenizedSettings = ConnectionStringParser::parseConnectionString( - 'connectionString', - $connectionString - ); - - // Assure that all given keys are valid. - foreach ($tokenizedSettings as $key => $value) { - if (!Utilities::inArrayInsensitive($key, static::$validSettingKeys) ) { - throw new \RuntimeException( - sprintf( - Resources::INVALID_CONNECTION_STRING_SETTING_KEY, - $key, - implode("\n", static::$validSettingKeys) - ) - ); - } - } - - return $tokenizedSettings; - } - - /** - * Creates an anonymous function that acts as predicate. - * - * @param array $requirements The array of conditions to satisfy. - * @param boolean $isRequired Either these conditions are all required or all - * optional. - * @param boolean $atLeastOne Indicates that at least one requirement must - * succeed. - * - * @return callable - */ - protected static function getValidator($requirements, $isRequired, $atLeastOne) - { - // @codingStandardsIgnoreStart - - return function ($userSettings) - use ($requirements, $isRequired, $atLeastOne) { - $oneFound = false; - $result = array_change_key_case($userSettings); - foreach ($requirements as $requirement) { - $settingName = strtolower($requirement[Resources::SETTING_NAME]); - - // Check if the setting name exists in the provided user settings. - if (array_key_exists($settingName, $result)) { - // Check if the provided user setting value is valid. - $validationFunc = $requirement[Resources::SETTING_CONSTRAINT]; - $isValid = $validationFunc($result[$settingName]); - - if ($isValid) { - // Remove the setting as indicator for successful validation. - unset($result[$settingName]); - $oneFound = true; - } - } else { - // If required then fail because the setting does not exist - if ($isRequired) { - return null; - } - } - } - - if ($atLeastOne) { - // At least one requirement must succeed, otherwise fail. - return $oneFound ? $result : null; - } else { - return $result; - } - }; - - // @codingStandardsIgnoreEnd - } - - /** - * Creates at lease one succeed predicate for the provided list of requirements. - * - * @return callable - */ - protected static function atLeastOne() - { - $allSettings = func_get_args(); - return self::getValidator($allSettings, false, true); - } - - /** - * Creates an optional predicate for the provided list of requirements. - * - * @return callable - */ - protected static function optional() - { - $optionalSettings = func_get_args(); - return self::getValidator($optionalSettings, false, false); - } - - /** - * Creates an required predicate for the provided list of requirements. - * - * @return callable - */ - protected static function allRequired() - { - $requiredSettings = func_get_args(); - return self::getValidator($requiredSettings, true, false); - } - - /** - * Creates a setting value condition using the passed predicate. - * - * @param string $name The setting key name. - * @param callable $predicate The setting value predicate. - * - * @return array - */ - protected static function settingWithFunc($name, $predicate) - { - $requirement = array(); - $requirement[Resources::SETTING_NAME] = $name; - $requirement[Resources::SETTING_CONSTRAINT] = $predicate; - - return $requirement; - } - - /** - * Creates a setting value condition that validates it is one of the - * passed valid values. - * - * @param string $name The setting key name. - * - * @return array - */ - protected static function setting($name) - { - $validValues = func_get_args(); - - // Remove $name argument. - unset($validValues[0]); - - $validValuesCount = func_num_args(); - - $predicate = function ($settingValue) use ($validValuesCount, $validValues) { - if (empty($validValues)) { - // No restrictions, succeed, - return true; - } - - // Check to find if the $settingValue is valid or not. The index must - // start from 1 as unset deletes the value but does not update the array - // indecies. - for ($index = 1; $index < $validValuesCount; $index++) { - if ($settingValue == $validValues[$index]) { - // $settingValue is found in valid values set, succeed. - return true; - } - } - - throw new \RuntimeException( - sprintf( - Resources::INVALID_CONFIG_VALUE, - $settingValue, - implode("\n", $validValues) - ) - ); - - // $settingValue is missing in valid values set, fail. - return false; - }; - - return self::settingWithFunc($name, $predicate); - } - - /** - * Tests to see if a given list of settings matches a set of filters exactly. - * - * @param array $settings The settings to check. - * - * @return boolean If any filter returns null, false. If there are any settings - * left over after all filters are processed, false. Otherwise true. - */ - protected static function matchedSpecification($settings) - { - $constraints = func_get_args(); - - // Remove first element which corresponds to $settings - unset($constraints[0]); - - foreach ($constraints as $constraint) { - $remainingSettings = $constraint($settings); - - if (is_null($remainingSettings)) { - return false; - } else { - $settings = $remainingSettings; - } - } - - if (empty($settings)) { - return true; - } - - return false; - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/StorageServiceSettings.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/StorageServiceSettings.php deleted file mode 100644 index 818399d7..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/StorageServiceSettings.php +++ /dev/null @@ -1,487 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\ConnectionStringParser; -use WindowsAzure\Common\Internal\Resources; - -/** - * Represents the settings used to sign and access a request against the storage - * service. For more information about storage service connection strings check this - * page: http://msdn.microsoft.com/en-us/library/ee758697 - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class StorageServiceSettings extends ServiceSettings -{ - /** - * The storage service name. - * - * @var string - */ - private $_name; - - /** - * A base64 representation. - * - * @var string - */ - private $_key; - - /** - * The endpoint for the blob service. - * - * @var string - */ - private $_blobEndpointUri; - - /** - * The endpoint for the queue service. - * - * @var string - */ - private $_queueEndpointUri; - - /** - * The endpoint for the table service. - * - * @var string - */ - private $_tableEndpointUri; - - /** - * @var StorageServiceSettings - */ - private static $_devStoreAccount; - - /** - * Validator for the UseDevelopmentStorage setting. Must be "true". - * - * @var array - */ - private static $_useDevelopmentStorageSetting; - - /** - * Validator for the DevelopmentStorageProxyUri setting. Must be a valid Uri. - * - * @var array - */ - private static $_developmentStorageProxyUriSetting; - - /** - * Validator for the DefaultEndpointsProtocol setting. Must be either "http" - * or "https". - * - * @var array - */ - private static $_defaultEndpointsProtocolSetting; - - /** - * Validator for the AccountName setting. No restrictions. - * - * @var array - */ - private static $_accountNameSetting; - - /** - * Validator for the AccountKey setting. Must be a valid base64 string. - * - * @var array - */ - private static $_accountKeySetting; - - /** - * Validator for the BlobEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_blobEndpointSetting; - - /** - * Validator for the QueueEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_queueEndpointSetting; - - /** - * Validator for the TableEndpoint setting. Must be a valid Uri. - * - * @var array - */ - private static $_tableEndpointSetting; - - /** - * @var boolean - */ - protected static $isInitialized = false; - - /** - * Holds the expected setting keys. - * - * @var array - */ - protected static $validSettingKeys = array(); - - /** - * Initializes static members of the class. - * - * @return none - */ - protected static function init() - { - self::$_useDevelopmentStorageSetting = self::setting( - Resources::USE_DEVELOPMENT_STORAGE_NAME, - 'true' - ); - - self::$_developmentStorageProxyUriSetting = self::settingWithFunc( - Resources::DEVELOPMENT_STORAGE_PROXY_URI_NAME, - Validate::getIsValidUri() - ); - - self::$_defaultEndpointsProtocolSetting = self::setting( - Resources::DEFAULT_ENDPOINTS_PROTOCOL_NAME, - 'http', 'https' - ); - - self::$_accountNameSetting = self::setting(Resources::ACCOUNT_NAME_NAME); - - self::$_accountKeySetting = self::settingWithFunc( - Resources::ACCOUNT_KEY_NAME, - // base64_decode will return false if the $key is not in base64 format. - function ($key) { - $isValidBase64String = base64_decode($key, true); - if ($isValidBase64String) { - return true; - } else { - throw new \RuntimeException( - sprintf(Resources::INVALID_ACCOUNT_KEY_FORMAT, $key) - ); - } - } - ); - - self::$_blobEndpointSetting = self::settingWithFunc( - Resources::BLOB_ENDPOINT_NAME, - Validate::getIsValidUri() - ); - - self::$_queueEndpointSetting = self::settingWithFunc( - Resources::QUEUE_ENDPOINT_NAME, - Validate::getIsValidUri() - ); - - self::$_tableEndpointSetting = self::settingWithFunc( - Resources::TABLE_ENDPOINT_NAME, - Validate::getIsValidUri() - ); - - self::$validSettingKeys[] = Resources::USE_DEVELOPMENT_STORAGE_NAME; - self::$validSettingKeys[] = Resources::DEVELOPMENT_STORAGE_PROXY_URI_NAME; - self::$validSettingKeys[] = Resources::DEFAULT_ENDPOINTS_PROTOCOL_NAME; - self::$validSettingKeys[] = Resources::ACCOUNT_NAME_NAME; - self::$validSettingKeys[] = Resources::ACCOUNT_KEY_NAME; - self::$validSettingKeys[] = Resources::BLOB_ENDPOINT_NAME; - self::$validSettingKeys[] = Resources::QUEUE_ENDPOINT_NAME; - self::$validSettingKeys[] = Resources::TABLE_ENDPOINT_NAME; - } - - /** - * Creates new storage service settings instance. - * - * @param string $name The storage service name. - * @param string $key The storage service key. - * @param string $blobEndpointUri The sotrage service blob endpoint. - * @param string $queueEndpointUri The sotrage service queue endpoint. - * @param string $tableEndpointUri The sotrage service table endpoint. - */ - public function __construct( - $name, - $key, - $blobEndpointUri, - $queueEndpointUri, - $tableEndpointUri - ) { - $this->_name = $name; - $this->_key = $key; - $this->_blobEndpointUri = $blobEndpointUri; - $this->_queueEndpointUri = $queueEndpointUri; - $this->_tableEndpointUri = $tableEndpointUri; - } - - /** - * Returns a StorageServiceSettings with development storage credentials using - * the specified proxy Uri. - * - * @param string $proxyUri The proxy endpoint to use. - * - * @return StorageServiceSettings - */ - private static function _getDevelopmentStorageAccount($proxyUri) - { - if (is_null($proxyUri)) { - return self::developmentStorageAccount(); - } - - $scheme = parse_url($proxyUri, PHP_URL_SCHEME); - $host = parse_url($proxyUri, PHP_URL_HOST); - $prefix = $scheme . "://" . $host; - - return new StorageServiceSettings( - Resources::DEV_STORE_NAME, - Resources::DEV_STORE_KEY, - $prefix . ':10000/devstoreaccount1/', - $prefix . ':10001/devstoreaccount1/', - $prefix . ':10002/devstoreaccount1/' - ); - } - - /** - * Gets a StorageServiceSettings object that references the development storage - * account. - * - * @return StorageServiceSettings - */ - public static function developmentStorageAccount() - { - if (is_null(self::$_devStoreAccount)) { - self::$_devStoreAccount = self::_getDevelopmentStorageAccount( - Resources::DEV_STORE_URI - ); - } - - return self::$_devStoreAccount; - } - - /** - * Gets the default service endpoint using the specified protocol and account - * name. - * - * @param array $settings The service settings. - * @param string $dns The service DNS. - * - * @return string - */ - private static function _getDefaultServiceEndpoint($settings, $dns) - { - $scheme = Utilities::tryGetValueInsensitive( - Resources::DEFAULT_ENDPOINTS_PROTOCOL_NAME, - $settings - ); - $accountName = Utilities::tryGetValueInsensitive( - Resources::ACCOUNT_NAME_NAME, - $settings - ); - - return sprintf(Resources::SERVICE_URI_FORMAT, $scheme, $accountName, $dns); - } - - /** - * Creates StorageServiceSettings object given endpoints uri. - * - * @param array $settings The service settings. - * @param string $blobEndpointUri The blob endpoint uri. - * @param string $queueEndpointUri The queue endpoint uri. - * @param string $tableEndpointUri The table endpoint uri. - * - * @return \WindowsAzure\Common\Internal\StorageServiceSettings - */ - private static function _createStorageServiceSettings( - $settings, - $blobEndpointUri = null, - $queueEndpointUri = null, - $tableEndpointUri = null - ) { - $blobEndpointUri = Utilities::tryGetValueInsensitive( - Resources::BLOB_ENDPOINT_NAME, - $settings, - $blobEndpointUri - ); - $queueEndpointUri = Utilities::tryGetValueInsensitive( - Resources::QUEUE_ENDPOINT_NAME, - $settings, - $queueEndpointUri - ); - $tableEndpointUri = Utilities::tryGetValueInsensitive( - Resources::TABLE_ENDPOINT_NAME, - $settings, - $tableEndpointUri - ); - $accountName = Utilities::tryGetValueInsensitive( - Resources::ACCOUNT_NAME_NAME, - $settings - ); - $accountKey = Utilities::tryGetValueInsensitive( - Resources::ACCOUNT_KEY_NAME, - $settings - ); - - return new StorageServiceSettings( - $accountName, - $accountKey, - $blobEndpointUri, - $queueEndpointUri, - $tableEndpointUri - ); - } - - /** - * Creates a StorageServiceSettings object from the given connection string. - * - * @param string $connectionString The storage settings connection string. - * @param string $endpoint Azure BLOB storage endpoint - * - * @return StorageServiceSettings - */ - public static function createFromConnectionString($connectionString, $endpoint = 'blob.core.windows.net') - { - $tokenizedSettings = self::parseAndValidateKeys($connectionString); - - // Devstore case - $matchedSpecs = self::matchedSpecification( - $tokenizedSettings, - self::allRequired(self::$_useDevelopmentStorageSetting), - self::optional(self::$_developmentStorageProxyUriSetting) - ); - if ($matchedSpecs) { - $proxyUri = Utilities::tryGetValueInsensitive( - Resources::DEVELOPMENT_STORAGE_PROXY_URI_NAME, - $tokenizedSettings - ); - - return self::_getDevelopmentStorageAccount($proxyUri); - } - - // Automatic case - $matchedSpecs = self::matchedSpecification( - $tokenizedSettings, - self::allRequired( - self::$_defaultEndpointsProtocolSetting, - self::$_accountNameSetting, - self::$_accountKeySetting - ), - self::optional( - self::$_blobEndpointSetting, - self::$_queueEndpointSetting, - self::$_tableEndpointSetting - ) - ); - if ($matchedSpecs) { - return self::_createStorageServiceSettings( - $tokenizedSettings, - self::_getDefaultServiceEndpoint( - $tokenizedSettings, - // Changed in library from UpdraftPlus for compatibility with German Azure - $endpoint - ), - self::_getDefaultServiceEndpoint( - $tokenizedSettings, - Resources::QUEUE_BASE_DNS_NAME - ), - self::_getDefaultServiceEndpoint( - $tokenizedSettings, - Resources::TABLE_BASE_DNS_NAME - ) - ); - } - - // Explicit case - $matchedSpecs = self::matchedSpecification( - $tokenizedSettings, - self::atLeastOne( - self::$_blobEndpointSetting, - self::$_queueEndpointSetting, - self::$_tableEndpointSetting - ), - self::allRequired( - self::$_accountNameSetting, - self::$_accountKeySetting - ) - ); - if ($matchedSpecs) { - return self::_createStorageServiceSettings($tokenizedSettings); - } - - self::noMatch($connectionString); - } - - /** - * Gets storage service name. - * - * @return string - */ - public function getName() - { - return $this->_name; - } - - /** - * Gets storage service key. - * - * @return string - */ - public function getKey() - { - return $this->_key; - } - - /** - * Gets storage service blob endpoint uri. - * - * @return string - */ - public function getBlobEndpointUri() - { - return $this->_blobEndpointUri; - } - - /** - * Gets storage service queue endpoint uri. - * - * @return string - */ - public function getQueueEndpointUri() - { - return $this->_queueEndpointUri; - } - - /** - * Gets storage service table endpoint uri. - * - * @return string - */ - public function getTableEndpointUri() - { - return $this->_tableEndpointUri; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Utilities.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Utilities.php deleted file mode 100644 index bfcca688..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Utilities.php +++ /dev/null @@ -1,731 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; - -/** - * Utilities for the project - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Utilities -{ - /** - * Returns the specified value of the $key passed from $array and in case that - * this $key doesn't exist, the default value is returned. - * - * @param array $array The array to be used. - * @param mix $key The array key. - * @param mix $default The value to return if $key is not found in $array. - * - * @static - * - * @return mix - */ - public static function tryGetValue($array, $key, $default = null) - { - return is_array($array) && array_key_exists($key, $array) - ? $array[$key] - : $default; - } - - /** - * Adds a url scheme if there is no scheme. - * - * @param string $url The URL. - * @param string $scheme The scheme. By default HTTP - * - * @static - * - * @return string - */ - public static function tryAddUrlScheme($url, $scheme = 'http') - { - $urlScheme = parse_url($url, PHP_URL_SCHEME); - - if (empty($urlScheme)) { - $url = "$scheme://" . $url; - } - - return $url; - } - - /** - * tries to get nested array with index name $key from $array. - * - * Returns empty array object if the value is NULL. - * - * @param string $key The index name. - * @param array $array The array object. - * - * @static - * - * @return array - */ - public static function tryGetArray($key, $array) - { - return Utilities::getArray(Utilities::tryGetValue($array, $key)); - } - - /** - * Adds the given key/value pair into array if the value doesn't satisfy empty(). - * - * This function just validates that the given $array is actually array. If it's - * NULL the function treats it as array. - * - * @param string $key The key. - * @param string $value The value. - * @param array &$array The array. If NULL will be used as array. - * - * @static - * - * @return none - */ - public static function addIfNotEmpty($key, $value, &$array) - { - if (!is_null($array)) { - Validate::isArray($array, 'array'); - } - - if (!empty($value)) { - $array[$key] = $value; - } - } - - /** - * Returns the specified value of the key chain passed from $array and in case - * that key chain doesn't exist, null is returned. - * - * @param array $array Array to be used. - * - * @static - * - * @return mix - */ - public static function tryGetKeysChainValue($array) - { - $arguments = func_get_args(); - $numArguments = func_num_args(); - - $currentArray = $array; - for ($i = 1; $i < $numArguments; $i++) { - if (is_array($currentArray)) { - if (array_key_exists($arguments[$i], $currentArray)) { - $currentArray = $currentArray[$arguments[$i]]; - } else { - return null; - } - } else { - return null; - } - } - - return $currentArray; - } - - /** - * Checks if the passed $string starts with $prefix - * - * @param string $string word to seaech in - * @param string $prefix prefix to be matched - * @param boolean $ignoreCase true to ignore case during the comparison; - * otherwise, false - * - * @static - * - * @return boolean - */ - public static function startsWith($string, $prefix, $ignoreCase = false) - { - if ($ignoreCase) { - $string = strtolower($string); - $prefix = strtolower($prefix); - } - return ($prefix == substr($string, 0, strlen($prefix))); - } - - /** - * Returns grouped items from passed $var - * - * @param array $var item to group - * - * @static - * - * @return array - */ - public static function getArray($var) - { - if (is_null($var) || empty($var)) { - return array(); - } - - foreach ($var as $value) { - if ((gettype($value) == 'object') - && (get_class($value) == 'SimpleXMLElement') - ) { - return (array) $var; - } else if (!is_array($value)) { - return array($var); - } - - } - - return $var; - } - - /** - * Unserializes the passed $xml into array. - * - * @param string $xml XML to be parsed. - * - * @static - * - * @return array - */ - public static function unserialize($xml) - { - $sxml = new \SimpleXMLElement($xml); - - return self::_sxml2arr($sxml); - } - - /** - * Converts a SimpleXML object to an Array recursively - * ensuring all sub-elements are arrays as well. - * - * @param string $sxml SimpleXML object - * @param array $arr Array into which to store results - * - * @static - * - * @return array - */ - private static function _sxml2arr($sxml, $arr = null) - { - foreach ((array) $sxml as $key => $value) { - if (is_object($value) || (is_array($value))) { - $arr[$key] = self::_sxml2arr($value); - } else { - $arr[$key] = $value; - } - } - - return $arr; - } - - /** - * Serializes given array into xml. The array indices must be string to use - * them as XML tags. - * - * @param array $array object to serialize represented in array. - * @param string $rootName name of the XML root element. - * @param string $defaultTag default tag for non-tagged elements. - * @param string $standalone adds 'standalone' header tag, values 'yes'/'no' - * - * @static - * - * @return string - */ - public static function serialize($array, $rootName, $defaultTag = null, - $standalone = null - ) { - $xmlVersion = '1.0'; - $xmlEncoding = 'UTF-8'; - - if (!is_array($array)) { - return false; - } - - $xmlw = new \XmlWriter(); - $xmlw->openMemory(); - $xmlw->startDocument($xmlVersion, $xmlEncoding, $standalone); - - $xmlw->startElement($rootName); - - self::_arr2xml($xmlw, $array, $defaultTag); - - $xmlw->endElement(); - - return $xmlw->outputMemory(true); - } - - /** - * Takes an array and produces XML based on it. - * - * @param XMLWriter $xmlw XMLWriter object that was previously instanted - * and is used for creating the XML. - * @param array $data Array to be converted to XML - * @param string $defaultTag Default XML tag to be used if none specified. - * - * @static - * - * @return void - */ - private static function _arr2xml(\XMLWriter $xmlw, $data, $defaultTag = null) - { - foreach ($data as $key => $value) { - if (strcmp($key, '@attributes') == 0) { - foreach ($value as $attributeName => $attributeValue) { - $xmlw->writeAttribute($attributeName, $attributeValue); - } - } else if (is_array($value)) { - if (!is_int($key)) { - if ($key != Resources::EMPTY_STRING) { - $xmlw->startElement($key); - } else { - $xmlw->startElement($defaultTag); - } - } - - self::_arr2xml($xmlw, $value); - - if (!is_int($key)) { - $xmlw->endElement(); - } - continue; - } else { - $xmlw->writeElement($key, $value); - } - } - } - - /** - * Converts string into boolean value. - * - * @param string $obj boolean value in string format. - * - * @static - * - * @return bool - */ - public static function toBoolean($obj) - { - return filter_var($obj, FILTER_VALIDATE_BOOLEAN); - } - - /** - * Converts string into boolean value. - * - * @param bool $obj boolean value to convert. - * - * @static - * - * @return string - */ - public static function booleanToString($obj) - { - return $obj ? 'true' : 'false'; - } - - /** - * Converts a given date string into \DateTime object - * - * @param string $date windows azure date ins string represntation. - * - * @static - * - * @return \DateTime - */ - public static function rfc1123ToDateTime($date) - { - $timeZone = new \DateTimeZone('GMT'); - $format = Resources::AZURE_DATE_FORMAT; - - return \DateTime::createFromFormat($format, $date, $timeZone); - } - - /** - * Generate ISO 8601 compliant date string in UTC time zone - * - * @param int $timestamp The unix timestamp to convert - * (for DateTime check date_timestamp_get). - * - * @static - * - * @return string - */ - public static function isoDate($timestamp = null) - { - $tz = date_default_timezone_get(); - date_default_timezone_set('UTC'); - - if (is_null($timestamp)) { - $timestamp = time(); - } - - $returnValue = str_replace( - '+00:00', '.0000000Z', date('c', $timestamp) - ); - date_default_timezone_set($tz); - return $returnValue; - } - - /** - * Converts a DateTime object into an Edm.DaeTime value in UTC timezone, - * represented as a string. - * - * @param \DateTime $value The datetime value. - * - * @static - * - * @return string - */ - public static function convertToEdmDateTime($value) - { - if (empty($value)) { - return $value; - } - - if (is_string($value)) { - $value = self::convertToDateTime($value); - } - - Validate::isDate($value); - - $cloned = clone $value; - $cloned->setTimezone(new \DateTimeZone('UTC')); - return str_replace('+0000', 'Z', $cloned->format(\DateTime::ISO8601)); - } - - /** - * Converts a string to a \DateTime object. Returns false on failure. - * - * @param string $value The string value to parse. - * - * @static - * - * @return \DateTime - */ - public static function convertToDateTime($value) - { - if ($value instanceof \DateTime) { - return $value; - } - - if (substr($value, -1) == 'Z') { - $value = substr($value, 0, strlen($value) - 1); - } - - return new \DateTime($value, new \DateTimeZone('UTC')); - } - - /** - * Converts string to stream handle. - * - * @param type $string The string contents. - * - * @static - * - * @return resource - */ - public static function stringToStream($string) - { - return fopen('data://text/plain,' . urlencode($string), 'rb'); - } - - /** - * Sorts an array based on given keys order. - * - * @param array $array The array to sort. - * @param array $order The keys order array. - * - * @return array - */ - public static function orderArray($array, $order) - { - $ordered = array(); - - foreach ($order as $key) { - if (array_key_exists($key, $array)) { - $ordered[$key] = $array[$key]; - } - } - - return $ordered; - } - - /** - * Checks if a value exists in an array. The comparison is done in a case - * insensitive manner. - * - * @param string $needle The searched value. - * @param array $haystack The array. - * - * @static - * - * @return boolean - */ - public static function inArrayInsensitive($needle, $haystack) - { - return in_array(strtolower($needle), array_map('strtolower', $haystack)); - } - - /** - * Checks if the given key exists in the array. The comparison is done in a case - * insensitive manner. - * - * @param string $key The value to check. - * @param array $search The array with keys to check. - * - * @static - * - * @return boolean - */ - public static function arrayKeyExistsInsensitive($key, $search) - { - return array_key_exists(strtolower($key), array_change_key_case($search)); - } - - /** - * Returns the specified value of the $key passed from $array and in case that - * this $key doesn't exist, the default value is returned. The key matching is - * done in a case insensitive manner. - * - * @param string $key The array key. - * @param array $haystack The array to be used. - * @param mix $default The value to return if $key is not found in $array. - * - * @static - * - * @return mix - */ - public static function tryGetValueInsensitive($key, $haystack, $default = null) - { - $array = array_change_key_case($haystack); - return Utilities::tryGetValue($array, strtolower($key), $default); - } - - /** - * Returns a string representation of a version 4 GUID, which uses random - * numbers.There are 6 reserved bits, and the GUIDs have this format: - * xxxxxxxx-xxxx-4xxx-[8|9|a|b]xxx-xxxxxxxxxxxx - * where 'x' is a hexadecimal digit, 0-9a-f. - * - * See http://tools.ietf.org/html/rfc4122 for more information. - * - * Note: This function is available on all platforms, while the - * com_create_guid() is only available for Windows. - * - * @static - * - * @return string A new GUID. - */ - public static function getGuid() - { - // @codingStandardsIgnoreStart - - return sprintf( - '%04x%04x-%04x-%04x-%02x%02x-%04x%04x%04x', - mt_rand(0, 65535), - mt_rand(0, 65535), // 32 bits for "time_low" - mt_rand(0, 65535), // 16 bits for "time_mid" - mt_rand(0, 4096) + 16384, // 16 bits for "time_hi_and_version", with - // the most significant 4 bits being 0100 - // to indicate randomly generated version - mt_rand(0, 64) + 128, // 8 bits for "clock_seq_hi", with - // the most significant 2 bits being 10, - // required by version 4 GUIDs. - mt_rand(0, 256), // 8 bits for "clock_seq_low" - mt_rand(0, 65535), // 16 bits for "node 0" and "node 1" - mt_rand(0, 65535), // 16 bits for "node 2" and "node 3" - mt_rand(0, 65535) // 16 bits for "node 4" and "node 5" - ); - - // @codingStandardsIgnoreEnd - } - - /** - * Creates a list of objects of type $class from the provided array using static - * create method. - * - * @param array $parsed The object in array representation - * @param string $class The class name. Must have static method create. - * - * @static - * - * @return array - */ - public static function createInstanceList($parsed, $class) - { - $list = array(); - - foreach ($parsed as $value) { - // We don't use this SDK on PHP 5.2 - // @codingStandardsIgnoreLine - $list[] = $class::create($value); - } - - return $list; - } - - /** - * Takes a string and return if it ends with the specified character/string. - * - * @param string $haystack The string to search in. - * @param string $needle postfix to match. - * @param boolean $ignoreCase Set true to ignore case during the comparison; - * otherwise, false - * - * @static - * - * @return boolean - */ - public static function endsWith($haystack, $needle, $ignoreCase = false) - { - if ($ignoreCase) { - $haystack = strtolower($haystack); - $needle = strtolower($needle); - } - $length = strlen($needle); - if ($length == 0) { - return true; - } - - return (substr($haystack, -$length) === $needle); - } - - /** - * Get id from entity object or string. - * If entity is object than validate type and return $entity->$method() - * If entity is string than return this string - * - * @param object|string $entity Entity with id property - * @param string $type Entity type to validate - * @param string $method Methods that gets id (getId by default) - * - * @return string - */ - public static function getEntityId($entity, $type, $method = 'getId') - { - if (is_string($entity)) { - return $entity; - } else { - Validate::isA($entity, $type, 'entity'); - Validate::methodExists($entity, $method, $type); - - return $entity->$method(); - } - } - - /** - * Generate a pseudo-random string of bytes using a cryptographically strong - * algorithm. - * - * @param int $length Length of the string in bytes - * - * @return string|boolean Generated string of bytes on success, or FALSE on - * failure. - */ - public static function generateCryptoKey($length) - { - return openssl_random_pseudo_bytes($length); - } - - - /** - * Encrypts $data with CTR encryption - * - * @param string $data Data to be encrypted - * @param string $key AES Encryption key - * @param string $initializationVector Initialization vector - * - * We ignore it for standards purposes because the function is apparently nowhere called - * @codingStandardsIgnoreStart - * - * @return string Encrypted data - */ - public static function ctrCrypt($data, $key, $initializationVector) - { - error_log("WindowsAzure\Common\Internal\Utilities::ctrCrypt called - code path thought to be impossible; linting needs re-enabling"); - - Validate::isString($data, 'data'); - Validate::isString($key, 'key'); - Validate::isString($initializationVector, 'initializationVector'); - - Validate::isTrue( - (strlen($key) == 16 || strlen($key) == 24 || strlen($key) == 32), - sprintf(Resources::INVALID_STRING_LENGTH, 'key', '16, 24, 32') - ); - - Validate::isTrue( - (strlen($initializationVector) == 16), - sprintf(Resources::INVALID_STRING_LENGTH, 'initializationVector', '16') - ); - - $blockCount = ceil(strlen($data) / 16); - - $ctrData = ''; - for ($i = 0; $i < $blockCount; ++$i) { - $ctrData .= $initializationVector; - - // increment Initialization Vector - $j = 15; - do { - $digit = ord($initializationVector[$j]) + 1; - $initializationVector[$j] = chr($digit & 0xFF); - - $j--; - } while (($digit == 0x100) && ($j >= 0)); - } - - $encryptCtrData = mcrypt_encrypt( - MCRYPT_RIJNDAEL_128, - $key, - $ctrData, - MCRYPT_MODE_ECB - ); - - return $data ^ $encryptCtrData; - } - - /** - * Convert base 256 number to decimal number. - * - * @codingStandardsIgnoreEnd - * - * @param string $number Base 256 number - * - * @return string Decimal number - */ - public static function base256ToDec($number) - { - Validate::isString($number, 'number'); - - $result = 0; - $base = 1; - for ($i = strlen($number) - 1; $i >= 0; $i--) { - $result = bcadd($result, bcmul(ord($number[$i]), $base)); - $base = bcmul($base, 256); - } - - return $result; - } - -} diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Validate.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Validate.php deleted file mode 100644 index 85a7b5b6..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Internal/Validate.php +++ /dev/null @@ -1,397 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Internal; -use WindowsAzure\Common\Internal\InvalidArgumentTypeException; -use WindowsAzure\Common\Internal\Resources; - -/** - * Validates aganist a condition and throws an exception in case of failure. - * - * @category Microsoft - * @package WindowsAzure\Common\Internal - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Validate -{ - /** - * Throws exception if the provided variable type is not array. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws InvalidArgumentTypeException. - * - * @return none - */ - public static function isArray($var, $name) - { - if (!is_array($var)) { - throw new InvalidArgumentTypeException(gettype(array()), $name); - } - } - - /** - * Throws exception if the provided variable type is not string. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws InvalidArgumentTypeException - * - * @return none - */ - public static function isString($var, $name) - { - try { - (string)$var; - } catch (\Exception $e) { - throw new InvalidArgumentTypeException(gettype(''), $name); - } - } - - /** - * Throws exception if the provided variable type is not boolean. - * - * @param mix $var variable to check against. - * - * @throws InvalidArgumentTypeException - * - * @return none - */ - public static function isBoolean($var) - { - (bool)$var; - } - - /** - * Throws exception if the provided variable is set to null. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws \InvalidArgumentException - * - * @return none - */ - public static function notNullOrEmpty($var, $name) - { - if (is_null($var) || empty($var)) { - throw new \InvalidArgumentException( - sprintf(Resources::NULL_OR_EMPTY_MSG, $name) - ); - } - } - - /** - * Throws exception if the provided variable is not double. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws \InvalidArgumentException - * - * @return none - */ - public static function isDouble($var, $name) - { - if (!is_numeric($var)) { - throw new InvalidArgumentTypeException('double', $name); - } - } - - /** - * Throws exception if the provided variable type is not integer. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws InvalidArgumentTypeException - * - * @return none - */ - public static function isInteger($var, $name) - { - try { - (int)$var; - } catch (\Exception $e) { - throw new InvalidArgumentTypeException(gettype(123), $name); - } - } - - /** - * Returns whether the variable is an empty or null string. - * - * @param string $var value. - * - * @return boolean - */ - public static function isNullOrEmptyString($var) - { - try { - (string)$var; - } catch (\Exception $e) { - return false; - } - - return (!isset($var) || trim($var)===''); - } - - /** - * Throws exception if the provided condition is not satisfied. - * - * @param bool $isSatisfied condition result. - * @param string $failureMessage the exception message - * - * @throws \Exception - * - * @return none - */ - public static function isTrue($isSatisfied, $failureMessage) - { - if (!$isSatisfied) { - throw new \InvalidArgumentException($failureMessage); - } - } - - /** - * Throws exception if the provided $date is not of type \DateTime - * - * @param mix $date variable to check against. - * - * @throws WindowsAzure\Common\Internal\InvalidArgumentTypeException - * - * @return none - */ - public static function isDate($date) - { - if (gettype($date) != 'object' || get_class($date) != 'DateTime') { - throw new InvalidArgumentTypeException('DateTime'); - } - } - - /** - * Throws exception if the provided variable is set to null. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws \InvalidArgumentException - * - * @return none - */ - public static function notNull($var, $name) - { - if (is_null($var)) { - throw new \InvalidArgumentException(sprintf(Resources::NULL_MSG, $name)); - } - } - - /** - * Throws exception if the object is not of the specified class type. - * - * @param mixed $objectInstance An object that requires class type validation. - * @param mixed $classInstance The instance of the class the the - * object instance should be. - * @param string $name The name of the object. - * - * @throws \InvalidArgumentException - * - * @return none - */ - public static function isInstanceOf($objectInstance, $classInstance, $name) - { - Validate::notNull($classInstance, 'classInstance'); - if (is_null($objectInstance)) { - return true; - } - - $objectType = gettype($objectInstance); - $classType = gettype($classInstance); - - if ($objectType === $classType) { - return true; - } else { - throw new \InvalidArgumentException( - sprintf( - Resources::INSTANCE_TYPE_VALIDATION_MSG, - $name, - $objectType, - $classType - ) - ); - } - } - - /** - * Creates a anonymous function that check if the given uri is valid or not. - * - * @return callable - */ - public static function getIsValidUri() - { - return function ($uri) { - return Validate::isValidUri($uri); - }; - } - - /** - * Throws exception if the string is not of a valid uri. - * - * @param string $uri String to check. - * - * @throws \InvalidArgumentException - * - * @return boolean - */ - public static function isValidUri($uri) - { - $isValid = filter_var($uri, FILTER_VALIDATE_URL); - - if ($isValid) { - return true; - } else { - throw new \RuntimeException( - sprintf(Resources::INVALID_CONFIG_URI, $uri) - ); - } - } - - /** - * Throws exception if the provided variable type is not object. - * - * @param mix $var The variable to check. - * @param string $name The parameter name. - * - * @throws InvalidArgumentTypeException. - * - * @return boolean - */ - public static function isObject($var, $name) - { - if (!is_object($var)) { - throw new InvalidArgumentTypeException('object', $name); - } - - return true; - } - - /** - * Throws exception if the object is not of the specified class type. - * - * @param mixed $objectInstance An object that requires class type validation. - * @param string $class The class the object instance should be. - * @param string $name The parameter name. - * - * @throws \InvalidArgumentException - * - * @return boolean - */ - public static function isA($objectInstance, $class, $name) - { - Validate::isString($class, 'class'); - Validate::notNull($objectInstance, 'objectInstance'); - Validate::isObject($objectInstance, 'objectInstance'); - - $objectType = get_class($objectInstance); - - if (is_a($objectInstance, $class)) { - return true; - } else { - throw new \InvalidArgumentException( - sprintf( - Resources::INSTANCE_TYPE_VALIDATION_MSG, - $name, - $objectType, - $class - ) - ); - } - } - - /** - * Validate if method exists in object - * - * @param object $objectInstance An object that requires method existing - * validation - * @param string $method Method name - * @param string $name The parameter name - * - * @return boolean - */ - public static function methodExists($objectInstance, $method, $name) - { - Validate::isString($method, 'method'); - Validate::notNull($objectInstance, 'objectInstance'); - Validate::isObject($objectInstance, 'objectInstance'); - - if (method_exists($objectInstance, $method)) { - return true; - } else { - throw new \InvalidArgumentException( - sprintf( - Resources::ERROR_METHOD_NOT_FOUND, - $method, - $name - ) - ); - } - } - - /** - * Validate if string is date formatted - * - * @param string $value Value to validate - * @param string $name Name of parameter to insert in erro message - * - * @throws \InvalidArgumentException - * - * @return boolean - */ - public static function isDateString($value, $name) - { - Validate::isString($value, 'value'); - - try { - new \DateTime($value); - return true; - } - catch (\Exception $e) { - throw new \InvalidArgumentException( - sprintf( - Resources::ERROR_INVALID_DATE_STRING, - $name, - $value - ) - ); - } - } - -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/GetServicePropertiesResult.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/GetServicePropertiesResult.php deleted file mode 100644 index b4b89da7..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/GetServicePropertiesResult.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Models; -use WindowsAzure\Common\Models\ServiceProperties; - -/** - * Result from calling GetQueueProperties REST wrapper. - * - * @category Microsoft - * @package WindowsAzure\Common\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class GetServicePropertiesResult -{ - private $_serviceProperties; - - /** - * Creates object from $parsedResponse. - * - * @param array $parsedResponse XML response parsed into array. - * - * @return WindowsAzure\Common\Models\GetServicePropertiesResult - */ - public static function create($parsedResponse) - { - $result = new GetServicePropertiesResult(); - $result->_serviceProperties = ServiceProperties::create($parsedResponse); - - return $result; - } - - /** - * Gets service properties object. - * - * @return WindowsAzure\Common\Models\ServiceProperties - */ - public function getValue() - { - return $this->_serviceProperties; - } - - /** - * Sets service properties object. - * - * @param ServiceProperties $serviceProperties object to use. - * - * @return none - */ - public function setValue($serviceProperties) - { - $this->_serviceProperties = clone $serviceProperties; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Logging.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Logging.php deleted file mode 100644 index 133fc652..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Logging.php +++ /dev/null @@ -1,229 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Models; -use WindowsAzure\Common\Models\RetentionPolicy; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds elements of queue properties logging field. - * - * @category Microsoft - * @package WindowsAzure\Common\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Logging -{ - /** - * The version of Storage Analytics to configure - * - * @var string - */ - private $_version; - - /** - * Applies only to logging configuration. Indicates whether all delete requests - * should be logged. - * - * @var bool - */ - private $_delete; - - /** - * Applies only to logging configuration. Indicates whether all read requests - * should be logged. - * - * @var bool. - */ - private $_read; - - /** - * Applies only to logging configuration. Indicates whether all write requests - * should be logged. - * - * @var bool - */ - private $_write; - - /** - * @var WindowsAzure\Common\Models\RetentionPolicy - */ - private $_retentionPolicy; - - /** - * Creates object from $parsedResponse. - * - * @param array $parsedResponse XML response parsed into array. - * - * @return WindowsAzure\Common\Models\Logging - */ - public static function create($parsedResponse) - { - $result = new Logging(); - $result->setVersion($parsedResponse['Version']); - $result->setDelete(Utilities::toBoolean($parsedResponse['Delete'])); - $result->setRead(Utilities::toBoolean($parsedResponse['Read'])); - $result->setWrite(Utilities::toBoolean($parsedResponse['Write'])); - $result->setRetentionPolicy( - RetentionPolicy::create($parsedResponse['RetentionPolicy']) - ); - - return $result; - } - - /** - * Gets retention policy - * - * @return WindowsAzure\Common\Models\RetentionPolicy - * - */ - public function getRetentionPolicy() - { - return $this->_retentionPolicy; - } - - /** - * Sets retention policy - * - * @param RetentionPolicy $policy object to use - * - * @return none. - */ - public function setRetentionPolicy($policy) - { - $this->_retentionPolicy = $policy; - } - - /** - * Gets write - * - * @return bool. - */ - public function getWrite() - { - return $this->_write; - } - - /** - * Sets write - * - * @param bool $write new value. - * - * @return none. - */ - public function setWrite($write) - { - $this->_write = $write; - } - - /** - * Gets read - * - * @return bool. - */ - public function getRead() - { - return $this->_read; - } - - /** - * Sets read - * - * @param bool $read new value. - * - * @return none. - */ - public function setRead($read) - { - $this->_read = $read; - } - - /** - * Gets delete - * - * @return bool. - */ - public function getDelete() - { - return $this->_delete; - } - - /** - * Sets delete - * - * @param bool $delete new value. - * - * @return none. - */ - public function setDelete($delete) - { - $this->_delete = $delete; - } - - /** - * Gets version - * - * @return string. - */ - public function getVersion() - { - return $this->_version; - } - - /** - * Sets version - * - * @param string $version new value. - * - * @return none. - */ - public function setVersion($version) - { - $this->_version = $version; - } - - /** - * Converts this object to array with XML tags - * - * @return array. - */ - public function toArray() - { - return array( - 'Version' => $this->_version, - 'Delete' => Utilities::booleanToString($this->_delete), - 'Read' => Utilities::booleanToString($this->_read), - 'Write' => Utilities::booleanToString($this->_write), - 'RetentionPolicy' => !empty($this->_retentionPolicy) - ? $this->_retentionPolicy->toArray() - : null - ); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Metrics.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Metrics.php deleted file mode 100644 index 4e92ff73..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/Metrics.php +++ /dev/null @@ -1,202 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Models; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds elements of queue properties metrics field. - * - * @category Microsoft - * @package WindowsAzure\Common\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class Metrics -{ - /** - * The version of Storage Analytics to configure - * - * @var string - */ - private $_version; - - /** - * Indicates whether metrics is enabled for the storage service - * - * @var bool - */ - private $_enabled; - - /** - * Indicates whether a retention policy is enabled for the storage service - * - * @var bool - */ - private $_includeAPIs; - - /** - * @var WindowsAzure\Common\Models\RetentionPolicy - */ - private $_retentionPolicy; - - /** - * Creates object from $parsedResponse. - * - * @param array $parsedResponse XML response parsed into array. - * - * @return WindowsAzure\Common\Models\Metrics - */ - public static function create($parsedResponse) - { - $result = new Metrics(); - $result->setVersion($parsedResponse['Version']); - $result->setEnabled(Utilities::toBoolean($parsedResponse['Enabled'])); - if ($result->getEnabled()) { - $result->setIncludeAPIs( - Utilities::toBoolean($parsedResponse['IncludeAPIs']) - ); - } - $result->setRetentionPolicy( - RetentionPolicy::create($parsedResponse['RetentionPolicy']) - ); - - return $result; - } - - /** - * Gets retention policy - * - * @return WindowsAzure\Common\Models\RetentionPolicy - * - */ - public function getRetentionPolicy() - { - return $this->_retentionPolicy; - } - - /** - * Sets retention policy - * - * @param RetentionPolicy $policy object to use - * - * @return none. - */ - public function setRetentionPolicy($policy) - { - $this->_retentionPolicy = $policy; - } - - /** - * Gets include APIs. - * - * @return bool. - */ - public function getIncludeAPIs() - { - return $this->_includeAPIs; - } - - /** - * Sets include APIs. - * - * @param $bool $includeAPIs value to use. - * - * @return none. - */ - public function setIncludeAPIs($includeAPIs) - { - $this->_includeAPIs = $includeAPIs; - } - - /** - * Gets enabled. - * - * @return bool. - */ - public function getEnabled() - { - return $this->_enabled; - } - - /** - * Sets enabled. - * - * @param bool $enabled value to use. - * - * @return none. - */ - public function setEnabled($enabled) - { - $this->_enabled = $enabled; - } - - /** - * Gets version - * - * @return string. - */ - public function getVersion() - { - return $this->_version; - } - - /** - * Sets version - * - * @param string $version new value. - * - * @return none. - */ - public function setVersion($version) - { - $this->_version = $version; - } - - /** - * Converts this object to array with XML tags - * - * @return array. - */ - public function toArray() - { - $array = array( - 'Version' => $this->_version, - 'Enabled' => Utilities::booleanToString($this->_enabled) - ); - if ($this->_enabled) { - $array['IncludeAPIs'] = Utilities::booleanToString($this->_includeAPIs); - } - $array['RetentionPolicy'] = !empty($this->_retentionPolicy) - ? $this->_retentionPolicy->toArray() - : null; - - return $array; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/OAuthAccessToken.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/OAuthAccessToken.php deleted file mode 100644 index 3f48aee4..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/OAuthAccessToken.php +++ /dev/null @@ -1,153 +0,0 @@ - - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Models; -use WindowsAzure\Common\Internal\Resources; - -/** - * Holds OAuth access token data. - * - * @category Microsoft - * @package WindowsAzure\Common\Models - * @author Azure PHP SDK - * @copyright Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class OAuthAccessToken -{ - /** - * Access token itself - * - * @var string - */ - private $_accessToken; - - /** - * Unix time the access token valid before. - * - * @var int - */ - private $_expiresIn; - - /** - * Scope of access token - * - * @var string. - */ - private $_scope; - - /** - * Creates object from $parsedResponse. - * - * @param array $parsedResponse JSON response parsed into array. - * - * @return WindowsAzure\Common\Models\OAuthAccessToken - */ - public static function create($parsedResponse) - { - $result = new OAuthAccessToken(); - - $result->setAccessToken($parsedResponse[Resources::OAUTH_ACCESS_TOKEN]); - $result->setExpiresIn($parsedResponse[Resources::OAUTH_EXPIRES_IN] + time()); - $result->setScope($parsedResponse[Resources::OAUTH_SCOPE]); - - return $result; - } - - /** - * Gets access token - * - * @return string - */ - public function getAccessToken() - { - return $this->_accessToken; - } - - - /** - * Sets access token - * - * @param string $accessToken OAuth access token - * - * @return none - */ - public function setAccessToken($accessToken) - { - $this->_accessToken = $accessToken; - } - - - /** - * Gets expired date of access token in unixdate - * - * @return int - * - */ - public function getExpiresIn() - { - return $this->_expiresIn; - } - - - /** - * Sets access token expires date - * - * @param int $expiresIn OAuth access token expire date - * - * @return none - */ - public function setExpiresIn($expiresIn) - { - $this->_expiresIn = $expiresIn; - } - - /** - * Gets access token scope - * - * @return string - * - */ - public function getScope() - { - return $this->_scope; - } - - - /** - * Sets access token scope - * - * @param string $scope OAuth access token scope - * - * @return none - */ - public function setScope($scope) - { - $this->_scope = $scope; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/RetentionPolicy.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/RetentionPolicy.php deleted file mode 100644 index d13c3980..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/RetentionPolicy.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Models; -use WindowsAzure\Common\Internal\Utilities; - -/** - * Holds elements of queue properties retention policy field. - * - * @category Microsoft - * @package WindowsAzure\Common\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class RetentionPolicy -{ - /** - * Indicates whether a retention policy is enabled for the storage service - * - * @var bool. - */ - private $_enabled; - - /** - * If $_enabled is true then this field indicates the number of days that metrics - * or logging data should be retained. All data older than this value will be - * deleted. The minimum value you can specify is 1; - * the largest value is 365 (one year) - * - * @var int - */ - private $_days; - - /** - * Creates object from $parsedResponse. - * - * @param array $parsedResponse XML response parsed into array. - * - * @return WindowsAzure\Common\Models\RetentionPolicy - */ - public static function create($parsedResponse) - { - $result = new RetentionPolicy(); - $result->setEnabled(Utilities::toBoolean($parsedResponse['Enabled'])); - if ($result->getEnabled()) { - $result->setDays(intval($parsedResponse['Days'])); - } - - return $result; - } - - /** - * Gets enabled. - * - * @return bool. - */ - public function getEnabled() - { - return $this->_enabled; - } - - /** - * Sets enabled. - * - * @param bool $enabled value to use. - * - * @return none. - */ - public function setEnabled($enabled) - { - $this->_enabled = $enabled; - } - - /** - * Gets days field. - * - * @return int - */ - public function getDays() - { - return $this->_days; - } - - /** - * Sets days field. - * - * @param int $days value to use. - * - * @return none - */ - public function setDays($days) - { - $this->_days = $days; - } - - /** - * Converts this object to array with XML tags - * - * @return array. - */ - public function toArray() - { - $array = array('Enabled' => Utilities::booleanToString($this->_enabled)); - if (isset($this->_days)) { - $array['Days'] = strval($this->_days); - } - - return $array; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/ServiceProperties.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/ServiceProperties.php deleted file mode 100644 index b833754e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/Models/ServiceProperties.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common\Models; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Models\Logging; -use WindowsAzure\Common\Models\Metrics; -use WindowsAzure\Common\Internal\Serialization\XmlSerializer; - -/** - * Encapsulates service properties - * - * @category Microsoft - * @package WindowsAzure\Common\Models - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ServiceProperties -{ - private $_logging; - private $_metrics; - public static $xmlRootName = 'StorageServiceProperties'; - - /** - * Creates ServiceProperties object from parsed XML response. - * - * @param array $parsedResponse XML response parsed into array. - * - * @return WindowsAzure\Common\Models\ServiceProperties. - */ - public static function create($parsedResponse) - { - $result = new ServiceProperties(); - $result->setLogging(Logging::create($parsedResponse['Logging'])); - $result->setMetrics(Metrics::create($parsedResponse['Metrics'])); - - return $result; - } - - /** - * Gets logging element. - * - * @return WindowsAzure\Common\Models\Logging. - */ - public function getLogging() - { - return $this->_logging; - } - - /** - * Sets logging element. - * - * @param WindowsAzure\Common\Models\Logging $logging new element. - * - * @return none. - */ - public function setLogging($logging) - { - $this->_logging = clone $logging; - } - - /** - * Gets metrics element. - * - * @return WindowsAzure\Common\Models\Metrics. - */ - public function getMetrics() - { - return $this->_metrics; - } - - /** - * Sets metrics element. - * - * @param WindowsAzure\Common\Models\Metrics $metrics new element. - * - * @return none. - */ - public function setMetrics($metrics) - { - $this->_metrics = clone $metrics; - } - - /** - * Converts this object to array with XML tags - * - * @return array. - */ - public function toArray() - { - return array( - 'Logging' => !empty($this->_logging) ? $this->_logging->toArray() : null, - 'Metrics' => !empty($this->_metrics) ? $this->_metrics->toArray() : null - ); - } - - /** - * Converts this current object to XML representation. - * - * @param XmlSerializer $xmlSerializer The XML serializer. - * - * @return string - */ - public function toXml($xmlSerializer) - { - $properties = array(XmlSerializer::ROOT_NAME => self::$xmlRootName); - - return $xmlSerializer->serialize($this->toArray(), $properties); - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServiceException.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServiceException.php deleted file mode 100644 index 5857e602..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServiceException.php +++ /dev/null @@ -1,84 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common; -use WindowsAzure\Common\Internal\Resources; - -/** - * Fires when the response code is incorrect. - * - * @category Microsoft - * @package WindowsAzure\Common - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ServiceException extends \LogicException -{ - private $_error; - private $_reason; - - /** - * Constructor - * - * @param string $errorCode status error code. - * @param string $error string value of the error code. - * @param string $reason detailed message for the error. - * - * @return WindowsAzure\Common\ServiceException - */ - public function __construct($errorCode, $error = null, $reason = null) - { - parent::__construct( - sprintf(Resources::AZURE_ERROR_MSG, $errorCode, $error, $reason) - ); - $this->code = $errorCode; - $this->_error = $error; - $this->_reason = $reason; - } - - /** - * Gets error text. - * - * @return string - */ - public function getErrorText() - { - return $this->_error; - } - - /** - * Gets detailed error reason. - * - * @return string - */ - public function getErrorReason() - { - return $this->_reason; - } -} - - diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServicesBuilder.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServicesBuilder.php deleted file mode 100644 index 44566d1e..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/Common/ServicesBuilder.php +++ /dev/null @@ -1,505 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -namespace WindowsAzure\Common; -use WindowsAzure\Blob\BlobRestProxy; -use WindowsAzure\Common\Internal\Resources; -use WindowsAzure\Common\Internal\Validate; -use WindowsAzure\Common\Internal\Utilities; -use WindowsAzure\Common\Internal\Http\HttpClient; -use WindowsAzure\Common\Internal\Filters\DateFilter; -use WindowsAzure\Common\Internal\Filters\HeadersFilter; -use WindowsAzure\Common\Internal\Filters\AuthenticationFilter; -use WindowsAzure\Common\Internal\Filters\WrapFilter; -use WindowsAzure\Common\Internal\InvalidArgumentTypeException; -use WindowsAzure\Common\Internal\Serialization\XmlSerializer; -use WindowsAzure\Common\Internal\Authentication\SharedKeyAuthScheme; -use WindowsAzure\Common\Internal\Authentication\TableSharedKeyLiteAuthScheme; -use WindowsAzure\Common\Internal\StorageServiceSettings; -use WindowsAzure\Common\Internal\ServiceManagementSettings; -use WindowsAzure\Common\Internal\ServiceBusSettings; -use WindowsAzure\Common\Internal\MediaServicesSettings; -use WindowsAzure\Queue\QueueRestProxy; -use WindowsAzure\ServiceBus\ServiceBusRestProxy; -use WindowsAzure\ServiceBus\Internal\WrapRestProxy; -use WindowsAzure\ServiceManagement\ServiceManagementRestProxy; -use WindowsAzure\Table\TableRestProxy; -use WindowsAzure\Table\Internal\AtomReaderWriter; -use WindowsAzure\Table\Internal\MimeReaderWriter; -use WindowsAzure\MediaServices\MediaServicesRestProxy; -use WindowsAzure\Common\Internal\OAuthRestProxy; -use WindowsAzure\Common\Internal\Authentication\OAuthScheme; - - -/** - * Builds azure service objects. - * - * @category Microsoft - * @package WindowsAzure\Common - * @author Azure PHP SDK - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @version Release: 0.4.1_2015-03 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ -class ServicesBuilder -{ - /** - * @var ServicesBuilder - */ - private static $_instance = null; - - /** - * Gets the HTTP client used in the REST services construction. - * - * @return WindowsAzure\Common\Internal\Http\IHttpClient - */ - protected function httpClient() - { - return new HttpClient(); - } - - /** - * Gets the serializer used in the REST services construction. - * - * @return WindowsAzure\Common\Internal\Serialization\ISerializer - */ - protected function serializer() - { - return new XmlSerializer(); - } - - /** - * Gets the MIME serializer used in the REST services construction. - * - * @return \WindowsAzure\Table\Internal\IMimeReaderWriter - */ - protected function mimeSerializer() - { - return new MimeReaderWriter(); - } - - /** - * Gets the Atom serializer used in the REST services construction. - * - * @return \WindowsAzure\Table\Internal\IAtomReaderWriter - */ - protected function atomSerializer() - { - return new AtomReaderWriter(); - } - - /** - * Gets the Queue authentication scheme. - * - * @param string $accountName The account name. - * @param string $accountKey The account key. - * - * @return \WindowsAzure\Common\Internal\Authentication\StorageAuthScheme - */ - protected function queueAuthenticationScheme($accountName, $accountKey) - { - return new SharedKeyAuthScheme($accountName, $accountKey); - } - - /** - * Gets the Blob authentication scheme. - * - * @param string $accountName The account name. - * @param string $accountKey The account key. - * - * @return \WindowsAzure\Common\Internal\Authentication\StorageAuthScheme - */ - protected function blobAuthenticationScheme($accountName, $accountKey) - { - return new SharedKeyAuthScheme($accountName, $accountKey); - } - - /** - * Gets the Table authentication scheme. - * - * @param string $accountName The account name. - * @param string $accountKey The account key. - * - * @return TableSharedKeyLiteAuthScheme - */ - protected function tableAuthenticationScheme($accountName, $accountKey) - { - return new TableSharedKeyLiteAuthScheme($accountName, $accountKey); - } - - /** - * Builds a WRAP client. - * - * @param string $wrapEndpointUri The WRAP endpoint uri. - * - * @return WindowsAzure\ServiceBus\Internal\IWrap - */ - protected function createWrapService($wrapEndpointUri) - { - $httpClient = $this->httpClient(); - $wrapWrapper = new WrapRestProxy($httpClient, $wrapEndpointUri); - - return $wrapWrapper; - } - - /** - * Builds a queue object. - * - * @param string $connectionString The configuration connection string. - * - * @return WindowsAzure\Queue\Internal\IQueue - */ - public function createQueueService($connectionString) - { - $settings = StorageServiceSettings::createFromConnectionString( - $connectionString - ); - - $httpClient = $this->httpClient(); - $serializer = $this->serializer(); - $uri = Utilities::tryAddUrlScheme( - $settings->getQueueEndpointUri() - ); - - $queueWrapper = new QueueRestProxy( - $httpClient, - $uri, - $settings->getName(), - $serializer - ); - - // Adding headers filter - $headers = array( - Resources::USER_AGENT => Resources::SDK_USER_AGENT, - ); - - $headers[Resources::X_MS_VERSION] = Resources::STORAGE_API_LATEST_VERSION; - - $headersFilter = new HeadersFilter($headers); - $queueWrapper = $queueWrapper->withFilter($headersFilter); - - // Adding date filter - $dateFilter = new DateFilter(); - $queueWrapper = $queueWrapper->withFilter($dateFilter); - - // Adding authentication filter - $authFilter = new AuthenticationFilter( - $this->queueAuthenticationScheme( - $settings->getName(), - $settings->getKey() - ) - ); - - $queueWrapper = $queueWrapper->withFilter($authFilter); - - return $queueWrapper; - } - - /** - * Builds a blob object. - * - * @param string $connectionString The configuration connection string. - * @param string $endpoint Azure BLOB storage endpoint - * - * @return WindowsAzure\Blob\Internal\IBlob - */ - public function createBlobService($connectionString, $endpoint) - { - $settings = StorageServiceSettings::createFromConnectionString( - $connectionString, - $endpoint - ); - - $httpClient = $this->httpClient(); - $serializer = $this->serializer(); - $uri = Utilities::tryAddUrlScheme( - $settings->getBlobEndpointUri() - ); - - $blobWrapper = new BlobRestProxy( - $httpClient, - $uri, - $settings->getName(), - $serializer - ); - - // Adding headers filter - $headers = array( - Resources::USER_AGENT => Resources::SDK_USER_AGENT, - ); - - $headers[Resources::X_MS_VERSION] = Resources::STORAGE_API_LATEST_VERSION; - - $headersFilter = new HeadersFilter($headers); - $blobWrapper = $blobWrapper->withFilter($headersFilter); - - // Adding date filter - $dateFilter = new DateFilter(); - $blobWrapper = $blobWrapper->withFilter($dateFilter); - - $authFilter = new AuthenticationFilter( - $this->blobAuthenticationScheme( - $settings->getName(), - $settings->getKey() - ) - ); - - $blobWrapper = $blobWrapper->withFilter($authFilter); - - return $blobWrapper; - } - - /** - * Builds a table object. - * - * @param string $connectionString The configuration connection string. - * - * @return WindowsAzure\Table\Internal\ITable - */ - public function createTableService($connectionString) - { - $settings = StorageServiceSettings::createFromConnectionString( - $connectionString - ); - - $httpClient = $this->httpClient(); - $atomSerializer = $this->atomSerializer(); - $mimeSerializer = $this->mimeSerializer(); - $serializer = $this->serializer(); - $uri = Utilities::tryAddUrlScheme( - $settings->getTableEndpointUri() - ); - - $tableWrapper = new TableRestProxy( - $httpClient, - $uri, - $atomSerializer, - $mimeSerializer, - $serializer - ); - - // Adding headers filter - $headers = array(); - $latestServicesVersion = Resources::STORAGE_API_LATEST_VERSION; - $currentVersion = Resources::DATA_SERVICE_VERSION_VALUE; - $maxVersion = Resources::MAX_DATA_SERVICE_VERSION_VALUE; - $accept = Resources::ACCEPT_HEADER_VALUE; - $acceptCharset = Resources::ACCEPT_CHARSET_VALUE; - $userAgent = Resources::SDK_USER_AGENT; - - $headers[Resources::X_MS_VERSION] = $latestServicesVersion; - $headers[Resources::DATA_SERVICE_VERSION] = $currentVersion; - $headers[Resources::MAX_DATA_SERVICE_VERSION] = $maxVersion; - $headers[Resources::MAX_DATA_SERVICE_VERSION] = $maxVersion; - $headers[Resources::ACCEPT_HEADER] = $accept; - $headers[Resources::ACCEPT_CHARSET] = $acceptCharset; - $headers[Resources::USER_AGENT] = $userAgent; - - $headersFilter = new HeadersFilter($headers); - $tableWrapper = $tableWrapper->withFilter($headersFilter); - - // Adding date filter - $dateFilter = new DateFilter(); - $tableWrapper = $tableWrapper->withFilter($dateFilter); - - // Adding authentication filter - $authFilter = new AuthenticationFilter( - $this->tableAuthenticationScheme( - $settings->getName(), - $settings->getKey() - ) - ); - - $tableWrapper = $tableWrapper->withFilter($authFilter); - - return $tableWrapper; - } - - /** - * Builds a Service Bus object. - * - * @param string $connectionString The configuration connection string. - * - * @return WindowsAzure\ServiceBus\Internal\IServiceBus - */ - public function createServiceBusService($connectionString) - { - $settings = ServiceBusSettings::createFromConnectionString( - $connectionString - ); - - $httpClient = $this->httpClient(); - $serializer = $this->serializer(); - $serviceBusWrapper = new ServiceBusRestProxy( - $httpClient, - $settings->getServiceBusEndpointUri(), - $serializer - ); - - // Adding headers filter - $headers = array( - Resources::USER_AGENT => Resources::SDK_USER_AGENT, - ); - - $headersFilter = new HeadersFilter($headers); - $serviceBusWrapper = $serviceBusWrapper->withFilter($headersFilter); - - $wrapFilter = new WrapFilter( - $settings->getWrapEndpointUri(), - $settings->getWrapName(), - $settings->getWrapPassword(), - $this->createWrapService($settings->getWrapEndpointUri()) - ); - - return $serviceBusWrapper->withFilter($wrapFilter); - } - - /** - * Builds a service management object. - * - * @param string $connectionString The configuration connection string. - * - * @return WindowsAzure\ServiceManagement\Internal\IServiceManagement - */ - public function createServiceManagementService($connectionString) - { - $settings = ServiceManagementSettings::createFromConnectionString( - $connectionString - ); - - $certificatePath = $settings->getCertificatePath(); - $httpClient = new HttpClient($certificatePath); - $serializer = $this->serializer(); - $uri = Utilities::tryAddUrlScheme( - $settings->getEndpointUri(), - Resources::HTTPS_SCHEME - ); - - $serviceManagementWrapper = new ServiceManagementRestProxy( - $httpClient, - $settings->getSubscriptionId(), - $uri, - $serializer - ); - - // Adding headers filter - $headers = array( - Resources::USER_AGENT => Resources::SDK_USER_AGENT - ); - - $headers[Resources::X_MS_VERSION] = Resources::SM_API_LATEST_VERSION; - - $headersFilter = new HeadersFilter($headers); - $serviceManagementWrapper = $serviceManagementWrapper->withFilter( - $headersFilter - ); - - return $serviceManagementWrapper; - } - - /** - * Builds a media services object. - * - * @param WindowsAzure\Common\Internal\MediaServicesSettings $settings The media - * services configuration settings. - * - * @return WindowsAzure\MediaServices\Internal\IMediaServices - */ - public function createMediaServicesService($settings) - { - Validate::isA( - $settings, - 'WindowsAzure\Common\Internal\MediaServicesSettings', - 'settings' - ); - - $httpClient = new HttpClient(); - $serializer = $this->serializer(); - $uri = Utilities::tryAddUrlScheme( - $settings->getEndpointUri(), - Resources::HTTPS_SCHEME - ); - - $mediaServicesWrapper = new MediaServicesRestProxy( - $httpClient, - $uri, - $settings->getAccountName(), - $serializer - ); - - // Adding headers filter - $xMSVersion = Resources::MEDIA_SERVICES_API_LATEST_VERSION; - $dataVersion = Resources::MEDIA_SERVICES_DATA_SERVICE_VERSION_VALUE; - $dataMaxVersion = Resources::MEDIA_SERVICES_MAX_DATA_SERVICE_VERSION_VALUE; - $accept = Resources::ACCEPT_HEADER_VALUE; - $contentType = Resources::ATOM_ENTRY_CONTENT_TYPE; - $userAgent = Resources::SDK_USER_AGENT; - - $headers = array( - Resources::X_MS_VERSION => $xMSVersion, - Resources::DATA_SERVICE_VERSION => $dataVersion, - Resources::MAX_DATA_SERVICE_VERSION => $dataMaxVersion, - Resources::ACCEPT_HEADER => $accept, - Resources::CONTENT_TYPE => $contentType, - Resources::USER_AGENT => $userAgent, - ); - - $headersFilter = new HeadersFilter($headers); - $mediaServicesWrapper = $mediaServicesWrapper->withFilter($headersFilter); - - // Adding OAuth filter - $oauthService = new OAuthRestProxy( - new HttpClient(), - $settings->getOAuthEndpointUri() - ); - $authentification = new OAuthScheme( - $settings->getAccountName(), - $settings->getAccessKey(), - Resources::OAUTH_GT_CLIENT_CREDENTIALS, - Resources::MEDIA_SERVICES_OAUTH_SCOPE, - $oauthService - ); - $authentificationFilter = new AuthenticationFilter($authentification); - $mediaServicesWrapper = $mediaServicesWrapper->withFilter( - $authentificationFilter - ); - - return $mediaServicesWrapper; - } - - /** - * Gets the static instance of this class. - * - * @return ServicesBuilder - */ - public static function getInstance() - { - if (!isset(self::$instance)) { - self::$_instance = new ServicesBuilder(); - } - - return self::$_instance; - } -} \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/WindowsAzure/WindowsAzure.php b/wp-content/plugins/updraftplus/includes/WindowsAzure/WindowsAzure.php deleted file mode 100644 index 5b2fd789..00000000 --- a/wp-content/plugins/updraftplus/includes/WindowsAzure/WindowsAzure.php +++ /dev/null @@ -1,335 +0,0 @@ - - * @copyright 2012 Microsoft Corporation - * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 - * @link https://github.com/windowsazure/azure-sdk-for-php - */ - -spl_autoload_register( - function($class) { - static $classes = null; - if ($classes === null) { - $classes = array( - 'windowsazure\\blob\\blobrestproxy' => '/Blob/BlobRestProxy.php', - 'windowsazure\\blob\\internal\\iblob' => '/Blob/Internal/IBlob.php', - 'windowsazure\\blob\\models\\accesscondition' => '/Blob/Models/AccessCondition.php', - 'windowsazure\\blob\\models\\accesspolicy' => '/Blob/Models/AccessPolicy.php', - 'windowsazure\\blob\\models\\acquireleaseoptions' => '/Blob/Models/AcquireLeaseOptions.php', - 'windowsazure\\blob\\models\\acquireleaseresult' => '/Blob/Models/AcquireLeaseResult.php', - 'windowsazure\\blob\\models\\blob' => '/Blob/Models/Blob.php', - 'windowsazure\\blob\\models\\blobblocktype' => '/Blob/Models/BlobBlockType.php', - 'windowsazure\\blob\\models\\blobprefix' => '/Blob/Models/BlobPrefix.php', - 'windowsazure\\blob\\models\\blobproperties' => '/Blob/Models/BlobProperties.php', - 'windowsazure\\blob\\models\\blobserviceoptions' => '/Blob/Models/BlobServiceOptions.php', - 'windowsazure\\blob\\models\\blobtype' => '/Blob/Models/BlobType.php', - 'windowsazure\\blob\\models\\block' => '/Blob/Models/Block.php', - 'windowsazure\\blob\\models\\blocklist' => '/Blob/Models/BlockList.php', - 'windowsazure\\blob\\models\\breakleaseresult' => '/Blob/Models/BreakLeaseResult.php', - 'windowsazure\\blob\\models\\commitblobblocksoptions' => '/Blob/Models/CommitBlobBlocksOptions.php', - 'windowsazure\\blob\\models\\container' => '/Blob/Models/Container.php', - 'windowsazure\\blob\\models\\containeracl' => '/Blob/Models/ContainerACL.php', - 'windowsazure\\blob\\models\\containerproperties' => '/Blob/Models/ContainerProperties.php', - 'windowsazure\\blob\\models\\copybloboptions' => '/Blob/Models/CopyBlobOptions.php', - 'windowsazure\\blob\\models\\copyblobresult' => '/Blob/Models/CopyBlobResult.php', - 'windowsazure\\blob\\models\\createblobblockoptions' => '/Blob/Models/CreateBlobBlockOptions.php', - 'windowsazure\\blob\\models\\createbloboptions' => '/Blob/Models/CreateBlobOptions.php', - 'windowsazure\\blob\\models\\createblobpagesoptions' => '/Blob/Models/CreateBlobPagesOptions.php', - 'windowsazure\\blob\\models\\createblobpagesresult' => '/Blob/Models/CreateBlobPagesResult.php', - 'windowsazure\\blob\\models\\createblobsnapshotoptions' => '/Blob/Models/CreateBlobSnapshotOptions.php', - 'windowsazure\\blob\\models\\createblobsnapshotresult' => '/Blob/Models/CreateBlobSnapshotResult.php', - 'windowsazure\\blob\\models\\createcontaineroptions' => '/Blob/Models/CreateContainerOptions.php', - 'windowsazure\\blob\\models\\deletebloboptions' => '/Blob/Models/DeleteBlobOptions.php', - 'windowsazure\\blob\\models\\deletecontaineroptions' => '/Blob/Models/DeleteContainerOptions.php', - 'windowsazure\\blob\\models\\getblobmetadataoptions' => '/Blob/Models/GetBlobMetadataOptions.php', - 'windowsazure\\blob\\models\\getblobmetadataresult' => '/Blob/Models/GetBlobMetadataResult.php', - 'windowsazure\\blob\\models\\getbloboptions' => '/Blob/Models/GetBlobOptions.php', - 'windowsazure\\blob\\models\\getblobpropertiesoptions' => '/Blob/Models/GetBlobPropertiesOptions.php', - 'windowsazure\\blob\\models\\getblobpropertiesresult' => '/Blob/Models/GetBlobPropertiesResult.php', - 'windowsazure\\blob\\models\\getblobresult' => '/Blob/Models/GetBlobResult.php', - 'windowsazure\\blob\\models\\getcontaineraclresult' => '/Blob/Models/GetContainerACLResult.php', - 'windowsazure\\blob\\models\\getcontainerpropertiesresult' => '/Blob/Models/GetContainerPropertiesResult.php', - 'windowsazure\\blob\\models\\leasemode' => '/Blob/Models/LeaseMode.php', - 'windowsazure\\blob\\models\\listblobblocksoptions' => '/Blob/Models/ListBlobBlocksOptions.php', - 'windowsazure\\blob\\models\\listblobblocksresult' => '/Blob/Models/ListBlobBlocksResult.php', - 'windowsazure\\blob\\models\\listblobsoptions' => '/Blob/Models/ListBlobsOptions.php', - 'windowsazure\\blob\\models\\listblobsresult' => '/Blob/Models/ListBlobsResult.php', - 'windowsazure\\blob\\models\\listcontainersoptions' => '/Blob/Models/ListContainersOptions.php', - 'windowsazure\\blob\\models\\listcontainersresult' => '/Blob/Models/ListContainersResult.php', - 'windowsazure\\blob\\models\\listpageblobrangesoptions' => '/Blob/Models/ListPageBlobRangesOptions.php', - 'windowsazure\\blob\\models\\listpageblobrangesresult' => '/Blob/Models/ListPageBlobRangesResult.php', - 'windowsazure\\blob\\models\\pagerange' => '/Blob/Models/PageRange.php', - 'windowsazure\\blob\\models\\pagewriteoption' => '/Blob/Models/PageWriteOption.php', - 'windowsazure\\blob\\models\\publicaccesstype' => '/Blob/Models/PublicAccessType.php', - 'windowsazure\\blob\\models\\setblobmetadataoptions' => '/Blob/Models/SetBlobMetadataOptions.php', - 'windowsazure\\blob\\models\\setblobmetadataresult' => '/Blob/Models/SetBlobMetadataResult.php', - 'windowsazure\\blob\\models\\setblobpropertiesoptions' => '/Blob/Models/SetBlobPropertiesOptions.php', - 'windowsazure\\blob\\models\\setblobpropertiesresult' => '/Blob/Models/SetBlobPropertiesResult.php', - 'windowsazure\\blob\\models\\setcontainermetadataoptions' => '/Blob/Models/SetContainerMetadataOptions.php', - 'windowsazure\\blob\\models\\signedidentifier' => '/Blob/Models/SignedIdentifier.php', - 'windowsazure\\common\\cloudconfigurationmanager' => '/Common/CloudConfigurationManager.php', - 'windowsazure\\common\\internal\\atom\\atombase' => '/Common/Internal/Atom/AtomBase.php', - 'windowsazure\\common\\internal\\atom\\atomlink' => '/Common/Internal/Atom/AtomLink.php', - 'windowsazure\\common\\internal\\atom\\category' => '/Common/Internal/Atom/Category.php', - 'windowsazure\\common\\internal\\atom\\content' => '/Common/Internal/Atom/Content.php', - 'windowsazure\\common\\internal\\atom\\entry' => '/Common/Internal/Atom/Entry.php', - 'windowsazure\\common\\internal\\atom\\feed' => '/Common/Internal/Atom/Feed.php', - 'windowsazure\\common\\internal\\atom\\generator' => '/Common/Internal/Atom/Generator.php', - 'windowsazure\\common\\internal\\atom\\person' => '/Common/Internal/Atom/Person.php', - 'windowsazure\\common\\internal\\atom\\source' => '/Common/Internal/Atom/Source.php', - 'windowsazure\\common\\internal\\authentication\\iauthscheme' => '/Common/Internal/Authentication/IAuthScheme.php', - 'windowsazure\\common\\internal\\authentication\\oauthscheme' => '/Common/Internal/Authentication/OAuthScheme.php', - 'windowsazure\\common\\internal\\authentication\\sharedkeyauthscheme' => '/Common/Internal/Authentication/SharedKeyAuthScheme.php', - 'windowsazure\\common\\internal\\authentication\\storageauthscheme' => '/Common/Internal/Authentication/StorageAuthScheme.php', - 'windowsazure\\common\\internal\\authentication\\tablesharedkeyliteauthscheme' => '/Common/Internal/Authentication/TableSharedKeyLiteAuthScheme.php', - 'windowsazure\\common\\internal\\connectionstringparser' => '/Common/Internal/ConnectionStringParser.php', - 'windowsazure\\common\\internal\\connectionstringsource' => '/Common/Internal/ConnectionStringSource.php', - 'windowsazure\\common\\internal\\filterableservice' => '/Common/Internal/FilterableService.php', - 'windowsazure\\common\\internal\\filters\\authenticationfilter' => '/Common/Internal/Filters/AuthenticationFilter.php', - 'windowsazure\\common\\internal\\filters\\datefilter' => '/Common/Internal/Filters/DateFilter.php', - 'windowsazure\\common\\internal\\filters\\exponentialretrypolicy' => '/Common/Internal/Filters/ExponentialRetryPolicy.php', - 'windowsazure\\common\\internal\\filters\\headersfilter' => '/Common/Internal/Filters/HeadersFilter.php', - 'windowsazure\\common\\internal\\filters\\retrypolicy' => '/Common/Internal/Filters/RetryPolicy.php', - 'windowsazure\\common\\internal\\filters\\retrypolicyfilter' => '/Common/Internal/Filters/RetryPolicyFilter.php', - 'windowsazure\\common\\internal\\filters\\wrapfilter' => '/Common/Internal/Filters/WrapFilter.php', - 'windowsazure\\common\\internal\\http\\batchrequest' => '/Common/Internal/Http/BatchRequest.php', - 'windowsazure\\common\\internal\\http\\batchresponse' => '/Common/Internal/Http/BatchResponse.php', - 'windowsazure\\common\\internal\\http\\httpcallcontext' => '/Common/Internal/Http/HttpCallContext.php', - 'windowsazure\\common\\internal\\http\\httpclient' => '/Common/Internal/Http/HttpClient.php', - 'windowsazure\\common\\internal\\http\\ihttpclient' => '/Common/Internal/Http/IHttpClient.php', - 'windowsazure\\common\\internal\\http\\iurl' => '/Common/Internal/Http/IUrl.php', - 'windowsazure\\common\\internal\\http\\url' => '/Common/Internal/Http/Url.php', - 'windowsazure\\common\\internal\\invalidargumenttypeexception' => '/Common/Internal/InvalidArgumentTypeException.php', - 'windowsazure\\common\\internal\\iservicefilter' => '/Common/Internal/IServiceFilter.php', - 'windowsazure\\common\\internal\\logger' => '/Common/Internal/Logger.php', - 'windowsazure\\common\\internal\\mediaservicessettings' => '/Common/Internal/MediaServicesSettings.php', - 'windowsazure\\common\\internal\\oauthrestproxy' => '/Common/Internal/OAuthRestProxy.php', - 'windowsazure\\common\\internal\\parserstate' => '/Common/Internal/ConnectionStringParser.php', - 'windowsazure\\common\\internal\\resources' => '/Common/Internal/Resources.php', - 'windowsazure\\common\\internal\\restproxy' => '/Common/Internal/RestProxy.php', - 'windowsazure\\common\\internal\\serialization\\iserializer' => '/Common/Internal/Serialization/ISerializer.php', - 'windowsazure\\common\\internal\\serialization\\jsonserializer' => '/Common/Internal/Serialization/JsonSerializer.php', - 'windowsazure\\common\\internal\\serialization\\xmlserializer' => '/Common/Internal/Serialization/XmlSerializer.php', - 'windowsazure\\common\\internal\\servicebussettings' => '/Common/Internal/ServiceBusSettings.php', - 'windowsazure\\common\\internal\\servicemanagementsettings' => '/Common/Internal/ServiceManagementSettings.php', - 'windowsazure\\common\\internal\\servicerestproxy' => '/Common/Internal/ServiceRestProxy.php', - 'windowsazure\\common\\internal\\servicesettings' => '/Common/Internal/ServiceSettings.php', - 'windowsazure\\common\\internal\\storageservicesettings' => '/Common/Internal/StorageServiceSettings.php', - 'windowsazure\\common\\internal\\utilities' => '/Common/Internal/Utilities.php', - 'windowsazure\\common\\internal\\validate' => '/Common/Internal/Validate.php', - 'windowsazure\\common\\models\\getservicepropertiesresult' => '/Common/Models/GetServicePropertiesResult.php', - 'windowsazure\\common\\models\\logging' => '/Common/Models/Logging.php', - 'windowsazure\\common\\models\\metrics' => '/Common/Models/Metrics.php', - 'windowsazure\\common\\models\\oauthaccesstoken' => '/Common/Models/OAuthAccessToken.php', - 'windowsazure\\common\\models\\retentionpolicy' => '/Common/Models/RetentionPolicy.php', - 'windowsazure\\common\\models\\serviceproperties' => '/Common/Models/ServiceProperties.php', - 'windowsazure\\common\\serviceexception' => '/Common/ServiceException.php', - 'windowsazure\\common\\servicesbuilder' => '/Common/ServicesBuilder.php', - 'windowsazure\\mediaservices\\internal\\contentpropertiesserializer' => '/MediaServices/Internal/ContentPropertiesSerializer.php', - 'windowsazure\\mediaservices\\internal\\imediaservices' => '/MediaServices/Internal/IMediaServices.php', - 'windowsazure\\mediaservices\\mediaservicesrestproxy' => '/MediaServices/MediaServicesRestProxy.php', - 'windowsazure\\mediaservices\\models\\accesspolicy' => '/MediaServices/Models/AccessPolicy.php', - 'windowsazure\\mediaservices\\models\\asset' => '/MediaServices/Models/Asset.php', - 'windowsazure\\mediaservices\\models\\assetfile' => '/MediaServices/Models/AssetFile.php', - 'windowsazure\\mediaservices\\models\\contentkey' => '/MediaServices/Models/ContentKey.php', - 'windowsazure\\mediaservices\\models\\contentkeytypes' => '/MediaServices/Models/ContentKeyTypes.php', - 'windowsazure\\mediaservices\\models\\encryptionschemes' => '/MediaServices/Models/EncryptionSchemes.php', - 'windowsazure\\mediaservices\\models\\errordetail' => '/MediaServices/Models/ErrorDetail.php', - 'windowsazure\\mediaservices\\models\\ingestmanifest' => '/MediaServices/Models/IngestManifest.php', - 'windowsazure\\mediaservices\\models\\ingestmanifestasset' => '/MediaServices/Models/IngestManifestAsset.php', - 'windowsazure\\mediaservices\\models\\ingestmanifestfile' => '/MediaServices/Models/IngestManifestFile.php', - 'windowsazure\\mediaservices\\models\\ingestmanifeststatistics' => '/MediaServices/Models/IngestManifestStatistics.php', - 'windowsazure\\mediaservices\\models\\job' => '/MediaServices/Models/Job.php', - 'windowsazure\\mediaservices\\models\\jobtemplate' => '/MediaServices/Models/JobTemplate.php', - 'windowsazure\\mediaservices\\models\\locator' => '/MediaServices/Models/Locator.php', - 'windowsazure\\mediaservices\\models\\mediaprocessor' => '/MediaServices/Models/MediaProcessor.php', - 'windowsazure\\mediaservices\\models\\protectionkeytypes' => '/MediaServices/Models/ProtectionKeyTypes.php', - 'windowsazure\\mediaservices\\models\\storageaccount' => '/MediaServices/Models/StorageAccount.php', - 'windowsazure\\mediaservices\\models\\task' => '/MediaServices/Models/Task.php', - 'windowsazure\\mediaservices\\models\\taskhistoricalevent' => '/MediaServices/Models/TaskHistoricalEvent.php', - 'windowsazure\\mediaservices\\models\\taskoptions' => '/MediaServices/Models/TaskOptions.php', - 'windowsazure\\mediaservices\\models\\tasktemplate' => '/MediaServices/Models/TaskTemplate.php', - 'windowsazure\\queue\\internal\\iqueue' => '/Queue/Internal/IQueue.php', - 'windowsazure\\queue\\models\\createmessageoptions' => '/Queue/Models/CreateMessageOptions.php', - 'windowsazure\\queue\\models\\createqueueoptions' => '/Queue/Models/CreateQueueOptions.php', - 'windowsazure\\queue\\models\\getqueuemetadataresult' => '/Queue/Models/GetQueueMetadataResult.php', - 'windowsazure\\queue\\models\\listmessagesoptions' => '/Queue/Models/ListMessagesOptions.php', - 'windowsazure\\queue\\models\\listmessagesresult' => '/Queue/Models/ListMessagesResult.php', - 'windowsazure\\queue\\models\\listqueuesoptions' => '/Queue/Models/ListQueuesOptions.php', - 'windowsazure\\queue\\models\\listqueuesresult' => '/Queue/Models/ListQueuesResult.php', - 'windowsazure\\queue\\models\\peekmessagesoptions' => '/Queue/Models/PeekMessagesOptions.php', - 'windowsazure\\queue\\models\\peekmessagesresult' => '/Queue/Models/PeekMessagesResult.php', - 'windowsazure\\queue\\models\\queue' => '/Queue/Models/Queue.php', - 'windowsazure\\queue\\models\\queuemessage' => '/Queue/Models/QueueMessage.php', - 'windowsazure\\queue\\models\\queueserviceoptions' => '/Queue/Models/QueueServiceOptions.php', - 'windowsazure\\queue\\models\\updatemessageresult' => '/Queue/Models/UpdateMessageResult.php', - 'windowsazure\\queue\\models\\windowsazurequeuemessage' => '/Queue/Models/WindowsAzureQueueMessage.php', - 'windowsazure\\queue\\queuerestproxy' => '/Queue/QueueRestProxy.php', - 'windowsazure\\servicebus\\internal\\action' => '/ServiceBus/Internal/Action.php', - 'windowsazure\\servicebus\\internal\\activetoken' => '/ServiceBus/Internal/ActiveToken.php', - 'windowsazure\\servicebus\\internal\\filter' => '/ServiceBus/Internal/Filter.php', - 'windowsazure\\servicebus\\internal\\iservicebus' => '/ServiceBus/Internal/IServiceBus.php', - 'windowsazure\\servicebus\\internal\\iwrap' => '/ServiceBus/Internal/IWrap.php', - 'windowsazure\\servicebus\\internal\\wrapaccesstokenresult' => '/ServiceBus/Internal/WrapAccessTokenResult.php', - 'windowsazure\\servicebus\\internal\\wraprestproxy' => '/ServiceBus/Internal/WrapRestProxy.php', - 'windowsazure\\servicebus\\internal\\wraptokenmanager' => '/ServiceBus/Internal/WrapTokenManager.php', - 'windowsazure\\servicebus\\models\\brokeredmessage' => '/ServiceBus/Models/BrokeredMessage.php', - 'windowsazure\\servicebus\\models\\brokerproperties' => '/ServiceBus/Models/BrokerProperties.php', - 'windowsazure\\servicebus\\models\\correlationfilter' => '/ServiceBus/Models/CorrelationFilter.php', - 'windowsazure\\servicebus\\models\\emptyruleaction' => '/ServiceBus/Models/EmptyRuleAction.php', - 'windowsazure\\servicebus\\models\\falsefilter' => '/ServiceBus/Models/FalseFilter.php', - 'windowsazure\\servicebus\\models\\listoptions' => '/ServiceBus/Models/ListOptions.php', - 'windowsazure\\servicebus\\models\\listqueuesoptions' => '/ServiceBus/Models/ListQueuesOptions.php', - 'windowsazure\\servicebus\\models\\listqueuesresult' => '/ServiceBus/Models/ListQueuesResult.php', - 'windowsazure\\servicebus\\models\\listrulesoptions' => '/ServiceBus/Models/ListRulesOptions.php', - 'windowsazure\\servicebus\\models\\listrulesresult' => '/ServiceBus/Models/ListRulesResult.php', - 'windowsazure\\servicebus\\models\\listsubscriptionsoptions' => '/ServiceBus/Models/ListSubscriptionsOptions.php', - 'windowsazure\\servicebus\\models\\listsubscriptionsresult' => '/ServiceBus/Models/ListSubscriptionsResult.php', - 'windowsazure\\servicebus\\models\\listtopicsoptions' => '/ServiceBus/Models/ListTopicsOptions.php', - 'windowsazure\\servicebus\\models\\listtopicsresult' => '/ServiceBus/Models/ListTopicsResult.php', - 'windowsazure\\servicebus\\models\\queuedescription' => '/ServiceBus/Models/QueueDescription.php', - 'windowsazure\\servicebus\\models\\queueinfo' => '/ServiceBus/Models/QueueInfo.php', - 'windowsazure\\servicebus\\models\\receivemessageoptions' => '/ServiceBus/Models/ReceiveMessageOptions.php', - 'windowsazure\\servicebus\\models\\receivemode' => '/ServiceBus/Models/ReceiveMode.php', - 'windowsazure\\servicebus\\models\\ruledescription' => '/ServiceBus/Models/RuleDescription.php', - 'windowsazure\\servicebus\\models\\ruleinfo' => '/ServiceBus/Models/RuleInfo.php', - 'windowsazure\\servicebus\\models\\sqlfilter' => '/ServiceBus/Models/SqlFilter.php', - 'windowsazure\\servicebus\\models\\sqlruleaction' => '/ServiceBus/Models/SqlRuleAction.php', - 'windowsazure\\servicebus\\models\\subscriptiondescription' => '/ServiceBus/Models/SubscriptionDescription.php', - 'windowsazure\\servicebus\\models\\subscriptioninfo' => '/ServiceBus/Models/SubscriptionInfo.php', - 'windowsazure\\servicebus\\models\\topicdescription' => '/ServiceBus/Models/TopicDescription.php', - 'windowsazure\\servicebus\\models\\topicinfo' => '/ServiceBus/Models/TopicInfo.php', - 'windowsazure\\servicebus\\models\\truefilter' => '/ServiceBus/Models/TrueFilter.php', - 'windowsazure\\servicebus\\servicebusrestproxy' => '/ServiceBus/ServiceBusRestProxy.php', - 'windowsazure\\servicemanagement\\internal\\iservicemanagement' => '/ServiceManagement/Internal/IServiceManagement.php', - 'windowsazure\\servicemanagement\\internal\\service' => '/ServiceManagement/Internal/Service.php', - 'windowsazure\\servicemanagement\\internal\\windowsazureservice' => '/ServiceManagement/Internal/WindowsAzureService.php', - 'windowsazure\\servicemanagement\\models\\affinitygroup' => '/ServiceManagement/Models/AffinityGroup.php', - 'windowsazure\\servicemanagement\\models\\asynchronousoperationresult' => '/ServiceManagement/Models/AsynchronousOperationResult.php', - 'windowsazure\\servicemanagement\\models\\changedeploymentconfigurationoptions' => '/ServiceManagement/Models/ChangeDeploymentConfigurationOptions.php', - 'windowsazure\\servicemanagement\\models\\createaffinitygroupoptions' => '/ServiceManagement/Models/CreateAffinityGroupOptions.php', - 'windowsazure\\servicemanagement\\models\\createdeploymentoptions' => '/ServiceManagement/Models/CreateDeploymentOptions.php', - 'windowsazure\\servicemanagement\\models\\createserviceoptions' => '/ServiceManagement/Models/CreateServiceOptions.php', - 'windowsazure\\servicemanagement\\models\\deployment' => '/ServiceManagement/Models/Deployment.php', - 'windowsazure\\servicemanagement\\models\\deploymentslot' => '/ServiceManagement/Models/DeploymentSlot.php', - 'windowsazure\\servicemanagement\\models\\deploymentstatus' => '/ServiceManagement/Models/DeploymentStatus.php', - 'windowsazure\\servicemanagement\\models\\getaffinitygrouppropertiesresult' => '/ServiceManagement/Models/GetAffinityGroupPropertiesResult.php', - 'windowsazure\\servicemanagement\\models\\getdeploymentoptions' => '/ServiceManagement/Models/GetDeploymentOptions.php', - 'windowsazure\\servicemanagement\\models\\getdeploymentresult' => '/ServiceManagement/Models/GetDeploymentResult.php', - 'windowsazure\\servicemanagement\\models\\gethostedservicepropertiesoptions' => '/ServiceManagement/Models/GetHostedServicePropertiesOptions.php', - 'windowsazure\\servicemanagement\\models\\gethostedservicepropertiesresult' => '/ServiceManagement/Models/GetHostedServicePropertiesResult.php', - 'windowsazure\\servicemanagement\\models\\getoperationstatusresult' => '/ServiceManagement/Models/GetOperationStatusResult.php', - 'windowsazure\\servicemanagement\\models\\getstorageservicekeysresult' => '/ServiceManagement/Models/GetStorageServiceKeysResult.php', - 'windowsazure\\servicemanagement\\models\\getstorageservicepropertiesresult' => '/ServiceManagement/Models/GetStorageServicePropertiesResult.php', - 'windowsazure\\servicemanagement\\models\\hostedservice' => '/ServiceManagement/Models/HostedService.php', - 'windowsazure\\servicemanagement\\models\\inputendpoint' => '/ServiceManagement/Models/InputEndpoint.php', - 'windowsazure\\servicemanagement\\models\\keytype' => '/ServiceManagement/Models/KeyType.php', - 'windowsazure\\servicemanagement\\models\\listaffinitygroupsresult' => '/ServiceManagement/Models/ListAffinityGroupsResult.php', - 'windowsazure\\servicemanagement\\models\\listhostedservicesresult' => '/ServiceManagement/Models/ListHostedServicesResult.php', - 'windowsazure\\servicemanagement\\models\\listlocationsresult' => '/ServiceManagement/Models/ListLocationsResult.php', - 'windowsazure\\servicemanagement\\models\\liststorageservicesresult' => '/ServiceManagement/Models/ListStorageServicesResult.php', - 'windowsazure\\servicemanagement\\models\\location' => '/ServiceManagement/Models/Location.php', - 'windowsazure\\servicemanagement\\models\\mode' => '/ServiceManagement/Models/Mode.php', - 'windowsazure\\servicemanagement\\models\\operationstatus' => '/ServiceManagement/Models/OperationStatus.php', - 'windowsazure\\servicemanagement\\models\\role' => '/ServiceManagement/Models/Role.php', - 'windowsazure\\servicemanagement\\models\\roleinstance' => '/ServiceManagement/Models/RoleInstance.php', - 'windowsazure\\servicemanagement\\models\\storageservice' => '/ServiceManagement/Models/StorageService.php', - 'windowsazure\\servicemanagement\\models\\updateserviceoptions' => '/ServiceManagement/Models/UpdateServiceOptions.php', - 'windowsazure\\servicemanagement\\models\\upgradedeploymentoptions' => '/ServiceManagement/Models/UpgradeDeploymentOptions.php', - 'windowsazure\\servicemanagement\\models\\upgradestatus' => '/ServiceManagement/Models/UpgradeStatus.php', - 'windowsazure\\servicemanagement\\servicemanagementrestproxy' => '/ServiceManagement/ServiceManagementRestProxy.php', - 'windowsazure\\serviceruntime\\internal\\acquirecurrentstate' => '/ServiceRuntime/Internal/AcquireCurrentState.php', - 'windowsazure\\serviceruntime\\internal\\channelnotavailableexception' => '/ServiceRuntime/Internal/ChannelNotAvailableException.php', - 'windowsazure\\serviceruntime\\internal\\chunkedgoalstatedeserializer' => '/ServiceRuntime/Internal/ChunkedGoalStateDeserializer.php', - 'windowsazure\\serviceruntime\\internal\\currentstate' => '/ServiceRuntime/Internal/CurrentState.php', - 'windowsazure\\serviceruntime\\internal\\currentstatus' => '/ServiceRuntime/Internal/CurrentStatus.php', - 'windowsazure\\serviceruntime\\internal\\fileinputchannel' => '/ServiceRuntime/Internal/FileInputChannel.php', - 'windowsazure\\serviceruntime\\internal\\fileoutputchannel' => '/ServiceRuntime/Internal/FileOutputChannel.php', - 'windowsazure\\serviceruntime\\internal\\goalstate' => '/ServiceRuntime/Internal/GoalState.php', - 'windowsazure\\serviceruntime\\internal\\icurrentstateserializer' => '/ServiceRuntime/Internal/ICurrentStateSerializer.php', - 'windowsazure\\serviceruntime\\internal\\igoalstatedeserializer' => '/ServiceRuntime/Internal/IGoalStateDeserializer.php', - 'windowsazure\\serviceruntime\\internal\\iinputchannel' => '/ServiceRuntime/Internal/IInputChannel.php', - 'windowsazure\\serviceruntime\\internal\\ioutputchannel' => '/ServiceRuntime/Internal/IOutputChannel.php', - 'windowsazure\\serviceruntime\\internal\\iroleenvironmentchange' => '/ServiceRuntime/Internal/IRoleEnvironmentChange.php', - 'windowsazure\\serviceruntime\\internal\\iroleenvironmentdatadeserializer' => '/ServiceRuntime/Internal/IRoleEnvironmentDataDeserializer.php', - 'windowsazure\\serviceruntime\\internal\\iruntimeclient' => '/ServiceRuntime/Internal/IRuntimeClient.php', - 'windowsazure\\serviceruntime\\internal\\iruntimeclientfactory' => '/ServiceRuntime/Internal/IRuntimeClientFactory.php', - 'windowsazure\\serviceruntime\\internal\\iruntimecurrentstateclient' => '/ServiceRuntime/Internal/IRuntimeCurrentStateClient.php', - 'windowsazure\\serviceruntime\\internal\\iruntimegoalstateclient' => '/ServiceRuntime/Internal/IRuntimeGoalStateClient.php', - 'windowsazure\\serviceruntime\\internal\\localresource' => '/ServiceRuntime/Internal/LocalResource.php', - 'windowsazure\\serviceruntime\\internal\\protocol1runtimeclient' => '/ServiceRuntime/Internal/Protocol1RuntimeClient.php', - 'windowsazure\\serviceruntime\\internal\\protocol1runtimeclientfactory' => '/ServiceRuntime/Internal/Protocol1RuntimeClientFactory.php', - 'windowsazure\\serviceruntime\\internal\\protocol1runtimecurrentstateclient' => '/ServiceRuntime/Internal/Protocol1RuntimeCurrentStateClient.php', - 'windowsazure\\serviceruntime\\internal\\protocol1runtimegoalstateclient' => '/ServiceRuntime/Internal/Protocol1RuntimeGoalStateClient.php', - 'windowsazure\\serviceruntime\\internal\\releasecurrentstate' => '/ServiceRuntime/Internal/ReleaseCurrentState.php', - 'windowsazure\\serviceruntime\\internal\\role' => '/ServiceRuntime/Internal/Role.php', - 'windowsazure\\serviceruntime\\internal\\roleenvironmentconfigurationsettingchange' => '/ServiceRuntime/Internal/RoleEnvironmentConfigurationSettingChange.php', - 'windowsazure\\serviceruntime\\internal\\roleenvironmentdata' => '/ServiceRuntime/Internal/RoleEnvironmentData.php', - 'windowsazure\\serviceruntime\\internal\\roleenvironmentnotavailableexception' => '/ServiceRuntime/Internal/RoleEnvironmentNotAvailableException.php', - 'windowsazure\\serviceruntime\\internal\\roleenvironmenttopologychange' => '/ServiceRuntime/Internal/RoleEnvironmentTopologyChange.php', - 'windowsazure\\serviceruntime\\internal\\roleinstance' => '/ServiceRuntime/Internal/RoleInstance.php', - 'windowsazure\\serviceruntime\\internal\\roleinstanceendpoint' => '/ServiceRuntime/Internal/RoleInstanceEndpoint.php', - 'windowsazure\\serviceruntime\\internal\\roleinstancestatus' => '/ServiceRuntime/Internal/RoleInstanceStatus.php', - 'windowsazure\\serviceruntime\\internal\\runtimekernel' => '/ServiceRuntime/Internal/RuntimeKernel.php', - 'windowsazure\\serviceruntime\\internal\\runtimeversionmanager' => '/ServiceRuntime/Internal/RuntimeVersionManager.php', - 'windowsazure\\serviceruntime\\internal\\runtimeversionprotocolclient' => '/ServiceRuntime/Internal/RuntimeVersionProtocolClient.php', - 'windowsazure\\serviceruntime\\internal\\xmlcurrentstateserializer' => '/ServiceRuntime/Internal/XmlCurrentStateSerializer.php', - 'windowsazure\\serviceruntime\\internal\\xmlgoalstatedeserializer' => '/ServiceRuntime/Internal/XmlGoalStateDeserializer.php', - 'windowsazure\\serviceruntime\\internal\\xmlroleenvironmentdatadeserializer' => '/ServiceRuntime/Internal/XmlRoleEnvironmentDataDeserializer.php', - 'windowsazure\\serviceruntime\\roleenvironment' => '/ServiceRuntime/RoleEnvironment.php', - 'windowsazure\\table\\internal\\atomreaderwriter' => '/Table/Internal/AtomReaderWriter.php', - 'windowsazure\\table\\internal\\iatomreaderwriter' => '/Table/Internal/IAtomReaderWriter.php', - 'windowsazure\\table\\internal\\imimereaderwriter' => '/Table/Internal/IMimeReaderWriter.php', - 'windowsazure\\table\\internal\\itable' => '/Table/Internal/ITable.php', - 'windowsazure\\table\\internal\\mimereaderwriter' => '/Table/Internal/MimeReaderWriter.php', - 'windowsazure\\table\\models\\batcherror' => '/Table/Models/BatchError.php', - 'windowsazure\\table\\models\\batchoperation' => '/Table/Models/BatchOperation.php', - 'windowsazure\\table\\models\\batchoperationparametername' => '/Table/Models/BatchOperationParameterName.php', - 'windowsazure\\table\\models\\batchoperations' => '/Table/Models/BatchOperations.php', - 'windowsazure\\table\\models\\batchoperationtype' => '/Table/Models/BatchOperationType.php', - 'windowsazure\\table\\models\\batchresult' => '/Table/Models/BatchResult.php', - 'windowsazure\\table\\models\\deleteentityoptions' => '/Table/Models/DeleteEntityOptions.php', - 'windowsazure\\table\\models\\edmtype' => '/Table/Models/EdmType.php', - 'windowsazure\\table\\models\\entity' => '/Table/Models/Entity.php', - 'windowsazure\\table\\models\\filters\\binaryfilter' => '/Table/Models/Filters/BinaryFilter.php', - 'windowsazure\\table\\models\\filters\\constantfilter' => '/Table/Models/Filters/ConstantFilter.php', - 'windowsazure\\table\\models\\filters\\filter' => '/Table/Models/Filters/Filter.php', - 'windowsazure\\table\\models\\filters\\propertynamefilter' => '/Table/Models/Filters/PropertyNameFilter.php', - 'windowsazure\\table\\models\\filters\\querystringfilter' => '/Table/Models/Filters/QueryStringFilter.php', - 'windowsazure\\table\\models\\filters\\unaryfilter' => '/Table/Models/Filters/UnaryFilter.php', - 'windowsazure\\table\\models\\getentityresult' => '/Table/Models/GetEntityResult.php', - 'windowsazure\\table\\models\\gettableresult' => '/Table/Models/GetTableResult.php', - 'windowsazure\\table\\models\\insertentityresult' => '/Table/Models/InsertEntityResult.php', - 'windowsazure\\table\\models\\property' => '/Table/Models/Property.php', - 'windowsazure\\table\\models\\query' => '/Table/Models/Query.php', - 'windowsazure\\table\\models\\queryentitiesoptions' => '/Table/Models/QueryEntitiesOptions.php', - 'windowsazure\\table\\models\\queryentitiesresult' => '/Table/Models/QueryEntitiesResult.php', - 'windowsazure\\table\\models\\querytablesoptions' => '/Table/Models/QueryTablesOptions.php', - 'windowsazure\\table\\models\\querytablesresult' => '/Table/Models/QueryTablesResult.php', - 'windowsazure\\table\\models\\tableserviceoptions' => '/Table/Models/TableServiceOptions.php', - 'windowsazure\\table\\models\\updateentityresult' => '/Table/Models/UpdateEntityResult.php', - 'windowsazure\\table\\tablerestproxy' => '/Table/TableRestProxy.php' - ); - } - $cn = strtolower($class); - if (isset($classes[$cn])) { - require __DIR__ . $classes[$cn]; - } - } -); diff --git a/wp-content/plugins/updraftplus/includes/azure-extensions.php b/wp-content/plugins/updraftplus/includes/azure-extensions.php deleted file mode 100644 index 180e0822..00000000 --- a/wp-content/plugins/updraftplus/includes/azure-extensions.php +++ /dev/null @@ -1,87 +0,0 @@ -_updraftplus_capath); - } - - /** - * Here, we pull something that we've added out of the connection string, before carrying on with the previous processing - * - * @param string $connection_string the string for the connection - * @param string $endpoint Azure BLOB storage endpoint - * @return array - */ - public function createBlobService($connection_string, $endpoint) { - - // Remove our bit - if (false !== ($i = strpos($connection_string, ';SSLCAPath='))) { - $this->_updraftplus_capath = substr($connection_string, $i + 11); - $connection_string = substr($connection_string, 0, $i); - } - - return parent::createBlobService($connection_string, $endpoint); - - } - - /** - * We modified this because the instance was a private variable, and we also need to invoke ourself, not the parent - * - * @return array - */ - public static function getInstance() { - if (!isset(self::$_updraftplus_instance)) { - self::$_updraftplus_instance = new UpdraftPlus_ServicesBuilder(); - } - - return self::$_updraftplus_instance; - } -} diff --git a/wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI-1-25-5.min.js b/wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI-1-25-5.min.js new file mode 100644 index 00000000..02276d7e --- /dev/null +++ b/wp-content/plugins/updraftplus/includes/blockui/jquery.blockUI-1-25-5.min.js @@ -0,0 +1 @@ +(()=>{function e(p){var e=jQuery.migrateDeduplicateWarnings||!1,b=(jQuery.migrateDeduplicateWarnings=!1,p.fn._fadeIn=p.fn.fadeIn,p.noop||function(){}),h=/MSIE/.test(navigator.userAgent),m=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent),k=(document.documentMode,"function"==typeof document.createElement("div").style.setExpression),y=(p.blockUI=function(e){o(window,e)},p.unblockUI=function(e){v(window,e)},p.growlUI=function(e,t,o,n){function i(e){p.blockUI({message:l,fadeIn:void 0!==(e=e||{}).fadeIn?e.fadeIn:700,fadeOut:void 0!==e.fadeOut?e.fadeOut:1e3,timeout:void 0!==e.timeout?e.timeout:o,centerY:!1,showOverlay:!1,onUnblock:n,css:p.blockUI.defaults.growlCSS})}var l=p('

');e&&l.append("

"+e+"

"),t&&l.append("

"+t+"

"),void 0===o&&(o=3e3),i(),l.css("opacity");l.on("mouseover",function(){i({fadeIn:0,timeout:3e4});var e=p(".blockMsg");e.stop(),e.fadeTo(300,1)}).on("mouseout",function(){p(".blockMsg").fadeOut(1e3)})},p.fn.block=function(e){var t;return this[0]===window?(p.blockUI(e),this):(t=p.extend({},p.blockUI.defaults,e||{}),this.each(function(){var e=p(this);t.ignoreIfBlocked&&e.data("blockUI.isBlocked")||e.unblock({fadeOut:0})}),this.each(function(){"static"==p.css(this,"position")&&(this.style.position="relative",p(this).data("blockUI.static",!0)),this.style.zoom=1,o(this,e)}))},p.fn.unblock=function(e){return this[0]===window?(p.unblockUI(e),this):this.each(function(){v(this,e)})},p.blockUI.version=2.7,p.blockUI.defaults={message:"

Please wait...

",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1},null),g=[];function o(e,o){var n=e==window,t=o&&void 0!==o.message?o.message:void 0;if(!(o=p.extend({},p.blockUI.defaults,o||{})).ignoreIfBlocked||!p(e).data("blockUI.isBlocked")){o.overlayCSS=p.extend({},p.blockUI.defaults.overlayCSS,o.overlayCSS||{}),f=p.extend({},p.blockUI.defaults.css,o.css||{}),o.onOverlayClick&&(o.overlayCSS.cursor="pointer"),u=p.extend({},p.blockUI.defaults.themedCSS,o.themedCSS||{}),t=void 0===t?o.message:t,n&&y&&v(window,{fadeOut:0}),t&&"string"!=typeof t&&(t.parentNode||t.jquery)&&(a=t.jquery?t[0]:t,s={},p(e).data("blockUI.history",s),s.el=a,s.parent=a.parentNode,s.display=a.style.display,s.position=a.style.position,s.parent)&&s.parent.removeChild(a),p(e).data("blockUI.onUnblock",o.onUnblock);var i,l,s=o.baseZ,a=h||o.forceIframe?p(''):p(''),d=o.theme?p(''):p(''),c=(o.theme&&n?(c=''):o.theme?(c=''):c=n?'':'',s=p(c),t&&(o.theme?(s.css(u),s.addClass("ui-widget-content")):s.css(f)),o.theme||d.css(o.overlayCSS),d.css("position",n?"fixed":"absolute"),(h||o.forceIframe)&&a.css("opacity",0),[a,d,s]),r=p(n?"body":e),u=(p.each(c,function(){this.appendTo(r)}),o.theme&&o.draggable&&p.fn.draggable&&s.draggable({handle:".ui-dialog-titlebar",cancel:"li"}),k&&("CSS1Compat"!==document.compatMode||0 .blockUI"):l.find(">.blockUI"),t.cursorReset&&(1
');e&&s.append("

"+e+"

"),t&&s.append("

"+t+"

"),void 0===o&&(o=3e3),i(),s.css("opacity");s.on("mouseover",function(){i({fadeIn:0,timeout:3e4});var e=p(".blockMsg");e.stop(),e.fadeTo(300,1)}).on("mouseout",function(){p(".blockMsg").fadeOut(1e3)})},p.fn.block=function(e){if(this[0]===window)return p.blockUI(e),this;var t=p.extend({},p.blockUI.defaults,e||{});return this.each(function(){var e=p(this);t.ignoreIfBlocked&&e.data("blockUI.isBlocked")||e.unblock({fadeOut:0})}),this.each(function(){"static"==p.css(this,"position")&&(this.style.position="relative",p(this).data("blockUI.static",!0)),this.style.zoom=1,o(this,e)})},p.fn.unblock=function(e){return this[0]===window?(p.unblockUI(e),this):this.each(function(){v(this,e)})},p.blockUI.version=2.7,p.blockUI.defaults={message:"

Please wait...

",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1},null),g=[];function o(e,o){var n=e==window,t=o&&void 0!==o.message?o.message:void 0;if(!(o=p.extend({},p.blockUI.defaults,o||{})).ignoreIfBlocked||!p(e).data("blockUI.isBlocked")){o.overlayCSS=p.extend({},p.blockUI.defaults.overlayCSS,o.overlayCSS||{}),f=p.extend({},p.blockUI.defaults.css,o.css||{}),o.onOverlayClick&&(o.overlayCSS.cursor="pointer"),u=p.extend({},p.blockUI.defaults.themedCSS,o.themedCSS||{}),t=void 0===t?o.message:t,n&&y&&v(window,{fadeOut:0}),t&&"string"!=typeof t&&(t.parentNode||t.jquery)&&(a=t.jquery?t[0]:t,l={},p(e).data("blockUI.history",l),l.el=a,l.parent=a.parentNode,l.display=a.style.display,l.position=a.style.position,l.parent&&l.parent.removeChild(a)),p(e).data("blockUI.onUnblock",o.onUnblock);var i,s,l=o.baseZ,a=h||o.forceIframe?p(''):p(''),d=o.theme?p(''):p(''),c=(o.theme&&n?(c=''):o.theme?(c=''):c=n?'':'',l=p(c),t&&(o.theme?(l.css(u),l.addClass("ui-widget-content")):l.css(f)),o.theme||d.css(o.overlayCSS),d.css("position",n?"fixed":"absolute"),(h||o.forceIframe)&&a.css("opacity",0),[a,d,l]),r=p(n?"body":e),u=(p.each(c,function(){this.appendTo(r)}),o.theme&&o.draggable&&p.fn.draggable&&l.draggable({handle:".ui-dialog-titlebar",cancel:"li"}),k&&("CSS1Compat"!==document.compatMode||0 .blockUI"):s.find(">.blockUI"),t.cursorReset&&(1{function e(p){var e=jQuery.migrateDeduplicateWarnings||!1,b=(jQuery.migrateDeduplicateWarnings=!1,p.fn._fadeIn=p.fn.fadeIn,p.noop||function(){}),h=/MSIE/.test(navigator.userAgent),m=/MSIE 6.0/.test(navigator.userAgent)&&!/MSIE 8.0/.test(navigator.userAgent),k=(document.documentMode,"function"==typeof document.createElement("div").style.setExpression),y=(p.blockUI=function(e){o(window,e)},p.unblockUI=function(e){v(window,e)},p.growlUI=function(e,t,o,n){function i(e){p.blockUI({message:l,fadeIn:void 0!==(e=e||{}).fadeIn?e.fadeIn:700,fadeOut:void 0!==e.fadeOut?e.fadeOut:1e3,timeout:void 0!==e.timeout?e.timeout:o,centerY:!1,showOverlay:!1,onUnblock:n,css:p.blockUI.defaults.growlCSS})}var l=p('
');e&&l.append("

"+e+"

"),t&&l.append("

"+t+"

"),void 0===o&&(o=3e3),i(),l.css("opacity"),l.on("mouseover",function(){i({fadeIn:0,timeout:3e4});var e=p(".blockMsg");e.stop(),e.fadeTo(300,1)}).on("mouseout",function(){p(".blockMsg").fadeOut(1e3)})},p.fn.block=function(e){var t;return this[0]===window?(p.blockUI(e),this):(t=p.extend({},p.blockUI.defaults,e||{}),this.each(function(){var e=p(this);t.ignoreIfBlocked&&e.data("blockUI.isBlocked")||e.unblock({fadeOut:0})}),this.each(function(){"static"==p.css(this,"position")&&(this.style.position="relative",p(this).data("blockUI.static",!0)),this.style.zoom=1,o(this,e)}))},p.fn.unblock=function(e){return this[0]===window?(p.unblockUI(e),this):this.each(function(){v(this,e)})},p.blockUI.version=2.7,p.blockUI.defaults={message:"

Please wait...

",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1},null),g=[];function o(e,o){var n,i,t,l,s,a,d,c,r,u=e==window,f=o&&void 0!==o.message?o.message:void 0;(o=p.extend({},p.blockUI.defaults,o||{})).ignoreIfBlocked&&p(e).data("blockUI.isBlocked")||(o.overlayCSS=p.extend({},p.blockUI.defaults.overlayCSS,o.overlayCSS||{}),s=p.extend({},p.blockUI.defaults.css,o.css||{}),o.onOverlayClick&&(o.overlayCSS.cursor="pointer"),a=p.extend({},p.blockUI.defaults.themedCSS,o.themedCSS||{}),f=void 0===f?o.message:f,u&&y&&v(window,{fadeOut:0}),f&&"string"!=typeof f&&(f.parentNode||f.jquery)&&(r=f.jquery?f[0]:f,t={},p(e).data("blockUI.history",t),t.el=r,t.parent=r.parentNode,t.display=r.style.display,t.position=r.style.position,t.parent)&&t.parent.removeChild(r),p(e).data("blockUI.onUnblock",o.onUnblock),t=o.baseZ,r=h||o.forceIframe?p(''):p(''),c=o.theme?p(''):p(''),o.theme&&u?(d=''):o.theme?(d=''):d=u?'':'',t=p(d),f&&(o.theme?(t.css(a),t.addClass("ui-widget-content")):t.css(s)),o.theme||c.css(o.overlayCSS),c.css("position",u?"fixed":"absolute"),(h||o.forceIframe)&&r.css("opacity",0),d=[r,c,t],l=p(u?"body":e),p.each(d,function(){this.appendTo(l)}),o.theme&&o.draggable&&p.fn.draggable&&t.draggable({handle:".ui-dialog-titlebar",cancel:"li"}),a=k&&("CSS1Compat"!==document.compatMode||0 .blockUI"):l.find(">.blockUI"),t.cursorReset&&(1
');e&&s.append("

"+e+"

"),t&&s.append("

"+t+"

"),void 0===o&&(o=3e3),i(),s.css("opacity"),s.on("mouseover",function(){i({fadeIn:0,timeout:3e4});var e=p(".blockMsg");e.stop(),e.fadeTo(300,1)}).on("mouseout",function(){p(".blockMsg").fadeOut(1e3)})},p.fn.block=function(e){if(this[0]===window)return p.blockUI(e),this;var t=p.extend({},p.blockUI.defaults,e||{});return this.each(function(){var e=p(this);t.ignoreIfBlocked&&e.data("blockUI.isBlocked")||e.unblock({fadeOut:0})}),this.each(function(){"static"==p.css(this,"position")&&(this.style.position="relative",p(this).data("blockUI.static",!0)),this.style.zoom=1,o(this,e)})},p.fn.unblock=function(e){return this[0]===window?(p.unblockUI(e),this):this.each(function(){v(this,e)})},p.blockUI.version=2.7,p.blockUI.defaults={message:"

Please wait...

",title:null,draggable:!0,theme:!1,css:{padding:0,margin:0,width:"30%",top:"40%",left:"35%",textAlign:"center",color:"#000",border:"3px solid #aaa",backgroundColor:"#fff",cursor:"wait"},themedCSS:{width:"30%",top:"40%",left:"35%"},overlayCSS:{backgroundColor:"#000",opacity:.6,cursor:"wait"},cursorReset:"default",growlCSS:{width:"350px",top:"10px",left:"",right:"10px",border:"none",padding:"5px",opacity:.6,cursor:"default",color:"#fff",backgroundColor:"#000","-webkit-border-radius":"10px","-moz-border-radius":"10px","border-radius":"10px"},iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",forceIframe:!1,baseZ:1e3,centerX:!0,centerY:!0,allowBodyStretch:!0,bindEvents:!0,constrainTabKey:!0,fadeIn:200,fadeOut:400,timeout:0,showOverlay:!0,focusInput:!0,focusableElements:":input:enabled:visible",onBlock:null,onUnblock:null,onOverlayClick:null,quirksmodeOffsetHack:4,blockMsgClass:"blockMsg",ignoreIfBlocked:!1},null),g=[];function o(e,o){var n,i,t,s,l,a,d,c,r,u=e==window,f=o&&void 0!==o.message?o.message:void 0;(o=p.extend({},p.blockUI.defaults,o||{})).ignoreIfBlocked&&p(e).data("blockUI.isBlocked")||(o.overlayCSS=p.extend({},p.blockUI.defaults.overlayCSS,o.overlayCSS||{}),l=p.extend({},p.blockUI.defaults.css,o.css||{}),o.onOverlayClick&&(o.overlayCSS.cursor="pointer"),a=p.extend({},p.blockUI.defaults.themedCSS,o.themedCSS||{}),f=void 0===f?o.message:f,u&&y&&v(window,{fadeOut:0}),f&&"string"!=typeof f&&(f.parentNode||f.jquery)&&(r=f.jquery?f[0]:f,t={},p(e).data("blockUI.history",t),t.el=r,t.parent=r.parentNode,t.display=r.style.display,t.position=r.style.position,t.parent&&t.parent.removeChild(r)),p(e).data("blockUI.onUnblock",o.onUnblock),t=o.baseZ,r=h||o.forceIframe?p(''):p(''),c=o.theme?p(''):p(''),o.theme&&u?(d=''):o.theme?(d=''):d=u?'':'',t=p(d),f&&(o.theme?(t.css(a),t.addClass("ui-widget-content")):t.css(l)),o.theme||c.css(o.overlayCSS),c.css("position",u?"fixed":"absolute"),(h||o.forceIframe)&&r.css("opacity",0),d=[r,c,t],s=p(u?"body":e),p.each(d,function(){this.appendTo(s)}),o.theme&&o.draggable&&p.fn.draggable&&t.draggable({handle:".ui-dialog-titlebar",cancel:"li"}),a=k&&("CSS1Compat"!==document.compatMode||0 .blockUI"):s.find(">.blockUI"),t.cursorReset&&(1{var t={loading:!1,init:function(){var t;o("a[data-embed-checkout]").length&&(t=this,o(document).on("click","a[data-embed-checkout]",function(e){e.preventDefault(),t.modal.open(o(this))}))},modal:{open:function(e){this.$target=e,this.product_url&&(this.product_url,this.product_url==e.data("embed-checkout"))||(this.product_url=e.data("embed-checkout")),this.show_checkout()},setup:function(){this.$el&&(this.$el.remove(),this.$el=null);var e=o("#udp-modal-template").html();this.$el=o(e),window.addEventListener("message",function(e){var t=e.data;if(t&&t.action)switch(t.action){case"domready":this.$el.removeClass("loading");break;case"closemodal":o(document).trigger("udp/checkout/close",t.data,this.$target),this.close();break;case"ordercomplete":console.log("Order complete:",t.data),o(document).trigger("udp/checkout/done",t.data,this.$target)}}.bind(this))},close:function(e){e&&e.preventDefault(),o("body").removeClass("udp-modal-is-opened"),this.$iframe&&(this.$iframe.remove(),this.$iframe_container.remove()),this.$el.hide()},show_checkout:function(){window.open(this.product_url,"_blank","noopener, noreferrer")}}};jQuery(function(e){t.init()})})(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed-2-23-3.min.js b/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed-2-23-3.min.js deleted file mode 100644 index f88adf72..00000000 --- a/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed-2-23-3.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(o){var t={loading:!1,init:function(){var t;o("a[data-embed-checkout]").length&&(t=this,o(document).on("click","a[data-embed-checkout]",function(e){e.preventDefault(),t.modal.open(o(this))}))},modal:{open:function(e){this.$target=e,(!this.product_url||this.product_url&&this.product_url!=e.data("embed-checkout"))&&(this.product_url=e.data("embed-checkout")),this.show_checkout()},setup:function(){this.$el&&(this.$el.remove(),this.$el=null);var e=o("#udp-modal-template").html();this.$el=o(e),window.addEventListener("message",function(e){var t=e.data;if(t&&t.action)switch(t.action){case"domready":this.$el.removeClass("loading");break;case"closemodal":o(document).trigger("udp/checkout/close",t.data,this.$target),this.close();break;case"ordercomplete":console.log("Order complete:",t.data),o(document).trigger("udp/checkout/done",t.data,this.$target)}}.bind(this))},close:function(e){e&&e.preventDefault(),o("body").removeClass("udp-modal-is-opened"),this.$iframe&&(this.$iframe.remove(),this.$iframe_container.remove()),this.$el.hide()},show_checkout:function(){window.location.assign(this.product_url)}}};jQuery(function(e){t.init()})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed.js b/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed.js index 8c37b457..0370571f 100644 --- a/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed.js +++ b/wp-content/plugins/updraftplus/includes/checkout-embed/assets/udp-checkout-embed.js @@ -74,7 +74,7 @@ }, show_checkout: function() { if (1) { - window.location.assign(this.product_url); + window.open(this.product_url, '_blank', 'noopener, noreferrer'); } else { // Disabled because of SameSite problems this.$el.addClass('loading iframe-is-opened'); diff --git a/wp-content/plugins/updraftplus/includes/checkout-embed/class-udp-checkout-embed.php b/wp-content/plugins/updraftplus/includes/checkout-embed/class-udp-checkout-embed.php index 1a719a20..7edd9a64 100644 --- a/wp-content/plugins/updraftplus/includes/checkout-embed/class-udp-checkout-embed.php +++ b/wp-content/plugins/updraftplus/includes/checkout-embed/class-udp-checkout-embed.php @@ -16,6 +16,41 @@ class Updraft_Checkout_Embed { */ private static $version = '1.0.1'; + /** + * The name of the plugin using the class + * + * @var string + */ + private $plugin_name; + + /** + * The return url after purchase is complete / canceled + * + * @var string + */ + private $return_url; + + /** + * The array of products + * + * @var array + */ + private $products_list; + + /** + * The page in which the scripts are included + * + * @var string + */ + private $load_in_pages; + + /** + * The plugin base url + * + * @var string + */ + private $base_url; + /** * Products list * diff --git a/wp-content/plugins/updraftplus/includes/checkout-embed/products.json b/wp-content/plugins/updraftplus/includes/checkout-embed/products.json index 6272333b..0637a088 100644 --- a/wp-content/plugins/updraftplus/includes/checkout-embed/products.json +++ b/wp-content/plugins/updraftplus/includes/checkout-embed/products.json @@ -1 +1 @@ -{"updraftpremium":"https:\/\/updraftplus.com\/shop\/updraftplus-premium\/?udp_checkout_embed=1&product_id=230&utm_source=updraftplus.com&utm_medium=in-plugin-purchase&utm_campaign=startup&utm_content=updraftpremium","updraftplus-vault-storage-5-gb":"https:\/\/updraftplus.com\/shop\/updraftplus-vault-storage-5-gb\/?udp_checkout_embed=1&product_id=123680&utm_source=updraftplus.com&utm_medium=in-plugin-purchase&utm_campaign=startup&utm_content=updraftplus-vault-storage-5-gb","updraftplus-vault-storage-15-gb":"https:\/\/updraftplus.com\/shop\/updraftplus-vault-storage-15-gb\/?udp_checkout_embed=1&product_id=123688&utm_source=updraftplus.com&utm_medium=in-plugin-purchase&utm_campaign=startup&utm_content=updraftplus-vault-storage-15-gb","updraftplus-vault-storage-50-gb":"https:\/\/updraftplus.com\/shop\/updraftplus-vault-storage-50-gb\/?udp_checkout_embed=1&product_id=123692&utm_source=updraftplus.com&utm_medium=in-plugin-purchase&utm_campaign=startup&utm_content=updraftplus-vault-storage-50-gb","updraftplus-vault-storage-250-gb":"https:\/\/updraftplus.com\/shop\/updraftplus-vault-storage-250-gb\/?udp_checkout_embed=1&product_id=383555&utm_source=updraftplus.com&utm_medium=in-plugin-purchase&utm_campaign=startup&utm_content=updraftplus-vault-storage-250-gb"} \ No newline at end of file +[] \ No newline at end of file diff --git a/wp-content/plugins/updraftplus/includes/checkout-embed/readme.md b/wp-content/plugins/updraftplus/includes/checkout-embed/readme.md index 7229fb7e..bf364349 100644 --- a/wp-content/plugins/updraftplus/includes/checkout-embed/readme.md +++ b/wp-content/plugins/updraftplus/includes/checkout-embed/readme.md @@ -2,7 +2,7 @@ ## To use in a new plugin: -- Include and instanciate `Updraft_Checkout_Embed` +- Include and instantiate `Updraft_Checkout_Embed` ```php if (!class_exists('Updraft_Checkout_Embed')) include_once (UPDRAFTPLUS_DIR.'/includes/checkout-embed/class-udp-checkout-embed.php'); diff --git a/wp-content/plugins/updraftplus/includes/class-backup-history.php b/wp-content/plugins/updraftplus/includes/class-backup-history.php index fbfdb309..8fedbd88 100644 --- a/wp-content/plugins/updraftplus/includes/class-backup-history.php +++ b/wp-content/plugins/updraftplus/includes/class-backup-history.php @@ -44,7 +44,7 @@ public static function get_history($timestamp = false) { */ public static function add_jobdata($backup_history) { - global $wpdb; + global $wpdb, $updraftplus; $table = is_multisite() ? $wpdb->sitemeta : $wpdb->options; $key_column = is_multisite() ? 'meta_key' : 'option_name'; $value_column = is_multisite() ? 'meta_value' : 'option_value'; @@ -84,7 +84,7 @@ public static function add_jobdata($backup_history) { // The 16 here is the length of 'updraft_jobdata_' $nonce = substr($values->$key_column, 16); if (empty($nonces_map[$nonce]) || empty($values->$value_column)) continue; - $jobdata = maybe_unserialize($values->$value_column); + $jobdata = $updraftplus->unserialize($values->$value_column); $backup_history[$nonces_map[$nonce]]['jobdata'] = empty($jobdata) ? array() : $jobdata; } foreach ($columns as $nonce) { @@ -233,7 +233,7 @@ public static function save_history($backup_history, $use_cache = true) { $changed = UpdraftPlus_Options::update_updraft_option('updraft_backup_history', $backup_history, $use_cache, 'no'); if (!$changed && '' !== $wpdb->last_error && $wpdb_previous_last_error != $wpdb->last_error) { - // if an error occured, there is a possibility if this error is caused by invalid characters found in 'label' + // if an error occurred, there is a possibility if this error is caused by invalid characters found in 'label' foreach ($backup_history as $btime => $bdata) { if (isset($bdata['label'])) { // try removing invalid characters from 'label' @@ -284,9 +284,9 @@ public static function save_history($backup_history, $use_cache = true) { * @return Mixed - the database option */ public static function filter_updraft_backup_history() { - global $wpdb; + global $wpdb, $updraftplus; $row = $wpdb->get_row($wpdb->prepare("SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", 'updraft_backup_history')); - if (is_object($row)) return maybe_unserialize($row->option_value); + if (is_object($row) && !empty($row->option_value)) return $updraftplus->unserialize($row->option_value); return false; } @@ -531,6 +531,7 @@ public static function rebuild($remote_scan = false, $only_add_this_file = false 'code' => 'foundforeign_'.md5($entry), 'desc' => $entry, 'method' => '', + // translators: %s: The description of the accepted foreign backup type. 'message' => sprintf(__('Backup created by: %s.', 'updraftplus'), $accept[$accepted_foreign]['desc']) ); } elseif ('.zip' == strtolower(substr($entry, -4, 4)) || preg_match('/\.sql(\.(bz2|gz))?$/i', $entry)) { @@ -582,7 +583,7 @@ public static function rebuild($remote_scan = false, $only_add_this_file = false $backup_times_by_nonce[$nonce] = $btime; } if ($btime <= 100) continue; - $file_size = @filesize($updraft_dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + $file_size = @filesize($updraft_dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. if (!isset($backup_nonces_by_filename[$entry])) { $changes = true; @@ -592,7 +593,7 @@ public static function rebuild($remote_scan = false, $only_add_this_file = false $backup_history[$btime]['native'] = false; } elseif ('db' == $type && !$accepted_foreign) { // we now that multiple databases will add its index number after the 'db' (e.g. 'db1'), however, the $type == 'db' here has nothing to do with our multiple databases addon because this block of code inside the 'if (!isset($backup_nonces_by_filename[$entry]))' will never be executed if multiple databases is found to be in the backup history and that our backup file pattern matches with them, so this is not the place where we should check for our multiple databases backup file, this is instead the place for handling foreign databases (e.g. Backup Buddy and our other competitors). The $type were previously set to 'db' when its file was found to be a foreign database - list ($mess, $warn, $err, $info) = $updraftplus->analyse_db_file(false, array(), $updraft_dir.'/'.$entry, true);// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + list ($mess, $warn, $err, $info) = $updraftplus->analyse_db_file(false, array(), $updraft_dir.'/'.$entry, true);// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused parameter is present because the method returns an array. if (!empty($info['label'])) { $backup_history[$btime]['label'] = $info['label']; } @@ -875,7 +876,7 @@ public static function save_backup($backup_time, $backup_array) { * @return void */ public static function preserve_backup_history() { - self::$backup_history_on_restore = get_site_option('updraft_backup_history'); + self::$backup_history_on_restore = self::get_backup_history_option(); } /** @@ -884,7 +885,7 @@ public static function preserve_backup_history() { * @return void */ public static function restore_backup_history_label() { - $backup_history = get_site_option('updraft_backup_history'); + $backup_history = self::get_backup_history_option(); $saved_backup_history = self::$backup_history_on_restore; $is_backup_history_changed = false; @@ -903,4 +904,13 @@ public static function restore_backup_history_label() { if ($is_backup_history_changed) self::save_history($backup_history, false); } + + /** + * Get backup history by checking for existence of the Multisite addon + * + * @return Array - the array of backup histories. + */ + private static function get_backup_history_option() { + return UpdraftPlus_Options::get_updraft_option('updraft_backup_history'); + } } diff --git a/wp-content/plugins/updraftplus/includes/class-commands.php b/wp-content/plugins/updraftplus/includes/class-commands.php index 0874cd50..f16306a8 100644 --- a/wp-content/plugins/updraftplus/includes/class-commands.php +++ b/wp-content/plugins/updraftplus/includes/class-commands.php @@ -33,7 +33,7 @@ public function __construct($uc_helper) { public function get_advanced_settings($options) { // load global updraftplus and admin if (false === ($updraftplus_admin = $this->_load_ud_admin())) return new WP_Error('no_updraftplus'); - if (false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. $html = $updraftplus_admin->settings_advanced_tools(true, array('options' => $options)); @@ -109,6 +109,15 @@ public function backup_progress($params) { } + /** + * Perform a backup + * + * @param Array $params + * + * @uses die() + * + * @return WP_Error - or, may die() + */ public function backupnow($params) { if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus'); @@ -214,7 +223,7 @@ public function activejobs_delete($job_id) { public function deleteset($what) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); @@ -303,7 +312,7 @@ public function get_settings($options) { */ public function test_storage_settings($test_data) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); @@ -322,7 +331,7 @@ public function test_storage_settings($test_data) { */ public function extradb_testconnection($info) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); @@ -376,7 +385,7 @@ public function vault_connect($credentials) { */ public function vault_disconnect($params = array()) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); @@ -398,7 +407,7 @@ public function vault_disconnect($params = array()) { */ public function save_settings($settings) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); @@ -420,7 +429,7 @@ public function save_settings($settings) { } public function s3_newuser($data) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); $results = apply_filters('updraft_s3_newuser_go', array(), $data); @@ -432,6 +441,7 @@ public function cloudfiles_newuser($data) { global $updraftplus_addon_cloudfilesenhanced; if (!is_a($updraftplus_addon_cloudfilesenhanced, 'UpdraftPlus_Addon_CloudFilesEnhanced')) { + // translators: %s: The name of the missing add-on. $data = array('e' => 1, 'm' => sprintf(__('%s add-on not found', 'updraftplus'), 'Rackspace Cloud Files')); } else { $data = $updraftplus_addon_cloudfilesenhanced->create_api_user($data); @@ -713,7 +723,7 @@ public function fetch_log($data) { * @return Array An Array response to be sent back */ public function auth_remote_method($data) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); $response = $updraftplus_admin->auth_remote_method($data); return $response; @@ -728,7 +738,7 @@ public function auth_remote_method($data) { * @return Array An Array response to be sent back */ public function deauth_remote_method($data) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); $response = $updraftplus_admin->deauth_remote_method($data); return $response; @@ -742,7 +752,7 @@ public function deauth_remote_method($data) { * @return array - an array response to be sent back to the frontend */ public function manual_remote_storage_authentication($data) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. $response = array( 'result' => 'success' @@ -873,7 +883,7 @@ public function get_backup_info() { * @return array - an array with the result of the connection status */ public function updraftplus_com_login_submit($data) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. global $updraftplus_addons2, $updraftplus; @@ -921,11 +931,9 @@ public function updraftplus_com_login_submit($data) { /** * This method will create UI for a list of local backups that can be remote sent and return it * - * @param array $data - an array of data - * * @return array - an array with the results from the backup search */ - public function get_backup_list($data) { + public function get_backup_list() { if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus'); $response = array( @@ -982,7 +990,7 @@ public function upload_local_backup($data) { $msg = array( 'nonce' => $data['use_nonce'], - 'm' => apply_filters('updraftplus_backupnow_start_message', ''.__('Start backup', 'updraftplus').': '.htmlspecialchars(__('OK. You should soon see activity in the "Last log message" field below.', 'updraftplus')), $data['use_nonce']) + 'm' => apply_filters('updraftplus_backupnow_start_message', ''.__('Start backup', 'updraftplus').': '.htmlspecialchars(__('OK.', 'updraftplus').' '.__('You should soon see activity in the "Last log message" field below.', 'updraftplus')), $data['use_nonce']) ); $close_connection_callable = array($this->_uc_helper, $background_operation_started_method_name); @@ -1055,21 +1063,30 @@ public function process_updraftplus_clone_login($params) { $response = $updraftplus->get_updraftplus_clone()->ajax_process_login($params, false); if (isset($response['status']) && 'authenticated' == $response['status']) { + UpdraftPlus::load_checkout_embed(); + + global $updraftplus_checkout_embed; + $checkout_url = $updraftplus->get_url('buy_clone_tokens'); + if (is_a($updraftplus_checkout_embed, 'Updraft_Checkout_Embed')) { + $checkout_url = $updraftplus_checkout_embed->get_product('updraftplus-clone-tokens', UpdraftPlus_Options::admin_page_url().'?page=updraftplus&tab=migrate'); + } + $tokens = isset($response['tokens']) ? $response['tokens'] : 0; $content = '
'; $content .= '
'; $content .= '

' . __("Available temporary clone tokens:", "updraftplus") . ' ' . esc_html($tokens) . '

'; - $content .= '

'.__('You can buy more temporary clone tokens here.', 'updraftplus').'

'; + $content .= '

'.__('You can buy more temporary clone tokens here.', 'updraftplus').'

'; $content .= '
'; if (0 != $response['tokens']) { $is_vps_tester = !empty($response['is_vps_tester']); $supported_wp_versions = isset($response['supported_wp_versions']) ? $response['supported_wp_versions'] : array(); $supported_packages = isset($response['supported_packages']) ? $response['supported_packages'] : array(); + $supported_packages_label = isset($response['supported_packages_label']) ? $response['supported_packages_label'] : array(); $supported_regions = isset($response['supported_regions']) ? $response['supported_regions'] : array(); $nearest_region = isset($response['nearest_region']) ? $response['nearest_region'] : ''; $content .= '
'; - $content .= $updraftplus_admin->updraftplus_clone_ui_widget($is_vps_tester, $supported_wp_versions, $supported_packages, $supported_regions, $nearest_region); + $content .= $updraftplus_admin->updraftplus_clone_ui_widget($is_vps_tester, $supported_wp_versions, $supported_packages, $supported_regions, $nearest_region, $supported_packages_label); $content .= '

'; $content .= ''; $content .= '' . __('Processing', 'updraftplus') . '...
'; @@ -1127,9 +1144,9 @@ public function process_updraftplus_clone_create($params) { $content .= '
'; // end .updraftclone-main-row } if (isset($params['form_data']['install_info']['wp_only'])) { - $content .= '

' . __('No backup will be started. The creation of your clone should now begin, and your WordPress username and password will be displayed below when ready.', 'updraftplus') . ' ' . __('N.B. You will be charged one token once the clone is ready. If the clone fails to boot, then the token will be released within an hour.', 'updraftplus') . '' . __('Processing', 'updraftplus') . '...

'; + $content .= '

' . __('No backup will be started.', 'updraftplus').' '.__('The creation of your clone should now begin, and your WordPress username and password will be displayed below when ready.', 'updraftplus') . ' ' . __('N.B. You will be charged one token once the clone is ready.', 'updraftplus').' '.__('If the clone fails to boot, then the token will be released within an hour.', 'updraftplus') . '' . __('Processing', 'updraftplus') . '...

'; } else { - $content .= '

' . __('The creation of your data for creating the clone should now begin.', 'updraftplus') . ' ' . __('N.B. You will be charged one token once the clone is ready. If the clone fails to boot, then the token will be released within an hour.', 'updraftplus') . '' . __('Processing', 'updraftplus') . '...

'; + $content .= '

' . __('The creation of your data for creating the clone should now begin.', 'updraftplus') . ' ' . __('N.B. You will be charged one token once the clone is ready.', 'updraftplus').' '.__('If the clone fails to boot, then the token will be released within an hour.', 'updraftplus') . '' . __('Processing', 'updraftplus') . '...

'; $content .= ''; } @@ -1148,7 +1165,7 @@ public function process_updraftplus_clone_create($params) { * @return array|WP_Error - the response array that includes the credential info or a WP_Error */ public function process_updraftplus_clone_poll($params) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); $response = $updraftplus->get_updraftplus_clone()->clone_info_poll($params); @@ -1157,14 +1174,14 @@ public function process_updraftplus_clone_poll($params) { } /** - * This function will get the clone netowrk info HTML for the passed in clone URL + * This function will get the clone network info HTML for the passed in clone URL * * @param array $params - the parameters for the call * * @return array - the response array that includes the network HTML */ public function get_clone_network_info($params) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); $url = empty($params['clone_url']) ? '' : $params['clone_url']; @@ -1184,7 +1201,7 @@ public function get_clone_network_info($params) { * @return array|WP_Error - the response array that includes the restore resume notice */ public function get_restore_resume_notice($params) { - if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable + if (false === ($updraftplus_admin = $this->_load_ud_admin()) || false === ($updraftplus = $this->_load_ud())) return new WP_Error('no_updraftplus');// phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- Unused variable is for future use. if (!UpdraftPlus_Options::user_can_manage()) return new WP_Error('updraftplus_permission_denied'); $job_id = empty($params['job_id']) ? '' : $params['job_id']; @@ -1207,9 +1224,20 @@ public function get_restore_resume_notice($params) { /** * This function will add updraft_dismiss_admin_warning_litespeed option to hide litespeed admin warning after dismissed * - * @return void + * @return array - an empty array */ public function dismiss_admin_warning_litespeed() { UpdraftPlus_Options::update_updraft_option('updraft_dismiss_admin_warning_litespeed', true); + return array(); + } + + /** + * This function will add updraft_dismiss_admin_warning_pclzip option to hide pclzip admin warning after dismissed + * + * @return array - an empty array + */ + public function dismiss_admin_warning_pclzip() { + UpdraftPlus_Options::update_updraft_option('updraft_dismiss_admin_warning_pclzip', true); + return array(); } } diff --git a/wp-content/plugins/updraftplus/includes/class-database-utility.php b/wp-content/plugins/updraftplus/includes/class-database-utility.php index 25c401a3..153c09ba 100644 --- a/wp-content/plugins/updraftplus/includes/class-database-utility.php +++ b/wp-content/plugins/updraftplus/includes/class-database-utility.php @@ -4,26 +4,45 @@ class UpdraftPlus_Database_Utility { - private $whichdb; + /** + * Indicated which database is being used + * + * @var String + */ + private static $whichdb; - private $table_prefix_raw; + /** + * The unfiltered table prefix - i.e. the real prefix that things are relative to + * + * @var String + */ + private static $table_prefix_raw; - private $dbhandle; + /** + * The object to perform database operations + * + * @var Object + */ + private static $dbhandle; /** - * Constructor + * The array of table status, used as a cache to reduce unnecessary DB reads for doing the same thing over and over + * + * @var Array */ + private static $table_status = array(); + /** - * Constructor + * Initialize required variables * * @param String $whichdb - which database is being backed up * @param String $table_prefix_raw - the base table prefix * @param Object $dbhandle - WPDB object */ - public function __construct($whichdb, $table_prefix_raw, $dbhandle) { - $this->whichdb = $whichdb; - $this->table_prefix_raw = $table_prefix_raw; - $this->dbhandle = $dbhandle; + public static function init($whichdb, $table_prefix_raw, $dbhandle) { + self::$whichdb = $whichdb; + self::$table_prefix_raw = $table_prefix_raw; + self::$dbhandle = $dbhandle; } /** @@ -34,8 +53,7 @@ public function __construct($whichdb, $table_prefix_raw, $dbhandle) { * * @return Integer - the sort result, according to the rules of PHP custom sorting functions */ - public function backup_db_sorttables($a_arr, $b_arr) { - + public static function backup_db_sorttables($a_arr, $b_arr) { $a = $a_arr['name']; $a_table_type = $a_arr['type']; $b = $b_arr['name']; @@ -45,11 +63,11 @@ public function backup_db_sorttables($a_arr, $b_arr) { if ('VIEW' == $a_table_type && 'VIEW' != $b_table_type) return 1; if ('VIEW' == $b_table_type && 'VIEW' != $a_table_type) return -1; - if ('wp' != $this->whichdb) return strcmp($a, $b); + if ('wp' != self::$whichdb) return strcmp($a, $b); global $updraftplus; if ($a == $b) return 0; - $our_table_prefix = $this->table_prefix_raw; + $our_table_prefix = self::$table_prefix_raw; if ($a == $our_table_prefix.'options') return -1; if ($b == $our_table_prefix.'options') return 1; if ($a == $our_table_prefix.'site') return -1; @@ -64,7 +82,7 @@ public function backup_db_sorttables($a_arr, $b_arr) { if (empty($our_table_prefix)) return strcmp($a, $b); try { - $core_tables = array_merge($this->dbhandle->tables, $this->dbhandle->global_tables, $this->dbhandle->ms_global_tables); + $core_tables = array_merge(self::$dbhandle->tables, self::$dbhandle->global_tables, self::$dbhandle->ms_global_tables); } catch (Exception $e) { $updraftplus->log($e->getMessage()); } @@ -202,7 +220,7 @@ public static function set_sql_mode($modes = array(), $remove_modes = array(), $ 'TRADITIONAL', ), $strict_modes)); - $class = get_class(); + $class = __CLASS__; if (is_null($db_handle) || is_a($db_handle, 'WPDB')) { $initial_modes_str = $wpdb_handle_if_used->get_var('SELECT @@SESSION.sql_mode'); @@ -311,7 +329,7 @@ public static function get_generated_column_info($table_column_definition, $star * [0]=> string(18) "GENERATED ALWAYS AS (concat(`firstname`,'()`)(()',`lastname`))" * [1]=> int(629) // this is the position or starting offset of the captured data type's option, this can later be used to help with the unsupported keyword replacement stuff among db server * } - * [4]=> // 5th index represents data type option that is captured before COMMENT keyword and after "generated alwasy as" + * [4]=> // 5th index represents data type option that is captured before COMMENT keyword and after "generated always as" * array(2) { * [0]=> string(13) " VIRTUAL NOT NULL " // this is the comment string that could be filled with any word even the reserved keyword (e.g. not null, virtual, stored, etc..) * [1]=> int(656) // this is the position or starting offset of the captured data type's option, this can later be used to help with the unsupported keyword replacement stuff among db server @@ -574,7 +592,8 @@ public static function is_stored_routine_supported() { ); $wpdb->query($sql['DROP_FUNCTION']); } else { - $is_stored_routine_supported = new WP_Error('routine_creation_error', sprintf(__('An error occurred while attempting to check the support of stored routines creation (%s %s)', 'updraftplus'), $wpdb->last_error.' -', $sql['CREATE_FUNCTION'])); + /* translators: 1: Last database error, 2: SQL create function statement. */ + $is_stored_routine_supported = new WP_Error('routine_creation_error', sprintf(__('An error occurred while attempting to check the support of stored routines creation (%1$s %2$s)', 'updraftplus'), $wpdb->last_error.' -', $sql['CREATE_FUNCTION'])); } $wpdb->suppress_errors($old_val); @@ -642,7 +661,8 @@ public static function get_stored_routines() { $old_val = $wpdb->suppress_errors(); try { - $err_msg = __('An error occurred while attempting to retrieve routine status (%s %s)', 'updraftplus'); + /* translators: 1: Last database error, 2: Additional error details. */ + $err_msg = __('An error occurred while attempting to retrieve routine status (%1$s %2$s)', 'updraftplus'); $function_status = $wpdb->get_results($wpdb->prepare('SHOW FUNCTION STATUS WHERE DB = %s', DB_NAME), ARRAY_A); if (!empty($wpdb->last_error)) throw new Exception(sprintf($err_msg, $wpdb->last_error.' -', $wpdb->last_query), 0); $procedure_status = $wpdb->get_results($wpdb->prepare('SHOW PROCEDURE STATUS WHERE DB = %s', DB_NAME), ARRAY_A); @@ -654,7 +674,8 @@ public static function get_stored_routines() { // Since routine name can include backquotes and routine name is typically enclosed with backquotes as well, the backquote escaping for the routine name can be done by adding a leading backquote $quoted_escaped_routine_name = UpdraftPlus_Manipulation_Functions::backquote(str_replace('`', '``', $routine_name)); $routine = $wpdb->get_results($wpdb->prepare('SHOW CREATE %1$s %2$s', $routine['Type'], $quoted_escaped_routine_name), ARRAY_A); - if (!empty($wpdb->last_error)) throw new Exception(sprintf(__('An error occurred while attempting to retrieve the routine SQL/DDL statement (%s %s)', 'updraftplus'), $wpdb->last_error.' -', $wpdb->last_query), 1); + /* translators: 1: Last database error, 2: Last executed SQL query. */ + if (!empty($wpdb->last_error)) throw new Exception(sprintf(__('An error occurred while attempting to retrieve the routine SQL/DDL statement (%1$s %2$s)', 'updraftplus'), $wpdb->last_error.' -', $wpdb->last_query), 1); $stored_routines[$key] = array_merge($stored_routines[$key], $routine ? $routine[0] : array()); } } catch (Exception $ex) { @@ -675,6 +696,59 @@ public static function get_stored_routines() { public static function esc_like($text) { return function_exists('esc_like') ? esc_like($text) : addcslashes($text, '_%\\'); } + + /** + * Return installation or activation link of WP-Optimize plugin + * + * @return String + */ + public static function get_install_activate_link_of_wp_optimize_plugin() { + // If WP-Optimize is activated, then return empty. + if (class_exists('WP_Optimize')) return ''; + + // Generally it is 'wp-optimize/wp-optimize.php', + // but we can't assume that the user hasn't renamed the plugin folder - with 3 million UDP users and 1 million AIOWPS, there will be some who have. + $wp_optimize_plugin_file_rel_to_plugins_dir = UpdraftPlus_Database_Utility::get_wp_optimize_plugin_file_rel_to_plugins_dir(); + + // If UpdraftPlus is installed but not activated, then return activate link. + if ($wp_optimize_plugin_file_rel_to_plugins_dir) { + $activate_url = add_query_arg(array( + '_wpnonce' => wp_create_nonce('activate-plugin_'.$wp_optimize_plugin_file_rel_to_plugins_dir), + 'action' => 'activate', + 'plugin' => $wp_optimize_plugin_file_rel_to_plugins_dir, + ), network_admin_url('plugins.php')); + + // If is network admin then add to link network activation. + if (is_network_admin()) { + $activate_url = add_query_arg(array('networkwide' => 1), $activate_url); + } + return sprintf('%s %s', __('WP-Optimize is installed but currently inactive.', 'updraftplus'), $activate_url, __('Follow this link to activate the WP-Optimize plugin.', 'updraftplus')); + } + + // If WP-Optimize is neither activated nor installed then return the installation link + return ''.__('Follow this link to install the WP-Optimize plugin.', 'updraftplus').''; + } + + /** + * Get path to the WP-Optimize plugin file relative to the plugins directory. + * + * @return String|false path to the WP-Optimize plugin file relative to the plugins directory + */ + public static function get_wp_optimize_plugin_file_rel_to_plugins_dir() { + if (!function_exists('get_plugins')) { + include_once ABSPATH . '/wp-admin/includes/plugin.php'; + } + + $installed_plugins = get_plugins(); + $installed_plugins_keys = array_keys($installed_plugins); + foreach ($installed_plugins_keys as $plugin_file_rel_to_plugins_dir) { + $temp_plugin_file_name = substr($plugin_file_rel_to_plugins_dir, strpos($plugin_file_rel_to_plugins_dir, '/') + 1); + if ('wp-optimize.php' == $temp_plugin_file_name) { + return $plugin_file_rel_to_plugins_dir; + } + } + return false; + } } class UpdraftPlus_WPDB_OtherDB_Utility extends wpdb { diff --git a/wp-content/plugins/updraftplus/includes/class-filesystem-functions.php b/wp-content/plugins/updraftplus/includes/class-filesystem-functions.php index b45b899c..8d24eed7 100644 --- a/wp-content/plugins/updraftplus/includes/class-filesystem-functions.php +++ b/wp-content/plugins/updraftplus/includes/class-filesystem-functions.php @@ -35,7 +35,7 @@ public static function recursive_directory_size($directorieses, $exclude = array foreach ($directories as $dir) { if (is_file($dir)) { - $size += @filesize($dir);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + $size += @filesize($dir);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } else { $suffix = ('' != $basedir) ? ((0 === strpos($dir, $basedir.'/')) ? substr($dir, 1+strlen($basedir)) : '') : ''; $size += self::recursive_directory_size_raw($basedir, $exclude, $suffix); @@ -80,7 +80,7 @@ public static function ensure_wp_filesystem_set_up_for_restore($url_parameters = if ($wp_filesystem->errors->get_error_code()) { echo '
'; - echo ''; + echo ''; echo '
'; foreach ($wp_filesystem->errors->get_error_messages() as $message) show_message($message); echo '
'; @@ -154,7 +154,7 @@ public static function clean_temporary_files($match = '', $older_than = 43200, $ foreach ($all_jobs as $job) { $nonce = str_replace('updraft_jobdata_', '', $job[$key_column]); - $val = maybe_unserialize($job[$value_column]); + $val = empty($job[$value_column]) ? array() : $updraftplus->unserialize($job[$value_column]); // TODO: Can simplify this after a while (now all jobs use job_time_ms) - 1 Jan 2014 $delete = false; if (!empty($val['next_increment_start_scheduled_for'])) { @@ -188,34 +188,37 @@ public static function clean_temporary_files($match = '', $older_than = 43200, $ $updraft_dir = $updraftplus->backups_dir_location(); $now_time = time(); $files_deleted = 0; + $include_cachelist = defined('DOING_CRON') && DOING_CRON && doing_action('updraftplus_clean_temporary_files') ? true : $include_cachelist; if ($handle = opendir($updraft_dir)) { while (false !== ($entry = readdir($handle))) { - $manifest_match = preg_match("/updraftplus-manifest.json/", $entry); + $manifest_match = preg_match("/updraftplus-manifest\.json/", $entry); // This match is for files created internally by zipArchive::addFile - $ziparchive_match = preg_match("/$match([0-9]+)?\.zip\.tmp\.([A-Za-z0-9]){6}?$/i", $entry); + $ziparchive_match = preg_match("/$match([0-9]+)?\.zip\.tmp\.(?:[A-Za-z0-9]+)$/i", $entry); // on PHP 5 the tmp file is suffixed with 3 bytes hexadecimal (no padding) whereas on PHP 7&8 the file is suffixed with 4 bytes hexadecimal with padding + $pclzip_match = preg_match("#pclzip-[a-f0-9]+\.(?:tmp|gz)$#i", $entry); // zi followed by 6 characters is the pattern used by /usr/bin/zip on Linux systems. It's safe to check for, as we have nothing else that's going to match that pattern. $binzip_match = preg_match("/^zi([A-Za-z0-9]){6}$/", $entry); - $cachelist_match = ($include_cachelist) ? preg_match("/$match-cachelist-.*.tmp$/i", $entry) : false; + $cachelist_match = ($include_cachelist) ? preg_match("/-cachelist-.*(?:info|\.tmp)$/i", $entry) : false; $browserlog_match = preg_match('/^log\.[0-9a-f]+-browser\.txt$/', $entry); + $downloader_client_match = preg_match("/$match([0-9]+)?\.zip\.tmp\.(?:[A-Za-z0-9]+)\.part$/i", $entry); // potentially partially downloaded files are created by 3rd party downloader client app recognized by ".part" extension at the end of the backup file name (e.g. .zip.tmp.3b9r8r.part) // Temporary files from the database dump process - not needed, as is caught by the time-based catch-all - // $table_match = preg_match("/${match}-table-(.*)\.table(\.tmp)?\.gz$/i", $entry); + // $table_match = preg_match("/{$match}-table-(.*)\.table(\.tmp)?\.gz$/i", $entry); // The gz goes in with the txt, because we *don't* want to reap the raw .txt files - if ((preg_match("/$match\.(tmp|table|txt\.gz)(\.gz)?$/i", $entry) || $cachelist_match || $ziparchive_match || $binzip_match || $manifest_match || $browserlog_match) && is_file($updraft_dir.'/'.$entry)) { + if ((preg_match("/$match\.(tmp|table|txt\.gz)(\.gz)?$/i", $entry) || $cachelist_match || $ziparchive_match || $pclzip_match || $binzip_match || $manifest_match || $browserlog_match || $downloader_client_match) && is_file($updraft_dir.'/'.$entry)) { // We delete if a parameter was specified (and either it is a ZipArchive match or an order to delete of whatever age), or if over 12 hours old - if (($match && ($ziparchive_match || $binzip_match || $cachelist_match || $manifest_match || 0 == $older_than) && $now_time-filemtime($updraft_dir.'/'.$entry) >= $older_than) || $now_time-filemtime($updraft_dir.'/'.$entry)>43200) { + if (($match && ($ziparchive_match || $pclzip_match || $binzip_match || $cachelist_match || $manifest_match || 0 == $older_than) && $now_time-filemtime($updraft_dir.'/'.$entry) >= $older_than) || $now_time-filemtime($updraft_dir.'/'.$entry)>43200) { $skip_dblog = (0 == $files_deleted % 25) ? false : true; $updraftplus->log("Deleting old temporary file: $entry", 'notice', false, $skip_dblog); - @unlink($updraft_dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @unlink($updraft_dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise if the file doesn't exist. $files_deleted++; } } elseif (preg_match('/^log\.[0-9a-f]+\.txt$/', $entry) && $now_time-filemtime($updraft_dir.'/'.$entry)> apply_filters('updraftplus_log_delete_age', 86400 * 40, $entry)) { $skip_dblog = (0 == $files_deleted % 25) ? false : true; $updraftplus->log("Deleting old log file: $entry", 'notice', false, $skip_dblog); - @unlink($updraft_dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @unlink($updraft_dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise if the file doesn't exist. $files_deleted++; } } - @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } // Depending on the PHP setup, the current working directory could be ABSPATH or wp-admin - scan both @@ -226,10 +229,10 @@ public static function clean_temporary_files($match = '', $older_than = 43200, $ // With the old pclzip temporary files, there is no need to keep them around after they're not in use - so we don't use $older_than here - just go for 15 minutes if (preg_match("/^pclzip-[a-z0-9]+.tmp$/", $entry) && $now_time-filemtime($path.$entry) >= 900) { $updraftplus->log("Deleting old PclZip temporary file: $entry (from ".basename($path).")"); - @unlink($path.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @unlink($path.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise if the file doesn't exist. } } - @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } } } @@ -243,14 +246,14 @@ public static function clean_temporary_files($match = '', $older_than = 43200, $ */ public static function really_is_writable($dir) { // Suppress warnings, since if the user is dumping warnings to screen, then invalid JavaScript results and the screen breaks. - if (!@is_writable($dir)) return false;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (!@is_writable($dir)) return false;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. // Found a case - GoDaddy server, Windows, PHP 5.2.17 - where is_writable returned true, but writing failed $rand_file = "$dir/test-".md5(rand().time()).".txt"; while (file_exists($rand_file)) { $rand_file = "$dir/test-".md5(rand().time()).".txt"; } - $ret = @file_put_contents($rand_file, 'testing...');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged - @unlink($rand_file);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + $ret = @file_put_contents($rand_file, 'testing...');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. + @unlink($rand_file);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise if the file doesn't exist. return ($ret > 0); } @@ -269,17 +272,17 @@ public static function remove_local_directory($dir, $contents_only = false) { // } // return rmdir($dir); - if ($handle = @opendir($dir)) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if ($handle = @opendir($dir)) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. while (false !== ($entry = readdir($handle))) { if ('.' !== $entry && '..' !== $entry) { if (is_dir($dir.'/'.$entry)) { self::remove_local_directory($dir.'/'.$entry, false); } else { - @unlink($dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @unlink($dir.'/'.$entry);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise if the file doesn't exist. } } } - @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @closedir($handle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } return $contents_only ? true : rmdir($dir); @@ -312,7 +315,7 @@ public static function gzopen_for_read($file, &$warn, &$err) { if (0 === gzseek($dbhandle, 0)) { return $dbhandle; } else { - @gzclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @gzclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. return gzopen($file, 'r'); } } @@ -325,22 +328,22 @@ public static function gzopen_for_read($file, &$warn, &$err) { if (false === ($fnew = fopen($file.".tmp", 'w')) || !is_resource($fnew)) { - @gzclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @gzclose($dbhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $err_msg = __('The attempt to undo the double-compression failed.', 'updraftplus'); } else { - @fwrite($fnew, $bytes);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @fwrite($fnew, $bytes);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $emptimes = 0; while (!gzeof($dbhandle)) { - $bytes = @gzread($dbhandle, 262144);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + $bytes = @gzread($dbhandle, 262144);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. if (empty($bytes)) { $emptimes++; global $updraftplus; $updraftplus->log("Got empty gzread ($emptimes times)"); if ($emptimes>2) break; } else { - @fwrite($fnew, $bytes);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @fwrite($fnew, $bytes);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. } } @@ -439,8 +442,8 @@ public static function get_disk_space_used($entity, $format = 'text') { /** * Unzips a specified ZIP file to a location on the filesystem via the WordPress - * Filesystem Abstraction. Forked from WordPress core in version 5.1-alpha-44182. - * Forked to allow us to modify the behaviour (eventually, to provide feedback on progress) + * Filesystem Abstraction. Forked from WordPress core in version 5.1-alpha-44182, + * to allow us to provide feedback on progress. * * Assumes that WP_Filesystem() has already been called and set up. Does not extract * a root-level __MACOSX directory, if present. @@ -591,6 +594,92 @@ public static function wp_doing_cron() { return apply_filters('wp_doing_cron', defined('DOING_CRON') && DOING_CRON); } + /** + * Log permission failure message when restoring a backup + * + * @param string $path full path of file or folder + * @param string $log_message_prefix action which is performed to path + * @param string $directory_prefix_in_log_message Directory Prefix. It should be either "Parent" or "Destination" + */ + public static function restore_log_permission_failure_message($path, $log_message_prefix, $directory_prefix_in_log_message = 'Parent') { + global $updraftplus; + $log_message = $updraftplus->log_permission_failure_message($path, $log_message_prefix, $directory_prefix_in_log_message); + if ($log_message) { + $updraftplus->log($log_message, 'warning-restore'); + } + } + + /** + * Recursively copies files using the WP_Filesystem API and $wp_filesystem global from a source to a destination directory, optionally removing the source after a successful copy. + * + * @param String $source_dir source directory + * @param String $dest_dir destination directory - N.B. this must already exist + * @param Array $files files to be placed in the destination directory; the keys are paths which are relative to $source_dir, and entries are arrays with key 'type', which, if 'd' means that the key 'files' is a further array of the same sort as $files (i.e. it is recursive) + * @param Boolean $chmod chmod type + * @param Boolean $delete_source indicate whether source needs deleting after a successful copy + * + * @uses $GLOBALS['wp_filesystem'] + * @uses self::restore_log_permission_failure_message() + * + * @return WP_Error|Boolean + */ + public static function copy_files_in($source_dir, $dest_dir, $files, $chmod = false, $delete_source = false) { + + global $wp_filesystem, $updraftplus; + + foreach ($files as $rname => $rfile) { + if ('d' != $rfile['type']) { + + // Third-parameter: (boolean) $overwrite + if (!$wp_filesystem->move($source_dir.'/'.$rname, $dest_dir.'/'.$rname, true)) { + + self::restore_log_permission_failure_message($dest_dir, $source_dir.'/'.$rname.' -> '.$dest_dir.'/'.$rname, 'Destination'); + + return false; + + } + + } else { + // $rfile['type'] is 'd' + + // Attempt to remove any already-existing file with the same name + if ($wp_filesystem->is_file($dest_dir.'/'.$rname)) @$wp_filesystem->delete($dest_dir.'/'.$rname, false, 'f');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- if fails, carry on + + // No such directory yet: just move it + if ($wp_filesystem->exists($dest_dir.'/'.$rname) && !$wp_filesystem->is_dir($dest_dir.'/'.$rname) && !$wp_filesystem->move($source_dir.'/'.$rname, $dest_dir.'/'.$rname, false)) { + + self::restore_log_permission_failure_message($dest_dir, 'Move '.$source_dir.'/'.$rname.' -> '.$dest_dir.'/'.$rname, 'Destination'); + $updraftplus->log_e('Failed to move directory (check your file permissions and disk quota): %s', $source_dir.'/'.$rname." -> ".$dest_dir.'/'.$rname); + + return false; + + } elseif (!empty($rfile['files'])) { + + if (!$wp_filesystem->exists($dest_dir.'/'.$rname)) $wp_filesystem->mkdir($dest_dir.'/'.$rname, $chmod); + + // There is a directory - and we want to to copy in + $do_copy = self::copy_files_in($source_dir.'/'.$rname, $dest_dir.'/'.$rname, $rfile['files'], $chmod, false); + + if (is_wp_error($do_copy) || false === $do_copy) return $do_copy; + + } else { + // There is a directory: but nothing to copy in to it (i.e. $file['files'] is empty). Just remove the directory. + @$wp_filesystem->rmdir($source_dir.'/'.$rname);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the method. + } + } + } + + // We are meant to leave the working directory empty. Hence, need to rmdir() once a directory is empty. But not the root of it all in case of others/wpcore. + if ($delete_source || false !== strpos($source_dir, '/')) { + if (!$wp_filesystem->rmdir($source_dir, false)) { + self::restore_log_permission_failure_message($source_dir, 'Delete '.$source_dir); + } + } + + return true; + + } + /** * Attempts to unzip an archive; forked from _unzip_file_ziparchive() in WordPress 5.1-alpha-44182, and modified to use the UD zip classes. * @@ -663,6 +752,10 @@ private static function unzip_file_go($file, $to, $needed_dirs = array(), $metho // Path to a file. $needed_dirs[] = $to . untrailingslashit($dirname); } + + // Protect against memory over-use + if (0 == $i % 500) $needed_dirs = array_unique($needed_dirs); + } /* @@ -671,20 +764,21 @@ private static function unzip_file_go($file, $to, $needed_dirs = array(), $metho * Require we have enough space to unzip the file and copy its contents, with a 10% buffer. */ if (self::wp_doing_cron()) { - $available_space = function_exists('disk_free_space') ? @disk_free_space(WP_CONTENT_DIR) : false;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + $available_space = function_exists('disk_free_space') ? @disk_free_space(WP_CONTENT_DIR) : false;// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Call is speculative if ($available_space && ($uncompressed_size * 2.1) > $available_space) { - return new WP_Error('disk_full_unzip_file', __('Could not copy files. You may have run out of disk space.'), compact('uncompressed_size', 'available_space')); + return new WP_Error('disk_full_unzip_file', __('Could not copy files.', 'updraftplus').' '.__('You may have run out of disk space.'), compact('uncompressed_size', 'available_space')); } } $needed_dirs = array_unique($needed_dirs); foreach ($needed_dirs as $dir) { // Check the parent folders of the folders all exist within the creation array. - if (untrailingslashit($to) == $dir) { // Skip over the working directory, We know this exists (or will exist) + if (untrailingslashit($to) == $dir) { + // Skip over the working directory, We know this exists (or will exist) continue; } - // If the directory is not within the working directory, Skip it + // If the directory is not within the working directory then skip it if (false === strpos($dir, $to)) continue; $parent_folder = dirname($dir); @@ -730,7 +824,7 @@ private static function unzip_file_go($file, $to, $needed_dirs = array(), $metho if (isset($path[1]) && !in_array($path[1], $folders_to_include)) continue; } - // PclZip will return (boolean)false for an empty file + // N.B. PclZip will return (boolean)false for an empty file if (isset($info['size']) && 0 == $info['size']) { $contents = ''; } else { diff --git a/wp-content/plugins/updraftplus/includes/class-http-error-descriptions.php b/wp-content/plugins/updraftplus/includes/class-http-error-descriptions.php index 5e6fedd1..553444dc 100644 --- a/wp-content/plugins/updraftplus/includes/class-http-error-descriptions.php +++ b/wp-content/plugins/updraftplus/includes/class-http-error-descriptions.php @@ -21,62 +21,62 @@ public static function get_http_status_code_description($http_error_code) { This class of status code indicates the client must take additional action to complete the request. Many of these status codes are used in URL redirection. A user agent may carry out the additional action with no user interaction only if the method used in the second request is GET or HEAD. A user agent may automatically redirect a request. A user agent should detect and intervene to prevent cyclical redirects. */ - 300 => __('Multiple Choices. Indicates multiple options for the resource from which the client may choose (via agent-driven content negotiation).', 'updraftplus'), - 301 => __('Moved Permanently. This and all future requests should be directed to the given URI.', 'updraftplus'), - 302 => __('Found (Previously "Moved temporarily"). Tells the client to look at (browse to) another URL.', 'updraftplus'), - 303 => __('See Other. The response to the request can be found under another URI using the GET method. When received in response to a POST (or PUT/DELETE), the client should presume that the server has received the data and should issue a new GET request to the given URI', 'updraftplus'), - 304 => __('Not Modified. Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.', 'updraftplus'), - 305 => __('Use Proxy. The requested resource is available only through a proxy, the address for which is provided in the response.', 'updraftplus'), - 307 => __('Temporary Redirect. In this case, the request should be repeated with another URI; however, future requests should still use the original URI.', 'updraftplus'), - 308 => __('Permanent Redirect. This and all future requests should be directed to the given URI.', 'updraftplus'), + 300 => __('Multiple Choices.', 'updraftplus').' '.__('Indicates multiple options for the resource from which the client may choose (via agent-driven content negotiation).', 'updraftplus'), + 301 => __('Moved Permanently.', 'updraftplus').' '.__('This and all future requests should be directed to the given URI.', 'updraftplus'), + 302 => __('Found (Previously "Moved temporarily").', 'updraftplus').' '.__('Tells the client to look at (browse to) another URL.', 'updraftplus'), + 303 => __('See Other.', 'updraftplus').' '.__('The response to the request can be found under another URI using the GET method.', 'updraftplus').' '.__('When received in response to a POST (or PUT/DELETE), the client should presume that the server has received the data and should issue a new GET request to the given URI', 'updraftplus'), + 304 => __('Not Modified.', 'updraftplus').' '.__('Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.', 'updraftplus'), + 305 => __('Use Proxy.', 'updraftplus').' '.__('The requested resource is available only through a proxy, the address for which is provided in the response.', 'updraftplus'), + 307 => __('Temporary Redirect.', 'updraftplus').' '.__('In this case, the request should be repeated with another URI; however, future requests should still use the original URI.', 'updraftplus'), + 308 => __('Permanent Redirect.', 'updraftplus').' '.__('This and all future requests should be directed to the given URI.', 'updraftplus'), /* 4xx client errors This class of status code is intended for situations in which the error seems to have been caused by the client. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and whether it is a temporary or permanent condition. These status codes are applicable to any request method. User agents should display any included entity to the user. */ - 400 => __('Bad Request. The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing).', 'updraftplus'), - 401 => __('Unauthorized. Authentication is required and has failed or has not yet been provided.', 'updraftplus'), - 403 => __('Forbidden. The request contained valid data and was understood by the server, but the server is refusing action. This may be due to the user not having the necessary permissions for a resource or needing an account of some sort, or attempting a prohibited action (e.g. creating a duplicate record where only one is allowed).', 'updraftplus'), - 404 => __('Not Found. The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.', 'updraftplus'), - 405 => __('Method Not Allowed. A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.', 'updraftplus'), - 406 => __('Not Acceptable. The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.', 'updraftplus'), - 407 => __('Proxy Authentication Required. The client must first authenticate itself with the proxy.', 'updraftplus'), - 408 => __('Request Timeout. The server timed out waiting for the request. The client MAY repeat the request without modifications at any later time.', 'updraftplus'), - 409 => __('Conflict. Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.', 'updraftplus'), - 410 => __('Gone. Indicates that the resource requested is no longer available and will not be available again.', 'updraftplus'), - 411 => __('Length Required. The request did not specify the length of its content, which is required by the requested resource.', 'updraftplus'), - 412 => __('Precondition Failed. The server does not meet one of the preconditions that the requester put on the request header fields.', 'updraftplus'), - 413 => __('Payload Too Large. The request is larger than the server is willing or able to process. Previously called "Request Entity Too Large".', 'updraftplus'), - 414 => __('URI Too Long. The URI provided was too long for the server to process. Often the result of too much data being encoded as a query-string of a GET request, in which it should be converted to a POST request.', 'updraftplus'), - 415 => __('Unsupported Media Type. The request entity has a media type which the server or resource does not support. For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.', 'updraftplus'), - 416 => __('Range Not Satisfiable. The client has asked for a portion of the file (byte serving), but the server cannot supply that portion. For example, if the client asked for a part of the file that lies beyond the end of the file.', 'updraftplus'), - 417 => __('Expectation Failed. The server cannot meet the requirements of the Expect request-header field.', 'updraftplus'), - 421 => __('Misdirected Request. The request was directed at a server that is not able to produce a response (for example because of connection reuse).', 'updraftplus'), - 422 => __('Unprocessable Entity. The request was well-formed but was unable to be followed due to semantic errors.', 'updraftplus'), - 423 => __('Locked. The resource that is being accessed is locked.', 'updraftplus'), - 424 => __('Failed Dependency. The request failed because it depended on another request and that request failed (e.g., a PROPPATCH).', 'updraftplus'), - 425 => __('Too Early. Indicates that the server is unwilling to risk processing a request that might be replayed.', 'updraftplus'), - 426 => __('Upgrade Required. The client should switch to a different protocol such as TLS/1.3, given in the Upgrade header field.', 'updraftplus'), - 428 => __('Precondition Required. The origin server requires the request to be conditional. Intended to prevent the \'lost update\' problem, where a client GETs a resource\'s state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.', 'updraftplus'), - 429 => __('Too Many Requests. The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.', 'updraftplus'), - 431 => __('Request Header Fields Too Large. The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large.', 'updraftplus'), - 451 => __('Unavailable For Legal Reasons. A server operator has received a legal demand to deny access to a resource or to a set of resources that includes the requested resource.', 'updraftplus'), + 400 => __('Bad Request.', 'updraftplus').' '.__('The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing).', 'updraftplus'), + 401 => __('Unauthorized.', 'updraftplus').' '.__('Authentication is required and has failed or has not yet been provided.', 'updraftplus'), + 403 => __('Forbidden.', 'updraftplus').' '.__('The request contained valid data and was understood by the server, but the server is refusing action.', 'updraftplus').' '.__('This may be due to the user not having the necessary permissions for a resource or needing an account of some sort, or attempting a prohibited action (e.g. creating a duplicate record where only one is allowed).', 'updraftplus'), + 404 => __('Not Found.', 'updraftplus').' '.__('The requested resource could not be found but may be available in the future', 'updraftplus').' '.__('Subsequent requests by the client are permissible.', 'updraftplus'), + 405 => __('Method Not Allowed', 'updraftplus').' '.__('A request method is not supported for the requested resource; for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.', 'updraftplus'), + 406 => __('Not Acceptable', 'updraftplus').' '.__('The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.', 'updraftplus'), + 407 => __('Proxy Authentication Required', 'updraftplus').' '.__('The client must first authenticate itself with the proxy.', 'updraftplus'), + 408 => __('Request Timeout', 'updraftplus').' '.__('The server timed out waiting for the request', 'updraftplus').' '.__('The client MAY repeat the request without modifications at any later time.', 'updraftplus'), + 409 => __('Conflict', 'updraftplus').' '.__('Indicates that the request could not be processed because of conflict in the current state of the resource, such as an edit conflict between multiple simultaneous updates.', 'updraftplus'), + 410 => __('Gone', 'updraftplus').' '.__('Indicates that the resource requested is no longer available and will not be available again.', 'updraftplus'), + 411 => __('Length Required', 'updraftplus').' '.__('The request did not specify the length of its content, which is required by the requested resource.', 'updraftplus'), + 412 => __('Precondition Failed', 'updraftplus').' '.__('The server does not meet one of the preconditions that the requester put on the request header fields.', 'updraftplus'), + 413 => __('Payload Too Large', 'updraftplus').' '.__('The request is larger than the server is willing or able to process', 'updraftplus').' '.__('Previously called "Request Entity Too Large".', 'updraftplus'), + 414 => __('URI Too Long', 'updraftplus').' '.__('The URI provided was too long for the server to process', 'updraftplus').' '.__('Often the result of too much data being encoded as a query-string of a GET request, in which it should be converted to a POST request.', 'updraftplus'), + 415 => __('Unsupported Media Type', 'updraftplus').' '.__('The request entity has a media type which the server or resource does not support', 'updraftplus').' '.__('For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.', 'updraftplus'), + 416 => __('Range Not Satisfiable', 'updraftplus').' '.__('The client has asked for a portion of the file (byte serving), but the server cannot supply that portion', 'updraftplus').' '.__('For example, if the client asked for a part of the file that lies beyond the end of the file.', 'updraftplus'), + 417 => __('Expectation Failed', 'updraftplus').' '.__('The server cannot meet the requirements of the Expect request-header field.', 'updraftplus'), + 421 => __('Misdirected Request', 'updraftplus').' '.__('The request was directed at a server that is not able to produce a response (for example because of connection reuse).', 'updraftplus'), + 422 => __('Unprocessable Entity', 'updraftplus').' '.__('The request was well-formed but was unable to be followed due to semantic errors.', 'updraftplus'), + 423 => __('Locked', 'updraftplus').' '.__('The resource that is being accessed is locked.', 'updraftplus'), + 424 => __('Failed Dependency', 'updraftplus').' '.__('The request failed because it depended on another request and that request failed (e.g., a PROPPATCH).', 'updraftplus'), + 425 => __('Too Early', 'updraftplus').' '.__('Indicates that the server is unwilling to risk processing a request that might be replayed.', 'updraftplus'), + 426 => __('Upgrade Required', 'updraftplus').' '.__('The client should switch to a different protocol such as TLS/1.3, given in the Upgrade header field.', 'updraftplus'), + 428 => __('Precondition Required', 'updraftplus').' '.__('The origin server requires the request to be conditional', 'updraftplus').' '.__('Intended to prevent the \'lost update\' problem, where a client GETs a resource\'s state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.', 'updraftplus'), + 429 => __('Too Many Requests', 'updraftplus').' '.__('The user has sent too many requests in a given amount of time', 'updraftplus').' '.__('Intended for use with rate-limiting schemes.', 'updraftplus'), + 431 => __('Request Header Fields Too Large', 'updraftplus').' '.__('The server is unwilling to process the request because either an individual header field, or all the header fields collectively, are too large.', 'updraftplus'), + 451 => __('Unavailable For Legal Reasons', 'updraftplus').' '.__('A server operator has received a legal demand to deny access to a resource or to a set of resources that includes the requested resource.', 'updraftplus'), /* 5xx server errors Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has encountered an error or is otherwise incapable of performing the request. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and indicate whether it is a temporary or permanent condition. Likewise, user agents should display any included entity to the user. These response codes are applicable to any request method. */ - 500 => __('Internal Server Error. A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.', 'updraftplus'), - 501 => __('Not Implemented. The server either does not recognize the request method, or it lacks the ability to fulfil the request. Usually this implies future availability (e.g., a new feature of a web-service API).', 'updraftplus'), - 502 => __('Bad Gateway. The server was acting as a gateway or proxy and received an invalid response from the upstream server.', 'updraftplus'), - 503 => __('Service Unavailable. The server cannot handle the request (because it is overloaded or down for maintenance). Generally, this is a temporary state.', 'updraftplus'), - 504 => __('Gateway Timeout. The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.', 'updraftplus'), - 505 => __('HTTP Version Not Supported. The server does not support the HTTP protocol version used in the request.', 'updraftplus'), - 506 => __('Variant Also Negotiates. Transparent content negotiation for the request results in a circular reference.', 'updraftplus'), - 507 => __('Insufficient Storage. The server is unable to store the representation needed to complete the request.', 'updraftplus'), - 508 => __('Loop Detected. The server detected an infinite loop while processing the request.', 'updraftplus'), - 510 => __('Not Extended. Further extensions to the request are required for the server to fulfil it.', 'updraftplus'), - 511 => __('Network Authentication Required. The client needs to authenticate to gain network access. Intended for use by intercepting proxies used to control access to the network (e.g., "captive portals" used to require agreement to Terms of Service before granting full Internet access via a Wi-Fi hotspot).', 'updraftplus'), + 500 => __('Internal Server Error', 'updraftplus').' '.__('A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.', 'updraftplus'), + 501 => __('Not Implemented', 'updraftplus').' '.__('The server either does not recognize the request method, or it lacks the ability to fulfil the request', 'updraftplus').' '.__('Usually this implies future availability (e.g., a new feature of a web-service API).', 'updraftplus'), + 502 => __('Bad Gateway', 'updraftplus').' '.__('The server was acting as a gateway or proxy and received an invalid response from the upstream server.', 'updraftplus'), + 503 => __('Service Unavailable', 'updraftplus').' '.__('The server cannot handle the request (because it is overloaded or down for maintenance)', 'updraftplus').' '.__('Generally, this is a temporary state.', 'updraftplus'), + 504 => __('Gateway Timeout', 'updraftplus').' '.__('The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.', 'updraftplus'), + 505 => __('HTTP Version Not Supported', 'updraftplus').' '.__('The server does not support the HTTP protocol version used in the request.', 'updraftplus'), + 506 => __('Variant Also Negotiates', 'updraftplus').' '.__('Transparent content negotiation for the request results in a circular reference.', 'updraftplus'), + 507 => __('Insufficient Storage', 'updraftplus').' '.__('The server is unable to store the representation needed to complete the request.', 'updraftplus'), + 508 => __('Loop Detected', 'updraftplus').' '.__('The server detected an infinite loop while processing the request.', 'updraftplus'), + 510 => __('Not Extended', 'updraftplus').' '.__('Further extensions to the request are required for the server to fulfil it.', 'updraftplus'), + 511 => __('Network Authentication Required', 'updraftplus').' '.__('The client needs to authenticate to gain network access', 'updraftplus').' '.__('Intended for use by intercepting proxies used to control access to the network (e.g., "captive portals" used to require agreement to Terms of Service before granting full Internet access via a Wi-Fi hotspot).', 'updraftplus'), ); if (isset($http_error_code_descriptions[$http_error_code])) { diff --git a/wp-content/plugins/updraftplus/includes/class-job-scheduler.php b/wp-content/plugins/updraftplus/includes/class-job-scheduler.php index daed22ce..383c3fb8 100644 --- a/wp-content/plugins/updraftplus/includes/class-job-scheduler.php +++ b/wp-content/plugins/updraftplus/includes/class-job-scheduler.php @@ -101,7 +101,7 @@ public static function something_useful_happened() { $updraft_dir = $updraftplus->backups_dir_location(); if (file_exists($updraft_dir.'/deleteflag-'.$updraftplus->nonce.'.txt')) { $updraftplus->log("User request for abort: backup job will be immediately halted"); - @unlink($updraft_dir.'/deleteflag-'.$updraftplus->nonce.'.txt');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @unlink($updraft_dir.'/deleteflag-'.$updraftplus->nonce.'.txt');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the method. $updraftplus->backup_finish(true, true, true); die; } diff --git a/wp-content/plugins/updraftplus/includes/class-manipulation-functions.php b/wp-content/plugins/updraftplus/includes/class-manipulation-functions.php index eca917fc..13d44216 100644 --- a/wp-content/plugins/updraftplus/includes/class-manipulation-functions.php +++ b/wp-content/plugins/updraftplus/includes/class-manipulation-functions.php @@ -8,7 +8,7 @@ class UpdraftPlus_Manipulation_Functions { /** - * Replace last occurence + * Replace last occurrence * * @param String $search The value being searched for, otherwise known as the needle * @param String $replace The replacement value that replaces found search values @@ -209,7 +209,7 @@ public static function retain_range($input) { * * @param array $str_arr1 array of strings * @param array $str_arr2 array of strings - * @param boolean $match_until_first_numeric only match until first numeric occurence + * @param boolean $match_until_first_numeric only match until first numeric occurrence * @return string matching str which will be best for replacement */ public static function get_matching_str_from_array_elems($str_arr1, $str_arr2, $match_until_first_numeric = true) { @@ -220,7 +220,7 @@ public static function get_matching_str_from_array_elems($str_arr1, $str_arr2, $ $str1_str_length = strlen($str1); $temp_str1_chars = str_split($str1); $temp_partial_str = ''; - // The flag is for whether non-numeric character passed after numeric character occurence in str1. For ex. str1 is utf8mb4, the flag wil be true when parsing m after utf8. + // The flag is for whether non-numeric character passed after numeric character occurrence in str1. For ex. str1 is utf8mb4, the flag wil be true when parsing m after utf8. $numeric_char_pass_flag = false; $char_position_in_str1 = 0; while ($char_position_in_str1 < $str1_str_length) { diff --git a/wp-content/plugins/updraftplus/includes/class-onedrive-account.php b/wp-content/plugins/updraftplus/includes/class-onedrive-account.php deleted file mode 100644 index 3826a754..00000000 --- a/wp-content/plugins/updraftplus/includes/class-onedrive-account.php +++ /dev/null @@ -1,47 +0,0 @@ - array( - 'client_id' => '276d9423-7d0c-41be-a3e1-4cdad89dc36f', - 'override_client_id_const_name' => 'UPDRAFTPLUS_ONEDRIVE_CLIENT_ID', - - 'graph_url' => 'https://graph.microsoft.com', - 'api_url' => 'https://graph.microsoft.com/v1.0/', - 'auth_url' => 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', - 'token_url' => 'https://login.microsoftonline.com/common/oauth2/v2.0/token', - ), - 'de' => array( - 'client_id' => '7cc3beb4-daab-4a59-b091-c4c2319d8d2d', - 'override_client_id_const_name' => 'UPDRAFTPLUS_ONEDRIVE_GERMANY_CLIENT_ID', - - 'graph_url' => 'https://graph.microsoft.de', - 'api_url' => 'https://graph.microsoft.de/v1.0/', - 'auth_url' => 'https://login.microsoftonline.de/common/oauth2/v2.0/authorize', - 'token_url' => 'https://login.microsoftonline.de/common/oauth2/v2.0/token', - ), - ); - - /** - * Get client id - * - * @param string $endpoint_tld Account type endpoint tld - * @return string Client id - */ - public static function get_client_id($endpoint_tld = 'com') { - $valid_endpoint_tlds = array_keys(self::$types); - if (in_array($endpoint_tld, $valid_endpoint_tlds)) { - if (defined(self::$types[$endpoint_tld]['override_client_id_const_name'])) { - return constant(self::$types[$endpoint_tld]['override_client_id_const_name']); - } else { - return self::$types[$endpoint_tld]['client_id']; - } - } - return ''; - } -} diff --git a/wp-content/plugins/updraftplus/includes/class-partialfileservlet.php b/wp-content/plugins/updraftplus/includes/class-partialfileservlet.php index d2a6ce06..8956a526 100644 --- a/wp-content/plugins/updraftplus/includes/class-partialfileservlet.php +++ b/wp-content/plugins/updraftplus/includes/class-partialfileservlet.php @@ -51,7 +51,7 @@ public static function createFromHeaderString($header) if (!preg_match('/^\s*([A-Za-z]+)\s*=\s*(\d*)\s*-\s*(\d*)\s*(?:,|$)/', $header, $info)) { throw new UpdraftPlus_InvalidRangeHeaderException('Invalid header format'); } else if (strtolower($info[1]) !== 'bytes') { - throw new UpdraftPlus_InvalidRangeHeaderException('Unknown range unit: ' . $info[1]); + throw new UpdraftPlus_InvalidRangeHeaderException('Unknown range unit: ' . $info[1]); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. } return new self( @@ -195,7 +195,7 @@ private function sendDataRange($fp, $start, $length, $chunkSize = 2097152) while ($length) { $read = ($length > $chunkSize) ? $chunkSize : $length; $length -= $read; - echo fread($fp, $read); + echo fread($fp, $read); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Raw output intended. } } @@ -226,14 +226,14 @@ public function sendFile($path, $contentType = 'application/octet-stream') $localPath = realpath($path); if ($localPath === false || !is_file($localPath)) { throw new UpdraftPlus_NonExistentFileException( - $path . ' does not exist or is not a file' + $path . ' does not exist or is not a file' // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. ); } // Make sure we can open the file for reading if (!$fp = fopen($localPath, 'r')) { throw new UpdraftPlus_UnreadableFileException( - 'Failed to open ' . $localPath . ' for reading' + 'Failed to open ' . $localPath . ' for reading' // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. ); } diff --git a/wp-content/plugins/updraftplus/includes/class-remote-send.php b/wp-content/plugins/updraftplus/includes/class-remote-send.php index 7eb4e6b4..939d94b7 100644 --- a/wp-content/plugins/updraftplus/includes/class-remote-send.php +++ b/wp-content/plugins/updraftplus/includes/class-remote-send.php @@ -75,7 +75,7 @@ public function plugins_loaded() { * * @return array - the array response */ - public function udrpc_action($response, $command, $data, $name_indicator) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found + public function udrpc_action($response, $command, $data, $name_indicator) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Unused parameter is present because the method is used as a WP filter. if (is_array($data) && isset($data['sender_public'])) { // Do we already know the sender's public key? @@ -95,7 +95,8 @@ public function udrpc_action($response, $command, $data, $name_indicator) {// ph protected function initialise_listener_error_handling($hash) { global $updraftplus; $updraftplus->error_reporting_stop_when_logged = true; - set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT); + $error_levels = version_compare(PHP_VERSION, '8.4.0', '>=') ? E_ALL : E_ALL & ~E_STRICT; + set_error_handler(array($updraftplus, 'php_error'), $error_levels); $this->php_events = array(); add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 4); if (!UpdraftPlus_Options::get_updraft_option('updraft_debug_mode')) return; @@ -120,7 +121,7 @@ protected function return_rpc_message($msg) { return $msg; } - public function updraftplus_logline($line, $nonce, $level, $uniq_id) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found + public function updraftplus_logline($line, $nonce, $level, $uniq_id) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Unused parameter is present because the method is used as a WP filter. if ('notice' === $level && 'php_event' === $uniq_id) { $this->php_events[] = $line; } @@ -173,7 +174,7 @@ public function udrpc_command_send_chunk($response, $data, $name_indicator) { $existing_size = file_exists($fullpath) ? filesize($fullpath) : 0; if ($start > $existing_size) { - return $this->return_rpc_message(array('response' => 'error', 'data' => "invalid_start_too_big:start=${start},existing_size=${existing_size}")); + return $this->return_rpc_message(array('response' => 'error', 'data' => "invalid_start_too_big:start={$start},existing_size={$existing_size}")); } if (false == ($fhandle = fopen($fullpath, 'ab'))) { @@ -187,7 +188,7 @@ public function udrpc_command_send_chunk($response, $data, $name_indicator) { if (false === $write_status || (false == $write_status && !empty($data))) return $this->return_rpc_message(array('response' => 'error', 'data' => 'fwrite_failure')); - @fclose($fhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @fclose($fhandle);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $our_keys = UpdraftPlus_Options::get_updraft_option('updraft_migrator_localkeys'); if (is_array($our_keys) && isset($our_keys[$name_hash]) && !empty($our_keys[$name_hash]['name'])) $updraftplus->log("Received data chunk on key ".$our_keys[$name_hash]['name']. " ($file, ".$start.", is_last=$is_last_chunk)"); @@ -244,7 +245,7 @@ public function udrpc_command_get_file_status($response, $data, $name_indicator) } /** - * This function will return a response to the remote site to acknowledge that we have recieved the upload_complete message and if this is a clone it call the ready_for_restore action + * This function will return a response to the remote site to acknowledge that we have received the upload_complete message and if this is a clone it call the ready_for_restore action * * @param string $response - a string response * @param array $data - an array of data @@ -252,7 +253,7 @@ public function udrpc_command_get_file_status($response, $data, $name_indicator) * * @return array - the array response */ - public function udrpc_command_upload_complete($response, $data, $name_indicator) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found + public function udrpc_command_upload_complete($response, $data, $name_indicator) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Unused parameter is present because the method is used as a WP filter. if (!preg_match('/^([a-f0-9]+)\.migrator.updraftplus.com$/', $name_indicator, $matches)) return $response; if (defined('UPDRAFTPLUS_THIS_IS_CLONE') && UPDRAFTPLUS_THIS_IS_CLONE) { @@ -260,8 +261,8 @@ public function udrpc_command_upload_complete($response, $data, $name_indicator) $signal_ready_for_restore_now = true; - if (class_exists('UpdraftPlus_Remote_Communications')) { - $test_udrpc = new UpdraftPlus_Remote_Communications(); + if (class_exists('UpdraftPlus_Remote_Communications_V2')) { + $test_udrpc = new UpdraftPlus_Remote_Communications_V2(); if (version_compare($test_udrpc->version, '1.4.21', '>=')) { $signal_ready_for_restore_now = false; $this->job_id = $job_id; @@ -307,7 +308,7 @@ public function updraftplus_initial_jobdata($initial_jobdata, $options, $split_e if (!is_array($remotesites)) $remotesites = array(); if (empty($remotesites[$site_id]) || empty($remotesites[$site_id]['url']) || empty($remotesites[$site_id]['key']) || empty($remotesites[$site_id]['name_indicator'])) { - throw new Exception("Remote site id ($site_id) not found - send aborted"); + throw new Exception("Remote site id ($site_id) not found - send aborted"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Error messages should be escaped when caught and printed. } array_push($initial_jobdata, 'remotesend_info', $remotesites[$site_id]); @@ -362,7 +363,8 @@ public function do_ping_test($remote_indicator, $url) { try { $updraftplus->error_reporting_stop_when_logged = true; - set_error_handler(array($updraftplus, 'php_error'), E_ALL & ~E_STRICT); + $error_levels = version_compare(PHP_VERSION, '8.4.0', '>=') ? E_ALL : E_ALL & ~E_STRICT; + set_error_handler(array($updraftplus, 'php_error'), $error_levels); $this->php_events = array(); add_filter('updraftplus_logline', array($this, 'updraftplus_logline'), 10, 4); @@ -401,14 +403,20 @@ public function do_ping_test($remote_indicator, $url) { restore_error_handler(); if (is_wp_error($response)) { - + $err_msg = __('Error:', 'updraftplus').' '.$response->get_error_message(); $err_data = $response->get_error_data(); $err_code = $response->get_error_code(); + if (!is_numeric($err_code) && isset($err_data['response']['code'])) { + $err_code = $err_data['response']['code']; + $err_msg = __('Error:', 'updraftplus').' '.UpdraftPlus_HTTP_Error_Descriptions::get_http_status_code_description($err_code); + } elseif (is_string($err_data) && preg_match('/captcha|verify.*human|turnstile/i', $err_data)) { + $err_msg = __('Error:', 'updraftplus').' '.__('We are unable to proceed with the process due to a bot verification requirement', 'updraftplus'); + } } elseif (!is_array($response) || empty($response['response']) || 'pong' != $response['response']) { - $err_msg = __('Error:', 'updraftplus').' '.sprintf(__('You should check that the remote site is online, not firewalled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly.', 'updraftplus'), '2.10.3'); + $err_msg = __('Error:', 'updraftplus').' '.sprintf(__('You should check that the remote site is online, not firewalled, bot verification setting is disabled, does not have security modules that may be blocking access, has UpdraftPlus version %s or later active and that the keys have been entered correctly.', 'updraftplus'), '2.10.3'); $err_data = $response; $err_code = 'no_pong'; @@ -422,7 +430,7 @@ public function do_ping_test($remote_indicator, $url) { $res = array('e' => 1, 'r' => $err_msg); if ($this->url_looks_internal($url)) { - $res['moreinfo'] = '

'.sprintf(__('The site URL you are sending to (%s) looks like a local development website. If you are sending from an external network, it is likely that a firewall will be blocking this.', 'updraftplus'), htmlspecialchars($url)).'

'; + $res['moreinfo'] = '

'.sprintf(__('The site URL you are sending to (%s) looks like a local development website.', 'updraftplus'), htmlspecialchars($url)).' '.__('If you are sending from an external network, it is likely that a firewall will be blocking this.', 'updraftplus').'

'; } // We got several support requests from people who didn't seem to be aware of other methods @@ -510,7 +518,7 @@ public function updraft_migrate_key_delete($data) { * * @return string - the RSA remote key */ - public function updraft_migrate_key_create_return($string, $data) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found + public function updraft_migrate_key_create_return($string, $data) {// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.Found -- Unused parameter is present because the method is used as a WP filter. return $this->updraft_migrate_key_create($data); } @@ -562,7 +570,7 @@ public function updraft_migrate_key_create($data) { if (extension_loaded('mbstring')) { // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated -- Commented out as this flags as not compatible with PHP 5.2 if (ini_get('mbstring.func_overload') & 2) { - echo json_encode(array('e' => 1, 'r' => __('Error:', 'updraftplus').' '.sprintf(__('The setting %s is turned on in your PHP settings. It is deprecated, causes encryption to malfunction, and should be turned off.', 'updraftplus'), 'mbstring.func_overload'))); + echo json_encode(array('e' => 1, 'r' => __('Error:', 'updraftplus').' '.sprintf(__('The setting %s is turned on in your PHP settings.', 'updraftplus'), 'mbstring.func_overload').' '.__('It is deprecated, causes encryption to malfunction, and should be turned off.', 'updraftplus'))); die; } } @@ -641,66 +649,98 @@ public function updraft_migrate_newdestination($data) { die; } - protected function get_remotesites_selector($remotesites = false) { + /** + * Display or return html for selecting receiving remote site. + * + * @param bool|array $remotesites Remote sites. Default false for fetching from options. + * @param bool $echo_instead_of_return Whether to display html or return it. + * @return void|string Display or return HTML for selecting remotesites. + */ + protected function get_remotesites_selector($remotesites = false, $echo_instead_of_return = false) { if (false === $remotesites) { $remotesites = UpdraftPlus_Options::get_updraft_option('updraft_remotesites'); if (!is_array($remotesites)) $remotesites = array(); } - $ret = ''; + if (!$echo_instead_of_return) ob_start(); if (empty($remotesites)) { - $ret .= '

'.__('No receiving sites have yet been added.', 'updraftplus').'

'; + ?> +

+ +

+ '; - $ret .= ' '; - $ret .= '

'; + ?> +

+ + + +

+ '; - $ret .= ''.__('Add a site', 'updraftplus').''; - $ret .= sprintf( - '%s', - empty($remotesites) ? 'style="display: none"' : '', - esc_js(__("You are about to permanently delete the list of existing sites. This action cannot be undone. 'Cancel' to stop, 'OK' to delete.")), - __('Clear list of existing sites', 'updraftplus') - ); - $ret .= '
'; - - return $ret; + ?> + + + '.__('No keys to allow remote sites to send backup data here have yet been created.', 'updraftplus').'
'; - - $ret = ''; - $first_one = true; - - foreach ($our_keys as $k => $key) { - if (!is_array($key)) continue; - if ($first_one) { - $first_one = false; - $ret .= '

'.__('Existing keys', 'updraftplus').'
'; + if (empty($our_keys)) { + ?> + + $key) { + if (!is_array($key)) continue; + if ($first_one) { + $first_one = false; + ?> +


+ + +
+ '.__('Delete', 'updraftplus').''; - $ret .= '
'; + + if (!$first_one) echo "

"; // Handling the edge case where no

tag was opened earlier. } - if ($ret) $ret .= '

'; - - return $ret; - + if (!$echo_instead_of_return) return ob_get_clean(); } /** diff --git a/wp-content/plugins/updraftplus/includes/class-search-replace.php b/wp-content/plugins/updraftplus/includes/class-search-replace.php index ec234e44..f898e41a 100644 --- a/wp-content/plugins/updraftplus/includes/class-search-replace.php +++ b/wp-content/plugins/updraftplus/includes/class-search-replace.php @@ -5,13 +5,19 @@ class UpdraftPlus_Search_Replace { private $known_incomplete_classes = array(); + private $columns = array(); + private $current_row = 0; private $use_wpdb = false; + private $use_mysqli = false; + private $wpdb_obj = null; + private $mysql_dbh = null; + protected $max_recursion = 0; /** @@ -56,10 +62,10 @@ public function updraftplus_restore_db_pre() { /** * The engine * - * @param string|array $search - a string or array of things to search for - * @param string|array $replace - a string or array of things to replace the search terms with - * @param array $tables - an array of tables - * @param integer $page_size - the page size + * @param string|array $search - a string or array of things to search for + * @param string|array $replace - a string or array of things to replace the search terms with + * @param array $tables - an array of tables + * @param integer $page_size - the page size */ public function icit_srdb_replacer($search, $replace, $tables, $page_size) { @@ -178,7 +184,7 @@ public function icit_srdb_replacer($search, $replace, $tables, $page_size) { } mysqli_free_result($data); } else { - // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved + // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved -- Ignore removed extension compatibility. while ($row = mysql_fetch_array($data)) { $rowrep = $this->process_row($table, $row, $search, $replace, $stripped_table); $report['rows']++; @@ -186,8 +192,7 @@ public function icit_srdb_replacer($search, $replace, $tables, $page_size) { $report['change'] += $rowrep['change']; foreach ($rowrep['errors'] as $err) $report['errors'][] = $err; } - // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved - @mysql_free_result($data); + @mysql_free_result($data); // phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged,PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved -- If an error occurs during mysql free result and it fails to free result, it will not impact anything at all. mysql_* function used in the scenario in which the mysqli extension doesn't exist. } } } @@ -226,7 +231,7 @@ private function fetch_sql_result($table, $on_row, $page_size, $where = '') { if ($this->use_mysqli) { $data = mysqli_query($this->mysql_dbh, $sql_line); } else { - // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved + // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved -- Ignore removed extension compatibility. $data = mysql_query($sql_line, $this->mysql_dbh); } if (false !== $data) return array($data, $page_size); @@ -383,11 +388,11 @@ private function recursive_unserialize_replace($from = '', $to = '', $data = '', $case_insensitive = false; // If we've reached the maximum recursion level, short circuit - if (0 !== $this->max_recursion && $recursion_level >= $this->max_recursion) { + if (0 !== $this->max_recursion && $recursion_level >= $this->max_recursion) { return $data; } - if (is_array ($data) || is_object($data)) { + if (is_array($data) || is_object($data)) { // If we've seen this exact object or array before, short circuit if (in_array($data, $visited_data, true)) { return $data; // Avoid infinite recursions when there's a circular reference @@ -403,7 +408,7 @@ private function recursive_unserialize_replace($from = '', $to = '', $data = '', } // O:8:"DateTime":0:{} : see https://bugs.php.net/bug.php?id=62852 - if (is_serialized($data) && false === strpos($data, 'O:8:"DateTime":0:{}') && false !== ($unserialized = @unserialize($data))) {// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (is_serialized($data) && false === strpos($data, 'O:8:"DateTime":0:{}') && false !== ($unserialized = UpdraftPlus::unserialize($data))) { $data = $this->recursive_unserialize_replace($from, $to, $unserialized, true, $recursion_level + 1); } elseif (is_array($data)) { $_tmp = array(); @@ -508,7 +513,7 @@ public function print_error($sql_line) { if ($this->use_wpdb) { $last_error = $wpdb->last_error; } else { - // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved + // phpcs:ignore PHPCompatibility.Extensions.RemovedExtensions.mysql_DeprecatedRemoved -- Ignore removed extension compatibility. $last_error = ($this->use_mysqli) ? mysqli_error($this->mysql_dbh) : mysql_error($this->mysql_dbh); } $updraftplus->log(__('Error:', 'updraftplus')." ".$last_error." - ".__('the database query being run was:', 'updraftplus').' '.$sql_line, 'warning-restore'); diff --git a/wp-content/plugins/updraftplus/includes/class-storage-methods-interface.php b/wp-content/plugins/updraftplus/includes/class-storage-methods-interface.php index d53c1452..12db4107 100644 --- a/wp-content/plugins/updraftplus/includes/class-storage-methods-interface.php +++ b/wp-content/plugins/updraftplus/includes/class-storage-methods-interface.php @@ -86,7 +86,7 @@ public static function get_remote_storage_options_and_templates() { } // Get the list of template properties from the predefined storage method - $options[$method]['template_properties'] = $object->get_template_properties(); + $options[$method]['template_properties'] = $object->get_template_properties(); } return array( @@ -338,7 +338,7 @@ public static function get_remote_file($services, $file, $timestamp, $restore = $updraftplus->log(__('Error', 'updraftplus'), 'notice-restore'); } else { clearstatcache(); - if (0 === @filesize($fullpath)) @unlink($fullpath);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (0 === @filesize($fullpath)) @unlink($fullpath);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise if the file doesn't exist. $updraftplus->log('Remote fetch failed'); } } @@ -359,7 +359,7 @@ private static function download_file($file, $service_object) { global $updraftplus; - if (function_exists('set_time_limit')) @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + if (function_exists('set_time_limit')) @set_time_limit(UPDRAFTPLUS_SET_TIME_LIMIT);// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $service = $service_object->get_id(); @@ -389,7 +389,7 @@ private static function download_file($file, $service_object) { } } else { $updraftplus->log("Automatic backup restoration is not available with the method: $service."); - $updraftplus->log("$file: ".sprintf(__("The backup archive for this file could not be found. The remote storage method in use (%s) does not allow us to retrieve files. To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder", 'updraftplus'), $service)." (".UpdraftPlus_Manipulation_Functions::prune_updraft_dir_prefix($updraftplus->backups_dir_location()).")", 'error'); + $updraftplus->log("$file: ".__('The backup archive for this file could not be found.', 'updraftplus').' '.sprintf(__('The remote storage method in use (%s) does not allow us to retrieve files.', 'updraftplus'), $service).' '.__("To perform any restoration using UpdraftPlus, you will need to obtain a copy of this file and place it inside UpdraftPlus's working folder", 'updraftplus')." (".UpdraftPlus_Manipulation_Functions::prune_updraft_dir_prefix($updraftplus->backups_dir_location()).")", 'error'); return false; } diff --git a/wp-content/plugins/updraftplus/includes/class-updraft-dashboard-news.php b/wp-content/plugins/updraftplus/includes/class-updraft-dashboard-news.php index 35c92621..51a6be34 100644 --- a/wp-content/plugins/updraftplus/includes/class-updraft-dashboard-news.php +++ b/wp-content/plugins/updraftplus/includes/class-updraft-dashboard-news.php @@ -12,35 +12,35 @@ class Updraft_Dashboard_News { * * @var String */ - private $feed_url; + protected $feed_url; /** * news page URL * * @var String */ - private $link; + protected $link; /** * various translations to use in the UI * * @var Array */ - private $translations; + protected $translations; /** * slug to use, where needed * * @var String */ - private $slug; + protected $slug; /** * Valid ajax callback pages * * @var Array */ - private $valid_callback_pages; + protected $valid_callback_pages; /** * constructor of class Updraft_Dashboard_News @@ -83,7 +83,7 @@ public function __construct($feed_url, $link, $translations) { private function get_transient_name() { $locale = function_exists('get_user_locale') ? get_user_locale() : get_locale(); global $wp_version; - @include(ABSPATH.WPINC.'/version.php');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged + @include(ABSPATH.WPINC.'/version.php');// phpcs:ignore Generic.PHP.NoSilencedErrors.Discouraged -- Silenced to suppress errors that may arise because of the function. $dash_prefix = version_compare($wp_version, '4.8', '>=') ? 'dash_v2_' : 'dash_'; return version_compare($wp_version, '4.3', '>=') ? $dash_prefix.md5('dashboard_primary_'.$locale) : 'dash_'.md5('dashboard_primary'); } @@ -136,7 +136,7 @@ public function wp_ajax_dashboard_widgets_high_priority() { if (!$this->do_ajax_dashboard_news()) return; remove_filter('wp_die_ajax_handler', array($this, 'wp_die_ajax_handler')); - echo $this->get_dashboard_news_html(); + echo wp_kses_post($this->get_dashboard_news_html()); wp_die(); } @@ -145,7 +145,7 @@ public function wp_ajax_dashboard_widgets_high_priority() { * * @return Boolean True if an ajax for the WP dashboard news */ - private function do_ajax_dashboard_news() { + protected function do_ajax_dashboard_news() { $ajax_callback_page = !empty($_GET['pagenow']) ? $_GET['pagenow'] : ''; return (in_array($ajax_callback_page, $this->valid_callback_pages) && !empty($_GET['widget']) && 'dashboard_primary' == $_GET['widget']); } @@ -170,7 +170,7 @@ public function transient_for_dashboard_news($value) { * * @return String - the resulting message */ - private function get_dashboard_news_html() { + protected function get_dashboard_news_html() { $cache_key = $this->slug.'_dashboard_news'; if (false !== ($output = get_transient($cache_key))) return $output; @@ -189,8 +189,8 @@ private function get_dashboard_news_html() { ob_start(); wp_dashboard_primary_output('dashboard_primary', $feeds); $original_formatted_news = ob_get_clean(); - $formatted_news = preg_replace('/(.+?)<\/a>/i', "".$this->translations['item_prefix'].": $2", $original_formatted_news); - $formatted_news = str_replace('
  • ', '
  • '.'', $formatted_news); + $formatted_news = preg_replace('/(.+?)<\/a>/i', "".esc_html($this->translations['item_prefix']).": $2", $original_formatted_news); + $formatted_news = str_replace('
  • ', '
  • '.'', $formatted_news); set_transient($this->slug.'_dashboard_news', $formatted_news, 43200); // 12 hours return $formatted_news; @@ -202,19 +202,19 @@ private function get_dashboard_news_html() { public function admin_print_footer_scripts() { ?> + + + - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/wp-content/plugins/updraftplus/includes/onedrive/client.php b/wp-content/plugins/updraftplus/includes/onedrive/client.php deleted file mode 100644 index dc60141d..00000000 --- a/wp-content/plugins/updraftplus/includes/onedrive/client.php +++ /dev/null @@ -1,945 +0,0 @@ - true, - - CURLOPT_SSL_VERIFYHOST => ($this->_sslVerify ? 2 : false), - CURLOPT_SSL_VERIFYPEER => $this->_sslVerify, - - CURLOPT_AUTOREFERER => true, - ); - - if ($this->_sslVerify && $this->_sslCAPath) { - $default_options[CURLOPT_CAINFO] = $this->_sslCAPath; - } - - // Prevent misleading PHP notice - if (!$this->safeMode) $default_options[CURLOPT_FOLLOWLOCATION] = true; - - // See http://php.net/manual/en/function.array-merge.php for a description of the + operator (and why array_merge() would be wrong) - $final_options = $options + $default_options; - - curl_setopt_array($curl, $final_options); - - return $curl; - } - - /** - * Processes a result returned by the OneDrive API call using a cURL object. - * - * @param (resource) $curl - The cURL object used to perform the call. - * @return (object|string) The content returned, as an object instance if - * served a JSON, or as a string if served as anything else. - */ - private function _processResult($curl) { - $result = curl_exec($curl); - - if (false === $result) { - throw new \Exception('curl_exec() failed: ' . curl_error($curl)); - } - - $info = curl_getinfo($curl); - - $this->_httpStatus = array_key_exists('http_code', $info) ? - (int) $info['http_code'] : null; - - $this->_contentType = array_key_exists('content_type', $info) ? - (string) $info['content_type'] : null; - - - // Parse nothing but JSON. - if (1 !== preg_match('|^application/json|', $this->_contentType)) { - return $result; - } - - // Empty JSON string is returned as an empty object. - if ('' == $result) { - return (object) array(); - } - - $decoded = json_decode($result); - $vars = get_object_vars($decoded); - - if (array_key_exists('error', $vars)) { - throw new \Exception($decoded->error->message, (int) $decoded->error->code); - } - - return $decoded; - } - - /** - * Constructor. - * - * @param (array) $options. The options to use while creating this object. - * Valid supported keys are: - * 'state': When defined, it should contain a valid OneDrive client - * state, as returned by getState(). Default: array(). - * (boolean)'ssl_verify': whether to verify SSL hosts and peers (default: false) - * (boolean|string)'ssl_capath': CA path to use for verifying SSL certificate chain (default: false) - */ - public function __construct(array $options = array()) { - $this->_clientId = array_key_exists('client_id', $options) - ? (string) $options['client_id'] : null; - - $this->_state = array_key_exists('state', $options) - ? $options['state'] : (object) array( - 'redirect_uri' => null, - 'token' => null - ); - - $this->_sslVerify = array_key_exists('ssl_verify', $options) - ? $options['ssl_verify'] : false; - - $this->_sslCAPath = array_key_exists('ssl_capath', $options) - ? $options['ssl_capath'] : false; - - $this->safeMode = (@ini_get('safe_mode') && strtolower(@ini_get('safe_mode')) != "off") ? 1 : 0; - - $this->use_msgraph_api = array_key_exists('use_msgraph_api', $options) ? $options['use_msgraph_api'] : false; - - if ($this->use_msgraph_api) { - $endpoint_tld = (isset($options['endpoint_tld']) && 'de' == $options['endpoint_tld']) ? $options['endpoint_tld'] : 'com'; - $this->api_url = UpdraftPlus_OneDrive_Account::$types[$endpoint_tld]['api_url']; - $this->route_prefix = 'me/'; - - // The base URL for authorization requests. - $this->auth_url = UpdraftPlus_OneDrive_Account::$types[$endpoint_tld]['auth_url']; - // The base URL for token requests. - $this->token_url = UpdraftPlus_OneDrive_Account::$types[$endpoint_tld]['token_url']; - } else { // Custom App or old live sdk - $this->route_prefix = ''; - $this->api_url = 'https://api.onedrive.com/v1.0/'; - - // The base URL for authorization requests. - $this->auth_url = 'https://login.live.com/oauth20_authorize.srf'; - - // The base URL for token requests. - $this->token_url = 'https://login.live.com/oauth20_token.srf'; - } - - } - - /** - * Gets the current state of this Client instance. Typically saved in the - * session and passed back to the Client constructor for further requests. - * - * @return (object) The state of this Client instance. - */ - public function getState() { - return $this->_state; - } - - /** - * Gets the URL of the log in form. After login, the browser is redirected to - * the redirect URL, and a code is passed as a GET parameter to this URL. - * - * The browser is also redirected to this URL if the user is already logged - * in. - * - * @param (array) $scopes - The OneDrive scopes requested by the application. - * Supported values: 'wl.signin', 'wl.basic', 'wl.contacts_skydrive', - * 'wl.skydrive_update'. - * @param (string) $redirectUri - The URI to which to redirect to upon - * successful log in. - * @param (array) $options. Reserved for future use. Default: array(). TODO: - * support it. - * @param (string) $instance_id - the id of the instance that we are currently trying to authorise - * @param string $callback_uri - the current site url where control should redirect after auth server authenticated - * @return (string) The login URL. - */ - public function getLogInUrl(array $scopes, $redirectUri, array $options = array(), $instance_id = '', $callback_uri = '') { - if (null === $this->_clientId) { - throw new \Exception('The client ID must be set to call getLoginUrl()'); - } - - if ($this->use_msgraph_api) { - $imploded = implode(' ', $scopes); - } else { - $imploded = implode(',', $scopes); - } - $redirectUri = (string) $redirectUri; - $this->_state->redirect_uri = $redirectUri; - - $prefixed_instance_id = ':' . $instance_id; - if ($this->use_msgraph_api) { - $token = 'token'.$prefixed_instance_id.$callback_uri; - } else { - $token = $prefixed_instance_id; - } - // When using this URL, the browser will eventually be redirected to the - // callback URL with a code passed in the URL query string (the name of the - // variable is "code"). This is suitable for PHP. - $url = $this->auth_url - . '?client_id=' . urlencode($this->_clientId) - . '&scope=' . urlencode($imploded) - . '&response_type=code' - . '&redirect_uri=' . urlencode($redirectUri) - . '&state=' . urlencode($token) - . '&display=popup' - . '&locale=en'; - return $url; - } - - /** - * Gets the access token expiration delay. - * - * @return (int) The token expiration delay, in seconds. - */ - public function getTokenExpire() { - return $this->_state->token->obtained - + $this->_state->token->data->expires_in - time(); - } - - /** - * Gets the status of the current access token. - * - * @return (int) The status of the current access token: - * 0 => no access token - * -1 => access token will expire soon (1 minute or less) - * -2 => access token is expired - * 1 => access token is valid - */ - public function getAccessTokenStatus() { - if (null === $this->_state->token) { - return 0; - } - - $remaining = $this->getTokenExpire(); - - if (0 >= $remaining) { - return -2; - } - - if (60 >= $remaining) { - return -1; - } - - return 1; - } - - /** - * Obtains a new access token from OAuth. This token is valid for one hour. - * - * @param (string) $clientSecret - The OneDrive client secret. - * @param (string) $code - The code returned by OneDrive after successful log - * in. - * @param (string) $redirectUri. Must be the same as the redirect URI passed - * to getLoginUrl(). - */ - public function obtainAccessToken($clientSecret, $code) { - if (null === $this->_clientId) { - throw new \Exception('The client ID must be set to call obtainAccessToken()'); - } - - if (null === $this->_state->redirect_uri) { - throw new \Exception('The state\'s redirect URI must be set to call obtainAccessToken()'); - } - - $url = $this->token_url; - - $curl = curl_init(); - - $curl_options = array( - CURLOPT_RETURNTRANSFER => true, - - CURLOPT_SSL_VERIFYHOST => ($this->_sslVerify ? 2 : false), - CURLOPT_SSL_VERIFYPEER => $this->_sslVerify, - - CURLOPT_URL => $url, - - CURLOPT_AUTOREFERER => true, - CURLOPT_POST => 1, // i am sending post data - CURLOPT_POSTFIELDS => 'client_id=' . urlencode($this->_clientId) - . '&redirect_uri=' . urlencode($this->_state->redirect_uri) - . '&client_secret=' . urlencode($clientSecret) - . '&grant_type=authorization_code' - . '&code=' . urlencode($code), - ); - - // Prevent misleading PHP notice - if (!$this->safeMode) $curl_options[CURLOPT_FOLLOWLOCATION] = true; - - curl_setopt_array($curl, $curl_options); - - $result = curl_exec($curl); - - if (false === $result) { - if (curl_errno($curl)) { - throw new \Exception('Curl error: '.curl_error($curl)); - } else { - throw new \Exception('Curl error: empty response'); - } - } - - $decoded = json_decode($result); - - if (null === $decoded) { - throw new \Exception('json_decode() failed'); - } - - $this->_state->redirect_uri = null; - - $this->_state->token = (object) array( - 'obtained' => time(), - 'data' => $decoded - ); - } - - /** - * Renews the access token from OAuth. This token is valid for one hour. - */ - /*public function renewAccessToken($clientSecret, $redirectUri) { - $url = self::TOKEN_URL - . '?client_id=' . $this->_clientId - . '&redirect_uri=' . (string) $redirectUri - . '&client_secret=' . (string) $clientSecret - . '&grant_type=' . 'refresh_token' - . '&code=' . (string) $code; - }*/ - - /** - * Performs a call to the OneDrive API using the GET method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - * @param (array) $options - Further curl options to set. - - * @return (boolean) Object of result - */ - public function apiGet($path, $options = array()) { - $api = $this->api_url; - - $url = (strpos($path, 'https://') === 0) ? $path : $api . $path; - - if (!$this->use_msgraph_api) $url .= '?access_token=' . urlencode($this->_state->token->data->access_token); - - $curl = $this->_createCurl($path, $options); - - $curl_options = array( - CURLOPT_URL => $url, - CURLOPT_HTTPHEADER => array( - 'Authorization: Bearer ' . $this->_state->token->data->access_token - ), - ); - - curl_setopt_array($curl, $curl_options); - //curl_setopt($curl, CURLOPT_URL, $url); - - return $this->_processResult($curl); - } - - /** - * Performs a call to the OneDrive API using the POST method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - * @param (array|object) $data - The data to pass in the body of the request. - */ - public function apiPost($path, $data = null) { - $api = $this->api_url; - - $url = (strpos($path, 'https://') === 0) ? $path : $api . $path; - - $curl = $this->_createCurl($path); - - $curl_options = array( - CURLOPT_URL => $url, - CURLOPT_POST => true, - - CURLOPT_HTTPHEADER => array( - 'Content-Type: application/json', // The data is sent as JSON as per OneDrive documentation - 'Authorization: Bearer ' . $this->_state->token->data->access_token - ), - - ); - - if (null !== $data) { - $data = (object) $data; - $curl_options[CURLOPT_POSTFIELDS] = json_encode($data); - } else { - // This doesn't seem to be necessary in my testing, but another user got an error from OneDrive indicating it was needed. Perhaps varies between curl versions? - $curl_options[CURLOPT_HTTPHEADER][] = 'Content-Length: 0'; - } - - curl_setopt_array($curl, $curl_options); - - return $this->_processResult($curl); - } - - /** - * Performs a call to the OneDrive API using the PUT method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - * @param (resource) $stream - The data stream to upload. - * @param (string) $contentType - The MIME type of the data stream, or null - * if unknown. Default: null. - * @param (int) $size - The number of bytes to send. Default: as many as are left in the stream. - * @param (array) $headers - Further headers to send - */ - public function apiPut($path, $stream, $contentType = null, $size = null, $headers = array()) { - $api = $this->api_url; - - $url = (strpos($path, 'https://') === 0) ? $path : $api . $path; - $curl = $this->_createCurl($path); - - if (null === $size) { - $stats = fstat($stream); - $size = $stats[7]; - } - - $headers[] = 'Authorization: Bearer ' . $this->_state->token->data->access_token; - - if (null !== $contentType) { - $headers[] = 'Content-Type: ' . $contentType; - } - - $options = array( - CURLOPT_URL => $url, - CURLOPT_HTTPHEADER => $headers, - CURLOPT_PUT => true, - CURLOPT_INFILE => $stream, - CURLOPT_INFILESIZE => $size - ); - - curl_setopt_array($curl, $options); - return $this->_processResult($curl); - } - - /** - * Performs a call to the OneDrive API using the DELETE method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - */ - public function apiDelete($path) { - $url = $this->api_url . $path; - // . '?access_token=' . urlencode($this->_state->token->data->access_token); - - $curl = $this->_createCurl($path); - - curl_setopt_array($curl, array( - CURLOPT_URL => $url, - CURLOPT_CUSTOMREQUEST => 'DELETE', - - CURLOPT_HTTPHEADER => array( - 'Authorization: Bearer ' . $this->_state->token->data->access_token - ) - )); - - return $this->_processResult($curl); - } - - /** - * Performs a call to the OneDrive API using the DELETE method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - * @param (array) $objectIdArray - An array of unique IDs of the objects to delete. - */ - public function apiDeleteMulti($path, $objectIdArray) { - - $multi_curl = curl_multi_init(); - $curl_objects = array(); - - foreach($objectIdArray as $id) { - $current_path = $path . $id; - $url = $this->api_url . $current_path; - - $curl = $this->_createCurl($current_path); - - curl_setopt_array($curl, array( - CURLOPT_URL => $url, - CURLOPT_CUSTOMREQUEST => 'DELETE', - CURLOPT_HTTPHEADER => array( - 'Authorization: Bearer ' . $this->_state->token->data->access_token - ) - )); - curl_multi_add_handle($multi_curl, $curl); - $curl_objects[] = $curl; - } - - $active = null; - - do { - $status = curl_multi_exec($multi_curl, $active); - if ($active) { - // Wait a short time for more activity - curl_multi_select($multi_curl); - } - } while ($active && $status == CURLM_OK); - - $response_array = array(); - - foreach ($curl_objects as $curl_object) { - $response = curl_multi_getcontent($curl_object); - // If empty then it's a success other wise we have an error array - if (empty($response)) { - $response_array[] = 'success'; - } else { - $response_array[] = json_decode($response, true); - } - curl_multi_remove_handle($multi_curl, $curl_object); - } - - curl_multi_close($multi_curl); - - return $response_array; - } - - /** - * Performs a call to the OneDrive API using the MOVE method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - * @param (array|object) $data - The data to pass in the body of the request. - */ - public function apiMove($path, $data) { - $url = $this->api_url . $path; - $data = (object) $data; - $curl = $this->_createCurl($path); - - curl_setopt_array($curl, array( - CURLOPT_URL => $url, - CURLOPT_CUSTOMREQUEST => 'MOVE', - - CURLOPT_HTTPHEADER => array( - 'Content-Type: application/json', // The data is sent as JSON as per OneDrive documentation - 'Authorization: Bearer ' . $this->_state->token->data->access_token - ), - - CURLOPT_POSTFIELDS => json_encode($data) - )); - - return $this->_processResult($curl); - } - - /** - * Performs a call to the OneDrive API using the COPY method. - * - * @param (string) $path - The path of the API call (eg. me/skydrive). - * @param (array|object) $data - The data to pass in the body of the request. - */ - public function apiCopy($path, $data) { - $url = $this->api_url . $path; - $data = (object) $data; - $curl = $this->_createCurl($path); - - curl_setopt_array($curl, array( - CURLOPT_URL => $url, - CURLOPT_CUSTOMREQUEST => 'COPY', - - CURLOPT_HTTPHEADER => array( - 'Content-Type: application/json', // The data is sent as JSON as per OneDrive documentation - 'Authorization: Bearer ' . $this->_state->token->data->access_token - ), - - CURLOPT_POSTFIELDS => json_encode($data) - )); - - return $this->_processResult($curl); - } - - /** - * Creates a folder in the current OneDrive account. - * - * @param (string) $name - The name of the OneDrive folder to be created. - * @param (null|string) $parentId - The ID of the OneDrive folder into which - * to create the OneDrive folder, or null to create it in the OneDrive - * root folder. Default: null. - * @param (null|string) $description - The description of the OneDrive folder to be - * created, or null to create it without a description. Default: null. - * @return (Folder) The folder created, as a Folder instance referencing to - * the OneDrive folder created. - */ - public function createFolder($name, $parentId = null, $description = null) { - if (null === $parentId) { - $parent_path = $this->route_prefix.'drive/root/children'; - } else{ - $parent_path = $this->route_prefix.'drive/items/'.$parentId.'/children'; - } - - $properties = array( - 'name' => (string) $name, - 'folder' => (object) array() - ); - - //if (null !== $description) { - // $properties['description'] = (string) $description; - //} - - $folder_body = (object) $properties; - - $folder = $this->apiPost($parent_path, $folder_body); - return new Folder($this, $folder->id, $folder); - } - - /** - * Creates a file in the current OneDrive account. - * - * @param (string) $name - The name of the OneDrive file to be created. - * @param (null|string) $parentId - The ID of the OneDrive folder into which - * to create the OneDrive file, or null to create it in the OneDrive - * root folder. Default: null. - * @param (string|resource) $content - The content of the OneDrive file to be created. - * @return (File) The file created, as File instance referencing to the - * OneDrive file created. - * @throw (\Exception) Thrown on I/O errors. - */ - public function createFile($name, $parentId = null, $content = '') { - if (null === $parentId) { - $parent_path = $this->route_prefix.'drive/root'; - } else{ - $parent_path = $this->route_prefix.'drive/items/'.$parentId; - } - - if (is_resource($content)) { - $stream = $content; - } else { - $stream = fopen('php://temp', 'rw+b'); - - if (false === $stream) { - throw new \Exception('fopen() failed'); - } - - if (false === fwrite($stream, $content)) { - fclose($stream); - throw new \Exception('fwrite() failed'); - } - - if (!rewind($stream)) { - fclose($stream); - throw new \Exception('rewind() failed'); - } - } - - // TODO: some versions of cURL cannot PUT memory streams? See here for a - // workaround: https://bugs.php.net/bug.php?id=43468 - $file = $this->apiPut($parent_path . '/children/' . urlencode($name).'/content/', $stream, null, null, array()); - if (!is_resource($content)) fclose($stream); - return new File($this, $file->id, $file); - } - - /** - * Fetches an object from the current OneDrive account. - * - * @param (null|string) The unique ID of the OneDrive object to fetch, or - * null to fetch the OneDrive root folder. Default: null. - * @return (Object) The object fetched, as an Object instance referencing to - * the OneDrive object fetched. - */ - public function fetchObject($objectId = null) { - $objectId = null !== $objectId ? $objectId : $this->route_prefix.'drive/root'; - $result = $this->apiGet($objectId, array()); - - if (property_exists($result, 'folder')) { - return new Folder($this, $objectId, $result); - } - - return new File($this, $objectId, $result); - } - - /** - * Fetches the root folder from the current OneDrive account. - * - * @return (Folder) The root folder, as a Folder instance referencing to the - * OneDrive root folder. - */ - public function fetchRoot() { - return $this->fetchObject(); - } - - /** - * Fetches the "Camera Roll" folder from the current OneDrive account. - * - * @return (Folder) The "Camera Roll" folder, as a Folder instance referencing - * to the OneDrive "Camera Roll" folder. - */ - public function fetchCameraRoll() { - return $this->fetchObject($this->route_prefix.'drive/special/cameraroll'); - } - - /** - * Fetches the "Documents" folder from the current OneDrive account. - * - * @return (Folder) The "Documents" folder, as a Folder instance referencing - * to the OneDrive "Documents" folder. - */ - public function fetchDocs() { - return $this->fetchObject($this->route_prefix.'drive/special/documents'); - } - - /** - * Fetches the "Pictures" folder from the current OneDrive account. - * - * @return (Folder) The "Pictures" folder, as a Folder instance referencing to - * the OneDrive "Pictures" folder. - */ - public function fetchPics() { - return $this->fetchObject($this->route_prefix.'drive/special/photos'); - } - - /** - * Fetches the "Public" folder from the current OneDrive account. - * - * @return (Folder) The "Public" folder, as a Folder instance referencing to - * the OneDrive "Public" folder. - */ - public function fetchPublicDocs() { - return $this->fetchObject($this->route_prefix.'drive/special/public_documents'); - } - - /** - * Fetches the properties of an object in the current OneDrive account. - * - * @return (array) The properties of the object fetched. - */ - public function fetchProperties($objectId) { - if (null === $objectId) { - $object_path = $this->route_prefix.'drive/root'; - } else { - $object_path = $this->route_prefix.'drive/items/'.$objectId; - } - - return $this->apiGet($objectId, array()); - } - - /** - * Fetches the objects in a folder in the current OneDrive account. - * - * @return (array) The objects in the folder fetched, as Object instances - * referencing OneDrive objects. - */ - public function fetchObjects($objectId) { - if (null === $objectId) { - $object_path = $this->route_prefix.'drive/root'; - } else{ - $object_path = $this->route_prefix.'drive/items/'.$objectId; - } - - $fetch_url = $object_path . '/children'; - - $objects = array(); - - while ($fetch_url) { - - $result = $this->apiGet($fetch_url, array()); - - foreach ($result->value as $data) { - $object = property_exists($data, 'folder') ? - new Folder($this, $data->id, $data) - : new File($this, $data->id, $data); - - $objects[] = $object; - } - - $next_url_key = '@odata.nextLink'; - - $fetch_url = !empty($result->$next_url_key) ? $result->$next_url_key : false; - } - - return $objects; - } - - /** - * Updates the properties of an object in the current OneDrive account. - * - * @param (string) $objectId - The unique ID of the object to update. - * @param (array|object) $properties - The properties to update. Default: - * array(). - * @throw (\Exception) Thrown on I/O errors. - */ - public function updateObject($objectId, $properties = array()) { - $objectId = $objectId; - $properties = (object) $properties; - $encoded = json_encode($properties); - $stream = fopen('php://temp', 'w+b'); - - if (false === $stream) { - throw new \Exception('fopen() failed'); - } - - if (false === fwrite($stream, $encoded)) { - throw new \Exception('fwrite() failed'); - } - - if (!rewind($stream)) { - throw new \Exception('rewind() failed'); - } - - $this->apiPut($objectId, $stream, 'application/json', null, array()); - } - - /** - * Moves an object into another folder. - * - * @param (string) The unique ID of the object to move. - * @param (null|string) The unique ID of the folder into which to move the - * object, or null to move it to the OneDrive root folder. Default: - * null. - */ - public function moveObject($objectId, $destinationId = null) { - if (null === $destinationId) { - $destinationId = $this->route_prefix.'drive/root'; - } - - $this->apiMove($objectId, array( - 'destination' => $destinationId - )); - } - - /** - * Copies a file into another folder. OneDrive does not support copying - * folders. - * - * @param (string) The unique ID of the file to copy. - * @param (null|string) The unique ID of the folder into which to copy the - * file, or null to copy it to the OneDrive root folder. Default: - * null. - */ - public function copyFile($objectId, $destinationId = null) { - if (null === $destinationId) { - $destinationId = $this->route_prefix.'drive/root'; - } - - $this->apiCopy($objectId, array( - 'destination' => $destinationId - )); - } - - /** - * Deletes an object in the current OneDrive account. - * - * @param (string) $objectId - The unique ID of the object to delete. - */ - public function deleteObject($objectId) { - $objectId = $objectId; - $this->apiDelete($this->route_prefix.'drive/items/'.$objectId); - } - - /** - * Deletes an array of objects in the current OneDrive account. - * - * @param (array) $objectIdArray - An array of unique IDs of the objects to delete. - * - * @return array - returns an array of responses - */ - public function deleteObjectMulti($objectIdArray) { - if (!is_array($objectIdArray)) return; - return $this->apiDeleteMulti($this->route_prefix.'drive/items/', $objectIdArray); - } - - /** - * Fetches the quota of the current OneDrive account. - * - * @return (object) An object with the following properties: - * (int) quota - The total space, in bytes. - * (int) available - The available space, in bytes. - */ - public function fetchQuota() { - $drive = $this->apiGet($this->route_prefix.'drive', array()); - return $drive->quota; - } - - /** - * Fetches the account info of the current OneDrive account. - * - * @return (object) An object with the following properties: - * (string) id - OneDrive account ID. - * (string) first_name - account owner's first name. - * (string) last_name - account owner's last name. - * (string) name - account owner's full name. - * (string) gender - account owner's gender. - * (string) locale - account owner's locale. - */ - public function fetchAccountInfo() { - //$drive = $this->apiGet('drive', array(), true); - $drive = $this->apiGet($this->route_prefix.'drive', array()); - return $drive->owner; - } - - /** - * Fetches the recent documents uploaded to the current OneDrive account. - * - * @return (object) An object with the following properties: - * (array) data - The list of the recent documents uploaded. - */ - public function fetchRecentDocs() { - return $this->apiGet($this->route_prefix.'drive/special/recent_docs', array()); - } - - /** - * Fetches the objects shared with the current OneDrive account. - * - * @return (object) An object with the following properties: - * (array) data - The list of the shared objects. - */ - public function fetchShared() { - return $this->apiGet($this->route_prefix.'drive/special/shared', array()); - } - - /** - * Give $use_msgraph_api variable - * - * @return boolean private $use_msgraph_api var - */ - public function use_msgraph_api() { - return $this->use_msgraph_api; - } -} diff --git a/wp-content/plugins/updraftplus/includes/onedrive/file.php b/wp-content/plugins/updraftplus/includes/onedrive/file.php deleted file mode 100644 index 2ef2028d..00000000 --- a/wp-content/plugins/updraftplus/includes/onedrive/file.php +++ /dev/null @@ -1,60 +0,0 @@ -_client->use_msgraph_api()) { - return $this->_client->apiGet('me/drive/items/'.$this->_id . '/content', $options, true); - } - return $this->_client->apiGet('drive/items/'.$this->_id . '/content', $options, true); - } - - /** - * Copies the OneDrive file referenced by this File instance into another - * OneDrive folder. - * - * @param (null|string) The unique ID of the OneDrive folder into which to - * copy the OneDrive file referenced by this File instance, or null to - * copy it in the OneDrive root folder. Default: null. - */ - public function copy($destinationId = null) { - $this->_client->copyFile($this->_id, $destinationId); - } -} diff --git a/wp-content/plugins/updraftplus/includes/onedrive/folder.php b/wp-content/plugins/updraftplus/includes/onedrive/folder.php deleted file mode 100644 index b15fc8d0..00000000 --- a/wp-content/plugins/updraftplus/includes/onedrive/folder.php +++ /dev/null @@ -1,68 +0,0 @@ -_client->fetchObjects($this->_id); - } - - /** - * Creates a folder in the OneDrive folder referenced by this Folder instance. - * - * @param (string) $name - The name of the OneDrive folder to be created. - * @param (null|string) $description - The description of the OneDrive folder - * to be created, or null to create it without a description. Default: - * null. - * @return (Folder) The folder created, as a Folder instance. - */ - public function createFolder($name, $description = null) { - return $this->_client->createFolder($name, $this->_id, $description); - } - - /** - * Creates a file in the OneDrive folder referenced by this Folder instance. - * - * @param (string) $name - The name of the OneDrive file to be created. - * @param (string) $content - The content of the OneDrive file to be created. - * Default: ''. - * @return (File) The file created, as a File instance. - * @throw (\Exception) Thrown on I/O errors. - */ - public function createFile($name, $content = '') { - return $this->_client->createFile($name, $this->_id, $content); - } -} diff --git a/wp-content/plugins/updraftplus/includes/onedrive/object.php b/wp-content/plugins/updraftplus/includes/onedrive/object.php deleted file mode 100644 index d580269e..00000000 --- a/wp-content/plugins/updraftplus/includes/onedrive/object.php +++ /dev/null @@ -1,227 +0,0 @@ -_client = $client; - $this->_id = null !== $id ? (string) $id : null; - - $this->_parentId = property_exists($options, 'parent_id') ? - (string) $options->parent_id : null; - - $this->_name = property_exists($options, 'name') ? - (string) $options->name : null; - - $this->_description = property_exists($options, 'description') ? - (string) $options->description : null; - - $this->_size = property_exists($options, 'size') ? - (int) $options->size : null; - - $this->_createdTime = property_exists($options, 'created_time') ? - strtotime($options->created_time) : null; - - $this->_updatedTime = property_exists($options, 'updated_time') ? - strtotime($options->updated_time) : null; - } - - /** - * Determines whether the OneDrive object referenced by this Object instance - * is a folder. - * - * @return (bool) true if the OneDrive object referenced by this Object - * instance is a folder, false otherwise. - */ - public function isFolder() { - return false; - } - - /** - * Fetches the properties of the OneDrive object referenced by this Object - * instance. Some properties are cached for faster subsequent access. - * - * @return (array) The properties of the OneDrive object referenced by this - * Object instance. - */ - public function fetchProperties() { - $result = $this->_client->fetchProperties($this->_id); - - $this->_parentId = '' != $result->parentReference['id'] ? - (string) $result->parentReference['id'] : null; - - $this->_name = $result->name; - - $this->_description = '' != $result->description ? - (string) $result->description : null; - - $this->_size = (int) $result->size; - $this->_createdTime = strtotime($result->createdDateTime); - $this->_updatedTime = strtotime($result->lastModifiedDateTime); - return $result; - } - - /** - * Gets the unique ID of the OneDrive object referenced by this Object - * instance. - * - * @return (string) The unique ID of the OneDrive object referenced by this - * Object instance. - */ - public function getId() { - return $this->_id; - } - - /** - * Gets the unique ID of the parent folder of the OneDrive object referenced - * by this Object instance. - * - * @return (string) The unique ID of the OneDrive folder containing the object - * referenced by this Object instance. - */ - public function getParentId() { - if (null === $this->_parentId) { - $this->fetchProperties(); - } - - return $this->_parentId; - } - - /** - * Gets the name of the OneDrive object referenced by this Object instance. - * - * @return (string) The name of the OneDrive object referenced by this Object - * instance. - */ - public function getName() { - if (null === $this->_name) { - $this->fetchProperties(); - } - - return $this->_name; - } - - /** - * Gets the description of the OneDrive object referenced by this Object - * instance. - * - * @return (string) The description of the OneDrive object referenced by this - * Object instance. - */ - public function getDescription() { - if (null === $this->_description) { - $this->fetchProperties(); - } - - return $this->_description; - } - - /** - * Gets the size of the OneDrive object referenced by this Object instance. - * - * @return (int) The size of the OneDrive object referenced by this Object - * instance. - */ - public function getSize() { - if (null === $this->_size) { - $this->fetchProperties(); - } - - return $this->_size; - } - - /** - * Gets the creation time of the OneDrive object referenced by this Object - * instance. - * - * @return (int) The creation time of the object referenced by this Object - * instance, in seconds since UNIX epoch. - */ - public function getCreatedTime() { - if (null === $this->_createdTime) { - $this->fetchProperties(); - } - - return $this->_createdTime; - } - - /** - * Gets the last modification time of the OneDrive object referenced by this - * Object instance. - * - * @return (int) The last modification time of the object referenced by this - * Object instance, in seconds since UNIX epoch. - */ - public function getUpdatedTime() { - if (null === $this->_updatedTime) { - $this->fetchProperties(); - } - - return $this->_updatedTime; - } - - /** - * Moves the OneDrive object referenced by this Object instance into another - * OneDrive folder. - * - * @param (null|string) The unique ID of the OneDrive folder into which to - * move the OneDrive object referenced by this Object instance, or - * null to move it to the OneDrive root folder. Default: null. - */ - public function move($destinationId = null) { - $this->_client->moveObject($this->_id, $destinationId); - } -} diff --git a/wp-content/plugins/updraftplus/includes/onedrive/onedrive.php b/wp-content/plugins/updraftplus/includes/onedrive/onedrive.php deleted file mode 100644 index d849c08d..00000000 --- a/wp-content/plugins/updraftplus/includes/onedrive/onedrive.php +++ /dev/null @@ -1,5 +0,0 @@ - .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--default .select2-results__option .select2-results__option { - padding-left: 1em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__group { - padding-left: 0; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option { - margin-left: -1em; - padding-left: 2em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -2em; - padding-left: 3em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -3em; - padding-left: 4em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -4em; - padding-left: 5em; } - .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { - margin-left: -5em; - padding-left: 6em; } - -.select2-container--default .select2-results__option--group { - padding: 0; } - -.select2-container--default .select2-results__option--disabled { - color: #999; } - -.select2-container--default .select2-results__option--selected { - background-color: #ddd; } - -.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable { - background-color: #5897fb; - color: white; } - -.select2-container--default .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic .select2-selection--single { - background-color: #f7f7f7; - border: 1px solid #aaa; - border-radius: 4px; - outline: 0; - background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); - background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - .select2-container--classic .select2-selection--single:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--single .select2-selection__rendered { - color: #444; - line-height: 28px; } - .select2-container--classic .select2-selection--single .select2-selection__clear { - cursor: pointer; - float: right; - font-weight: bold; - height: 26px; - margin-right: 20px; } - .select2-container--classic .select2-selection--single .select2-selection__placeholder { - color: #999; } - .select2-container--classic .select2-selection--single .select2-selection__arrow { - background-color: #ddd; - border: none; - border-left: 1px solid #aaa; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - height: 26px; - position: absolute; - top: 1px; - right: 1px; - width: 20px; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } - .select2-container--classic .select2-selection--single .select2-selection__arrow b { - border-color: #888 transparent transparent transparent; - border-style: solid; - border-width: 5px 4px 0 4px; - height: 0; - left: 50%; - margin-left: -4px; - margin-top: -2px; - position: absolute; - top: 50%; - width: 0; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { - float: left; } - -.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { - border: none; - border-right: 1px solid #aaa; - border-radius: 0; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - left: 1px; - right: auto; } - -.select2-container--classic.select2-container--open .select2-selection--single { - border: 1px solid #5897fb; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { - background: transparent; - border: none; } - .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { - border-color: transparent transparent #888 transparent; - border-width: 0 4px 5px 4px; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; - background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); - background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); - background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } - -.select2-container--classic .select2-selection--multiple { - background-color: white; - border: 1px solid #aaa; - border-radius: 4px; - cursor: text; - outline: 0; - padding-bottom: 5px; - padding-right: 5px; } - .select2-container--classic .select2-selection--multiple:focus { - border: 1px solid #5897fb; } - .select2-container--classic .select2-selection--multiple .select2-selection__clear { - display: none; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice { - background-color: #e4e4e4; - border: 1px solid #aaa; - border-radius: 4px; - display: inline-block; - margin-left: 5px; - margin-top: 5px; - padding: 0; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__display { - cursor: default; - padding-left: 2px; - padding-right: 5px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { - background-color: transparent; - border: none; - border-top-left-radius: 4px; - border-bottom-left-radius: 4px; - color: #888; - cursor: pointer; - font-size: 1em; - font-weight: bold; - padding: 0 4px; } - .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { - color: #555; - outline: none; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { - margin-left: 5px; - margin-right: auto; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__display { - padding-left: 5px; - padding-right: 2px; } - -.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; } - -.select2-container--classic.select2-container--open .select2-selection--multiple { - border: 1px solid #5897fb; } - -.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { - border-top: none; - border-top-left-radius: 0; - border-top-right-radius: 0; } - -.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { - border-bottom: none; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; } - -.select2-container--classic .select2-search--dropdown .select2-search__field { - border: 1px solid #aaa; - outline: 0; } - -.select2-container--classic .select2-search--inline .select2-search__field { - outline: 0; - box-shadow: none; } - -.select2-container--classic .select2-dropdown { - background-color: white; - border: 1px solid transparent; } - -.select2-container--classic .select2-dropdown--above { - border-bottom: none; } - -.select2-container--classic .select2-dropdown--below { - border-top: none; } - -.select2-container--classic .select2-results > .select2-results__options { - max-height: 200px; - overflow-y: auto; } - -.select2-container--classic .select2-results__option--group { - padding: 0; } - -.select2-container--classic .select2-results__option--disabled { - color: grey; } - -.select2-container--classic .select2-results__option--highlighted.select2-results__option--selectable { - background-color: #3875d7; - color: white; } - -.select2-container--classic .select2-results__group { - cursor: default; - display: block; - padding: 6px; } - -.select2-container--classic.select2-container--open .select2-dropdown { - border-color: #5897fb; } diff --git a/wp-content/plugins/updraftplus/includes/select2/select2.js b/wp-content/plugins/updraftplus/includes/select2/select2.js deleted file mode 100644 index 6c71a3c7..00000000 --- a/wp-content/plugins/updraftplus/includes/select2/select2.js +++ /dev/null @@ -1,6209 +0,0 @@ -/*! - * Select2 4.1.0-rc.0 - * https://select2.github.io - * - * Released under the MIT license - * https://github.com/select2/select2/blob/master/LICENSE.md - */ -;(function (factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof module === 'object' && module.exports) { - // Node/CommonJS - module.exports = function (root, jQuery) { - if (jQuery === undefined) { - // require('jQuery') returns a factory that requires window to - // build a jQuery instance, we normalize how we use modules - // that require this pattern but the window provided is a noop - // if it's defined (how jquery works) - if (typeof window !== 'undefined') { - jQuery = require('jquery'); - } - else { - jQuery = require('jquery')(root); - } - } - factory(jQuery); - return jQuery; - }; - } else { - // Browser globals - factory(jQuery); - } -} (function (jQuery) { - // This is needed so we can catch the AMD loader configuration and use it - // The inner file should be wrapped (by `banner.start.js`) in a function that - // returns the AMD loader references. - var S2 =(function () { - // Restore the Select2 AMD loader so it can be used - // Needed mostly in the language files, where the loader is not inserted - if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) { - var S2 = jQuery.fn.select2.amd; - } -var S2;(function () { if (!S2 || !S2.requirejs) { -if (!S2) { S2 = {}; } else { require = S2; } -/** - * @license almond 0.3.3 Copyright jQuery Foundation and other contributors. - * Released under MIT license, http://github.com/requirejs/almond/LICENSE - */ -//Going sloppy to avoid 'use strict' string cost, but strict practices should -//be followed. -/*global setTimeout: false */ - -var requirejs, require, define; -(function (undef) { - var main, req, makeMap, handlers, - defined = {}, - waiting = {}, - config = {}, - defining = {}, - hasOwn = Object.prototype.hasOwnProperty, - aps = [].slice, - jsSuffixRegExp = /\.js$/; - - function hasProp(obj, prop) { - return hasOwn.call(obj, prop); - } - - /** - * Given a relative module name, like ./something, normalize it to - * a real name that can be mapped to a path. - * @param {String} name the relative name - * @param {String} baseName a real name that the name arg is relative - * to. - * @returns {String} normalized name - */ - function normalize(name, baseName) { - var nameParts, nameSegment, mapValue, foundMap, lastIndex, - foundI, foundStarMap, starI, i, j, part, normalizedBaseParts, - baseParts = baseName && baseName.split("/"), - map = config.map, - starMap = (map && map['*']) || {}; - - //Adjust any relative paths. - if (name) { - name = name.split('/'); - lastIndex = name.length - 1; - - // If wanting node ID compatibility, strip .js from end - // of IDs. Have to do this here, and not in nameToUrl - // because node allows either .js or non .js to map - // to same file. - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) { - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, ''); - } - - // Starts with a '.' so need the baseName - if (name[0].charAt(0) === '.' && baseParts) { - //Convert baseName to array, and lop off the last part, - //so that . matches that 'directory' and not name of the baseName's - //module. For instance, baseName of 'one/two/three', maps to - //'one/two/three.js', but we want the directory, 'one/two' for - //this normalization. - normalizedBaseParts = baseParts.slice(0, baseParts.length - 1); - name = normalizedBaseParts.concat(name); - } - - //start trimDots - for (i = 0; i < name.length; i++) { - part = name[i]; - if (part === '.') { - name.splice(i, 1); - i -= 1; - } else if (part === '..') { - // If at the start, or previous value is still .., - // keep them so that when converted to a path it may - // still work when converted to a path, even though - // as an ID it is less than ideal. In larger point - // releases, may be better to just kick out an error. - if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') { - continue; - } else if (i > 0) { - name.splice(i - 1, 2); - i -= 2; - } - } - } - //end trimDots - - name = name.join('/'); - } - - //Apply map config if available. - if ((baseParts || starMap) && map) { - nameParts = name.split('/'); - - for (i = nameParts.length; i > 0; i -= 1) { - nameSegment = nameParts.slice(0, i).join("/"); - - if (baseParts) { - //Find the longest baseName segment match in the config. - //So, do joins on the biggest to smallest lengths of baseParts. - for (j = baseParts.length; j > 0; j -= 1) { - mapValue = map[baseParts.slice(0, j).join('/')]; - - //baseName segment has config, find if it has one for - //this name. - if (mapValue) { - mapValue = mapValue[nameSegment]; - if (mapValue) { - //Match, update name to the new value. - foundMap = mapValue; - foundI = i; - break; - } - } - } - } - - if (foundMap) { - break; - } - - //Check for a star map match, but just hold on to it, - //if there is a shorter segment match later in a matching - //config, then favor over this star map. - if (!foundStarMap && starMap && starMap[nameSegment]) { - foundStarMap = starMap[nameSegment]; - starI = i; - } - } - - if (!foundMap && foundStarMap) { - foundMap = foundStarMap; - foundI = starI; - } - - if (foundMap) { - nameParts.splice(0, foundI, foundMap); - name = nameParts.join('/'); - } - } - - return name; - } - - function makeRequire(relName, forceSync) { - return function () { - //A version of a require function that passes a moduleName - //value for items that may need to - //look up paths relative to the moduleName - var args = aps.call(arguments, 0); - - //If first arg is not require('string'), and there is only - //one arg, it is the array form without a callback. Insert - //a null so that the following concat is correct. - if (typeof args[0] !== 'string' && args.length === 1) { - args.push(null); - } - return req.apply(undef, args.concat([relName, forceSync])); - }; - } - - function makeNormalize(relName) { - return function (name) { - return normalize(name, relName); - }; - } - - function makeLoad(depName) { - return function (value) { - defined[depName] = value; - }; - } - - function callDep(name) { - if (hasProp(waiting, name)) { - var args = waiting[name]; - delete waiting[name]; - defining[name] = true; - main.apply(undef, args); - } - - if (!hasProp(defined, name) && !hasProp(defining, name)) { - throw new Error('No ' + name); - } - return defined[name]; - } - - //Turns a plugin!resource to [plugin, resource] - //with the plugin being undefined if the name - //did not have a plugin prefix. - function splitPrefix(name) { - var prefix, - index = name ? name.indexOf('!') : -1; - if (index > -1) { - prefix = name.substring(0, index); - name = name.substring(index + 1, name.length); - } - return [prefix, name]; - } - - //Creates a parts array for a relName where first part is plugin ID, - //second part is resource ID. Assumes relName has already been normalized. - function makeRelParts(relName) { - return relName ? splitPrefix(relName) : []; - } - - /** - * Makes a name map, normalizing the name, and using a plugin - * for normalization if necessary. Grabs a ref to plugin - * too, as an optimization. - */ - makeMap = function (name, relParts) { - var plugin, - parts = splitPrefix(name), - prefix = parts[0], - relResourceName = relParts[1]; - - name = parts[1]; - - if (prefix) { - prefix = normalize(prefix, relResourceName); - plugin = callDep(prefix); - } - - //Normalize according - if (prefix) { - if (plugin && plugin.normalize) { - name = plugin.normalize(name, makeNormalize(relResourceName)); - } else { - name = normalize(name, relResourceName); - } - } else { - name = normalize(name, relResourceName); - parts = splitPrefix(name); - prefix = parts[0]; - name = parts[1]; - if (prefix) { - plugin = callDep(prefix); - } - } - - //Using ridiculous property names for space reasons - return { - f: prefix ? prefix + '!' + name : name, //fullName - n: name, - pr: prefix, - p: plugin - }; - }; - - function makeConfig(name) { - return function () { - return (config && config.config && config.config[name]) || {}; - }; - } - - handlers = { - require: function (name) { - return makeRequire(name); - }, - exports: function (name) { - var e = defined[name]; - if (typeof e !== 'undefined') { - return e; - } else { - return (defined[name] = {}); - } - }, - module: function (name) { - return { - id: name, - uri: '', - exports: defined[name], - config: makeConfig(name) - }; - } - }; - - main = function (name, deps, callback, relName) { - var cjsModule, depName, ret, map, i, relParts, - args = [], - callbackType = typeof callback, - usingExports; - - //Use name if no relName - relName = relName || name; - relParts = makeRelParts(relName); - - //Call the callback to define the module, if necessary. - if (callbackType === 'undefined' || callbackType === 'function') { - //Pull out the defined dependencies and pass the ordered - //values to the callback. - //Default to [require, exports, module] if no deps - deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps; - for (i = 0; i < deps.length; i += 1) { - map = makeMap(deps[i], relParts); - depName = map.f; - - //Fast path CommonJS standard dependencies. - if (depName === "require") { - args[i] = handlers.require(name); - } else if (depName === "exports") { - //CommonJS module spec 1.1 - args[i] = handlers.exports(name); - usingExports = true; - } else if (depName === "module") { - //CommonJS module spec 1.1 - cjsModule = args[i] = handlers.module(name); - } else if (hasProp(defined, depName) || - hasProp(waiting, depName) || - hasProp(defining, depName)) { - args[i] = callDep(depName); - } else if (map.p) { - map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {}); - args[i] = defined[depName]; - } else { - throw new Error(name + ' missing ' + depName); - } - } - - ret = callback ? callback.apply(defined[name], args) : undefined; - - if (name) { - //If setting exports via "module" is in play, - //favor that over return value and exports. After that, - //favor a non-undefined return value over exports use. - if (cjsModule && cjsModule.exports !== undef && - cjsModule.exports !== defined[name]) { - defined[name] = cjsModule.exports; - } else if (ret !== undef || !usingExports) { - //Use the return value from the function. - defined[name] = ret; - } - } - } else if (name) { - //May just be an object definition for the module. Only - //worry about defining if have a module name. - defined[name] = callback; - } - }; - - requirejs = require = req = function (deps, callback, relName, forceSync, alt) { - if (typeof deps === "string") { - if (handlers[deps]) { - //callback in this case is really relName - return handlers[deps](callback); - } - //Just return the module wanted. In this scenario, the - //deps arg is the module name, and second arg (if passed) - //is just the relName. - //Normalize module name, if it contains . or .. - return callDep(makeMap(deps, makeRelParts(callback)).f); - } else if (!deps.splice) { - //deps is a config object, not an array. - config = deps; - if (config.deps) { - req(config.deps, config.callback); - } - if (!callback) { - return; - } - - if (callback.splice) { - //callback is an array, which means it is a dependency list. - //Adjust args if there are dependencies - deps = callback; - callback = relName; - relName = null; - } else { - deps = undef; - } - } - - //Support require(['a']) - callback = callback || function () {}; - - //If relName is a function, it is an errback handler, - //so remove it. - if (typeof relName === 'function') { - relName = forceSync; - forceSync = alt; - } - - //Simulate async callback; - if (forceSync) { - main(undef, deps, callback, relName); - } else { - //Using a non-zero value because of concern for what old browsers - //do, and latest browsers "upgrade" to 4 if lower value is used: - //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout: - //If want a value immediately, use require('id') instead -- something - //that works in almond on the global level, but not guaranteed and - //unlikely to work in other AMD implementations. - setTimeout(function () { - main(undef, deps, callback, relName); - }, 4); - } - - return req; - }; - - /** - * Just drops the config on the floor, but returns req in case - * the config return value is used. - */ - req.config = function (cfg) { - return req(cfg); - }; - - /** - * Expose module registry for debugging and tooling - */ - requirejs._defined = defined; - - define = function (name, deps, callback) { - if (typeof name !== 'string') { - throw new Error('See almond README: incorrect module build, no module name'); - } - - //This module may not have dependencies - if (!deps.splice) { - //deps is not an array, so probably means - //an object literal or factory function for - //the value. Adjust args. - callback = deps; - deps = []; - } - - if (!hasProp(defined, name) && !hasProp(waiting, name)) { - waiting[name] = [name, deps, callback]; - } - }; - - define.amd = { - jQuery: true - }; -}()); - -S2.requirejs = requirejs;S2.require = require;S2.define = define; -} -}()); -S2.define("almond", function(){}); - -/* global jQuery:false, $:false */ -S2.define('jquery',[],function () { - var _$ = jQuery || $; - - if (_$ == null && console && console.error) { - console.error( - 'Select2: An instance of jQuery or a jQuery-compatible library was not ' + - 'found. Make sure that you are including jQuery before Select2 on your ' + - 'web page.' - ); - } - - return _$; -}); - -S2.define('select2/utils',[ - 'jquery' -], function ($) { - var Utils = {}; - - Utils.Extend = function (ChildClass, SuperClass) { - var __hasProp = {}.hasOwnProperty; - - function BaseConstructor () { - this.constructor = ChildClass; - } - - for (var key in SuperClass) { - if (__hasProp.call(SuperClass, key)) { - ChildClass[key] = SuperClass[key]; - } - } - - BaseConstructor.prototype = SuperClass.prototype; - ChildClass.prototype = new BaseConstructor(); - ChildClass.__super__ = SuperClass.prototype; - - return ChildClass; - }; - - function getMethods (theClass) { - var proto = theClass.prototype; - - var methods = []; - - for (var methodName in proto) { - var m = proto[methodName]; - - if (typeof m !== 'function') { - continue; - } - - if (methodName === 'constructor') { - continue; - } - - methods.push(methodName); - } - - return methods; - } - - Utils.Decorate = function (SuperClass, DecoratorClass) { - var decoratedMethods = getMethods(DecoratorClass); - var superMethods = getMethods(SuperClass); - - function DecoratedClass () { - var unshift = Array.prototype.unshift; - - var argCount = DecoratorClass.prototype.constructor.length; - - var calledConstructor = SuperClass.prototype.constructor; - - if (argCount > 0) { - unshift.call(arguments, SuperClass.prototype.constructor); - - calledConstructor = DecoratorClass.prototype.constructor; - } - - calledConstructor.apply(this, arguments); - } - - DecoratorClass.displayName = SuperClass.displayName; - - function ctr () { - this.constructor = DecoratedClass; - } - - DecoratedClass.prototype = new ctr(); - - for (var m = 0; m < superMethods.length; m++) { - var superMethod = superMethods[m]; - - DecoratedClass.prototype[superMethod] = - SuperClass.prototype[superMethod]; - } - - var calledMethod = function (methodName) { - // Stub out the original method if it's not decorating an actual method - var originalMethod = function () {}; - - if (methodName in DecoratedClass.prototype) { - originalMethod = DecoratedClass.prototype[methodName]; - } - - var decoratedMethod = DecoratorClass.prototype[methodName]; - - return function () { - var unshift = Array.prototype.unshift; - - unshift.call(arguments, originalMethod); - - return decoratedMethod.apply(this, arguments); - }; - }; - - for (var d = 0; d < decoratedMethods.length; d++) { - var decoratedMethod = decoratedMethods[d]; - - DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod); - } - - return DecoratedClass; - }; - - var Observable = function () { - this.listeners = {}; - }; - - Observable.prototype.on = function (event, callback) { - this.listeners = this.listeners || {}; - - if (event in this.listeners) { - this.listeners[event].push(callback); - } else { - this.listeners[event] = [callback]; - } - }; - - Observable.prototype.trigger = function (event) { - var slice = Array.prototype.slice; - var params = slice.call(arguments, 1); - - this.listeners = this.listeners || {}; - - // Params should always come in as an array - if (params == null) { - params = []; - } - - // If there are no arguments to the event, use a temporary object - if (params.length === 0) { - params.push({}); - } - - // Set the `_type` of the first object to the event - params[0]._type = event; - - if (event in this.listeners) { - this.invoke(this.listeners[event], slice.call(arguments, 1)); - } - - if ('*' in this.listeners) { - this.invoke(this.listeners['*'], arguments); - } - }; - - Observable.prototype.invoke = function (listeners, params) { - for (var i = 0, len = listeners.length; i < len; i++) { - listeners[i].apply(this, params); - } - }; - - Utils.Observable = Observable; - - Utils.generateChars = function (length) { - var chars = ''; - - for (var i = 0; i < length; i++) { - var randomChar = Math.floor(Math.random() * 36); - chars += randomChar.toString(36); - } - - return chars; - }; - - Utils.bind = function (func, context) { - return function () { - func.apply(context, arguments); - }; - }; - - Utils._convertData = function (data) { - for (var originalKey in data) { - var keys = originalKey.split('-'); - - var dataLevel = data; - - if (keys.length === 1) { - continue; - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k]; - - // Lowercase the first letter - // By default, dash-separated becomes camelCase - key = key.substring(0, 1).toLowerCase() + key.substring(1); - - if (!(key in dataLevel)) { - dataLevel[key] = {}; - } - - if (k == keys.length - 1) { - dataLevel[key] = data[originalKey]; - } - - dataLevel = dataLevel[key]; - } - - delete data[originalKey]; - } - - return data; - }; - - Utils.hasScroll = function (index, el) { - // Adapted from the function created by @ShadowScripter - // and adapted by @BillBarry on the Stack Exchange Code Review website. - // The original code can be found at - // http://codereview.stackexchange.com/q/13338 - // and was designed to be used with the Sizzle selector engine. - - var $el = $(el); - var overflowX = el.style.overflowX; - var overflowY = el.style.overflowY; - - //Check both x and y declarations - if (overflowX === overflowY && - (overflowY === 'hidden' || overflowY === 'visible')) { - return false; - } - - if (overflowX === 'scroll' || overflowY === 'scroll') { - return true; - } - - return ($el.innerHeight() < el.scrollHeight || - $el.innerWidth() < el.scrollWidth); - }; - - Utils.escapeMarkup = function (markup) { - var replaceMap = { - '\\': '\', - '&': '&', - '<': '<', - '>': '>', - '"': '"', - '\'': ''', - '/': '/' - }; - - // Do not try to escape the markup if it's not a string - if (typeof markup !== 'string') { - return markup; - } - - return String(markup).replace(/[&<>"'\/\\]/g, function (match) { - return replaceMap[match]; - }); - }; - - // Cache objects in Utils.__cache instead of $.data (see #4346) - Utils.__cache = {}; - - var id = 0; - Utils.GetUniqueElementId = function (element) { - // Get a unique element Id. If element has no id, - // creates a new unique number, stores it in the id - // attribute and returns the new id with a prefix. - // If an id already exists, it simply returns it with a prefix. - - var select2Id = element.getAttribute('data-select2-id'); - - if (select2Id != null) { - return select2Id; - } - - // If element has id, use it. - if (element.id) { - select2Id = 'select2-data-' + element.id; - } else { - select2Id = 'select2-data-' + (++id).toString() + - '-' + Utils.generateChars(4); - } - - element.setAttribute('data-select2-id', select2Id); - - return select2Id; - }; - - Utils.StoreData = function (element, name, value) { - // Stores an item in the cache for a specified element. - // name is the cache key. - var id = Utils.GetUniqueElementId(element); - if (!Utils.__cache[id]) { - Utils.__cache[id] = {}; - } - - Utils.__cache[id][name] = value; - }; - - Utils.GetData = function (element, name) { - // Retrieves a value from the cache by its key (name) - // name is optional. If no name specified, return - // all cache items for the specified element. - // and for a specified element. - var id = Utils.GetUniqueElementId(element); - if (name) { - if (Utils.__cache[id]) { - if (Utils.__cache[id][name] != null) { - return Utils.__cache[id][name]; - } - return $(element).data(name); // Fallback to HTML5 data attribs. - } - return $(element).data(name); // Fallback to HTML5 data attribs. - } else { - return Utils.__cache[id]; - } - }; - - Utils.RemoveData = function (element) { - // Removes all cached items for a specified element. - var id = Utils.GetUniqueElementId(element); - if (Utils.__cache[id] != null) { - delete Utils.__cache[id]; - } - - element.removeAttribute('data-select2-id'); - }; - - Utils.copyNonInternalCssClasses = function (dest, src) { - var classes; - - var destinationClasses = dest.getAttribute('class').trim().split(/\s+/); - - destinationClasses = destinationClasses.filter(function (clazz) { - // Save all Select2 classes - return clazz.indexOf('select2-') === 0; - }); - - var sourceClasses = src.getAttribute('class').trim().split(/\s+/); - - sourceClasses = sourceClasses.filter(function (clazz) { - // Only copy non-Select2 classes - return clazz.indexOf('select2-') !== 0; - }); - - var replacements = destinationClasses.concat(sourceClasses); - - dest.setAttribute('class', replacements.join(' ')); - }; - - return Utils; -}); - -S2.define('select2/results',[ - 'jquery', - './utils' -], function ($, Utils) { - function Results ($element, options, dataAdapter) { - this.$element = $element; - this.data = dataAdapter; - this.options = options; - - Results.__super__.constructor.call(this); - } - - Utils.Extend(Results, Utils.Observable); - - Results.prototype.render = function () { - var $results = $( - '
      ' - ); - - if (this.options.get('multiple')) { - $results.attr('aria-multiselectable', 'true'); - } - - this.$results = $results; - - return $results; - }; - - Results.prototype.clear = function () { - this.$results.empty(); - }; - - Results.prototype.displayMessage = function (params) { - var escapeMarkup = this.options.get('escapeMarkup'); - - this.clear(); - this.hideLoading(); - - var $message = $( - '
    • ' - ); - - var message = this.options.get('translations').get(params.message); - - $message.append( - escapeMarkup( - message(params.args) - ) - ); - - $message[0].className += ' select2-results__message'; - - this.$results.append($message); - }; - - Results.prototype.hideMessages = function () { - this.$results.find('.select2-results__message').remove(); - }; - - Results.prototype.append = function (data) { - this.hideLoading(); - - var $options = []; - - if (data.results == null || data.results.length === 0) { - if (this.$results.children().length === 0) { - this.trigger('results:message', { - message: 'noResults' - }); - } - - return; - } - - data.results = this.sort(data.results); - - for (var d = 0; d < data.results.length; d++) { - var item = data.results[d]; - - var $option = this.option(item); - - $options.push($option); - } - - this.$results.append($options); - }; - - Results.prototype.position = function ($results, $dropdown) { - var $resultsContainer = $dropdown.find('.select2-results'); - $resultsContainer.append($results); - }; - - Results.prototype.sort = function (data) { - var sorter = this.options.get('sorter'); - - return sorter(data); - }; - - Results.prototype.highlightFirstItem = function () { - var $options = this.$results - .find('.select2-results__option--selectable'); - - var $selected = $options.filter('.select2-results__option--selected'); - - // Check if there are any selected options - if ($selected.length > 0) { - // If there are selected options, highlight the first - $selected.first().trigger('mouseenter'); - } else { - // If there are no selected options, highlight the first option - // in the dropdown - $options.first().trigger('mouseenter'); - } - - this.ensureHighlightVisible(); - }; - - Results.prototype.setClasses = function () { - var self = this; - - this.data.current(function (selected) { - var selectedIds = selected.map(function (s) { - return s.id.toString(); - }); - - var $options = self.$results - .find('.select2-results__option--selectable'); - - $options.each(function () { - var $option = $(this); - - var item = Utils.GetData(this, 'data'); - - // id needs to be converted to a string when comparing - var id = '' + item.id; - - if ((item.element != null && item.element.selected) || - (item.element == null && selectedIds.indexOf(id) > -1)) { - this.classList.add('select2-results__option--selected'); - $option.attr('aria-selected', 'true'); - } else { - this.classList.remove('select2-results__option--selected'); - $option.attr('aria-selected', 'false'); - } - }); - - }); - }; - - Results.prototype.showLoading = function (params) { - this.hideLoading(); - - var loadingMore = this.options.get('translations').get('searching'); - - var loading = { - disabled: true, - loading: true, - text: loadingMore(params) - }; - var $loading = this.option(loading); - $loading.className += ' loading-results'; - - this.$results.prepend($loading); - }; - - Results.prototype.hideLoading = function () { - this.$results.find('.loading-results').remove(); - }; - - Results.prototype.option = function (data) { - var option = document.createElement('li'); - option.classList.add('select2-results__option'); - option.classList.add('select2-results__option--selectable'); - - var attrs = { - 'role': 'option' - }; - - var matches = window.Element.prototype.matches || - window.Element.prototype.msMatchesSelector || - window.Element.prototype.webkitMatchesSelector; - - if ((data.element != null && matches.call(data.element, ':disabled')) || - (data.element == null && data.disabled)) { - attrs['aria-disabled'] = 'true'; - - option.classList.remove('select2-results__option--selectable'); - option.classList.add('select2-results__option--disabled'); - } - - if (data.id == null) { - option.classList.remove('select2-results__option--selectable'); - } - - if (data._resultId != null) { - option.id = data._resultId; - } - - if (data.title) { - option.title = data.title; - } - - if (data.children) { - attrs.role = 'group'; - attrs['aria-label'] = data.text; - - option.classList.remove('select2-results__option--selectable'); - option.classList.add('select2-results__option--group'); - } - - for (var attr in attrs) { - var val = attrs[attr]; - - option.setAttribute(attr, val); - } - - if (data.children) { - var $option = $(option); - - var label = document.createElement('strong'); - label.className = 'select2-results__group'; - - this.template(data, label); - - var $children = []; - - for (var c = 0; c < data.children.length; c++) { - var child = data.children[c]; - - var $child = this.option(child); - - $children.push($child); - } - - var $childrenContainer = $('
        ', { - 'class': 'select2-results__options select2-results__options--nested', - 'role': 'none' - }); - - $childrenContainer.append($children); - - $option.append(label); - $option.append($childrenContainer); - } else { - this.template(data, option); - } - - Utils.StoreData(option, 'data', data); - - return option; - }; - - Results.prototype.bind = function (container, $container) { - var self = this; - - var id = container.id + '-results'; - - this.$results.attr('id', id); - - container.on('results:all', function (params) { - self.clear(); - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - self.highlightFirstItem(); - } - }); - - container.on('results:append', function (params) { - self.append(params.data); - - if (container.isOpen()) { - self.setClasses(); - } - }); - - container.on('query', function (params) { - self.hideMessages(); - self.showLoading(params); - }); - - container.on('select', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - - if (self.options.get('scrollAfterSelect')) { - self.highlightFirstItem(); - } - }); - - container.on('unselect', function () { - if (!container.isOpen()) { - return; - } - - self.setClasses(); - - if (self.options.get('scrollAfterSelect')) { - self.highlightFirstItem(); - } - }); - - container.on('open', function () { - // When the dropdown is open, aria-expended="true" - self.$results.attr('aria-expanded', 'true'); - self.$results.attr('aria-hidden', 'false'); - - self.setClasses(); - self.ensureHighlightVisible(); - }); - - container.on('close', function () { - // When the dropdown is closed, aria-expended="false" - self.$results.attr('aria-expanded', 'false'); - self.$results.attr('aria-hidden', 'true'); - self.$results.removeAttr('aria-activedescendant'); - }); - - container.on('results:toggle', function () { - var $highlighted = self.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - $highlighted.trigger('mouseup'); - }); - - container.on('results:select', function () { - var $highlighted = self.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - var data = Utils.GetData($highlighted[0], 'data'); - - if ($highlighted.hasClass('select2-results__option--selected')) { - self.trigger('close', {}); - } else { - self.trigger('select', { - data: data - }); - } - }); - - container.on('results:previous', function () { - var $highlighted = self.getHighlightedResults(); - - var $options = self.$results.find('.select2-results__option--selectable'); - - var currentIndex = $options.index($highlighted); - - // If we are already at the top, don't move further - // If no options, currentIndex will be -1 - if (currentIndex <= 0) { - return; - } - - var nextIndex = currentIndex - 1; - - // If none are highlighted, highlight the first - if ($highlighted.length === 0) { - nextIndex = 0; - } - - var $next = $options.eq(nextIndex); - - $next.trigger('mouseenter'); - - var currentOffset = self.$results.offset().top; - var nextTop = $next.offset().top; - var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset); - - if (nextIndex === 0) { - self.$results.scrollTop(0); - } else if (nextTop - currentOffset < 0) { - self.$results.scrollTop(nextOffset); - } - }); - - container.on('results:next', function () { - var $highlighted = self.getHighlightedResults(); - - var $options = self.$results.find('.select2-results__option--selectable'); - - var currentIndex = $options.index($highlighted); - - var nextIndex = currentIndex + 1; - - // If we are at the last option, stay there - if (nextIndex >= $options.length) { - return; - } - - var $next = $options.eq(nextIndex); - - $next.trigger('mouseenter'); - - var currentOffset = self.$results.offset().top + - self.$results.outerHeight(false); - var nextBottom = $next.offset().top + $next.outerHeight(false); - var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset; - - if (nextIndex === 0) { - self.$results.scrollTop(0); - } else if (nextBottom > currentOffset) { - self.$results.scrollTop(nextOffset); - } - }); - - container.on('results:focus', function (params) { - params.element[0].classList.add('select2-results__option--highlighted'); - params.element[0].setAttribute('aria-selected', 'true'); - }); - - container.on('results:message', function (params) { - self.displayMessage(params); - }); - - if ($.fn.mousewheel) { - this.$results.on('mousewheel', function (e) { - var top = self.$results.scrollTop(); - - var bottom = self.$results.get(0).scrollHeight - top + e.deltaY; - - var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0; - var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height(); - - if (isAtTop) { - self.$results.scrollTop(0); - - e.preventDefault(); - e.stopPropagation(); - } else if (isAtBottom) { - self.$results.scrollTop( - self.$results.get(0).scrollHeight - self.$results.height() - ); - - e.preventDefault(); - e.stopPropagation(); - } - }); - } - - this.$results.on('mouseup', '.select2-results__option--selectable', - function (evt) { - var $this = $(this); - - var data = Utils.GetData(this, 'data'); - - if ($this.hasClass('select2-results__option--selected')) { - if (self.options.get('multiple')) { - self.trigger('unselect', { - originalEvent: evt, - data: data - }); - } else { - self.trigger('close', {}); - } - - return; - } - - self.trigger('select', { - originalEvent: evt, - data: data - }); - }); - - this.$results.on('mouseenter', '.select2-results__option--selectable', - function (evt) { - var data = Utils.GetData(this, 'data'); - - self.getHighlightedResults() - .removeClass('select2-results__option--highlighted') - .attr('aria-selected', 'false'); - - self.trigger('results:focus', { - data: data, - element: $(this) - }); - }); - }; - - Results.prototype.getHighlightedResults = function () { - var $highlighted = this.$results - .find('.select2-results__option--highlighted'); - - return $highlighted; - }; - - Results.prototype.destroy = function () { - this.$results.remove(); - }; - - Results.prototype.ensureHighlightVisible = function () { - var $highlighted = this.getHighlightedResults(); - - if ($highlighted.length === 0) { - return; - } - - var $options = this.$results.find('.select2-results__option--selectable'); - - var currentIndex = $options.index($highlighted); - - var currentOffset = this.$results.offset().top; - var nextTop = $highlighted.offset().top; - var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset); - - var offsetDelta = nextTop - currentOffset; - nextOffset -= $highlighted.outerHeight(false) * 2; - - if (currentIndex <= 2) { - this.$results.scrollTop(0); - } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) { - this.$results.scrollTop(nextOffset); - } - }; - - Results.prototype.template = function (result, container) { - var template = this.options.get('templateResult'); - var escapeMarkup = this.options.get('escapeMarkup'); - - var content = template(result, container); - - if (content == null) { - container.style.display = 'none'; - } else if (typeof content === 'string') { - container.innerHTML = escapeMarkup(content); - } else { - $(container).append(content); - } - }; - - return Results; -}); - -S2.define('select2/keys',[ - -], function () { - var KEYS = { - BACKSPACE: 8, - TAB: 9, - ENTER: 13, - SHIFT: 16, - CTRL: 17, - ALT: 18, - ESC: 27, - SPACE: 32, - PAGE_UP: 33, - PAGE_DOWN: 34, - END: 35, - HOME: 36, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40, - DELETE: 46 - }; - - return KEYS; -}); - -S2.define('select2/selection/base',[ - 'jquery', - '../utils', - '../keys' -], function ($, Utils, KEYS) { - function BaseSelection ($element, options) { - this.$element = $element; - this.options = options; - - BaseSelection.__super__.constructor.call(this); - } - - Utils.Extend(BaseSelection, Utils.Observable); - - BaseSelection.prototype.render = function () { - var $selection = $( - '' - ); - - this._tabindex = 0; - - if (Utils.GetData(this.$element[0], 'old-tabindex') != null) { - this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex'); - } else if (this.$element.attr('tabindex') != null) { - this._tabindex = this.$element.attr('tabindex'); - } - - $selection.attr('title', this.$element.attr('title')); - $selection.attr('tabindex', this._tabindex); - $selection.attr('aria-disabled', 'false'); - - this.$selection = $selection; - - return $selection; - }; - - BaseSelection.prototype.bind = function (container, $container) { - var self = this; - - var resultsId = container.id + '-results'; - - this.container = container; - - this.$selection.on('focus', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('blur', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', function (evt) { - self.trigger('keypress', evt); - - if (evt.which === KEYS.SPACE) { - evt.preventDefault(); - } - }); - - container.on('results:focus', function (params) { - self.$selection.attr('aria-activedescendant', params.data._resultId); - }); - - container.on('selection:update', function (params) { - self.update(params.data); - }); - - container.on('open', function () { - // When the dropdown is open, aria-expanded="true" - self.$selection.attr('aria-expanded', 'true'); - self.$selection.attr('aria-owns', resultsId); - - self._attachCloseHandler(container); - }); - - container.on('close', function () { - // When the dropdown is closed, aria-expanded="false" - self.$selection.attr('aria-expanded', 'false'); - self.$selection.removeAttr('aria-activedescendant'); - self.$selection.removeAttr('aria-owns'); - - self.$selection.trigger('focus'); - - self._detachCloseHandler(container); - }); - - container.on('enable', function () { - self.$selection.attr('tabindex', self._tabindex); - self.$selection.attr('aria-disabled', 'false'); - }); - - container.on('disable', function () { - self.$selection.attr('tabindex', '-1'); - self.$selection.attr('aria-disabled', 'true'); - }); - }; - - BaseSelection.prototype._handleBlur = function (evt) { - var self = this; - - // This needs to be delayed as the active element is the body when the tab - // key is pressed, possibly along with others. - window.setTimeout(function () { - // Don't trigger `blur` if the focus is still in the selection - if ( - (document.activeElement == self.$selection[0]) || - ($.contains(self.$selection[0], document.activeElement)) - ) { - return; - } - - self.trigger('blur', evt); - }, 1); - }; - - BaseSelection.prototype._attachCloseHandler = function (container) { - - $(document.body).on('mousedown.select2.' + container.id, function (e) { - var $target = $(e.target); - - var $select = $target.closest('.select2'); - - var $all = $('.select2.select2-container--open'); - - $all.each(function () { - if (this == $select[0]) { - return; - } - - var $element = Utils.GetData(this, 'element'); - - $element.select2('close'); - }); - }); - }; - - BaseSelection.prototype._detachCloseHandler = function (container) { - $(document.body).off('mousedown.select2.' + container.id); - }; - - BaseSelection.prototype.position = function ($selection, $container) { - var $selectionContainer = $container.find('.selection'); - $selectionContainer.append($selection); - }; - - BaseSelection.prototype.destroy = function () { - this._detachCloseHandler(this.container); - }; - - BaseSelection.prototype.update = function (data) { - throw new Error('The `update` method must be defined in child classes.'); - }; - - /** - * Helper method to abstract the "enabled" (not "disabled") state of this - * object. - * - * @return {true} if the instance is not disabled. - * @return {false} if the instance is disabled. - */ - BaseSelection.prototype.isEnabled = function () { - return !this.isDisabled(); - }; - - /** - * Helper method to abstract the "disabled" state of this object. - * - * @return {true} if the disabled option is true. - * @return {false} if the disabled option is false. - */ - BaseSelection.prototype.isDisabled = function () { - return this.options.get('disabled'); - }; - - return BaseSelection; -}); - -S2.define('select2/selection/single',[ - 'jquery', - './base', - '../utils', - '../keys' -], function ($, BaseSelection, Utils, KEYS) { - function SingleSelection () { - SingleSelection.__super__.constructor.apply(this, arguments); - } - - Utils.Extend(SingleSelection, BaseSelection); - - SingleSelection.prototype.render = function () { - var $selection = SingleSelection.__super__.render.call(this); - - $selection[0].classList.add('select2-selection--single'); - - $selection.html( - '' + - '' + - '' + - '' - ); - - return $selection; - }; - - SingleSelection.prototype.bind = function (container, $container) { - var self = this; - - SingleSelection.__super__.bind.apply(this, arguments); - - var id = container.id + '-container'; - - this.$selection.find('.select2-selection__rendered') - .attr('id', id) - .attr('role', 'textbox') - .attr('aria-readonly', 'true'); - this.$selection.attr('aria-labelledby', id); - this.$selection.attr('aria-controls', id); - - this.$selection.on('mousedown', function (evt) { - // Only respond to left clicks - if (evt.which !== 1) { - return; - } - - self.trigger('toggle', { - originalEvent: evt - }); - }); - - this.$selection.on('focus', function (evt) { - // User focuses on the container - }); - - this.$selection.on('blur', function (evt) { - // User exits the container - }); - - container.on('focus', function (evt) { - if (!container.isOpen()) { - self.$selection.trigger('focus'); - } - }); - }; - - SingleSelection.prototype.clear = function () { - var $rendered = this.$selection.find('.select2-selection__rendered'); - $rendered.empty(); - $rendered.removeAttr('title'); // clear tooltip on empty - }; - - SingleSelection.prototype.display = function (data, container) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data, container)); - }; - - SingleSelection.prototype.selectionContainer = function () { - return $(''); - }; - - SingleSelection.prototype.update = function (data) { - if (data.length === 0) { - this.clear(); - return; - } - - var selection = data[0]; - - var $rendered = this.$selection.find('.select2-selection__rendered'); - var formatted = this.display(selection, $rendered); - - $rendered.empty().append(formatted); - - var title = selection.title || selection.text; - - if (title) { - $rendered.attr('title', title); - } else { - $rendered.removeAttr('title'); - } - }; - - return SingleSelection; -}); - -S2.define('select2/selection/multiple',[ - 'jquery', - './base', - '../utils' -], function ($, BaseSelection, Utils) { - function MultipleSelection ($element, options) { - MultipleSelection.__super__.constructor.apply(this, arguments); - } - - Utils.Extend(MultipleSelection, BaseSelection); - - MultipleSelection.prototype.render = function () { - var $selection = MultipleSelection.__super__.render.call(this); - - $selection[0].classList.add('select2-selection--multiple'); - - $selection.html( - '
          ' - ); - - return $selection; - }; - - MultipleSelection.prototype.bind = function (container, $container) { - var self = this; - - MultipleSelection.__super__.bind.apply(this, arguments); - - var id = container.id + '-container'; - this.$selection.find('.select2-selection__rendered').attr('id', id); - - this.$selection.on('click', function (evt) { - self.trigger('toggle', { - originalEvent: evt - }); - }); - - this.$selection.on( - 'click', - '.select2-selection__choice__remove', - function (evt) { - // Ignore the event if it is disabled - if (self.isDisabled()) { - return; - } - - var $remove = $(this); - var $selection = $remove.parent(); - - var data = Utils.GetData($selection[0], 'data'); - - self.trigger('unselect', { - originalEvent: evt, - data: data - }); - } - ); - - this.$selection.on( - 'keydown', - '.select2-selection__choice__remove', - function (evt) { - // Ignore the event if it is disabled - if (self.isDisabled()) { - return; - } - - evt.stopPropagation(); - } - ); - }; - - MultipleSelection.prototype.clear = function () { - var $rendered = this.$selection.find('.select2-selection__rendered'); - $rendered.empty(); - $rendered.removeAttr('title'); - }; - - MultipleSelection.prototype.display = function (data, container) { - var template = this.options.get('templateSelection'); - var escapeMarkup = this.options.get('escapeMarkup'); - - return escapeMarkup(template(data, container)); - }; - - MultipleSelection.prototype.selectionContainer = function () { - var $container = $( - '
        • ' + - '' + - '' + - '
        • ' - ); - - return $container; - }; - - MultipleSelection.prototype.update = function (data) { - this.clear(); - - if (data.length === 0) { - return; - } - - var $selections = []; - - var selectionIdPrefix = this.$selection.find('.select2-selection__rendered') - .attr('id') + '-choice-'; - - for (var d = 0; d < data.length; d++) { - var selection = data[d]; - - var $selection = this.selectionContainer(); - var formatted = this.display(selection, $selection); - - var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-'; - - if (selection.id) { - selectionId += selection.id; - } else { - selectionId += Utils.generateChars(4); - } - - $selection.find('.select2-selection__choice__display') - .append(formatted) - .attr('id', selectionId); - - var title = selection.title || selection.text; - - if (title) { - $selection.attr('title', title); - } - - var removeItem = this.options.get('translations').get('removeItem'); - - var $remove = $selection.find('.select2-selection__choice__remove'); - - $remove.attr('title', removeItem()); - $remove.attr('aria-label', removeItem()); - $remove.attr('aria-describedby', selectionId); - - Utils.StoreData($selection[0], 'data', selection); - - $selections.push($selection); - } - - var $rendered = this.$selection.find('.select2-selection__rendered'); - - $rendered.append($selections); - }; - - return MultipleSelection; -}); - -S2.define('select2/selection/placeholder',[ - -], function () { - function Placeholder (decorated, $element, options) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options); - } - - Placeholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - Placeholder.prototype.createPlaceholder = function (decorated, placeholder) { - var $placeholder = this.selectionContainer(); - - $placeholder.html(this.display(placeholder)); - $placeholder[0].classList.add('select2-selection__placeholder'); - $placeholder[0].classList.remove('select2-selection__choice'); - - var placeholderTitle = placeholder.title || - placeholder.text || - $placeholder.text(); - - this.$selection.find('.select2-selection__rendered').attr( - 'title', - placeholderTitle - ); - - return $placeholder; - }; - - Placeholder.prototype.update = function (decorated, data) { - var singlePlaceholder = ( - data.length == 1 && data[0].id != this.placeholder.id - ); - var multipleSelections = data.length > 1; - - if (multipleSelections || singlePlaceholder) { - return decorated.call(this, data); - } - - this.clear(); - - var $placeholder = this.createPlaceholder(this.placeholder); - - this.$selection.find('.select2-selection__rendered').append($placeholder); - }; - - return Placeholder; -}); - -S2.define('select2/selection/allowClear',[ - 'jquery', - '../keys', - '../utils' -], function ($, KEYS, Utils) { - function AllowClear () { } - - AllowClear.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - if (this.placeholder == null) { - if (this.options.get('debug') && window.console && console.error) { - console.error( - 'Select2: The `allowClear` option should be used in combination ' + - 'with the `placeholder` option.' - ); - } - } - - this.$selection.on('mousedown', '.select2-selection__clear', - function (evt) { - self._handleClear(evt); - }); - - container.on('keypress', function (evt) { - self._handleKeyboardClear(evt, container); - }); - }; - - AllowClear.prototype._handleClear = function (_, evt) { - // Ignore the event if it is disabled - if (this.isDisabled()) { - return; - } - - var $clear = this.$selection.find('.select2-selection__clear'); - - // Ignore the event if nothing has been selected - if ($clear.length === 0) { - return; - } - - evt.stopPropagation(); - - var data = Utils.GetData($clear[0], 'data'); - - var previousVal = this.$element.val(); - this.$element.val(this.placeholder.id); - - var unselectData = { - data: data - }; - this.trigger('clear', unselectData); - if (unselectData.prevented) { - this.$element.val(previousVal); - return; - } - - for (var d = 0; d < data.length; d++) { - unselectData = { - data: data[d] - }; - - // Trigger the `unselect` event, so people can prevent it from being - // cleared. - this.trigger('unselect', unselectData); - - // If the event was prevented, don't clear it out. - if (unselectData.prevented) { - this.$element.val(previousVal); - return; - } - } - - this.$element.trigger('input').trigger('change'); - - this.trigger('toggle', {}); - }; - - AllowClear.prototype._handleKeyboardClear = function (_, evt, container) { - if (container.isOpen()) { - return; - } - - if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) { - this._handleClear(evt); - } - }; - - AllowClear.prototype.update = function (decorated, data) { - decorated.call(this, data); - - this.$selection.find('.select2-selection__clear').remove(); - this.$selection[0].classList.remove('select2-selection--clearable'); - - if (this.$selection.find('.select2-selection__placeholder').length > 0 || - data.length === 0) { - return; - } - - var selectionId = this.$selection.find('.select2-selection__rendered') - .attr('id'); - - var removeAll = this.options.get('translations').get('removeAllItems'); - - var $remove = $( - '' - ); - $remove.attr('title', removeAll()); - $remove.attr('aria-label', removeAll()); - $remove.attr('aria-describedby', selectionId); - Utils.StoreData($remove[0], 'data', data); - - this.$selection.prepend($remove); - this.$selection[0].classList.add('select2-selection--clearable'); - }; - - return AllowClear; -}); - -S2.define('select2/selection/search',[ - 'jquery', - '../utils', - '../keys' -], function ($, Utils, KEYS) { - function Search (decorated, $element, options) { - decorated.call(this, $element, options); - } - - Search.prototype.render = function (decorated) { - var searchLabel = this.options.get('translations').get('search'); - var $search = $( - '' + - '' + - '' - ); - - this.$searchContainer = $search; - this.$search = $search.find('textarea'); - - this.$search.prop('autocomplete', this.options.get('autocomplete')); - this.$search.attr('aria-label', searchLabel()); - - var $rendered = decorated.call(this); - - this._transferTabIndex(); - $rendered.append(this.$searchContainer); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - var resultsId = container.id + '-results'; - var selectionId = container.id + '-container'; - - decorated.call(this, container, $container); - - self.$search.attr('aria-describedby', selectionId); - - container.on('open', function () { - self.$search.attr('aria-controls', resultsId); - self.$search.trigger('focus'); - }); - - container.on('close', function () { - self.$search.val(''); - self.resizeSearch(); - self.$search.removeAttr('aria-controls'); - self.$search.removeAttr('aria-activedescendant'); - self.$search.trigger('focus'); - }); - - container.on('enable', function () { - self.$search.prop('disabled', false); - - self._transferTabIndex(); - }); - - container.on('disable', function () { - self.$search.prop('disabled', true); - }); - - container.on('focus', function (evt) { - self.$search.trigger('focus'); - }); - - container.on('results:focus', function (params) { - if (params.data._resultId) { - self.$search.attr('aria-activedescendant', params.data._resultId); - } else { - self.$search.removeAttr('aria-activedescendant'); - } - }); - - this.$selection.on('focusin', '.select2-search--inline', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('focusout', '.select2-search--inline', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', '.select2-search--inline', function (evt) { - evt.stopPropagation(); - - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - - var key = evt.which; - - if (key === KEYS.BACKSPACE && self.$search.val() === '') { - var $previousChoice = self.$selection - .find('.select2-selection__choice').last(); - - if ($previousChoice.length > 0) { - var item = Utils.GetData($previousChoice[0], 'data'); - - self.searchRemoveChoice(item); - - evt.preventDefault(); - } - } - }); - - this.$selection.on('click', '.select2-search--inline', function (evt) { - if (self.$search.val()) { - evt.stopPropagation(); - } - }); - - // Try to detect the IE version should the `documentMode` property that - // is stored on the document. This is only implemented in IE and is - // slightly cleaner than doing a user agent check. - // This property is not available in Edge, but Edge also doesn't have - // this bug. - var msie = document.documentMode; - var disableInputEvents = msie && msie <= 11; - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$selection.on( - 'input.searchcheck', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents) { - self.$selection.off('input.search input.searchcheck'); - return; - } - - // Unbind the duplicated `keyup` event - self.$selection.off('keyup.search'); - } - ); - - this.$selection.on( - 'keyup.search input.search', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents && evt.type === 'input') { - self.$selection.off('input.search input.searchcheck'); - return; - } - - var key = evt.which; - - // We can freely ignore events from modifier keys - if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { - return; - } - - // Tabbing will be handled during the `keydown` phase - if (key == KEYS.TAB) { - return; - } - - self.handleSearch(evt); - } - ); - }; - - /** - * This method will transfer the tabindex attribute from the rendered - * selection to the search box. This allows for the search box to be used as - * the primary focus instead of the selection container. - * - * @private - */ - Search.prototype._transferTabIndex = function (decorated) { - this.$search.attr('tabindex', this.$selection.attr('tabindex')); - this.$selection.attr('tabindex', '-1'); - }; - - Search.prototype.createPlaceholder = function (decorated, placeholder) { - this.$search.attr('placeholder', placeholder.text); - }; - - Search.prototype.update = function (decorated, data) { - var searchHadFocus = this.$search[0] == document.activeElement; - - this.$search.attr('placeholder', ''); - - decorated.call(this, data); - - this.resizeSearch(); - if (searchHadFocus) { - this.$search.trigger('focus'); - } - }; - - Search.prototype.handleSearch = function () { - this.resizeSearch(); - - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.searchRemoveChoice = function (decorated, item) { - this.trigger('unselect', { - data: item - }); - - this.$search.val(item.text); - this.handleSearch(); - }; - - Search.prototype.resizeSearch = function () { - this.$search.css('width', '25px'); - - var width = '100%'; - - if (this.$search.attr('placeholder') === '') { - var minimumWidth = this.$search.val().length + 1; - - width = (minimumWidth * 0.75) + 'em'; - } - - this.$search.css('width', width); - }; - - return Search; -}); - -S2.define('select2/selection/selectionCss',[ - '../utils' -], function (Utils) { - function SelectionCSS () { } - - SelectionCSS.prototype.render = function (decorated) { - var $selection = decorated.call(this); - - var selectionCssClass = this.options.get('selectionCssClass') || ''; - - if (selectionCssClass.indexOf(':all:') !== -1) { - selectionCssClass = selectionCssClass.replace(':all:', ''); - - Utils.copyNonInternalCssClasses($selection[0], this.$element[0]); - } - - $selection.addClass(selectionCssClass); - - return $selection; - }; - - return SelectionCSS; -}); - -S2.define('select2/selection/eventRelay',[ - 'jquery' -], function ($) { - function EventRelay () { } - - EventRelay.prototype.bind = function (decorated, container, $container) { - var self = this; - var relayEvents = [ - 'open', 'opening', - 'close', 'closing', - 'select', 'selecting', - 'unselect', 'unselecting', - 'clear', 'clearing' - ]; - - var preventableEvents = [ - 'opening', 'closing', 'selecting', 'unselecting', 'clearing' - ]; - - decorated.call(this, container, $container); - - container.on('*', function (name, params) { - // Ignore events that should not be relayed - if (relayEvents.indexOf(name) === -1) { - return; - } - - // The parameters should always be an object - params = params || {}; - - // Generate the jQuery event for the Select2 event - var evt = $.Event('select2:' + name, { - params: params - }); - - self.$element.trigger(evt); - - // Only handle preventable events if it was one - if (preventableEvents.indexOf(name) === -1) { - return; - } - - params.prevented = evt.isDefaultPrevented(); - }); - }; - - return EventRelay; -}); - -S2.define('select2/translation',[ - 'jquery', - 'require' -], function ($, require) { - function Translation (dict) { - this.dict = dict || {}; - } - - Translation.prototype.all = function () { - return this.dict; - }; - - Translation.prototype.get = function (key) { - return this.dict[key]; - }; - - Translation.prototype.extend = function (translation) { - this.dict = $.extend({}, translation.all(), this.dict); - }; - - // Static functions - - Translation._cache = {}; - - Translation.loadPath = function (path) { - if (!(path in Translation._cache)) { - var translations = require(path); - - Translation._cache[path] = translations; - } - - return new Translation(Translation._cache[path]); - }; - - return Translation; -}); - -S2.define('select2/diacritics',[ - -], function () { - var diacritics = { - '\u24B6': 'A', - '\uFF21': 'A', - '\u00C0': 'A', - '\u00C1': 'A', - '\u00C2': 'A', - '\u1EA6': 'A', - '\u1EA4': 'A', - '\u1EAA': 'A', - '\u1EA8': 'A', - '\u00C3': 'A', - '\u0100': 'A', - '\u0102': 'A', - '\u1EB0': 'A', - '\u1EAE': 'A', - '\u1EB4': 'A', - '\u1EB2': 'A', - '\u0226': 'A', - '\u01E0': 'A', - '\u00C4': 'A', - '\u01DE': 'A', - '\u1EA2': 'A', - '\u00C5': 'A', - '\u01FA': 'A', - '\u01CD': 'A', - '\u0200': 'A', - '\u0202': 'A', - '\u1EA0': 'A', - '\u1EAC': 'A', - '\u1EB6': 'A', - '\u1E00': 'A', - '\u0104': 'A', - '\u023A': 'A', - '\u2C6F': 'A', - '\uA732': 'AA', - '\u00C6': 'AE', - '\u01FC': 'AE', - '\u01E2': 'AE', - '\uA734': 'AO', - '\uA736': 'AU', - '\uA738': 'AV', - '\uA73A': 'AV', - '\uA73C': 'AY', - '\u24B7': 'B', - '\uFF22': 'B', - '\u1E02': 'B', - '\u1E04': 'B', - '\u1E06': 'B', - '\u0243': 'B', - '\u0182': 'B', - '\u0181': 'B', - '\u24B8': 'C', - '\uFF23': 'C', - '\u0106': 'C', - '\u0108': 'C', - '\u010A': 'C', - '\u010C': 'C', - '\u00C7': 'C', - '\u1E08': 'C', - '\u0187': 'C', - '\u023B': 'C', - '\uA73E': 'C', - '\u24B9': 'D', - '\uFF24': 'D', - '\u1E0A': 'D', - '\u010E': 'D', - '\u1E0C': 'D', - '\u1E10': 'D', - '\u1E12': 'D', - '\u1E0E': 'D', - '\u0110': 'D', - '\u018B': 'D', - '\u018A': 'D', - '\u0189': 'D', - '\uA779': 'D', - '\u01F1': 'DZ', - '\u01C4': 'DZ', - '\u01F2': 'Dz', - '\u01C5': 'Dz', - '\u24BA': 'E', - '\uFF25': 'E', - '\u00C8': 'E', - '\u00C9': 'E', - '\u00CA': 'E', - '\u1EC0': 'E', - '\u1EBE': 'E', - '\u1EC4': 'E', - '\u1EC2': 'E', - '\u1EBC': 'E', - '\u0112': 'E', - '\u1E14': 'E', - '\u1E16': 'E', - '\u0114': 'E', - '\u0116': 'E', - '\u00CB': 'E', - '\u1EBA': 'E', - '\u011A': 'E', - '\u0204': 'E', - '\u0206': 'E', - '\u1EB8': 'E', - '\u1EC6': 'E', - '\u0228': 'E', - '\u1E1C': 'E', - '\u0118': 'E', - '\u1E18': 'E', - '\u1E1A': 'E', - '\u0190': 'E', - '\u018E': 'E', - '\u24BB': 'F', - '\uFF26': 'F', - '\u1E1E': 'F', - '\u0191': 'F', - '\uA77B': 'F', - '\u24BC': 'G', - '\uFF27': 'G', - '\u01F4': 'G', - '\u011C': 'G', - '\u1E20': 'G', - '\u011E': 'G', - '\u0120': 'G', - '\u01E6': 'G', - '\u0122': 'G', - '\u01E4': 'G', - '\u0193': 'G', - '\uA7A0': 'G', - '\uA77D': 'G', - '\uA77E': 'G', - '\u24BD': 'H', - '\uFF28': 'H', - '\u0124': 'H', - '\u1E22': 'H', - '\u1E26': 'H', - '\u021E': 'H', - '\u1E24': 'H', - '\u1E28': 'H', - '\u1E2A': 'H', - '\u0126': 'H', - '\u2C67': 'H', - '\u2C75': 'H', - '\uA78D': 'H', - '\u24BE': 'I', - '\uFF29': 'I', - '\u00CC': 'I', - '\u00CD': 'I', - '\u00CE': 'I', - '\u0128': 'I', - '\u012A': 'I', - '\u012C': 'I', - '\u0130': 'I', - '\u00CF': 'I', - '\u1E2E': 'I', - '\u1EC8': 'I', - '\u01CF': 'I', - '\u0208': 'I', - '\u020A': 'I', - '\u1ECA': 'I', - '\u012E': 'I', - '\u1E2C': 'I', - '\u0197': 'I', - '\u24BF': 'J', - '\uFF2A': 'J', - '\u0134': 'J', - '\u0248': 'J', - '\u24C0': 'K', - '\uFF2B': 'K', - '\u1E30': 'K', - '\u01E8': 'K', - '\u1E32': 'K', - '\u0136': 'K', - '\u1E34': 'K', - '\u0198': 'K', - '\u2C69': 'K', - '\uA740': 'K', - '\uA742': 'K', - '\uA744': 'K', - '\uA7A2': 'K', - '\u24C1': 'L', - '\uFF2C': 'L', - '\u013F': 'L', - '\u0139': 'L', - '\u013D': 'L', - '\u1E36': 'L', - '\u1E38': 'L', - '\u013B': 'L', - '\u1E3C': 'L', - '\u1E3A': 'L', - '\u0141': 'L', - '\u023D': 'L', - '\u2C62': 'L', - '\u2C60': 'L', - '\uA748': 'L', - '\uA746': 'L', - '\uA780': 'L', - '\u01C7': 'LJ', - '\u01C8': 'Lj', - '\u24C2': 'M', - '\uFF2D': 'M', - '\u1E3E': 'M', - '\u1E40': 'M', - '\u1E42': 'M', - '\u2C6E': 'M', - '\u019C': 'M', - '\u24C3': 'N', - '\uFF2E': 'N', - '\u01F8': 'N', - '\u0143': 'N', - '\u00D1': 'N', - '\u1E44': 'N', - '\u0147': 'N', - '\u1E46': 'N', - '\u0145': 'N', - '\u1E4A': 'N', - '\u1E48': 'N', - '\u0220': 'N', - '\u019D': 'N', - '\uA790': 'N', - '\uA7A4': 'N', - '\u01CA': 'NJ', - '\u01CB': 'Nj', - '\u24C4': 'O', - '\uFF2F': 'O', - '\u00D2': 'O', - '\u00D3': 'O', - '\u00D4': 'O', - '\u1ED2': 'O', - '\u1ED0': 'O', - '\u1ED6': 'O', - '\u1ED4': 'O', - '\u00D5': 'O', - '\u1E4C': 'O', - '\u022C': 'O', - '\u1E4E': 'O', - '\u014C': 'O', - '\u1E50': 'O', - '\u1E52': 'O', - '\u014E': 'O', - '\u022E': 'O', - '\u0230': 'O', - '\u00D6': 'O', - '\u022A': 'O', - '\u1ECE': 'O', - '\u0150': 'O', - '\u01D1': 'O', - '\u020C': 'O', - '\u020E': 'O', - '\u01A0': 'O', - '\u1EDC': 'O', - '\u1EDA': 'O', - '\u1EE0': 'O', - '\u1EDE': 'O', - '\u1EE2': 'O', - '\u1ECC': 'O', - '\u1ED8': 'O', - '\u01EA': 'O', - '\u01EC': 'O', - '\u00D8': 'O', - '\u01FE': 'O', - '\u0186': 'O', - '\u019F': 'O', - '\uA74A': 'O', - '\uA74C': 'O', - '\u0152': 'OE', - '\u01A2': 'OI', - '\uA74E': 'OO', - '\u0222': 'OU', - '\u24C5': 'P', - '\uFF30': 'P', - '\u1E54': 'P', - '\u1E56': 'P', - '\u01A4': 'P', - '\u2C63': 'P', - '\uA750': 'P', - '\uA752': 'P', - '\uA754': 'P', - '\u24C6': 'Q', - '\uFF31': 'Q', - '\uA756': 'Q', - '\uA758': 'Q', - '\u024A': 'Q', - '\u24C7': 'R', - '\uFF32': 'R', - '\u0154': 'R', - '\u1E58': 'R', - '\u0158': 'R', - '\u0210': 'R', - '\u0212': 'R', - '\u1E5A': 'R', - '\u1E5C': 'R', - '\u0156': 'R', - '\u1E5E': 'R', - '\u024C': 'R', - '\u2C64': 'R', - '\uA75A': 'R', - '\uA7A6': 'R', - '\uA782': 'R', - '\u24C8': 'S', - '\uFF33': 'S', - '\u1E9E': 'S', - '\u015A': 'S', - '\u1E64': 'S', - '\u015C': 'S', - '\u1E60': 'S', - '\u0160': 'S', - '\u1E66': 'S', - '\u1E62': 'S', - '\u1E68': 'S', - '\u0218': 'S', - '\u015E': 'S', - '\u2C7E': 'S', - '\uA7A8': 'S', - '\uA784': 'S', - '\u24C9': 'T', - '\uFF34': 'T', - '\u1E6A': 'T', - '\u0164': 'T', - '\u1E6C': 'T', - '\u021A': 'T', - '\u0162': 'T', - '\u1E70': 'T', - '\u1E6E': 'T', - '\u0166': 'T', - '\u01AC': 'T', - '\u01AE': 'T', - '\u023E': 'T', - '\uA786': 'T', - '\uA728': 'TZ', - '\u24CA': 'U', - '\uFF35': 'U', - '\u00D9': 'U', - '\u00DA': 'U', - '\u00DB': 'U', - '\u0168': 'U', - '\u1E78': 'U', - '\u016A': 'U', - '\u1E7A': 'U', - '\u016C': 'U', - '\u00DC': 'U', - '\u01DB': 'U', - '\u01D7': 'U', - '\u01D5': 'U', - '\u01D9': 'U', - '\u1EE6': 'U', - '\u016E': 'U', - '\u0170': 'U', - '\u01D3': 'U', - '\u0214': 'U', - '\u0216': 'U', - '\u01AF': 'U', - '\u1EEA': 'U', - '\u1EE8': 'U', - '\u1EEE': 'U', - '\u1EEC': 'U', - '\u1EF0': 'U', - '\u1EE4': 'U', - '\u1E72': 'U', - '\u0172': 'U', - '\u1E76': 'U', - '\u1E74': 'U', - '\u0244': 'U', - '\u24CB': 'V', - '\uFF36': 'V', - '\u1E7C': 'V', - '\u1E7E': 'V', - '\u01B2': 'V', - '\uA75E': 'V', - '\u0245': 'V', - '\uA760': 'VY', - '\u24CC': 'W', - '\uFF37': 'W', - '\u1E80': 'W', - '\u1E82': 'W', - '\u0174': 'W', - '\u1E86': 'W', - '\u1E84': 'W', - '\u1E88': 'W', - '\u2C72': 'W', - '\u24CD': 'X', - '\uFF38': 'X', - '\u1E8A': 'X', - '\u1E8C': 'X', - '\u24CE': 'Y', - '\uFF39': 'Y', - '\u1EF2': 'Y', - '\u00DD': 'Y', - '\u0176': 'Y', - '\u1EF8': 'Y', - '\u0232': 'Y', - '\u1E8E': 'Y', - '\u0178': 'Y', - '\u1EF6': 'Y', - '\u1EF4': 'Y', - '\u01B3': 'Y', - '\u024E': 'Y', - '\u1EFE': 'Y', - '\u24CF': 'Z', - '\uFF3A': 'Z', - '\u0179': 'Z', - '\u1E90': 'Z', - '\u017B': 'Z', - '\u017D': 'Z', - '\u1E92': 'Z', - '\u1E94': 'Z', - '\u01B5': 'Z', - '\u0224': 'Z', - '\u2C7F': 'Z', - '\u2C6B': 'Z', - '\uA762': 'Z', - '\u24D0': 'a', - '\uFF41': 'a', - '\u1E9A': 'a', - '\u00E0': 'a', - '\u00E1': 'a', - '\u00E2': 'a', - '\u1EA7': 'a', - '\u1EA5': 'a', - '\u1EAB': 'a', - '\u1EA9': 'a', - '\u00E3': 'a', - '\u0101': 'a', - '\u0103': 'a', - '\u1EB1': 'a', - '\u1EAF': 'a', - '\u1EB5': 'a', - '\u1EB3': 'a', - '\u0227': 'a', - '\u01E1': 'a', - '\u00E4': 'a', - '\u01DF': 'a', - '\u1EA3': 'a', - '\u00E5': 'a', - '\u01FB': 'a', - '\u01CE': 'a', - '\u0201': 'a', - '\u0203': 'a', - '\u1EA1': 'a', - '\u1EAD': 'a', - '\u1EB7': 'a', - '\u1E01': 'a', - '\u0105': 'a', - '\u2C65': 'a', - '\u0250': 'a', - '\uA733': 'aa', - '\u00E6': 'ae', - '\u01FD': 'ae', - '\u01E3': 'ae', - '\uA735': 'ao', - '\uA737': 'au', - '\uA739': 'av', - '\uA73B': 'av', - '\uA73D': 'ay', - '\u24D1': 'b', - '\uFF42': 'b', - '\u1E03': 'b', - '\u1E05': 'b', - '\u1E07': 'b', - '\u0180': 'b', - '\u0183': 'b', - '\u0253': 'b', - '\u24D2': 'c', - '\uFF43': 'c', - '\u0107': 'c', - '\u0109': 'c', - '\u010B': 'c', - '\u010D': 'c', - '\u00E7': 'c', - '\u1E09': 'c', - '\u0188': 'c', - '\u023C': 'c', - '\uA73F': 'c', - '\u2184': 'c', - '\u24D3': 'd', - '\uFF44': 'd', - '\u1E0B': 'd', - '\u010F': 'd', - '\u1E0D': 'd', - '\u1E11': 'd', - '\u1E13': 'd', - '\u1E0F': 'd', - '\u0111': 'd', - '\u018C': 'd', - '\u0256': 'd', - '\u0257': 'd', - '\uA77A': 'd', - '\u01F3': 'dz', - '\u01C6': 'dz', - '\u24D4': 'e', - '\uFF45': 'e', - '\u00E8': 'e', - '\u00E9': 'e', - '\u00EA': 'e', - '\u1EC1': 'e', - '\u1EBF': 'e', - '\u1EC5': 'e', - '\u1EC3': 'e', - '\u1EBD': 'e', - '\u0113': 'e', - '\u1E15': 'e', - '\u1E17': 'e', - '\u0115': 'e', - '\u0117': 'e', - '\u00EB': 'e', - '\u1EBB': 'e', - '\u011B': 'e', - '\u0205': 'e', - '\u0207': 'e', - '\u1EB9': 'e', - '\u1EC7': 'e', - '\u0229': 'e', - '\u1E1D': 'e', - '\u0119': 'e', - '\u1E19': 'e', - '\u1E1B': 'e', - '\u0247': 'e', - '\u025B': 'e', - '\u01DD': 'e', - '\u24D5': 'f', - '\uFF46': 'f', - '\u1E1F': 'f', - '\u0192': 'f', - '\uA77C': 'f', - '\u24D6': 'g', - '\uFF47': 'g', - '\u01F5': 'g', - '\u011D': 'g', - '\u1E21': 'g', - '\u011F': 'g', - '\u0121': 'g', - '\u01E7': 'g', - '\u0123': 'g', - '\u01E5': 'g', - '\u0260': 'g', - '\uA7A1': 'g', - '\u1D79': 'g', - '\uA77F': 'g', - '\u24D7': 'h', - '\uFF48': 'h', - '\u0125': 'h', - '\u1E23': 'h', - '\u1E27': 'h', - '\u021F': 'h', - '\u1E25': 'h', - '\u1E29': 'h', - '\u1E2B': 'h', - '\u1E96': 'h', - '\u0127': 'h', - '\u2C68': 'h', - '\u2C76': 'h', - '\u0265': 'h', - '\u0195': 'hv', - '\u24D8': 'i', - '\uFF49': 'i', - '\u00EC': 'i', - '\u00ED': 'i', - '\u00EE': 'i', - '\u0129': 'i', - '\u012B': 'i', - '\u012D': 'i', - '\u00EF': 'i', - '\u1E2F': 'i', - '\u1EC9': 'i', - '\u01D0': 'i', - '\u0209': 'i', - '\u020B': 'i', - '\u1ECB': 'i', - '\u012F': 'i', - '\u1E2D': 'i', - '\u0268': 'i', - '\u0131': 'i', - '\u24D9': 'j', - '\uFF4A': 'j', - '\u0135': 'j', - '\u01F0': 'j', - '\u0249': 'j', - '\u24DA': 'k', - '\uFF4B': 'k', - '\u1E31': 'k', - '\u01E9': 'k', - '\u1E33': 'k', - '\u0137': 'k', - '\u1E35': 'k', - '\u0199': 'k', - '\u2C6A': 'k', - '\uA741': 'k', - '\uA743': 'k', - '\uA745': 'k', - '\uA7A3': 'k', - '\u24DB': 'l', - '\uFF4C': 'l', - '\u0140': 'l', - '\u013A': 'l', - '\u013E': 'l', - '\u1E37': 'l', - '\u1E39': 'l', - '\u013C': 'l', - '\u1E3D': 'l', - '\u1E3B': 'l', - '\u017F': 'l', - '\u0142': 'l', - '\u019A': 'l', - '\u026B': 'l', - '\u2C61': 'l', - '\uA749': 'l', - '\uA781': 'l', - '\uA747': 'l', - '\u01C9': 'lj', - '\u24DC': 'm', - '\uFF4D': 'm', - '\u1E3F': 'm', - '\u1E41': 'm', - '\u1E43': 'm', - '\u0271': 'm', - '\u026F': 'm', - '\u24DD': 'n', - '\uFF4E': 'n', - '\u01F9': 'n', - '\u0144': 'n', - '\u00F1': 'n', - '\u1E45': 'n', - '\u0148': 'n', - '\u1E47': 'n', - '\u0146': 'n', - '\u1E4B': 'n', - '\u1E49': 'n', - '\u019E': 'n', - '\u0272': 'n', - '\u0149': 'n', - '\uA791': 'n', - '\uA7A5': 'n', - '\u01CC': 'nj', - '\u24DE': 'o', - '\uFF4F': 'o', - '\u00F2': 'o', - '\u00F3': 'o', - '\u00F4': 'o', - '\u1ED3': 'o', - '\u1ED1': 'o', - '\u1ED7': 'o', - '\u1ED5': 'o', - '\u00F5': 'o', - '\u1E4D': 'o', - '\u022D': 'o', - '\u1E4F': 'o', - '\u014D': 'o', - '\u1E51': 'o', - '\u1E53': 'o', - '\u014F': 'o', - '\u022F': 'o', - '\u0231': 'o', - '\u00F6': 'o', - '\u022B': 'o', - '\u1ECF': 'o', - '\u0151': 'o', - '\u01D2': 'o', - '\u020D': 'o', - '\u020F': 'o', - '\u01A1': 'o', - '\u1EDD': 'o', - '\u1EDB': 'o', - '\u1EE1': 'o', - '\u1EDF': 'o', - '\u1EE3': 'o', - '\u1ECD': 'o', - '\u1ED9': 'o', - '\u01EB': 'o', - '\u01ED': 'o', - '\u00F8': 'o', - '\u01FF': 'o', - '\u0254': 'o', - '\uA74B': 'o', - '\uA74D': 'o', - '\u0275': 'o', - '\u0153': 'oe', - '\u01A3': 'oi', - '\u0223': 'ou', - '\uA74F': 'oo', - '\u24DF': 'p', - '\uFF50': 'p', - '\u1E55': 'p', - '\u1E57': 'p', - '\u01A5': 'p', - '\u1D7D': 'p', - '\uA751': 'p', - '\uA753': 'p', - '\uA755': 'p', - '\u24E0': 'q', - '\uFF51': 'q', - '\u024B': 'q', - '\uA757': 'q', - '\uA759': 'q', - '\u24E1': 'r', - '\uFF52': 'r', - '\u0155': 'r', - '\u1E59': 'r', - '\u0159': 'r', - '\u0211': 'r', - '\u0213': 'r', - '\u1E5B': 'r', - '\u1E5D': 'r', - '\u0157': 'r', - '\u1E5F': 'r', - '\u024D': 'r', - '\u027D': 'r', - '\uA75B': 'r', - '\uA7A7': 'r', - '\uA783': 'r', - '\u24E2': 's', - '\uFF53': 's', - '\u00DF': 's', - '\u015B': 's', - '\u1E65': 's', - '\u015D': 's', - '\u1E61': 's', - '\u0161': 's', - '\u1E67': 's', - '\u1E63': 's', - '\u1E69': 's', - '\u0219': 's', - '\u015F': 's', - '\u023F': 's', - '\uA7A9': 's', - '\uA785': 's', - '\u1E9B': 's', - '\u24E3': 't', - '\uFF54': 't', - '\u1E6B': 't', - '\u1E97': 't', - '\u0165': 't', - '\u1E6D': 't', - '\u021B': 't', - '\u0163': 't', - '\u1E71': 't', - '\u1E6F': 't', - '\u0167': 't', - '\u01AD': 't', - '\u0288': 't', - '\u2C66': 't', - '\uA787': 't', - '\uA729': 'tz', - '\u24E4': 'u', - '\uFF55': 'u', - '\u00F9': 'u', - '\u00FA': 'u', - '\u00FB': 'u', - '\u0169': 'u', - '\u1E79': 'u', - '\u016B': 'u', - '\u1E7B': 'u', - '\u016D': 'u', - '\u00FC': 'u', - '\u01DC': 'u', - '\u01D8': 'u', - '\u01D6': 'u', - '\u01DA': 'u', - '\u1EE7': 'u', - '\u016F': 'u', - '\u0171': 'u', - '\u01D4': 'u', - '\u0215': 'u', - '\u0217': 'u', - '\u01B0': 'u', - '\u1EEB': 'u', - '\u1EE9': 'u', - '\u1EEF': 'u', - '\u1EED': 'u', - '\u1EF1': 'u', - '\u1EE5': 'u', - '\u1E73': 'u', - '\u0173': 'u', - '\u1E77': 'u', - '\u1E75': 'u', - '\u0289': 'u', - '\u24E5': 'v', - '\uFF56': 'v', - '\u1E7D': 'v', - '\u1E7F': 'v', - '\u028B': 'v', - '\uA75F': 'v', - '\u028C': 'v', - '\uA761': 'vy', - '\u24E6': 'w', - '\uFF57': 'w', - '\u1E81': 'w', - '\u1E83': 'w', - '\u0175': 'w', - '\u1E87': 'w', - '\u1E85': 'w', - '\u1E98': 'w', - '\u1E89': 'w', - '\u2C73': 'w', - '\u24E7': 'x', - '\uFF58': 'x', - '\u1E8B': 'x', - '\u1E8D': 'x', - '\u24E8': 'y', - '\uFF59': 'y', - '\u1EF3': 'y', - '\u00FD': 'y', - '\u0177': 'y', - '\u1EF9': 'y', - '\u0233': 'y', - '\u1E8F': 'y', - '\u00FF': 'y', - '\u1EF7': 'y', - '\u1E99': 'y', - '\u1EF5': 'y', - '\u01B4': 'y', - '\u024F': 'y', - '\u1EFF': 'y', - '\u24E9': 'z', - '\uFF5A': 'z', - '\u017A': 'z', - '\u1E91': 'z', - '\u017C': 'z', - '\u017E': 'z', - '\u1E93': 'z', - '\u1E95': 'z', - '\u01B6': 'z', - '\u0225': 'z', - '\u0240': 'z', - '\u2C6C': 'z', - '\uA763': 'z', - '\u0386': '\u0391', - '\u0388': '\u0395', - '\u0389': '\u0397', - '\u038A': '\u0399', - '\u03AA': '\u0399', - '\u038C': '\u039F', - '\u038E': '\u03A5', - '\u03AB': '\u03A5', - '\u038F': '\u03A9', - '\u03AC': '\u03B1', - '\u03AD': '\u03B5', - '\u03AE': '\u03B7', - '\u03AF': '\u03B9', - '\u03CA': '\u03B9', - '\u0390': '\u03B9', - '\u03CC': '\u03BF', - '\u03CD': '\u03C5', - '\u03CB': '\u03C5', - '\u03B0': '\u03C5', - '\u03CE': '\u03C9', - '\u03C2': '\u03C3', - '\u2019': '\'' - }; - - return diacritics; -}); - -S2.define('select2/data/base',[ - '../utils' -], function (Utils) { - function BaseAdapter ($element, options) { - BaseAdapter.__super__.constructor.call(this); - } - - Utils.Extend(BaseAdapter, Utils.Observable); - - BaseAdapter.prototype.current = function (callback) { - throw new Error('The `current` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.query = function (params, callback) { - throw new Error('The `query` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.bind = function (container, $container) { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.destroy = function () { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.generateResultId = function (container, data) { - var id = container.id + '-result-'; - - id += Utils.generateChars(4); - - if (data.id != null) { - id += '-' + data.id.toString(); - } else { - id += '-' + Utils.generateChars(4); - } - return id; - }; - - return BaseAdapter; -}); - -S2.define('select2/data/select',[ - './base', - '../utils', - 'jquery' -], function (BaseAdapter, Utils, $) { - function SelectAdapter ($element, options) { - this.$element = $element; - this.options = options; - - SelectAdapter.__super__.constructor.call(this); - } - - Utils.Extend(SelectAdapter, BaseAdapter); - - SelectAdapter.prototype.current = function (callback) { - var self = this; - - var data = Array.prototype.map.call( - this.$element[0].querySelectorAll(':checked'), - function (selectedElement) { - return self.item($(selectedElement)); - } - ); - - callback(data); - }; - - SelectAdapter.prototype.select = function (data) { - var self = this; - - data.selected = true; - - // If data.element is a DOM node, use it instead - if ( - data.element != null && data.element.tagName.toLowerCase() === 'option' - ) { - data.element.selected = true; - - this.$element.trigger('input').trigger('change'); - - return; - } - - if (this.$element.prop('multiple')) { - this.current(function (currentData) { - var val = []; - - data = [data]; - data.push.apply(data, currentData); - - for (var d = 0; d < data.length; d++) { - var id = data[d].id; - - if (val.indexOf(id) === -1) { - val.push(id); - } - } - - self.$element.val(val); - self.$element.trigger('input').trigger('change'); - }); - } else { - var val = data.id; - - this.$element.val(val); - this.$element.trigger('input').trigger('change'); - } - }; - - SelectAdapter.prototype.unselect = function (data) { - var self = this; - - if (!this.$element.prop('multiple')) { - return; - } - - data.selected = false; - - if ( - data.element != null && - data.element.tagName.toLowerCase() === 'option' - ) { - data.element.selected = false; - - this.$element.trigger('input').trigger('change'); - - return; - } - - this.current(function (currentData) { - var val = []; - - for (var d = 0; d < currentData.length; d++) { - var id = currentData[d].id; - - if (id !== data.id && val.indexOf(id) === -1) { - val.push(id); - } - } - - self.$element.val(val); - - self.$element.trigger('input').trigger('change'); - }); - }; - - SelectAdapter.prototype.bind = function (container, $container) { - var self = this; - - this.container = container; - - container.on('select', function (params) { - self.select(params.data); - }); - - container.on('unselect', function (params) { - self.unselect(params.data); - }); - }; - - SelectAdapter.prototype.destroy = function () { - // Remove anything added to child elements - this.$element.find('*').each(function () { - // Remove any custom data set by Select2 - Utils.RemoveData(this); - }); - }; - - SelectAdapter.prototype.query = function (params, callback) { - var data = []; - var self = this; - - var $options = this.$element.children(); - - $options.each(function () { - if ( - this.tagName.toLowerCase() !== 'option' && - this.tagName.toLowerCase() !== 'optgroup' - ) { - return; - } - - var $option = $(this); - - var option = self.item($option); - - var matches = self.matches(params, option); - - if (matches !== null) { - data.push(matches); - } - }); - - callback({ - results: data - }); - }; - - SelectAdapter.prototype.addOptions = function ($options) { - this.$element.append($options); - }; - - SelectAdapter.prototype.option = function (data) { - var option; - - if (data.children) { - option = document.createElement('optgroup'); - option.label = data.text; - } else { - option = document.createElement('option'); - - if (option.textContent !== undefined) { - option.textContent = data.text; - } else { - option.innerText = data.text; - } - } - - if (data.id !== undefined) { - option.value = data.id; - } - - if (data.disabled) { - option.disabled = true; - } - - if (data.selected) { - option.selected = true; - } - - if (data.title) { - option.title = data.title; - } - - var normalizedData = this._normalizeItem(data); - normalizedData.element = option; - - // Override the option's data with the combined data - Utils.StoreData(option, 'data', normalizedData); - - return $(option); - }; - - SelectAdapter.prototype.item = function ($option) { - var data = {}; - - data = Utils.GetData($option[0], 'data'); - - if (data != null) { - return data; - } - - var option = $option[0]; - - if (option.tagName.toLowerCase() === 'option') { - data = { - id: $option.val(), - text: $option.text(), - disabled: $option.prop('disabled'), - selected: $option.prop('selected'), - title: $option.prop('title') - }; - } else if (option.tagName.toLowerCase() === 'optgroup') { - data = { - text: $option.prop('label'), - children: [], - title: $option.prop('title') - }; - - var $children = $option.children('option'); - var children = []; - - for (var c = 0; c < $children.length; c++) { - var $child = $($children[c]); - - var child = this.item($child); - - children.push(child); - } - - data.children = children; - } - - data = this._normalizeItem(data); - data.element = $option[0]; - - Utils.StoreData($option[0], 'data', data); - - return data; - }; - - SelectAdapter.prototype._normalizeItem = function (item) { - if (item !== Object(item)) { - item = { - id: item, - text: item - }; - } - - item = $.extend({}, { - text: '' - }, item); - - var defaults = { - selected: false, - disabled: false - }; - - if (item.id != null) { - item.id = item.id.toString(); - } - - if (item.text != null) { - item.text = item.text.toString(); - } - - if (item._resultId == null && item.id && this.container != null) { - item._resultId = this.generateResultId(this.container, item); - } - - return $.extend({}, defaults, item); - }; - - SelectAdapter.prototype.matches = function (params, data) { - var matcher = this.options.get('matcher'); - - return matcher(params, data); - }; - - return SelectAdapter; -}); - -S2.define('select2/data/array',[ - './select', - '../utils', - 'jquery' -], function (SelectAdapter, Utils, $) { - function ArrayAdapter ($element, options) { - this._dataToConvert = options.get('data') || []; - - ArrayAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(ArrayAdapter, SelectAdapter); - - ArrayAdapter.prototype.bind = function (container, $container) { - ArrayAdapter.__super__.bind.call(this, container, $container); - - this.addOptions(this.convertToOptions(this._dataToConvert)); - }; - - ArrayAdapter.prototype.select = function (data) { - var $option = this.$element.find('option').filter(function (i, elm) { - return elm.value == data.id.toString(); - }); - - if ($option.length === 0) { - $option = this.option(data); - - this.addOptions($option); - } - - ArrayAdapter.__super__.select.call(this, data); - }; - - ArrayAdapter.prototype.convertToOptions = function (data) { - var self = this; - - var $existing = this.$element.find('option'); - var existingIds = $existing.map(function () { - return self.item($(this)).id; - }).get(); - - var $options = []; - - // Filter out all items except for the one passed in the argument - function onlyItem (item) { - return function () { - return $(this).val() == item.id; - }; - } - - for (var d = 0; d < data.length; d++) { - var item = this._normalizeItem(data[d]); - - // Skip items which were pre-loaded, only merge the data - if (existingIds.indexOf(item.id) >= 0) { - var $existingOption = $existing.filter(onlyItem(item)); - - var existingData = this.item($existingOption); - var newData = $.extend(true, {}, item, existingData); - - var $newOption = this.option(newData); - - $existingOption.replaceWith($newOption); - - continue; - } - - var $option = this.option(item); - - if (item.children) { - var $children = this.convertToOptions(item.children); - - $option.append($children); - } - - $options.push($option); - } - - return $options; - }; - - return ArrayAdapter; -}); - -S2.define('select2/data/ajax',[ - './array', - '../utils', - 'jquery' -], function (ArrayAdapter, Utils, $) { - function AjaxAdapter ($element, options) { - this.ajaxOptions = this._applyDefaults(options.get('ajax')); - - if (this.ajaxOptions.processResults != null) { - this.processResults = this.ajaxOptions.processResults; - } - - AjaxAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(AjaxAdapter, ArrayAdapter); - - AjaxAdapter.prototype._applyDefaults = function (options) { - var defaults = { - data: function (params) { - return $.extend({}, params, { - q: params.term - }); - }, - transport: function (params, success, failure) { - var $request = $.ajax(params); - - $request.then(success); - $request.fail(failure); - - return $request; - } - }; - - return $.extend({}, defaults, options, true); - }; - - AjaxAdapter.prototype.processResults = function (results) { - return results; - }; - - AjaxAdapter.prototype.query = function (params, callback) { - var matches = []; - var self = this; - - if (this._request != null) { - // JSONP requests cannot always be aborted - if (typeof this._request.abort === 'function') { - this._request.abort(); - } - - this._request = null; - } - - var options = $.extend({ - type: 'GET' - }, this.ajaxOptions); - - if (typeof options.url === 'function') { - options.url = options.url.call(this.$element, params); - } - - if (typeof options.data === 'function') { - options.data = options.data.call(this.$element, params); - } - - function request () { - var $request = options.transport(options, function (data) { - var results = self.processResults(data, params); - - if (self.options.get('debug') && window.console && console.error) { - // Check to make sure that the response included a `results` key. - if (!results || !results.results || !Array.isArray(results.results)) { - console.error( - 'Select2: The AJAX results did not return an array in the ' + - '`results` key of the response.' - ); - } - } - - callback(results); - }, function () { - // Attempt to detect if a request was aborted - // Only works if the transport exposes a status property - if ('status' in $request && - ($request.status === 0 || $request.status === '0')) { - return; - } - - self.trigger('results:message', { - message: 'errorLoading' - }); - }); - - self._request = $request; - } - - if (this.ajaxOptions.delay && params.term != null) { - if (this._queryTimeout) { - window.clearTimeout(this._queryTimeout); - } - - this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); - } else { - request(); - } - }; - - return AjaxAdapter; -}); - -S2.define('select2/data/tags',[ - 'jquery' -], function ($) { - function Tags (decorated, $element, options) { - var tags = options.get('tags'); - - var createTag = options.get('createTag'); - - if (createTag !== undefined) { - this.createTag = createTag; - } - - var insertTag = options.get('insertTag'); - - if (insertTag !== undefined) { - this.insertTag = insertTag; - } - - decorated.call(this, $element, options); - - if (Array.isArray(tags)) { - for (var t = 0; t < tags.length; t++) { - var tag = tags[t]; - var item = this._normalizeItem(tag); - - var $option = this.option(item); - - this.$element.append($option); - } - } - } - - Tags.prototype.query = function (decorated, params, callback) { - var self = this; - - this._removeOldTags(); - - if (params.term == null || params.page != null) { - decorated.call(this, params, callback); - return; - } - - function wrapper (obj, child) { - var data = obj.results; - - for (var i = 0; i < data.length; i++) { - var option = data[i]; - - var checkChildren = ( - option.children != null && - !wrapper({ - results: option.children - }, true) - ); - - var optionText = (option.text || '').toUpperCase(); - var paramsTerm = (params.term || '').toUpperCase(); - - var checkText = optionText === paramsTerm; - - if (checkText || checkChildren) { - if (child) { - return false; - } - - obj.data = data; - callback(obj); - - return; - } - } - - if (child) { - return true; - } - - var tag = self.createTag(params); - - if (tag != null) { - var $option = self.option(tag); - $option.attr('data-select2-tag', 'true'); - - self.addOptions([$option]); - - self.insertTag(data, tag); - } - - obj.results = data; - - callback(obj); - } - - decorated.call(this, params, wrapper); - }; - - Tags.prototype.createTag = function (decorated, params) { - if (params.term == null) { - return null; - } - - var term = params.term.trim(); - - if (term === '') { - return null; - } - - return { - id: term, - text: term - }; - }; - - Tags.prototype.insertTag = function (_, data, tag) { - data.unshift(tag); - }; - - Tags.prototype._removeOldTags = function (_) { - var $options = this.$element.find('option[data-select2-tag]'); - - $options.each(function () { - if (this.selected) { - return; - } - - $(this).remove(); - }); - }; - - return Tags; -}); - -S2.define('select2/data/tokenizer',[ - 'jquery' -], function ($) { - function Tokenizer (decorated, $element, options) { - var tokenizer = options.get('tokenizer'); - - if (tokenizer !== undefined) { - this.tokenizer = tokenizer; - } - - decorated.call(this, $element, options); - } - - Tokenizer.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - this.$search = container.dropdown.$search || container.selection.$search || - $container.find('.select2-search__field'); - }; - - Tokenizer.prototype.query = function (decorated, params, callback) { - var self = this; - - function createAndSelect (data) { - // Normalize the data object so we can use it for checks - var item = self._normalizeItem(data); - - // Check if the data object already exists as a tag - // Select it if it doesn't - var $existingOptions = self.$element.find('option').filter(function () { - return $(this).val() === item.id; - }); - - // If an existing option wasn't found for it, create the option - if (!$existingOptions.length) { - var $option = self.option(item); - $option.attr('data-select2-tag', true); - - self._removeOldTags(); - self.addOptions([$option]); - } - - // Select the item, now that we know there is an option for it - select(item); - } - - function select (data) { - self.trigger('select', { - data: data - }); - } - - params.term = params.term || ''; - - var tokenData = this.tokenizer(params, this.options, createAndSelect); - - if (tokenData.term !== params.term) { - // Replace the search term if we have the search box - if (this.$search.length) { - this.$search.val(tokenData.term); - this.$search.trigger('focus'); - } - - params.term = tokenData.term; - } - - decorated.call(this, params, callback); - }; - - Tokenizer.prototype.tokenizer = function (_, params, options, callback) { - var separators = options.get('tokenSeparators') || []; - var term = params.term; - var i = 0; - - var createTag = this.createTag || function (params) { - return { - id: params.term, - text: params.term - }; - }; - - while (i < term.length) { - var termChar = term[i]; - - if (separators.indexOf(termChar) === -1) { - i++; - - continue; - } - - var part = term.substr(0, i); - var partParams = $.extend({}, params, { - term: part - }); - - var data = createTag(partParams); - - if (data == null) { - i++; - continue; - } - - callback(data); - - // Reset the term to not include the tokenized portion - term = term.substr(i + 1) || ''; - i = 0; - } - - return { - term: term - }; - }; - - return Tokenizer; -}); - -S2.define('select2/data/minimumInputLength',[ - -], function () { - function MinimumInputLength (decorated, $e, options) { - this.minimumInputLength = options.get('minimumInputLength'); - - decorated.call(this, $e, options); - } - - MinimumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (params.term.length < this.minimumInputLength) { - this.trigger('results:message', { - message: 'inputTooShort', - args: { - minimum: this.minimumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MinimumInputLength; -}); - -S2.define('select2/data/maximumInputLength',[ - -], function () { - function MaximumInputLength (decorated, $e, options) { - this.maximumInputLength = options.get('maximumInputLength'); - - decorated.call(this, $e, options); - } - - MaximumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (this.maximumInputLength > 0 && - params.term.length > this.maximumInputLength) { - this.trigger('results:message', { - message: 'inputTooLong', - args: { - maximum: this.maximumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MaximumInputLength; -}); - -S2.define('select2/data/maximumSelectionLength',[ - -], function (){ - function MaximumSelectionLength (decorated, $e, options) { - this.maximumSelectionLength = options.get('maximumSelectionLength'); - - decorated.call(this, $e, options); - } - - MaximumSelectionLength.prototype.bind = - function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('select', function () { - self._checkIfMaximumSelected(); - }); - }; - - MaximumSelectionLength.prototype.query = - function (decorated, params, callback) { - var self = this; - - this._checkIfMaximumSelected(function () { - decorated.call(self, params, callback); - }); - }; - - MaximumSelectionLength.prototype._checkIfMaximumSelected = - function (_, successCallback) { - var self = this; - - this.current(function (currentData) { - var count = currentData != null ? currentData.length : 0; - if (self.maximumSelectionLength > 0 && - count >= self.maximumSelectionLength) { - self.trigger('results:message', { - message: 'maximumSelected', - args: { - maximum: self.maximumSelectionLength - } - }); - return; - } - - if (successCallback) { - successCallback(); - } - }); - }; - - return MaximumSelectionLength; -}); - -S2.define('select2/dropdown',[ - 'jquery', - './utils' -], function ($, Utils) { - function Dropdown ($element, options) { - this.$element = $element; - this.options = options; - - Dropdown.__super__.constructor.call(this); - } - - Utils.Extend(Dropdown, Utils.Observable); - - Dropdown.prototype.render = function () { - var $dropdown = $( - '' + - '' + - '' - ); - - $dropdown.attr('dir', this.options.get('dir')); - - this.$dropdown = $dropdown; - - return $dropdown; - }; - - Dropdown.prototype.bind = function () { - // Should be implemented in subclasses - }; - - Dropdown.prototype.position = function ($dropdown, $container) { - // Should be implemented in subclasses - }; - - Dropdown.prototype.destroy = function () { - // Remove the dropdown from the DOM - this.$dropdown.remove(); - }; - - return Dropdown; -}); - -S2.define('select2/dropdown/search',[ - 'jquery' -], function ($) { - function Search () { } - - Search.prototype.render = function (decorated) { - var $rendered = decorated.call(this); - var searchLabel = this.options.get('translations').get('search'); - - var $search = $( - '' + - '' + - '' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - this.$search.prop('autocomplete', this.options.get('autocomplete')); - this.$search.attr('aria-label', searchLabel()); - - $rendered.prepend($search); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - var resultsId = container.id + '-results'; - - decorated.call(this, container, $container); - - this.$search.on('keydown', function (evt) { - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - }); - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$search.on('input', function (evt) { - // Unbind the duplicated `keyup` event - $(this).off('keyup'); - }); - - this.$search.on('keyup input', function (evt) { - self.handleSearch(evt); - }); - - container.on('open', function () { - self.$search.attr('tabindex', 0); - self.$search.attr('aria-controls', resultsId); - - self.$search.trigger('focus'); - - window.setTimeout(function () { - self.$search.trigger('focus'); - }, 0); - }); - - container.on('close', function () { - self.$search.attr('tabindex', -1); - self.$search.removeAttr('aria-controls'); - self.$search.removeAttr('aria-activedescendant'); - - self.$search.val(''); - self.$search.trigger('blur'); - }); - - container.on('focus', function () { - if (!container.isOpen()) { - self.$search.trigger('focus'); - } - }); - - container.on('results:all', function (params) { - if (params.query.term == null || params.query.term === '') { - var showSearch = self.showSearch(params); - - if (showSearch) { - self.$searchContainer[0].classList.remove('select2-search--hide'); - } else { - self.$searchContainer[0].classList.add('select2-search--hide'); - } - } - }); - - container.on('results:focus', function (params) { - if (params.data._resultId) { - self.$search.attr('aria-activedescendant', params.data._resultId); - } else { - self.$search.removeAttr('aria-activedescendant'); - } - }); - }; - - Search.prototype.handleSearch = function (evt) { - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.showSearch = function (_, params) { - return true; - }; - - return Search; -}); - -S2.define('select2/dropdown/hidePlaceholder',[ - -], function () { - function HidePlaceholder (decorated, $element, options, dataAdapter) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options, dataAdapter); - } - - HidePlaceholder.prototype.append = function (decorated, data) { - data.results = this.removePlaceholder(data.results); - - decorated.call(this, data); - }; - - HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - HidePlaceholder.prototype.removePlaceholder = function (_, data) { - var modifiedData = data.slice(0); - - for (var d = data.length - 1; d >= 0; d--) { - var item = data[d]; - - if (this.placeholder.id === item.id) { - modifiedData.splice(d, 1); - } - } - - return modifiedData; - }; - - return HidePlaceholder; -}); - -S2.define('select2/dropdown/infiniteScroll',[ - 'jquery' -], function ($) { - function InfiniteScroll (decorated, $element, options, dataAdapter) { - this.lastParams = {}; - - decorated.call(this, $element, options, dataAdapter); - - this.$loadingMore = this.createLoadingMore(); - this.loading = false; - } - - InfiniteScroll.prototype.append = function (decorated, data) { - this.$loadingMore.remove(); - this.loading = false; - - decorated.call(this, data); - - if (this.showLoadingMore(data)) { - this.$results.append(this.$loadingMore); - this.loadMoreIfNeeded(); - } - }; - - InfiniteScroll.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('query', function (params) { - self.lastParams = params; - self.loading = true; - }); - - container.on('query:append', function (params) { - self.lastParams = params; - self.loading = true; - }); - - this.$results.on('scroll', this.loadMoreIfNeeded.bind(this)); - }; - - InfiniteScroll.prototype.loadMoreIfNeeded = function () { - var isLoadMoreVisible = $.contains( - document.documentElement, - this.$loadingMore[0] - ); - - if (this.loading || !isLoadMoreVisible) { - return; - } - - var currentOffset = this.$results.offset().top + - this.$results.outerHeight(false); - var loadingMoreOffset = this.$loadingMore.offset().top + - this.$loadingMore.outerHeight(false); - - if (currentOffset + 50 >= loadingMoreOffset) { - this.loadMore(); - } - }; - - InfiniteScroll.prototype.loadMore = function () { - this.loading = true; - - var params = $.extend({}, {page: 1}, this.lastParams); - - params.page++; - - this.trigger('query:append', params); - }; - - InfiniteScroll.prototype.showLoadingMore = function (_, data) { - return data.pagination && data.pagination.more; - }; - - InfiniteScroll.prototype.createLoadingMore = function () { - var $option = $( - '
        • ' - ); - - var message = this.options.get('translations').get('loadingMore'); - - $option.html(message(this.lastParams)); - - return $option; - }; - - return InfiniteScroll; -}); - -S2.define('select2/dropdown/attachBody',[ - 'jquery', - '../utils' -], function ($, Utils) { - function AttachBody (decorated, $element, options) { - this.$dropdownParent = $(options.get('dropdownParent') || document.body); - - decorated.call(this, $element, options); - } - - AttachBody.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('open', function () { - self._showDropdown(); - self._attachPositioningHandler(container); - - // Must bind after the results handlers to ensure correct sizing - self._bindContainerResultHandlers(container); - }); - - container.on('close', function () { - self._hideDropdown(); - self._detachPositioningHandler(container); - }); - - this.$dropdownContainer.on('mousedown', function (evt) { - evt.stopPropagation(); - }); - }; - - AttachBody.prototype.destroy = function (decorated) { - decorated.call(this); - - this.$dropdownContainer.remove(); - }; - - AttachBody.prototype.position = function (decorated, $dropdown, $container) { - // Clone all of the container classes - $dropdown.attr('class', $container.attr('class')); - - $dropdown[0].classList.remove('select2'); - $dropdown[0].classList.add('select2-container--open'); - - $dropdown.css({ - position: 'absolute', - top: -999999 - }); - - this.$container = $container; - }; - - AttachBody.prototype.render = function (decorated) { - var $container = $(''); - - var $dropdown = decorated.call(this); - $container.append($dropdown); - - this.$dropdownContainer = $container; - - return $container; - }; - - AttachBody.prototype._hideDropdown = function (decorated) { - this.$dropdownContainer.detach(); - }; - - AttachBody.prototype._bindContainerResultHandlers = - function (decorated, container) { - - // These should only be bound once - if (this._containerResultsHandlersBound) { - return; - } - - var self = this; - - container.on('results:all', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('results:append', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('results:message', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('select', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('unselect', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - this._containerResultsHandlersBound = true; - }; - - AttachBody.prototype._attachPositioningHandler = - function (decorated, container) { - var self = this; - - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.each(function () { - Utils.StoreData(this, 'select2-scroll-position', { - x: $(this).scrollLeft(), - y: $(this).scrollTop() - }); - }); - - $watchers.on(scrollEvent, function (ev) { - var position = Utils.GetData(this, 'select2-scroll-position'); - $(this).scrollTop(position.y); - }); - - $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, - function (e) { - self._positionDropdown(); - self._resizeDropdown(); - }); - }; - - AttachBody.prototype._detachPositioningHandler = - function (decorated, container) { - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.off(scrollEvent); - - $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); - }; - - AttachBody.prototype._positionDropdown = function () { - var $window = $(window); - - var isCurrentlyAbove = this.$dropdown[0].classList - .contains('select2-dropdown--above'); - var isCurrentlyBelow = this.$dropdown[0].classList - .contains('select2-dropdown--below'); - - var newDirection = null; - - var offset = this.$container.offset(); - - offset.bottom = offset.top + this.$container.outerHeight(false); - - var container = { - height: this.$container.outerHeight(false) - }; - - container.top = offset.top; - container.bottom = offset.top + container.height; - - var dropdown = { - height: this.$dropdown.outerHeight(false) - }; - - var viewport = { - top: $window.scrollTop(), - bottom: $window.scrollTop() + $window.height() - }; - - var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); - var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); - - var css = { - left: offset.left, - top: container.bottom - }; - - // Determine what the parent element is to use for calculating the offset - var $offsetParent = this.$dropdownParent; - - // For statically positioned elements, we need to get the element - // that is determining the offset - if ($offsetParent.css('position') === 'static') { - $offsetParent = $offsetParent.offsetParent(); - } - - var parentOffset = { - top: 0, - left: 0 - }; - - if ( - $.contains(document.body, $offsetParent[0]) || - $offsetParent[0].isConnected - ) { - parentOffset = $offsetParent.offset(); - } - - css.top -= parentOffset.top; - css.left -= parentOffset.left; - - if (!isCurrentlyAbove && !isCurrentlyBelow) { - newDirection = 'below'; - } - - if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { - newDirection = 'above'; - } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { - newDirection = 'below'; - } - - if (newDirection == 'above' || - (isCurrentlyAbove && newDirection !== 'below')) { - css.top = container.top - parentOffset.top - dropdown.height; - } - - if (newDirection != null) { - this.$dropdown[0].classList.remove('select2-dropdown--below'); - this.$dropdown[0].classList.remove('select2-dropdown--above'); - this.$dropdown[0].classList.add('select2-dropdown--' + newDirection); - - this.$container[0].classList.remove('select2-container--below'); - this.$container[0].classList.remove('select2-container--above'); - this.$container[0].classList.add('select2-container--' + newDirection); - } - - this.$dropdownContainer.css(css); - }; - - AttachBody.prototype._resizeDropdown = function () { - var css = { - width: this.$container.outerWidth(false) + 'px' - }; - - if (this.options.get('dropdownAutoWidth')) { - css.minWidth = css.width; - css.position = 'relative'; - css.width = 'auto'; - } - - this.$dropdown.css(css); - }; - - AttachBody.prototype._showDropdown = function (decorated) { - this.$dropdownContainer.appendTo(this.$dropdownParent); - - this._positionDropdown(); - this._resizeDropdown(); - }; - - return AttachBody; -}); - -S2.define('select2/dropdown/minimumResultsForSearch',[ - -], function () { - function countResults (data) { - var count = 0; - - for (var d = 0; d < data.length; d++) { - var item = data[d]; - - if (item.children) { - count += countResults(item.children); - } else { - count++; - } - } - - return count; - } - - function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { - this.minimumResultsForSearch = options.get('minimumResultsForSearch'); - - if (this.minimumResultsForSearch < 0) { - this.minimumResultsForSearch = Infinity; - } - - decorated.call(this, $element, options, dataAdapter); - } - - MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { - if (countResults(params.data.results) < this.minimumResultsForSearch) { - return false; - } - - return decorated.call(this, params); - }; - - return MinimumResultsForSearch; -}); - -S2.define('select2/dropdown/selectOnClose',[ - '../utils' -], function (Utils) { - function SelectOnClose () { } - - SelectOnClose.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('close', function (params) { - self._handleSelectOnClose(params); - }); - }; - - SelectOnClose.prototype._handleSelectOnClose = function (_, params) { - if (params && params.originalSelect2Event != null) { - var event = params.originalSelect2Event; - - // Don't select an item if the close event was triggered from a select or - // unselect event - if (event._type === 'select' || event._type === 'unselect') { - return; - } - } - - var $highlightedResults = this.getHighlightedResults(); - - // Only select highlighted results - if ($highlightedResults.length < 1) { - return; - } - - var data = Utils.GetData($highlightedResults[0], 'data'); - - // Don't re-select already selected resulte - if ( - (data.element != null && data.element.selected) || - (data.element == null && data.selected) - ) { - return; - } - - this.trigger('select', { - data: data - }); - }; - - return SelectOnClose; -}); - -S2.define('select2/dropdown/closeOnSelect',[ - -], function () { - function CloseOnSelect () { } - - CloseOnSelect.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('select', function (evt) { - self._selectTriggered(evt); - }); - - container.on('unselect', function (evt) { - self._selectTriggered(evt); - }); - }; - - CloseOnSelect.prototype._selectTriggered = function (_, evt) { - var originalEvent = evt.originalEvent; - - // Don't close if the control key is being held - if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) { - return; - } - - this.trigger('close', { - originalEvent: originalEvent, - originalSelect2Event: evt - }); - }; - - return CloseOnSelect; -}); - -S2.define('select2/dropdown/dropdownCss',[ - '../utils' -], function (Utils) { - function DropdownCSS () { } - - DropdownCSS.prototype.render = function (decorated) { - var $dropdown = decorated.call(this); - - var dropdownCssClass = this.options.get('dropdownCssClass') || ''; - - if (dropdownCssClass.indexOf(':all:') !== -1) { - dropdownCssClass = dropdownCssClass.replace(':all:', ''); - - Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]); - } - - $dropdown.addClass(dropdownCssClass); - - return $dropdown; - }; - - return DropdownCSS; -}); - -S2.define('select2/dropdown/tagsSearchHighlight',[ - '../utils' -], function (Utils) { - function TagsSearchHighlight () { } - - TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) { - var $options = this.$results - .find( - '.select2-results__option--selectable' + - ':not(.select2-results__option--selected)' - ); - - if ($options.length > 0) { - var $firstOption = $options.first(); - var data = Utils.GetData($firstOption[0], 'data'); - var firstElement = data.element; - - if (firstElement && firstElement.getAttribute) { - if (firstElement.getAttribute('data-select2-tag') === 'true') { - $firstOption.trigger('mouseenter'); - - return; - } - } - } - - decorated.call(this); - }; - - return TagsSearchHighlight; -}); - -S2.define('select2/i18n/en',[],function () { - // English - return { - errorLoading: function () { - return 'The results could not be loaded.'; - }, - inputTooLong: function (args) { - var overChars = args.input.length - args.maximum; - - var message = 'Please delete ' + overChars + ' character'; - - if (overChars != 1) { - message += 's'; - } - - return message; - }, - inputTooShort: function (args) { - var remainingChars = args.minimum - args.input.length; - - var message = 'Please enter ' + remainingChars + ' or more characters'; - - return message; - }, - loadingMore: function () { - return 'Loading more results…'; - }, - maximumSelected: function (args) { - var message = 'You can only select ' + args.maximum + ' item'; - - if (args.maximum != 1) { - message += 's'; - } - - return message; - }, - noResults: function () { - return 'No results found'; - }, - searching: function () { - return 'Searching…'; - }, - removeAllItems: function () { - return 'Remove all items'; - }, - removeItem: function () { - return 'Remove item'; - }, - search: function() { - return 'Search'; - } - }; -}); - -S2.define('select2/defaults',[ - 'jquery', - - './results', - - './selection/single', - './selection/multiple', - './selection/placeholder', - './selection/allowClear', - './selection/search', - './selection/selectionCss', - './selection/eventRelay', - - './utils', - './translation', - './diacritics', - - './data/select', - './data/array', - './data/ajax', - './data/tags', - './data/tokenizer', - './data/minimumInputLength', - './data/maximumInputLength', - './data/maximumSelectionLength', - - './dropdown', - './dropdown/search', - './dropdown/hidePlaceholder', - './dropdown/infiniteScroll', - './dropdown/attachBody', - './dropdown/minimumResultsForSearch', - './dropdown/selectOnClose', - './dropdown/closeOnSelect', - './dropdown/dropdownCss', - './dropdown/tagsSearchHighlight', - - './i18n/en' -], function ($, - - ResultsList, - - SingleSelection, MultipleSelection, Placeholder, AllowClear, - SelectionSearch, SelectionCSS, EventRelay, - - Utils, Translation, DIACRITICS, - - SelectData, ArrayData, AjaxData, Tags, Tokenizer, - MinimumInputLength, MaximumInputLength, MaximumSelectionLength, - - Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, - AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, - DropdownCSS, TagsSearchHighlight, - - EnglishTranslation) { - function Defaults () { - this.reset(); - } - - Defaults.prototype.apply = function (options) { - options = $.extend(true, {}, this.defaults, options); - - if (options.dataAdapter == null) { - if (options.ajax != null) { - options.dataAdapter = AjaxData; - } else if (options.data != null) { - options.dataAdapter = ArrayData; - } else { - options.dataAdapter = SelectData; - } - - if (options.minimumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MinimumInputLength - ); - } - - if (options.maximumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumInputLength - ); - } - - if (options.maximumSelectionLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumSelectionLength - ); - } - - if (options.tags) { - options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); - } - - if (options.tokenSeparators != null || options.tokenizer != null) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - Tokenizer - ); - } - } - - if (options.resultsAdapter == null) { - options.resultsAdapter = ResultsList; - - if (options.ajax != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - InfiniteScroll - ); - } - - if (options.placeholder != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - HidePlaceholder - ); - } - - if (options.selectOnClose) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - SelectOnClose - ); - } - - if (options.tags) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - TagsSearchHighlight - ); - } - } - - if (options.dropdownAdapter == null) { - if (options.multiple) { - options.dropdownAdapter = Dropdown; - } else { - var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); - - options.dropdownAdapter = SearchableDropdown; - } - - if (options.minimumResultsForSearch !== 0) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - MinimumResultsForSearch - ); - } - - if (options.closeOnSelect) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - CloseOnSelect - ); - } - - if (options.dropdownCssClass != null) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - DropdownCSS - ); - } - - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - AttachBody - ); - } - - if (options.selectionAdapter == null) { - if (options.multiple) { - options.selectionAdapter = MultipleSelection; - } else { - options.selectionAdapter = SingleSelection; - } - - // Add the placeholder mixin if a placeholder was specified - if (options.placeholder != null) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - Placeholder - ); - } - - if (options.allowClear) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - AllowClear - ); - } - - if (options.multiple) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - SelectionSearch - ); - } - - if (options.selectionCssClass != null) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - SelectionCSS - ); - } - - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - EventRelay - ); - } - - // If the defaults were not previously applied from an element, it is - // possible for the language option to have not been resolved - options.language = this._resolveLanguage(options.language); - - // Always fall back to English since it will always be complete - options.language.push('en'); - - var uniqueLanguages = []; - - for (var l = 0; l < options.language.length; l++) { - var language = options.language[l]; - - if (uniqueLanguages.indexOf(language) === -1) { - uniqueLanguages.push(language); - } - } - - options.language = uniqueLanguages; - - options.translations = this._processTranslations( - options.language, - options.debug - ); - - return options; - }; - - Defaults.prototype.reset = function () { - function stripDiacritics (text) { - // Used 'uni range + named function' from http://jsperf.com/diacritics/18 - function match(a) { - return DIACRITICS[a] || a; - } - - return text.replace(/[^\u0000-\u007E]/g, match); - } - - function matcher (params, data) { - // Always return the object if there is nothing to compare - if (params.term == null || params.term.trim() === '') { - return data; - } - - // Do a recursive check for options with children - if (data.children && data.children.length > 0) { - // Clone the data object if there are children - // This is required as we modify the object to remove any non-matches - var match = $.extend(true, {}, data); - - // Check each child of the option - for (var c = data.children.length - 1; c >= 0; c--) { - var child = data.children[c]; - - var matches = matcher(params, child); - - // If there wasn't a match, remove the object in the array - if (matches == null) { - match.children.splice(c, 1); - } - } - - // If any children matched, return the new object - if (match.children.length > 0) { - return match; - } - - // If there were no matching children, check just the plain object - return matcher(params, match); - } - - var original = stripDiacritics(data.text).toUpperCase(); - var term = stripDiacritics(params.term).toUpperCase(); - - // Check if the text contains the term - if (original.indexOf(term) > -1) { - return data; - } - - // If it doesn't contain the term, don't return anything - return null; - } - - this.defaults = { - amdLanguageBase: './i18n/', - autocomplete: 'off', - closeOnSelect: true, - debug: false, - dropdownAutoWidth: false, - escapeMarkup: Utils.escapeMarkup, - language: {}, - matcher: matcher, - minimumInputLength: 0, - maximumInputLength: 0, - maximumSelectionLength: 0, - minimumResultsForSearch: 0, - selectOnClose: false, - scrollAfterSelect: false, - sorter: function (data) { - return data; - }, - templateResult: function (result) { - return result.text; - }, - templateSelection: function (selection) { - return selection.text; - }, - theme: 'default', - width: 'resolve' - }; - }; - - Defaults.prototype.applyFromElement = function (options, $element) { - var optionLanguage = options.language; - var defaultLanguage = this.defaults.language; - var elementLanguage = $element.prop('lang'); - var parentLanguage = $element.closest('[lang]').prop('lang'); - - var languages = Array.prototype.concat.call( - this._resolveLanguage(elementLanguage), - this._resolveLanguage(optionLanguage), - this._resolveLanguage(defaultLanguage), - this._resolveLanguage(parentLanguage) - ); - - options.language = languages; - - return options; - }; - - Defaults.prototype._resolveLanguage = function (language) { - if (!language) { - return []; - } - - if ($.isEmptyObject(language)) { - return []; - } - - if ($.isPlainObject(language)) { - return [language]; - } - - var languages; - - if (!Array.isArray(language)) { - languages = [language]; - } else { - languages = language; - } - - var resolvedLanguages = []; - - for (var l = 0; l < languages.length; l++) { - resolvedLanguages.push(languages[l]); - - if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) { - // Extract the region information if it is included - var languageParts = languages[l].split('-'); - var baseLanguage = languageParts[0]; - - resolvedLanguages.push(baseLanguage); - } - } - - return resolvedLanguages; - }; - - Defaults.prototype._processTranslations = function (languages, debug) { - var translations = new Translation(); - - for (var l = 0; l < languages.length; l++) { - var languageData = new Translation(); - - var language = languages[l]; - - if (typeof language === 'string') { - try { - // Try to load it with the original name - languageData = Translation.loadPath(language); - } catch (e) { - try { - // If we couldn't load it, check if it wasn't the full path - language = this.defaults.amdLanguageBase + language; - languageData = Translation.loadPath(language); - } catch (ex) { - // The translation could not be loaded at all. Sometimes this is - // because of a configuration problem, other times this can be - // because of how Select2 helps load all possible translation files - if (debug && window.console && console.warn) { - console.warn( - 'Select2: The language file for "' + language + '" could ' + - 'not be automatically loaded. A fallback will be used instead.' - ); - } - } - } - } else if ($.isPlainObject(language)) { - languageData = new Translation(language); - } else { - languageData = language; - } - - translations.extend(languageData); - } - - return translations; - }; - - Defaults.prototype.set = function (key, value) { - var camelKey = $.camelCase(key); - - var data = {}; - data[camelKey] = value; - - var convertedData = Utils._convertData(data); - - $.extend(true, this.defaults, convertedData); - }; - - var defaults = new Defaults(); - - return defaults; -}); - -S2.define('select2/options',[ - 'jquery', - './defaults', - './utils' -], function ($, Defaults, Utils) { - function Options (options, $element) { - this.options = options; - - if ($element != null) { - this.fromElement($element); - } - - if ($element != null) { - this.options = Defaults.applyFromElement(this.options, $element); - } - - this.options = Defaults.apply(this.options); - } - - Options.prototype.fromElement = function ($e) { - var excludedData = ['select2']; - - if (this.options.multiple == null) { - this.options.multiple = $e.prop('multiple'); - } - - if (this.options.disabled == null) { - this.options.disabled = $e.prop('disabled'); - } - - if (this.options.autocomplete == null && $e.prop('autocomplete')) { - this.options.autocomplete = $e.prop('autocomplete'); - } - - if (this.options.dir == null) { - if ($e.prop('dir')) { - this.options.dir = $e.prop('dir'); - } else if ($e.closest('[dir]').prop('dir')) { - this.options.dir = $e.closest('[dir]').prop('dir'); - } else { - this.options.dir = 'ltr'; - } - } - - $e.prop('disabled', this.options.disabled); - $e.prop('multiple', this.options.multiple); - - if (Utils.GetData($e[0], 'select2Tags')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-select2-tags` attribute has been changed to ' + - 'use the `data-data` and `data-tags="true"` attributes and will be ' + - 'removed in future versions of Select2.' - ); - } - - Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags')); - Utils.StoreData($e[0], 'tags', true); - } - - if (Utils.GetData($e[0], 'ajaxUrl')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-ajax-url` attribute has been changed to ' + - '`data-ajax--url` and support for the old attribute will be removed' + - ' in future versions of Select2.' - ); - } - - $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl')); - Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl')); - } - - var dataset = {}; - - function upperCaseLetter(_, letter) { - return letter.toUpperCase(); - } - - // Pre-load all of the attributes which are prefixed with `data-` - for (var attr = 0; attr < $e[0].attributes.length; attr++) { - var attributeName = $e[0].attributes[attr].name; - var prefix = 'data-'; - - if (attributeName.substr(0, prefix.length) == prefix) { - // Get the contents of the attribute after `data-` - var dataName = attributeName.substring(prefix.length); - - // Get the data contents from the consistent source - // This is more than likely the jQuery data helper - var dataValue = Utils.GetData($e[0], dataName); - - // camelCase the attribute name to match the spec - var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); - - // Store the data attribute contents into the dataset since - dataset[camelDataName] = dataValue; - } - } - - // Prefer the element's `dataset` attribute if it exists - // jQuery 1.x does not correctly handle data attributes with multiple dashes - if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { - dataset = $.extend(true, {}, $e[0].dataset, dataset); - } - - // Prefer our internal data cache if it exists - var data = $.extend(true, {}, Utils.GetData($e[0]), dataset); - - data = Utils._convertData(data); - - for (var key in data) { - if (excludedData.indexOf(key) > -1) { - continue; - } - - if ($.isPlainObject(this.options[key])) { - $.extend(this.options[key], data[key]); - } else { - this.options[key] = data[key]; - } - } - - return this; - }; - - Options.prototype.get = function (key) { - return this.options[key]; - }; - - Options.prototype.set = function (key, val) { - this.options[key] = val; - }; - - return Options; -}); - -S2.define('select2/core',[ - 'jquery', - './options', - './utils', - './keys' -], function ($, Options, Utils, KEYS) { - var Select2 = function ($element, options) { - if (Utils.GetData($element[0], 'select2') != null) { - Utils.GetData($element[0], 'select2').destroy(); - } - - this.$element = $element; - - this.id = this._generateId($element); - - options = options || {}; - - this.options = new Options(options, $element); - - Select2.__super__.constructor.call(this); - - // Set up the tabindex - - var tabindex = $element.attr('tabindex') || 0; - Utils.StoreData($element[0], 'old-tabindex', tabindex); - $element.attr('tabindex', '-1'); - - // Set up containers and adapters - - var DataAdapter = this.options.get('dataAdapter'); - this.dataAdapter = new DataAdapter($element, this.options); - - var $container = this.render(); - - this._placeContainer($container); - - var SelectionAdapter = this.options.get('selectionAdapter'); - this.selection = new SelectionAdapter($element, this.options); - this.$selection = this.selection.render(); - - this.selection.position(this.$selection, $container); - - var DropdownAdapter = this.options.get('dropdownAdapter'); - this.dropdown = new DropdownAdapter($element, this.options); - this.$dropdown = this.dropdown.render(); - - this.dropdown.position(this.$dropdown, $container); - - var ResultsAdapter = this.options.get('resultsAdapter'); - this.results = new ResultsAdapter($element, this.options, this.dataAdapter); - this.$results = this.results.render(); - - this.results.position(this.$results, this.$dropdown); - - // Bind events - - var self = this; - - // Bind the container to all of the adapters - this._bindAdapters(); - - // Register any DOM event handlers - this._registerDomEvents(); - - // Register any internal event handlers - this._registerDataEvents(); - this._registerSelectionEvents(); - this._registerDropdownEvents(); - this._registerResultsEvents(); - this._registerEvents(); - - // Set the initial state - this.dataAdapter.current(function (initialData) { - self.trigger('selection:update', { - data: initialData - }); - }); - - // Hide the original select - $element[0].classList.add('select2-hidden-accessible'); - $element.attr('aria-hidden', 'true'); - - // Synchronize any monitored attributes - this._syncAttributes(); - - Utils.StoreData($element[0], 'select2', this); - - // Ensure backwards compatibility with $element.data('select2'). - $element.data('select2', this); - }; - - Utils.Extend(Select2, Utils.Observable); - - Select2.prototype._generateId = function ($element) { - var id = ''; - - if ($element.attr('id') != null) { - id = $element.attr('id'); - } else if ($element.attr('name') != null) { - id = $element.attr('name') + '-' + Utils.generateChars(2); - } else { - id = Utils.generateChars(4); - } - - id = id.replace(/(:|\.|\[|\]|,)/g, ''); - id = 'select2-' + id; - - return id; - }; - - Select2.prototype._placeContainer = function ($container) { - $container.insertAfter(this.$element); - - var width = this._resolveWidth(this.$element, this.options.get('width')); - - if (width != null) { - $container.css('width', width); - } - }; - - Select2.prototype._resolveWidth = function ($element, method) { - var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; - - if (method == 'resolve') { - var styleWidth = this._resolveWidth($element, 'style'); - - if (styleWidth != null) { - return styleWidth; - } - - return this._resolveWidth($element, 'element'); - } - - if (method == 'element') { - var elementWidth = $element.outerWidth(false); - - if (elementWidth <= 0) { - return 'auto'; - } - - return elementWidth + 'px'; - } - - if (method == 'style') { - var style = $element.attr('style'); - - if (typeof(style) !== 'string') { - return null; - } - - var attrs = style.split(';'); - - for (var i = 0, l = attrs.length; i < l; i = i + 1) { - var attr = attrs[i].replace(/\s/g, ''); - var matches = attr.match(WIDTH); - - if (matches !== null && matches.length >= 1) { - return matches[1]; - } - } - - return null; - } - - if (method == 'computedstyle') { - var computedStyle = window.getComputedStyle($element[0]); - - return computedStyle.width; - } - - return method; - }; - - Select2.prototype._bindAdapters = function () { - this.dataAdapter.bind(this, this.$container); - this.selection.bind(this, this.$container); - - this.dropdown.bind(this, this.$container); - this.results.bind(this, this.$container); - }; - - Select2.prototype._registerDomEvents = function () { - var self = this; - - this.$element.on('change.select2', function () { - self.dataAdapter.current(function (data) { - self.trigger('selection:update', { - data: data - }); - }); - }); - - this.$element.on('focus.select2', function (evt) { - self.trigger('focus', evt); - }); - - this._syncA = Utils.bind(this._syncAttributes, this); - this._syncS = Utils.bind(this._syncSubtree, this); - - this._observer = new window.MutationObserver(function (mutations) { - self._syncA(); - self._syncS(mutations); - }); - this._observer.observe(this.$element[0], { - attributes: true, - childList: true, - subtree: false - }); - }; - - Select2.prototype._registerDataEvents = function () { - var self = this; - - this.dataAdapter.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerSelectionEvents = function () { - var self = this; - var nonRelayEvents = ['toggle', 'focus']; - - this.selection.on('toggle', function () { - self.toggleDropdown(); - }); - - this.selection.on('focus', function (params) { - self.focus(params); - }); - - this.selection.on('*', function (name, params) { - if (nonRelayEvents.indexOf(name) !== -1) { - return; - } - - self.trigger(name, params); - }); - }; - - Select2.prototype._registerDropdownEvents = function () { - var self = this; - - this.dropdown.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerResultsEvents = function () { - var self = this; - - this.results.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerEvents = function () { - var self = this; - - this.on('open', function () { - self.$container[0].classList.add('select2-container--open'); - }); - - this.on('close', function () { - self.$container[0].classList.remove('select2-container--open'); - }); - - this.on('enable', function () { - self.$container[0].classList.remove('select2-container--disabled'); - }); - - this.on('disable', function () { - self.$container[0].classList.add('select2-container--disabled'); - }); - - this.on('blur', function () { - self.$container[0].classList.remove('select2-container--focus'); - }); - - this.on('query', function (params) { - if (!self.isOpen()) { - self.trigger('open', {}); - } - - this.dataAdapter.query(params, function (data) { - self.trigger('results:all', { - data: data, - query: params - }); - }); - }); - - this.on('query:append', function (params) { - this.dataAdapter.query(params, function (data) { - self.trigger('results:append', { - data: data, - query: params - }); - }); - }); - - this.on('keypress', function (evt) { - var key = evt.which; - - if (self.isOpen()) { - if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) { - self.close(evt); - - evt.preventDefault(); - } else if (key === KEYS.ENTER || key === KEYS.TAB) { - self.trigger('results:select', {}); - - evt.preventDefault(); - } else if ((key === KEYS.SPACE && evt.ctrlKey)) { - self.trigger('results:toggle', {}); - - evt.preventDefault(); - } else if (key === KEYS.UP) { - self.trigger('results:previous', {}); - - evt.preventDefault(); - } else if (key === KEYS.DOWN) { - self.trigger('results:next', {}); - - evt.preventDefault(); - } - } else { - if (key === KEYS.ENTER || key === KEYS.SPACE || - (key === KEYS.DOWN && evt.altKey)) { - self.open(); - - evt.preventDefault(); - } - } - }); - }; - - Select2.prototype._syncAttributes = function () { - this.options.set('disabled', this.$element.prop('disabled')); - - if (this.isDisabled()) { - if (this.isOpen()) { - this.close(); - } - - this.trigger('disable', {}); - } else { - this.trigger('enable', {}); - } - }; - - Select2.prototype._isChangeMutation = function (mutations) { - var self = this; - - if (mutations.addedNodes && mutations.addedNodes.length > 0) { - for (var n = 0; n < mutations.addedNodes.length; n++) { - var node = mutations.addedNodes[n]; - - if (node.selected) { - return true; - } - } - } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { - return true; - } else if (Array.isArray(mutations)) { - return mutations.some(function (mutation) { - return self._isChangeMutation(mutation); - }); - } - - return false; - }; - - Select2.prototype._syncSubtree = function (mutations) { - var changed = this._isChangeMutation(mutations); - var self = this; - - // Only re-pull the data if we think there is a change - if (changed) { - this.dataAdapter.current(function (currentData) { - self.trigger('selection:update', { - data: currentData - }); - }); - } - }; - - /** - * Override the trigger method to automatically trigger pre-events when - * there are events that can be prevented. - */ - Select2.prototype.trigger = function (name, args) { - var actualTrigger = Select2.__super__.trigger; - var preTriggerMap = { - 'open': 'opening', - 'close': 'closing', - 'select': 'selecting', - 'unselect': 'unselecting', - 'clear': 'clearing' - }; - - if (args === undefined) { - args = {}; - } - - if (name in preTriggerMap) { - var preTriggerName = preTriggerMap[name]; - var preTriggerArgs = { - prevented: false, - name: name, - args: args - }; - - actualTrigger.call(this, preTriggerName, preTriggerArgs); - - if (preTriggerArgs.prevented) { - args.prevented = true; - - return; - } - } - - actualTrigger.call(this, name, args); - }; - - Select2.prototype.toggleDropdown = function () { - if (this.isDisabled()) { - return; - } - - if (this.isOpen()) { - this.close(); - } else { - this.open(); - } - }; - - Select2.prototype.open = function () { - if (this.isOpen()) { - return; - } - - if (this.isDisabled()) { - return; - } - - this.trigger('query', {}); - }; - - Select2.prototype.close = function (evt) { - if (!this.isOpen()) { - return; - } - - this.trigger('close', { originalEvent : evt }); - }; - - /** - * Helper method to abstract the "enabled" (not "disabled") state of this - * object. - * - * @return {true} if the instance is not disabled. - * @return {false} if the instance is disabled. - */ - Select2.prototype.isEnabled = function () { - return !this.isDisabled(); - }; - - /** - * Helper method to abstract the "disabled" state of this object. - * - * @return {true} if the disabled option is true. - * @return {false} if the disabled option is false. - */ - Select2.prototype.isDisabled = function () { - return this.options.get('disabled'); - }; - - Select2.prototype.isOpen = function () { - return this.$container[0].classList.contains('select2-container--open'); - }; - - Select2.prototype.hasFocus = function () { - return this.$container[0].classList.contains('select2-container--focus'); - }; - - Select2.prototype.focus = function (data) { - // No need to re-trigger focus events if we are already focused - if (this.hasFocus()) { - return; - } - - this.$container[0].classList.add('select2-container--focus'); - this.trigger('focus', {}); - }; - - Select2.prototype.enable = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("enable")` method has been deprecated and will' + - ' be removed in later Select2 versions. Use $element.prop("disabled")' + - ' instead.' - ); - } - - if (args == null || args.length === 0) { - args = [true]; - } - - var disabled = !args[0]; - - this.$element.prop('disabled', disabled); - }; - - Select2.prototype.data = function () { - if (this.options.get('debug') && - arguments.length > 0 && window.console && console.warn) { - console.warn( - 'Select2: Data can no longer be set using `select2("data")`. You ' + - 'should consider setting the value instead using `$element.val()`.' - ); - } - - var data = []; - - this.dataAdapter.current(function (currentData) { - data = currentData; - }); - - return data; - }; - - Select2.prototype.val = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("val")` method has been deprecated and will be' + - ' removed in later Select2 versions. Use $element.val() instead.' - ); - } - - if (args == null || args.length === 0) { - return this.$element.val(); - } - - var newVal = args[0]; - - if (Array.isArray(newVal)) { - newVal = newVal.map(function (obj) { - return obj.toString(); - }); - } - - this.$element.val(newVal).trigger('input').trigger('change'); - }; - - Select2.prototype.destroy = function () { - Utils.RemoveData(this.$container[0]); - this.$container.remove(); - - this._observer.disconnect(); - this._observer = null; - - this._syncA = null; - this._syncS = null; - - this.$element.off('.select2'); - this.$element.attr('tabindex', - Utils.GetData(this.$element[0], 'old-tabindex')); - - this.$element[0].classList.remove('select2-hidden-accessible'); - this.$element.attr('aria-hidden', 'false'); - Utils.RemoveData(this.$element[0]); - this.$element.removeData('select2'); - - this.dataAdapter.destroy(); - this.selection.destroy(); - this.dropdown.destroy(); - this.results.destroy(); - - this.dataAdapter = null; - this.selection = null; - this.dropdown = null; - this.results = null; - }; - - Select2.prototype.render = function () { - var $container = $( - '' + - '' + - '' + - '' - ); - - $container.attr('dir', this.options.get('dir')); - - this.$container = $container; - - this.$container[0].classList - .add('select2-container--' + this.options.get('theme')); - - Utils.StoreData($container[0], 'element', this.$element); - - return $container; - }; - - return Select2; -}); - -S2.define('jquery-mousewheel',[ - 'jquery' -], function ($) { - // Used to shim jQuery.mousewheel for non-full builds. - return $; -}); - -S2.define('jquery.select2',[ - 'jquery', - 'jquery-mousewheel', - - './select2/core', - './select2/defaults', - './select2/utils' -], function ($, _, Select2, Defaults, Utils) { - if ($.fn.select2 == null) { - // All methods that should return the element - var thisMethods = ['open', 'close', 'destroy']; - - $.fn.select2 = function (options) { - options = options || {}; - - if (typeof options === 'object') { - this.each(function () { - var instanceOptions = $.extend(true, {}, options); - - var instance = new Select2($(this), instanceOptions); - }); - - return this; - } else if (typeof options === 'string') { - var ret; - var args = Array.prototype.slice.call(arguments, 1); - - this.each(function () { - var instance = Utils.GetData(this, 'select2'); - - if (instance == null && window.console && console.error) { - console.error( - 'The select2(\'' + options + '\') method was called on an ' + - 'element that is not using Select2.' - ); - } - - ret = instance[options].apply(instance, args); - }); - - // Check if we should be returning `this` - if (thisMethods.indexOf(options) > -1) { - return this; - } - - return ret; - } else { - throw new Error('Invalid arguments for Select2: ' + options); - } - }; - } - - if ($.fn.select2.defaults == null) { - $.fn.select2.defaults = Defaults; - } - - return Select2; -}); - - // Return the AMD loader configuration so it can be used outside of this file - return { - define: S2.define, - require: S2.require - }; -}()); - - // Autoload the jQuery bindings - // We know that all of the modules exist above this, so we're safe - var select2 = S2.require('jquery.select2'); - - // Hold the AMD module references on the jQuery function that was just loaded - // This allows Select2 to use the internal loader outside of this file, such - // as in the language files. - jQuery.fn.select2.amd = S2; - - // Return the Select2 instance for anyone who is importing it. - return select2; -})); diff --git a/wp-content/plugins/updraftplus/includes/select2/select2.min.css b/wp-content/plugins/updraftplus/includes/select2/select2.min.css deleted file mode 100644 index 39a4547f..00000000 --- a/wp-content/plugins/updraftplus/includes/select2/select2.min.css +++ /dev/null @@ -1 +0,0 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{background-color:transparent;border:none;font-size:1em}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline;list-style:none;padding:0}.select2-container .select2-selection--multiple .select2-selection__clear{background-color:transparent;border:none;font-size:1em}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;margin-left:5px;padding:0;max-width:100%;resize:none;height:18px;vertical-align:bottom;font-family:sans-serif;overflow:hidden;word-break:keep-all}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option--selectable{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;height:26px;margin-right:20px;padding-right:0px}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;padding-bottom:5px;padding-right:5px;position:relative}.select2-container--default .select2-selection--multiple.select2-selection--clearable{padding-right:25px}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;font-weight:bold;height:20px;margin-right:10px;margin-top:5px;position:absolute;right:0;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:inline-block;margin-left:5px;margin-top:5px;padding:0;padding-left:20px;position:relative;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.select2-container--default .select2-selection--multiple .select2-selection__choice__display{cursor:default;padding-left:2px;padding-right:5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{background-color:transparent;border:none;border-right:1px solid #aaa;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#999;cursor:pointer;font-size:1em;font-weight:bold;padding:0 4px;position:absolute;left:0;top:0}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover,.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:focus{background-color:#f1f1f1;color:#333;outline:none}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__display{padding-left:5px;padding-right:2px}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{border-left:1px solid #aaa;border-right:none;border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__clear{float:left;margin-left:10px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--group{padding:0}.select2-container--default .select2-results__option--disabled{color:#999}.select2-container--default .select2-results__option--selected{background-color:#ddd}.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;height:26px;margin-right:20px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0;padding-bottom:5px;padding-right:5px}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;display:inline-block;margin-left:5px;margin-top:5px;padding:0}.select2-container--classic .select2-selection--multiple .select2-selection__choice__display{cursor:default;padding-left:2px;padding-right:5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{background-color:transparent;border:none;border-top-left-radius:4px;border-bottom-left-radius:4px;color:#888;cursor:pointer;font-size:1em;font-weight:bold;padding:0 4px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555;outline:none}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__display{padding-left:5px;padding-right:2px}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:4px}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option--group{padding:0}.select2-container--classic .select2-results__option--disabled{color:grey}.select2-container--classic .select2-results__option--highlighted.select2-results__option--selectable{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/wp-content/plugins/updraftplus/includes/select2/select2.min.js b/wp-content/plugins/updraftplus/includes/select2/select2.min.js deleted file mode 100644 index cc9a83f1..00000000 --- a/wp-content/plugins/updraftplus/includes/select2/select2.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ -!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(t){var e,n,s,p,r,o,h,f,g,m,y,v,i,a,_,s=((u=t&&t.fn&&t.fn.select2&&t.fn.select2.amd?t.fn.select2.amd:u)&&u.requirejs||(u?n=u:u={},g={},m={},y={},v={},i=Object.prototype.hasOwnProperty,a=[].slice,_=/\.js$/,h=function(e,t){var n,s,i=c(e),r=i[0],t=t[1];return e=i[1],r&&(n=x(r=l(r,t))),r?e=n&&n.normalize?n.normalize(e,(s=t,function(e){return l(e,s)})):l(e,t):(r=(i=c(e=l(e,t)))[0],e=i[1],r&&(n=x(r))),{f:r?r+"!"+e:e,n:e,pr:r,p:n}},f={require:function(e){return w(e)},exports:function(e){var t=g[e];return void 0!==t?t:g[e]={}},module:function(e){return{id:e,uri:"",exports:g[e],config:(t=e,function(){return y&&y.config&&y.config[t]||{}})};var t}},r=function(e,t,n,s){var i,r,o,a,l,c=[],u=typeof n,d=A(s=s||e);if("undefined"==u||"function"==u){for(t=!t.length&&n.length?["require","exports","module"]:t,a=0;a":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},s.__cache={};var n=0;return s.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null!=t||(t=e.id?"select2-data-"+e.id:"select2-data-"+(++n).toString()+"-"+s.generateChars(4),e.setAttribute("data-select2-id",t)),t},s.StoreData=function(e,t,n){e=s.GetUniqueElementId(e);s.__cache[e]||(s.__cache[e]={}),s.__cache[e][t]=n},s.GetData=function(e,t){var n=s.GetUniqueElementId(e);return t?s.__cache[n]&&null!=s.__cache[n][t]?s.__cache[n][t]:r(e).data(t):s.__cache[n]},s.RemoveData=function(e){var t=s.GetUniqueElementId(e);null!=s.__cache[t]&&delete s.__cache[t],e.removeAttribute("data-select2-id")},s.copyNonInternalCssClasses=function(e,t){var n=(n=e.getAttribute("class").trim().split(/\s+/)).filter(function(e){return 0===e.indexOf("select2-")}),t=(t=t.getAttribute("class").trim().split(/\s+/)).filter(function(e){return 0!==e.indexOf("select2-")}),t=n.concat(t);e.setAttribute("class",t.join(" "))},s}),u.define("select2/results",["jquery","./utils"],function(d,p){function s(e,t,n){this.$element=e,this.data=n,this.options=t,s.__super__.constructor.call(this)}return p.Extend(s,p.Observable),s.prototype.render=function(){var e=d('
            ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},s.prototype.clear=function(){this.$results.empty()},s.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=d(''),s=this.options.get("translations").get(e.message);n.append(t(s(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},s.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},s.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested",role:"none"});i.append(l),o.append(a),o.append(i)}else this.template(e,t);return p.StoreData(t,"data",e),t},s.prototype.bind=function(t,e){var i=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){i.clear(),i.append(e.data),t.isOpen()&&(i.setClasses(),i.highlightFirstItem())}),t.on("results:append",function(e){i.append(e.data),t.isOpen()&&i.setClasses()}),t.on("query",function(e){i.hideMessages(),i.showLoading(e)}),t.on("select",function(){t.isOpen()&&(i.setClasses(),i.options.get("scrollAfterSelect")&&i.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(i.setClasses(),i.options.get("scrollAfterSelect")&&i.highlightFirstItem())}),t.on("open",function(){i.$results.attr("aria-expanded","true"),i.$results.attr("aria-hidden","false"),i.setClasses(),i.ensureHighlightVisible()}),t.on("close",function(){i.$results.attr("aria-expanded","false"),i.$results.attr("aria-hidden","true"),i.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=i.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e,t=i.getHighlightedResults();0!==t.length&&(e=p.GetData(t[0],"data"),t.hasClass("select2-results__option--selected")?i.trigger("close",{}):i.trigger("select",{data:e}))}),t.on("results:previous",function(){var e,t=i.getHighlightedResults(),n=i.$results.find(".select2-results__option--selectable"),s=n.index(t);s<=0||(e=s-1,0===t.length&&(e=0),(s=n.eq(e)).trigger("mouseenter"),t=i.$results.offset().top,n=s.offset().top,s=i.$results.scrollTop()+(n-t),0===e?i.$results.scrollTop(0):n-t<0&&i.$results.scrollTop(s))}),t.on("results:next",function(){var e,t=i.getHighlightedResults(),n=i.$results.find(".select2-results__option--selectable"),s=n.index(t)+1;s>=n.length||((e=n.eq(s)).trigger("mouseenter"),t=i.$results.offset().top+i.$results.outerHeight(!1),n=e.offset().top+e.outerHeight(!1),e=i.$results.scrollTop()+n-t,0===s?i.$results.scrollTop(0):tthis.$results.outerHeight()||s<0)&&this.$results.scrollTop(n))},s.prototype.template=function(e,t){var n=this.options.get("templateResult"),s=this.options.get("escapeMarkup"),e=n(e,t);null==e?t.style.display="none":"string"==typeof e?t.innerHTML=s(e):d(t).append(e)},s}),u.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),u.define("select2/selection/base",["jquery","../utils","../keys"],function(n,s,i){function r(e,t){this.$element=e,this.options=t,r.__super__.constructor.call(this)}return s.Extend(r,s.Observable),r.prototype.render=function(){var e=n('');return this._tabindex=0,null!=s.GetData(this.$element[0],"old-tabindex")?this._tabindex=s.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},r.prototype.bind=function(e,t){var n=this,s=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",s),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},r.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},r.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&s.GetData(this,"element").select2("close")})})},r.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},r.prototype.position=function(e,t){t.find(".selection").append(e)},r.prototype.destroy=function(){this._detachCloseHandler(this.container)},r.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},r.prototype.isEnabled=function(){return!this.isDisabled()},r.prototype.isDisabled=function(){return this.options.get("disabled")},r}),u.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,s){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e[0].classList.add("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var s=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",s).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",s),this.$selection.attr("aria-controls",s),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){var t,n;0!==e.length?(n=e[0],t=this.$selection.find(".select2-selection__rendered"),e=this.display(n,t),t.empty().append(e),(n=n.title||n.text)?t.attr("title",n):t.removeAttr("title")):this.clear()},i}),u.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,c){function r(e,t){r.__super__.constructor.apply(this,arguments)}return c.Extend(r,e),r.prototype.render=function(){var e=r.__super__.render.call(this);return e[0].classList.add("select2-selection--multiple"),e.html('
              '),e},r.prototype.bind=function(e,t){var n=this;r.__super__.bind.apply(this,arguments);var s=e.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",s),this.$selection.on("click",function(e){n.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){var t;n.isDisabled()||(t=i(this).parent(),t=c.GetData(t[0],"data"),n.trigger("unselect",{originalEvent:e,data:t}))}),this.$selection.on("keydown",".select2-selection__choice__remove",function(e){n.isDisabled()||e.stopPropagation()})},r.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},r.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},r.prototype.selectionContainer=function(){return i('
            • ')},r.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=this.$selection.find(".select2-selection__rendered").attr("id")+"-choice-",s=0;s')).attr("title",s()),e.attr("aria-label",s()),e.attr("aria-describedby",n),a.StoreData(e[0],"data",t),this.$selection.prepend(e),this.$selection[0].classList.add("select2-selection--clearable"))},e}),u.define("select2/selection/search",["jquery","../utils","../keys"],function(s,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=this.options.get("translations").get("search"),n=s('');this.$searchContainer=n,this.$search=n.find("textarea"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",t());e=e.call(this);return this._transferTabIndex(),e.append(this.$searchContainer),e},e.prototype.bind=function(e,t,n){var s=this,i=t.id+"-results",r=t.id+"-container";e.call(this,t,n),s.$search.attr("aria-describedby",r),t.on("open",function(){s.$search.attr("aria-controls",i),s.$search.trigger("focus")}),t.on("close",function(){s.$search.val(""),s.resizeSearch(),s.$search.removeAttr("aria-controls"),s.$search.removeAttr("aria-activedescendant"),s.$search.trigger("focus")}),t.on("enable",function(){s.$search.prop("disabled",!1),s._transferTabIndex()}),t.on("disable",function(){s.$search.prop("disabled",!0)}),t.on("focus",function(e){s.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?s.$search.attr("aria-activedescendant",e.data._resultId):s.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){s.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){s._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){var t;e.stopPropagation(),s.trigger("keypress",e),s._keyUpPrevented=e.isDefaultPrevented(),e.which!==l.BACKSPACE||""!==s.$search.val()||0<(t=s.$selection.find(".select2-selection__choice").last()).length&&(t=a.GetData(t[0],"data"),s.searchRemoveChoice(t),e.preventDefault())}),this.$selection.on("click",".select2-search--inline",function(e){s.$search.val()&&e.stopPropagation()});var t=document.documentMode,o=t&&t<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(e){o?s.$selection.off("input.search input.searchcheck"):s.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(e){var t;o&&"input"===e.type?s.$selection.off("input.search input.searchcheck"):(t=e.which)!=l.SHIFT&&t!=l.CTRL&&t!=l.ALT&&t!=l.TAB&&s.handleSearch(e)})},e.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},e.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.resizeSearch(),n&&this.$search.trigger("focus")},e.prototype.handleSearch=function(){var e;this.resizeSearch(),this._keyUpPrevented||(e=this.$search.val(),this.trigger("query",{term:e})),this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css("width","25px");var e="100%";""===this.$search.attr("placeholder")&&(e=.75*(this.$search.val().length+1)+"em"),this.$search.css("width",e)},e}),u.define("select2/selection/selectionCss",["../utils"],function(n){function e(){}return e.prototype.render=function(e){var t=e.call(this),e=this.options.get("selectionCssClass")||"";return-1!==e.indexOf(":all:")&&(e=e.replace(":all:",""),n.copyNonInternalCssClasses(t[0],this.$element[0])),t.addClass(e),t},e}),u.define("select2/selection/eventRelay",["jquery"],function(o){function e(){}return e.prototype.bind=function(e,t,n){var s=this,i=["open","opening","close","closing","select","selecting","unselect","unselecting","clear","clearing"],r=["opening","closing","selecting","unselecting","clearing"];e.call(this,t,n),t.on("*",function(e,t){var n;-1!==i.indexOf(e)&&(t=t||{},n=o.Event("select2:"+e,{params:t}),s.$element.trigger(n),-1!==r.indexOf(e)&&(t.prevented=n.isDefaultPrevented()))})},e}),u.define("select2/translation",["jquery","require"],function(t,n){function s(e){this.dict=e||{}}return s.prototype.all=function(){return this.dict},s.prototype.get=function(e){return this.dict[e]},s.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},s._cache={},s.loadPath=function(e){var t;return e in s._cache||(t=n(e),s._cache[e]=t),new s(s._cache[e])},s}),u.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Œ":"OE","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","œ":"oe","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ώ":"ω","ς":"σ","’":"'"}}),u.define("select2/data/base",["../utils"],function(n){function s(e,t){s.__super__.constructor.call(this)}return n.Extend(s,n.Observable),s.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},s.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},s.prototype.bind=function(e,t){},s.prototype.destroy=function(){},s.prototype.generateResultId=function(e,t){e=e.id+"-result-";return e+=n.generateChars(4),null!=t.id?e+="-"+t.id.toString():e+="-"+n.generateChars(4),e},s}),u.define("select2/data/select",["./base","../utils","jquery"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var t=this;e(Array.prototype.map.call(this.$element[0].querySelectorAll(":checked"),function(e){return t.item(l(e))}))},n.prototype.select=function(i){var e,r=this;if(i.selected=!0,null!=i.element&&"option"===i.element.tagName.toLowerCase())return i.element.selected=!0,void this.$element.trigger("input").trigger("change");this.$element.prop("multiple")?this.current(function(e){var t=[];(i=[i]).push.apply(i,e);for(var n=0;nthis.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),u.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("select",function(){s._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var s=this;this._checkIfMaximumSelected(function(){e.call(s,t,n)})},e.prototype._checkIfMaximumSelected=function(e,t){var n=this;this.current(function(e){e=null!=e?e.length:0;0=n.maximumSelectionLength?n.trigger("results:message",{message:"maximumSelected",args:{maximum:n.maximumSelectionLength}}):t&&t()})},e}),u.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),u.define("select2/dropdown/search",["jquery"],function(r){function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("translations").get("search"),e=r('');return this.$searchContainer=e,this.$search=e.find("input"),this.$search.prop("autocomplete",this.options.get("autocomplete")),this.$search.attr("aria-label",n()),t.prepend(e),t},e.prototype.bind=function(e,t,n){var s=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){s.trigger("keypress",e),s._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){r(this).off("keyup")}),this.$search.on("keyup input",function(e){s.handleSearch(e)}),t.on("open",function(){s.$search.attr("tabindex",0),s.$search.attr("aria-controls",i),s.$search.trigger("focus"),window.setTimeout(function(){s.$search.trigger("focus")},0)}),t.on("close",function(){s.$search.attr("tabindex",-1),s.$search.removeAttr("aria-controls"),s.$search.removeAttr("aria-activedescendant"),s.$search.val(""),s.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||s.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(s.showSearch(e)?s.$searchContainer[0].classList.remove("select2-search--hide"):s.$searchContainer[0].classList.add("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?s.$search.attr("aria-activedescendant",e.data._resultId):s.$search.removeAttr("aria-activedescendant")})},e.prototype.handleSearch=function(e){var t;this._keyUpPrevented||(t=this.$search.val(),this.trigger("query",{term:t})),this._keyUpPrevented=!1},e.prototype.showSearch=function(e,t){return!0},e}),u.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,s){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,s)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return t="string"==typeof t?{id:"",text:t}:t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),s=t.length-1;0<=s;s--){var i=t[s];this.placeholder.id===i.id&&n.splice(s,1)}return n},e}),u.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,s){this.lastParams={},e.call(this,t,n,s),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("query",function(e){s.lastParams=e,s.loading=!0}),t.on("query:append",function(e){s.lastParams=e,s.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);!this.loading&&e&&(e=this.$results.offset().top+this.$results.outerHeight(!1),this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=e+50&&this.loadMore())},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
            • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),u.define("select2/dropdown/attachBody",["jquery","../utils"],function(u,o){function e(e,t,n){this.$dropdownParent=u(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var s=this;e.call(this,t,n),t.on("open",function(){s._showDropdown(),s._attachPositioningHandler(t),s._bindContainerResultHandlers(t)}),t.on("close",function(){s._hideDropdown(),s._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t[0].classList.remove("select2"),t[0].classList.add("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=u(""),e=e.call(this);return t.append(e),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){var n;this._containerResultsHandlersBound||(n=this,t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0)},e.prototype._attachPositioningHandler=function(e,t){var n=this,s="scroll.select2."+t.id,i="resize.select2."+t.id,r="orientationchange.select2."+t.id,t=this.$container.parents().filter(o.hasScroll);t.each(function(){o.StoreData(this,"select2-scroll-position",{x:u(this).scrollLeft(),y:u(this).scrollTop()})}),t.on(s,function(e){var t=o.GetData(this,"select2-scroll-position");u(this).scrollTop(t.y)}),u(window).on(s+" "+i+" "+r,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,s="resize.select2."+t.id,t="orientationchange.select2."+t.id;this.$container.parents().filter(o.hasScroll).off(n),u(window).off(n+" "+s+" "+t)},e.prototype._positionDropdown=function(){var e=u(window),t=this.$dropdown[0].classList.contains("select2-dropdown--above"),n=this.$dropdown[0].classList.contains("select2-dropdown--below"),s=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var r={height:this.$container.outerHeight(!1)};r.top=i.top,r.bottom=i.top+r.height;var o=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+o,a={left:i.left,top:r.bottom},l=this.$dropdownParent;"static"===l.css("position")&&(l=l.offsetParent());i={top:0,left:0};(u.contains(document.body,l[0])||l[0].isConnected)&&(i=l.offset()),a.top-=i.top,a.left-=i.left,t||n||(s="below"),e||!c||t?!c&&e&&t&&(s="below"):s="above",("above"==s||t&&"below"!==s)&&(a.top=r.top-i.top-o),null!=s&&(this.$dropdown[0].classList.remove("select2-dropdown--below"),this.$dropdown[0].classList.remove("select2-dropdown--above"),this.$dropdown[0].classList.add("select2-dropdown--"+s),this.$container[0].classList.remove("select2-container--below"),this.$container[0].classList.remove("select2-container--above"),this.$container[0].classList.add("select2-container--"+s)),this.$dropdownContainer.css(a)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),u.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,s){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,s)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,s=0;s');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container[0].classList.add("select2-container--"+this.options.get("theme")),r.StoreData(e[0],"element",this.$element),e},o}),u.define("jquery-mousewheel",["jquery"],function(e){return e}),u.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,r,t,o){var a;return null==i.fn.select2&&(a=["open","close","destroy"],i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new r(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,s=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=o.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,s)}),-1')}function updraft_check_overduecrons(){updraft_send_command("check_overdue_crons",null,function(t){if(t&&t.hasOwnProperty("m")&&Array.isArray(t.m))for(var e in t.m)jQuery("#updraft-insert-admin-warning").append(t.m[e])},{alert_on_error:!1})}function updraft_remote_storage_tabs_setup(){var t,r=0,n=jQuery(".updraft_servicecheckbox:checked"),e=(jQuery(n).each(function(t,e){var a=jQuery(e).val();jQuery(".error.updraftplusmethod."+a).show(),"updraft_servicecheckbox_none"!=jQuery(e).attr("id")&&r++,jQuery(".remote-tab-"+a).show(),t==jQuery(n).length-1&&updraft_remote_storage_tab_activation(a)}),0?
              '+updraftlion.updraftvault_info+"
              "),e.append(t))}function updraft_remote_storage_test(t,a,e){var n,e=e?(n=jQuery("#updraft-"+t+"-test-"+e),".updraftplusmethod."+t+"-"+e):(n=jQuery("#updraft-"+t+"-test"),".updraftplusmethod."+t),o=n.data("method_label"),d=(n.html(updraftlion.testing_settings.replace("%s",o)),{method:t});jQuery("#updraft-navtab-settings-content "+e+" input[data-updraft_settings_test], #updraft-navtab-settings-content .expertmode input[data-updraft_settings_test]").each(function(t,e){var a,r=jQuery(e).data("updraft_settings_test"),n=jQuery(e).attr("type");r&&(n||(console.log("UpdraftPlus: settings test input item with no type found"),console.log(e),n="text"),a=null,"checkbox"==n?a=jQuery(e).is(":checked")?1:0:"text"==n||"password"==n||"hidden"==n?a=jQuery(e).val():(console.log("UpdraftPlus: settings test input item with unrecognised type ("+n+") found"),console.log(e)),d[r]=a)}),jQuery("#updraft-navtab-settings-content "+e+" textarea[data-updraft_settings_test], #updraft-navtab-settings-content "+e+" select[data-updraft_settings_test]").each(function(t,e){var a=jQuery(e).data("updraft_settings_test");d[a]=jQuery(e).val()}),updraft_send_command("test_storage_settings",d,function(t,e){n.html(updraftlion.test_settings.replace("%s",o)),void 0!==(a=void 0!==a&&0!=a?a.call(this,t,e,d):a)&&!1===a&&(alert(updraftlion.settings_test_result.replace("%s",o)+" "+t.output),t.hasOwnProperty("data"))&&console.log(t.data)},{error_callback:function(t,e,a,r){n.html(updraftlion.test_settings.replace("%s",o)),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})}function backupnow_whichfiles_checked(a){return jQuery('#backupnow_includefiles_moreoptions input[type="checkbox"]').each(function(t){var e;jQuery(this).is(":checked")&&"updraft_include_"==(e=jQuery(this).attr("name")).substring(0,16)&&(e=e.substring(16),""!=a&&(a+=","),a+=e)}),a}function backupnow_whichtables_checked(t){var e=!1;return jQuery("#backupnow_database_moreoptions .updraft_db_entity").each(function(t){(!jQuery(this).is(":checked")||jQuery(this).is(":checked")&&jQuery(this).data("non_wp_table"))&&(e=!0)}),t=jQuery("input[name^='updraft_include_tables_']").serializeArray(),!e||t}function updraft_deleteallselected(){var a="",r="",n=0;jQuery("#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row.backuprowselected").each(function(t){0;var e=jQuery(this).data("nonce"),e=(r&&(r+=","),r+=e,jQuery(this).data("key"));a&&(a+=","),a+=e,jQuery(this).find(".updraftplus-remove").data("hasremote")&&n++}),updraft_delete(a,r,n)}function updraft_open_main_tab(e){updraftlion.main_tabs_keys.forEach(function(t){e==t?(jQuery("#updraft-navtab-"+t+"-content").show(),jQuery("#updraft-navtab-"+t).addClass("nav-tab-active")):(jQuery("#updraft-navtab-"+t+"-content").hide(),jQuery("#updraft-navtab-"+t).removeClass("nav-tab-active")),updraft_console_focussed_tab=e})}function updraft_openrestorepanel(t){updraft_historytimertoggle(t),updraft_open_main_tab("backups")}function updraft_delete_old_dirs(){return!0}function updraft_initiate_restore(t){jQuery('#updraft-navtab-backups-content .updraft_existing_backups .restore-button button[data-backup_timestamp="'+t+'"]').trigger("click")}function updraft_restore_setoptions(n){jQuery('input[name="updraft_restore[]"]').each(function(t,e){var a=jQuery(e).val(),r=new RegExp("/"+a+"=([0-9,]+)"),r=n.match(r);r?(jQuery(e).prop("disabled",!1).data("howmany",r[1]).parent().show(),"db"==a&&0,jQuery(e).is(":checked")&&jQuery("#updraft_restorer_"+a+"options").show()):jQuery(e).attr("disabled","disabled").parent().hide()});n.match(/dbcrypted=1/)?(jQuery("#updraft_restore_db").data("encrypted",1),jQuery(".updraft_restore_crypteddb").show()):(jQuery("#updraft_restore_db").data("encrypted",0),jQuery(".updraft_restore_crypteddb").hide()),jQuery("#updraft_restore_db").trigger("change");var t=n.match(/meta_foreign=([12])/);t?jQuery("#updraft_restore_meta_foreign").val(t[1]):jQuery("#updraft_restore_meta_foreign").val("0")}function updraft_backup_dialog_open(t){t=void 0===t?"new":t,0==jQuery("#updraftplus_incremental_backup_link").data("incremental")&&"incremental"==t?(jQuery("#updraft-backupnow-modal .incremental-free-only").show(),t="new"):jQuery("#updraft-backupnow-modal .incremental-backups-only, #updraft-backupnow-modal .incremental-free-only").hide(),jQuery("#backupnow_includefiles_moreoptions").hide(),updraft_settings_form_changed&&!window.confirm(updraftlion.unsavedsettingsbackup)||(jQuery("#backupnow_label").val(""),"incremental"==t?(update_file_entities_checkboxes(!0,impossible_increment_entities),jQuery("#backupnow_includedb").prop("checked",!1),jQuery("#backupnow_includefiles").prop("checked",!0),jQuery("#backupnow_includefiles_label").text(updraftlion.files_incremental_backup),jQuery("#updraft-backupnow-modal .new-backups-only").hide(),jQuery("#updraft-backupnow-modal .incremental-backups-only").show()):(update_file_entities_checkboxes(!1,impossible_increment_entities),jQuery("#backupnow_includedb").prop("checked",!0),jQuery("#backupnow_includefiles_label").text(updraftlion.files_new_backup),jQuery("#updraft-backupnow-modal .new-backups-only").show(),jQuery("#updraft-backupnow-modal .incremental-backups-only").hide()),jQuery("#updraft-backupnow-modal").data("backup-type",t),jQuery("#updraft-backupnow-modal").dialog("open"))}function update_file_entities_checkboxes(t,e){t?jQuery(e).each(function(t,e){jQuery("#backupnow_files_updraft_include_"+e).prop("checked",!1),jQuery("#backupnow_files_updraft_include_"+e).prop("disabled",!0)}):jQuery('#backupnow_includefiles_moreoptions input[type="checkbox"]').each(function(t){var e=jQuery(this).attr("name");"updraft_include_"==e.substring(0,16)&&(e=e.substring(16),void 0===jQuery("#backupnow_files_updraft_include_"+e).data("force_disabled")?(jQuery("#backupnow_files_updraft_include_"+e).prop("disabled",!1),jQuery("#updraft_include_"+e).is(":checked")&&jQuery("#backupnow_files_updraft_include_"+e).prop("checked",!0)):(jQuery("#backupnow_files_updraft_include_"+e).prop("disabled",!0),jQuery("#backupnow_files_updraft_include_"+e).prop("checked",!1)))})}var impossible_increment_entities,updraft_poplog_log_nonce,onlythesefileentities=backupnow_whichfiles_checked(""),updraft_restore_stage=(""==onlythesefileentities?jQuery("#backupnow_includefiles_moreoptions").show():jQuery("#backupnow_includefiles_moreoptions").hide(),1),lastlog_lastmessage="",lastlog_lastdata="",lastlog_jobs="",updraft_activejobs_nextupdate=(new Date).getTime()+1e3,updraft_page_is_visible=1,updraft_console_focussed_tab=updraftlion.tab,php_max_input_vars=0,skipped_db_scan=0,updraft_settings_form_changed=!1,save_button_added=!1;function load_save_button(){updraft_settings_form_changed&&!save_button_added&&(save_button_added=!0,jQuery("#updraft-navtab-settings-content").prepend(''),jQuery("#updraft-navtab-settings-content").one("click","#updraftplus-floating-settings-save",function(){jQuery("#updraftplus-settings-save").trigger("click"),jQuery("#updraftplus-floating-settings-save").remove(),save_button_added=!1}),jQuery("#updraftplus-settings-save").one("click",function(){jQuery("#updraftplus-floating-settings-save").remove(),save_button_added=!1}))}function updraft_check_page_visibility(t){"hidden"==document.visibilityState?updraft_page_is_visible=0:(updraft_page_is_visible=1)!==t&&jQuery("#updraft-navtab-backups-content").length&&updraft_activejobs_update(!0)}window.onbeforeunload=function(t){if(updraft_settings_form_changed)return updraftlion.unsavedsettings},void 0!==document.hidden&&document.addEventListener("visibilitychange",function(){updraft_check_page_visibility(0)},!1),updraft_check_page_visibility(1);var updraft_activejobs_update_timer,temporary_clone_timeout,updraft_poplog_log_pointer=0,updraft_poplog_lastscroll=-1,updraft_last_forced_jobid=-1,updraft_last_forced_resumption=-1,updraft_last_forced_when=-1,updraft_backupnow_nonce="",updraft_activejobslist_backupnownonce_only=0,updraft_inpage_hasbegun=0,updraft_aborted_jobs=[],updraft_clone_jobs=[],updraft_backups_selection={};function setup_migrate_tabs(){jQuery("#updraft_migrate .updraft_migrate_widget_module_content").each(function(t,e){var a=jQuery(e).find("h3").first().html(),r=jQuery(".updraft_migrate_intro");jQuery('"}),setTimeout(jQuery.unblockUI,5e3),jQuery(".blockUI .updraft-close-overlay").on("click",function(){jQuery.unblockUI()})}function updraft_popuplog(t){var e=updraftlion.loading_log_file;t&&(e+=" (log."+t+".txt)"),jQuery("#updraft-poplog").dialog("option","title",e),jQuery("#updraft-poplog-content").html(""+e+" ... "),jQuery("#updraft-poplog").dialog("open"),updraft_send_command("get_log",t,function(t){updraft_poplog_log_pointer=t.pointer;var e="?page=updraftplus&action=downloadlog&force_download=1&updraftplus_backup_nonce="+(updraft_poplog_log_nonce=t.nonce),a=(jQuery("#updraft-poplog-content").html(t.log),{});a[updraftlion.downloadlogfile]=function(){window.location.href=e},a[updraftlion.close]=function(){jQuery(this).dialog("close")},jQuery("#updraft-poplog").dialog("option","buttons",a),jQuery("#updraft-poplog").dialog("option","title","log."+t.nonce+".txt"),updraft_poplog_lastscroll=-1},{type:"GET",timeout:6e4,error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),jQuery("#updraft-poplog-content").append(r.fatal_error_message)):(r=e==a?a:a+" ("+e+")",jQuery("#updraft-poplog-content").append(r),console.log(t))}})}function updraft_showlastbackup(){updraft_send_command("get_fragment","last_backup_html",function(t){response=t.output,lastbackup_laststatus==response?setTimeout(function(){updraft_showlastbackup()},7e3):jQuery("#updraft_last_backup").html(response),lastbackup_laststatus=response},{type:"GET"})}var updraft_historytimer=0,calculated_diskspace=0,updraft_historytimer_notbefore=0,updraft_history_lastchecksum=!1;function updraft_historytimertoggle(t){updraft_historytimer&&1!=t?(clearTimeout(updraft_historytimer),updraft_historytimer=0):(updraft_updatehistory(0,0),updraft_historytimer=setInterval(function(){updraft_updatehistory(0,0)},3e4),calculated_diskspace||(updraftplus_diskspace(),calculated_diskspace=1))}function updraft_updatehistory(t,e,a,r){if("undefined"==typeof updraft_restore_screen||!updraft_restore_screen){void 0===a&&(a=jQuery("#updraft_debug_mode").is(":checked")?1:0);var n=Math.round((new Date).getTime()/1e3);if(1==t||1==e)updraft_historytimer_notbefore=n+30;else if(n'+updraftlion.rescanningremote+"

              ")):(updraft_history_lastchecksum=!1,jQuery("#updraft-navtab-backups-content .updraft_existing_backups").html('

              '+updraftlion.rescanning+"

              "))),updraft_send_command("rescan",{operation:e?"remotescan":!!t&&"rescan",debug:a,backup_count:r},function(t){if(t.hasOwnProperty("logs_exist")&&t.logs_exist&&jQuery("#updraft_lastlogmessagerow .updraft-log-link").show(),t.hasOwnProperty("migrate_tab")&&t.migrate_tab&&(jQuery("#updraft-navtab-migrate").hasClass("nav-tab-active")||(jQuery("#updraft_migrate_tab_alt").html(""),jQuery("#updraft_migrate").replaceWith(jQuery(t.migrate_tab).find("#updraft_migrate")),setup_migrate_tabs())),t.hasOwnProperty("web_server_disk_space")&&(""==t.web_server_disk_space?(console.log("UpdraftPlus: web_server_disk_space is empty"),jQuery("#updraft-navtab-backups-content .updraft-server-disk-space").length&&jQuery("#updraft-navtab-backups-content .updraft-server-disk-space").slideUp("slow",function(){jQuery(this).remove()})):jQuery("#updraft-navtab-backups-content .updraft-server-disk-space").length?jQuery("#updraft-navtab-backups-content .updraft-server-disk-space").replaceWith(t.web_server_disk_space):jQuery("#updraft-navtab-backups-content .updraft-disk-space-actions").prepend(t.web_server_disk_space)),update_backupnow_modal(t),t.hasOwnProperty("backupnow_file_entities")&&(impossible_increment_entities=t.backupnow_file_entities),null!=t.n&&jQuery("#updraft-existing-backups-heading").html(t.n),null!=t.t){if(null!=t.cksum){if(t.cksum==updraft_history_lastchecksum)return;updraft_history_lastchecksum=t.cksum}jQuery("#updraft-navtab-backups-content .updraft_existing_backups").html(t.t),updraft_backups_selection.checkSelectionStatus(),t.data&&console.log(t.data)}})}}function update_backupnow_modal(t){t.hasOwnProperty("modal_afterfileoptions")&&jQuery(".backupnow_modal_afterfileoptions").html(t.modal_afterfileoptions)}function updraft_exclude_entity_update(t){var e=[];jQuery("#updraft_include_"+t+"_exclude_container .updraft_exclude_entity_wrapper .updraft_exclude_entity_field").each(function(){var t=jQuery(this).data("val").toString().trim();""!=t&&e.push(t)}),jQuery("#updraft_include_"+t+"_exclude").val(e.join(","))}function updraft_is_unique_exclude_rule(t,e){return existing_exclude_rules_str=jQuery("#updraft_include_"+e+"_exclude").val(),existing_exclude_rules=existing_exclude_rules_str.split(","),!(-1'+updraftlion.day+" ").after(' '+updraftlion.inthemonth+" ")):(jQuery(".updraft_monthly_extra_words_"+t).remove(),(r?(updraft_interval_week_val=jQuery(a+" option:selected").val(),jQuery(a).html(updraftlion.mdayselector).before(''+updraftlion.day+" ").after(' '+updraftlion.inthemonth+" "),n=!1===updraft_interval_month_val?1:updraft_interval_month_val,n-=1,jQuery(a+" option").eq(n)):(updraft_interval_month_val=jQuery(a+" option:selected").val(),jQuery(a).html(updraftlion.dayselector),e=!1===updraft_interval_week_val?1:updraft_interval_week_val,jQuery(a+" option").eq(e))).prop("selected",!0)))}function updraft_check_same_times(){var t=0,e=jQuery("#updraft-navtab-settings-content .updraft_interval").val(),a=("manual"==e?jQuery("#updraft-navtab-settings-content .updraft_files_timings").hide():jQuery("#updraft-navtab-settings-content .updraft_files_timings").show(),"weekly"==e||"fortnightly"==e||"monthly"==e?(updraft_intervals_monthly_or_not("updraft_startday_files",e),jQuery("#updraft-navtab-settings-content #updraft_startday_files").show()):(jQuery(".updraft_monthly_extra_words_updraft_startday_files").remove(),jQuery("#updraft-navtab-settings-content #updraft_startday_files").hide()),jQuery("#updraft-navtab-settings-content .updraft_interval_database").val());"manual"==a&&(t=1,jQuery("#updraft-navtab-settings-content .updraft_db_timings").hide()),"weekly"==a||"fortnightly"==a||"monthly"==a?(updraft_intervals_monthly_or_not("updraft_startday_db",a),jQuery("#updraft-navtab-settings-content #updraft_startday_db").show()):(jQuery(".updraft_monthly_extra_words_updraft_startday_db").remove(),jQuery("#updraft-navtab-settings-content #updraft_startday_db").hide()),a==e?(jQuery("#updraft-navtab-settings-content .updraft_db_timings").hide(),0==t?jQuery("#updraft-navtab-settings-content .updraft_same_schedules_message").show():jQuery("#updraft-navtab-settings-content .updraft_same_schedules_message").hide()):(jQuery("#updraft-navtab-settings-content .updraft_same_schedules_message").hide(),0==t&&jQuery("#updraft-navtab-settings-content .updraft_db_timings").show())}function updraft_activejobs_delete(a){updraft_aborted_jobs[a]=1,jQuery("#updraft-jobid-"+a).closest(".updraft_row").addClass("deleting"),updraft_send_command("activejobs_delete",a,function(t){var e=jQuery("#updraft-jobid-"+a).closest(".updraft_row");e.addClass("deleting"),"Y"==t.ok?(jQuery("#updraft-jobid-"+a).html(t.m),e.remove(),jQuery("#updraft-backupnow-inpage-modal").dialog("isOpen")&&jQuery("#updraft-backupnow-inpage-modal").dialog("close"),updraft_show_success_modal({message:updraft_active_job_is_clone(a)?updraftlion.clone_backup_aborted:updraftlion.backup_aborted,icon:"no-alt",classes:"warning"})):"N"==t.ok?(e.removeClass("deleting"),alert(t.m)):(e.removeClass("deleting"),alert(updraftlion.unexpectedresponse),console.log(t))})}function updraftplus_diskspace_entity(e){jQuery("#updraft_diskspaceused_"+e).html(""+updraftlion.calculating+""),updraft_send_command("get_fragment",{fragment:"disk_usage",data:e},function(t){jQuery("#updraft_diskspaceused_"+e).html(t.output)},{type:"GET"})}function updraft_active_job_is_clone(e){return updraft_clone_jobs.filter(function(t){return t==e}).length}function updraft_iframe_modal(t,e){jQuery("#updraft-iframe-modal-innards").html(''),jQuery("#updraft-iframe-modal").dialog({title:e,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){jQuery(this).dialog("option","width",780),jQuery(this).dialog("option","minHeight",260),500r?jQuery(this).dialog("option","height",r):jQuery(this).dialog("option","height",jQuery(window).height()-30)}}).dialog("open")}function updraftplus_diskspace(){jQuery("#updraft-navtab-backups-content .updraft_diskspaceused").html(""+updraftlion.calculating+""),updraft_send_command("get_fragment",{fragment:"disk_usage",data:"updraft"},function(t){jQuery("#updraft-navtab-backups-content .updraft_diskspaceused").html(t.output)},{type:"GET"})}"undefined"!=typeof updraft_siteurl&&setInterval(function(){jQuery.get(updraft_siteurl+"/wp-cron.php")},21e4);lastlog_lastmessage="";function updraftplus_deletefromserver(t,e,a){updraft_send_command("updraft_download_backup",{stage:"delete",timestamp:t,type:e,findex:a=a||0},null,{action:"updraft_download_backup",nonce:updraft_download_nonce,nonce_key:"_wpnonce"})}function updraftplus_downloadstage2(t,e,a){location.href=ajaxurl+"?_wpnonce="+updraft_download_nonce+"×tamp="+t+"&type="+e+"&stage=2&findex="+a+"&action=updraft_download_backup"}function updraftplus_show_contents(t,e,a){updraft_html_modal('

              '+updraftlion.zip_file_contents_info+' -

              '+updraftlion.browse_download_link+'
              ',updraftlion.zip_file_contents,780,500),zip_files_jstree("zipbrowser",t,e,a)}function zip_files_jstree(a,r,n,o){jQuery("#updraft_zip_files_jstree").jstree({core:{multiple:!1,data:function(t,e){updraft_send_command("get_jstree_directory_nodes",{entity:a,node:t,timestamp:r,type:n,findex:o},function(t){t.hasOwnProperty("error")?alert(t.error):e.call(this,t.nodes)},{error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),jQuery("#updraft_zip_files_jstree").html('

              '+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft_zip_files_jstree").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["search","sort"]}),jQuery("#updraft_zip_files_jstree").on("ready.jstree",function(t,e){jQuery("#updraft-iframe-modal").dialog("option","title",updraftlion.zip_file_contents+": "+e.instance.get_node("#").children[0])});var t=!1;jQuery("#zip_files_jstree_search").on("keyup",function(){t&&clearTimeout(t),t=setTimeout(function(){var t=jQuery("#zip_files_jstree_search").val();jQuery("#updraft_zip_files_jstree").jstree(!0).search(t)},250)}),jQuery("#updraft_zip_files_jstree").on("changed.jstree",function(t,e){jQuery("#updraft_zip_path_text").text(e.node.li_attr.path),e.node.li_attr.size?(jQuery("#updraft_zip_size_text").text(e.node.li_attr.size),jQuery("#updraft_zip_download_item").show()):(jQuery("#updraft_zip_size_text").text(""),jQuery("#updraft_zip_download_item").hide())}),jQuery("#updraft_zip_download_item").on("click",function(t){t.preventDefault(),updraft_send_command("get_zipfile_download",{path:jQuery("#updraft_zip_path_text").text(),timestamp:r,type:n,findex:o},function(t){t.hasOwnProperty("error")?alert(t.error):t.hasOwnProperty("path")?location.href=ajaxurl+"?_wpnonce="+updraft_download_nonce+"×tamp="+r+"&type="+n+"&stage=2&findex="+o+"&filepath="+t.path+"&action=updraft_download_backup":alert(updraftlion.download_timeout)},{error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})})}function remove_updraft_downloader(t,e){jQuery(t).closest(".updraftplus_downloader").fadeOut().remove(),0==jQuery(".updraftplus_downloader_container_"+e+" .updraftplus_downloader").length&&jQuery(".updraftplus_downloader_container_"+e).remove()}function updraft_downloader(t,e,a,r,n,o,d){"string"!=typeof n&&(n=n.toString()),jQuery(".ud_downloadstatus").show();var n=n.split(","),o=o||e,s=jQuery("#updraft-navtab-backups-content .uddownloadform_"+a+"_"+e+"_"+n[0]).data("wp_nonce").toString();jQuery(".updraftplus_downloader_container_"+a).length||(jQuery(r).append('
              '),jQuery(".updraftplus_downloader_container_"+a).append(''+updraftlion.download+" "+a+" ("+o+"):"));for(var u=0;u'+a+l+':
              '+updraftlion.begunlooking+'
              '),jQuery(p).data("downloaderfor",{base:t,nonce:e,what:a,index:n[u]}),setTimeout(function(){updraft_activejobs_update(!0)},1500)),jQuery(p).data("lasttimebegan",(new Date).getTime())}return updraft_send_command("updraft_download_backup",{type:a,timestamp:e,findex:n},null,{action:"updraft_download_backup",nonce_key:"_wpnonce",nonce:s,timeout:1e4,async:d=!!d}),!1}function ud_parse_json(e,a){if(!(a=void 0!==a))try{return JSON.parse(e)}catch(t){console.log("UpdraftPlus: Exception when trying to parse JSON (1) - will attempt to fix/re-parse based upon first/last curly brackets"),console.log(e)}var r=e.indexOf("{"),n=e.lastIndexOf("}");if(-1 '+updraftlion.preparing_backup_files),updraft_send_command("restore_alldownloaded",{timestamp:jQuery("#updraft_restore_timestamp").val(),restoreopts:jQuery("#updraft_restore_form").serialize()},function(e,t,a){var r=null;jQuery("#updraft_restorer_restore_options").val(""),jQuery(".updraft-restore--next-step").prop("disabled",!1);try{if(null==e)jQuery("#updraft-restore-modal-stage2a").html(updraftlion.emptyresponse);else{var n=e.m;if(""!=e.w&&(n=n+'

              '+updraftlion.warnings+"

              "+e.w+"
              "),""!=e.e?n=n+'

              '+updraftlion.errors+"

              "+e.e+"
              ":updraft_restore_stage=3,e.hasOwnProperty("i")){try{(r=ud_parse_json(e.i)).hasOwnProperty("addui")&&(console.log("Further UI options are being displayed"),n+='
              '+r.addui+"
              ","object"==typeof JSON)&&"function"==typeof JSON.stringify&&(delete r.addui,e.i=JSON.stringify(r)),r.hasOwnProperty("php_max_input_vars")&&(php_max_input_vars=parseInt(r.php_max_input_vars)),r.hasOwnProperty("skipped_db_scan")&&(skipped_db_scan=parseInt(r.skipped_db_scan))}catch(t){console.log(t),console.log(e)}jQuery("#updraft_restorer_backup_info").val(e.i)}else jQuery("#updraft_restorer_backup_info").val();jQuery("#updraft-restore-modal-stage2a").html(n),jQuery(".updraft-restore--next-step").text(updraftlion.restore),0'+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft-restore-modal-stage2a").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}}))}function updraft_downloader_status(t,e,a,r){}function updraft_downloader_status_update(t,n){var o=0;return jQuery(t).each(function(t,e){var a,r;""!=e.base&&(a="."+(e.base+e.timestamp+"_"+e.what+"_"+e.findex),null!=e.e?(jQuery(a+" .raw").html(""+updraftlion.error+" "+e.e),console.log(e)):null!=e.p?(jQuery(a+"_st .dlfileprogress").width(e.p+"%"),null!=e.a&&0"+updraftlion.downloadtocomputer+' \t\t\t\t",e.hasOwnProperty("can_show_contents")&&e.can_show_contents&&(r+=' "),jQuery(a+" .raw").html(r),jQuery(a+"_st").remove()))):null!=e.m?jQuery(a+" .raw").html(e.m):(jQuery(a+" .raw").html(updraftlion.jsonnotunderstood+" ("+n+")"),o=1))}),o}function convert_numeric_size_to_text(t){return t<1024?t+" b":t<1048576?(t/1024).toFixed(2)+" KB":t<1073741824?(t/1048576).toFixed(2)+" MB":(t/1073741824).toFixed(2)+" GB"}function updraft_backupnow_go(t,e,a,r,n,o,d,s){var u,t={backupnow_nodb:t,backupnow_nofiles:e,backupnow_nocloud:a,backupnow_label:o,extradata:n};""!=r&&(t.onlythisfileentity=r),""!=d&&(t.onlythesetableentities=d),""!=s&&(t.only_these_cloud_services=s),t.always_keep=void 0!==n.always_keep?n.always_keep:0,delete n.always_keep,t.incremental=void 0!==n.incremental?n.incremental:0,delete n.incremental,t.db_anon_all=void 0!==n.db_anon&&void 0!==n.db_anon.all?n.db_anon.all:0,t.db_anon_non_staff=void 0!==n.db_anon&&void 0!==n.db_anon.non_staff?n.db_anon.non_staff:0,t.db_anon_wc_orders=void 0!==n.db_anon&&void 0!==n.db_anon.wc_orders?n.db_anon.wc_orders:0,void 0!==n.db_anon&&(delete n.db_anon.all,delete n.db_anon.non_staff,delete n.db_anon.wc_orders),jQuery(".updraft_requeststart").length||((u=jQuery('
              ').html(''+updraftlion.requeststart)).data("remove",!1),setTimeout(function(){u.data("remove",!0)},3e3),setTimeout(function(){u.remove()},75e3),jQuery("#updraft_activejobsrow").before(u)),updraft_activejobslist_backupnownonce_only=1,updraft_send_command("backupnow",t,function(t){t.hasOwnProperty("error")?(jQuery(".updraft_requeststart").remove(),alert(t.error)):(jQuery("#updraft_backup_started").html(t.m),t.hasOwnProperty("nonce")&&(updraft_backupnow_nonce=t.nonce,console.log("UpdraftPlus: ID of started job: "+updraft_backupnow_nonce)),setTimeout(function(){updraft_activejobs_update(!0)},500))})}function updraft_process_status_check(t,e,a){if(t.hasOwnProperty("fatal_error"))console.error(t.fatal_error_message),!0===updraftplus_activejobs_list_fatal_error_alert&&(updraftplus_activejobs_list_fatal_error_alert=!1,alert(this.alert_done+" "+t.fatal_error_message));else try{t.hasOwnProperty("l")&&(t.l?(jQuery("#updraft_lastlogmessagerow").show(),jQuery("#updraft_lastlogcontainer").html(t.l)):(jQuery("#updraft_lastlogmessagerow").hide(),jQuery("#updraft_lastlogcontainer").html("("+updraftlion.nothing_yet_logged+")"))),updraftlion.hasOwnProperty("hosting_restriction")&&updraftlion.hosting_restriction instanceof Array&&(updraftlion.hosting_restriction.length=0,t.hasOwnProperty("hosting_restriction"))&&(t.hosting_restriction&&t.hosting_restriction.includes("only_one_backup_per_month")&&updraftlion.hosting_restriction.push("only_one_backup_per_month"),t.hosting_restriction)&&t.hosting_restriction.includes("only_one_incremental_per_day")&&updraftlion.hosting_restriction.push("only_one_incremental_per_day"),jQuery("#updraft-wrap #updraft-navtab-settings-content").is(":hidden")||t.hasOwnProperty("automatic_updates")&&jQuery('input[name="updraft_auto_updates"]').prop("checked",t.automatic_updates);var r,n,o=-1,d=jQuery(".updraft_requeststart"),s=(t.j&&d.length&&d.data("remove")&&d.remove(),jQuery(t.j)),u=(s.find(".updraft_jobtimings").each(function(t,e){var a,e=jQuery(e);e.data("jobid")&&(a=e.data("jobid"),e=e.closest(".updraft_row"),updraft_aborted_jobs[a])&&e.hide()}),jQuery("#updraft_activejobsrow").html(s),s.find('.job-id[data-isclone="1"]'));0updraft_last_forced_when+1e5&&(updraft_last_forced_jobid!=a||e!=updraft_last_forced_resumption)&&(updraft_last_forced_resumption=e,updraft_last_forced_jobid=a,updraft_last_forced_when=timenow,console.log("UpdraftPlus: force resumption: job_id="+a+", resumption="+e),updraft_send_command("forcescheduledresumption",{resumption:e,job_id:a},function(t){console.log(t)},{json_parse:!1,alert_on_error:!1}))}),timenow=(new Date).getTime(),updraft_activejobs_nextupdate=timenow+18e4,1==updraft_page_is_visible&&"backups"==updraft_console_focussed_tab&&(updraft_activejobs_nextupdate=-1b1.text?1:-1:a1.icon"+updraftlion.error+" "+updraftlion.servererrorcode)):0<=a.url.search("subaction=restore_alldownloaded")&&jQuery("#updraft-restore-modal-stage2a").append("
              "+updraftlion.error+" "+updraftlion.servererrorcode+": "+r))}),jQuery(function(h){var e;h(document).on("udp/checkout/done",function(t,e){e.hasOwnProperty("product")&&"updraftpremium"===e.product&&"complete"===e.status&&(h(".premium-upgrade-purchase-success").show(),h(".updraft_feat_table").closest("section").hide(),h(".updraft_premium_cta__action").hide())}),h(".expertmode .advanced_settings_container .advanced_tools_button").on("click",function(){var t;t=h(this).attr("id"),h('.expertmode .advanced_settings_container .advanced_tools:not(".'+t+'")').hide(),h(".expertmode .advanced_settings_container .advanced_tools."+t).fadeIn("slow"),h(".expertmode .advanced_settings_container .advanced_tools_button:not(#"+t+")").removeClass("active"),h(".expertmode .advanced_settings_container .advanced_tools_button#"+t).addClass("active")}),jQuery.ui&&jQuery.ui.dialog&&jQuery.ui.dialog.prototype._allowInteraction&&(e=jQuery.ui.dialog.prototype._allowInteraction,jQuery.ui.dialog.prototype._allowInteraction=function(t){return!!jQuery(t.target).closest(".select2-dropdown").length||e.apply(this,arguments)}),h("#updraft-navtab-settings-content #remote-storage-holder").on("change keyup paste",".updraft_webdav_settings",function(){var t,e,a,r,n,o,d,s=h(this).attr("id");"string"==typeof s&&(s=s.match(/updraft_webdav_(.+)_(s-[^_]+)$/i))&&s[1]&&s[2]&&(t=s[2],e="","host"===(s=s[1].toLowerCase())?(h(".webdav-"+t+" .updraft_webdav_host_error").hide(),0<=h(this).val().indexOf("@")?h(this).val(h(this).val().replaceAll("@",encodeURIComponent("@"))):0<=h(this).val().indexOf("/")&&(h(this).val(h(this).val().replaceAll("/","")),h(".webdav-"+t+" .updraft_webdav_host_error").show())):"path"===s&&0==h(this).val().indexOf("/")&&h(this).val(h(this).val().replace(/^[\/]+/,"")),s=h("#updraft_webdav_webdav_"+t).val(),a=h("#updraft_webdav_host_"+t).val()||"",r=h("#updraft_webdav_user_"+t).val()||"",n=h("#updraft_webdav_pass_"+t).val()||"",o=h("#updraft_webdav_port_"+t).val()||"",d=h("#updraft_webdav_path_"+t).val()||"",n&&(e=n.replace(/./gi,"*")),r&&n&&(r+=":"),(r||n)&&a&&(e+="@",n+="@"),a&&o&&(a+=":"),d=d&&"/"+d,h("#updraft_webdav_url_"+t).val(s+r+n+a+o+d),h("#updraft_webdav_masked_url_"+t).val(s+r+e+a+o+d))}),h("div.ud-phpseclib-notice").on("click","button.notice-dismiss",function(t){t.stopImmediatePropagation(),updraft_send_command("dismiss_phpseclib_notice",null,function(t,e,a){t.hasOwnProperty("success")&&1===t.success||(console.log(t),alert(updraftlion.unexpectedresponse+" "+a))})}),h("#updraft-navtab-backups-content").on("click",".js--delete-selected-backups",function(t){t.preventDefault(),updraft_deleteallselected()}),h("#updraft-navtab-backups-content").on("click",".updraft_existing_backups .backup-select input",function(t){updraft_backups_selection.toggle(h(this).closest(".updraft_existing_backups_row"))}),h("#updraft-navtab-backups-content").on("click","#cb-select-all",function(t){h(this).is(":checked")?updraft_backups_selection.selectAll():updraft_backups_selection.deselectAll()}),h("#updraft-wrap").on("click","[id^=updraftplus_manual_authorisation_submit_]",function(t){t.preventDefault();var e,t=h(this).data("method"),a=h("#updraftplus_manual_authentication_data_"+t).val();h("#updraftplus_manual_authentication_error_"+t).text(),h("#updraft-wrap #updraftplus_manual_authorisation_template_"+t+" .updraftplus_spinner.spinner").addClass("visible"),h("#updraftplus_manual_authorisation_submit_"+t).prop("disabled",!0),updraft_send_command("manual_remote_storage_authentication",{method:e=t,auth_data:a},function(t){h("#updraft-wrap #updraftplus_manual_authorisation_template_"+e+" .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("result")&&"success"===t.result?(h("#updraft-wrap .updraftplus-top-menu").before(t.data),h("#updraft-wrap #updraftplus_manual_authorisation_template_"+e).parent().remove(),h("#updraft-wrap .updraft_authenticate_"+e).remove()):t.hasOwnProperty("result")&&"error"===t.result&&(h("#updraftplus_manual_authentication_error_"+e).text(t.data),h("#updraftplus_manual_authorisation_submit_"+e).prop("disabled",!1))})}),h("#updraft-navtab-backups-content").on("click",".js--select-all-backups",function(t){updraft_backups_selection.selectAll()}),h("#updraft-navtab-backups-content").on("click",".js--deselect-all-backups",function(t){updraft_backups_selection.deselectAll()}),h("#updraft-navtab-backups-content").on("click",".updraft_existing_backups .updraft_existing_backups_row",function(t){(t.ctrlKey||t.metaKey)&&(t.shiftKey?(void 0===updraft_backups_selection.firstMultipleSelectionIndex?(h(document).on("keyup.MultipleSelection",function(t){updraft_backups_selection.unregister_highlight_mode(),h(document).off(".MultipleSelection")}),updraft_backups_selection.select(this),h(this).addClass("range-selection-start"),updraft_backups_selection.register_highlight_mode()):(updraft_backups_selection.selectAllInBetween(this),jQuery("#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row").removeClass("range-selection")),updraft_backups_selection.firstMultipleSelectionIndex=this.rowIndex-1):updraft_backups_selection.toggle(this))}),updraft_backups_selection.checkSelectionStatus(),h("#updraft-navtab-addons-content .wrap").on("click",".updraftplus_com_login .ud_connectsubmit",function(t){t.preventDefault();var t=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_email").val(),e=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_password").val(),a=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_updates").is(":checked")?1:0,r=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_udc_connect").is(":checked")?1:0;n.submit({email:t,password:e,auto_update:a,auto_udc_connect:r})}),h("#updraft-navtab-addons-content .wrap").on("keydown",".updraftplus_com_login input",function(t){var e,a,r;13==t.which&&(t.preventDefault(),t=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_email").val(),e=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_password").val(),a=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_updates").is(":checked")?1:0,r=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_udc_connect").is(":checked")?1:0,n.submit({email:t,password:e,auto_update:a,auto_udc_connect:r}))}),h("#updraft-navtab-migrate-content").on("click",".updraftclone_show_step_1",function(t){h(".updraftplus-clone").addClass("opened"),h(".updraftclone_show_step_1").hide(),h(".updraft_migrate_widget_temporary_clone_stage1").show(),h(".updraft_migrate_widget_temporary_clone_stage0").hide()}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_temporary_clone_show_stage0",function(t){t.preventDefault(),h(".updraft_migrate_widget_temporary_clone_stage0").toggle()}),setup_migrate_tabs(),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content .close",function(t){h(".updraft_migrate_intro").show(),h(this).closest(".updraft_migrate_widget_module_content").hide()}),h("#updraft-navtab-migrate-content").on("click","#updraft_migrate_tab_alt .close",function(t){t.preventDefault(),h(".updraft_migrate_intro").show(),h("#updraft_migrate_tab_alt").html("").hide()}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_add_site--trigger",function(t){t.preventDefault(),h(".updraft_migrate_add_site").toggle()}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content .updraftplus_com_login .ud_connectsubmit",function(t){t.preventDefault();var t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_email").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_password").val(),a=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code").val(),r=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .temporary_clone_terms_and_conditions").is(":checked")?1:0;t&&e?o({form_data:{email:t,password:e,two_factor_code:a,consent:r}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html(""+updraftlion.error+" "+updraftlion.username_password_required).show()}),h("#updraft-navtab-migrate-content").on("keydown",".updraft_migrate_widget_module_content .updraftplus_com_login input",function(t){var e,a,r;13==t.which&&(t.preventDefault(),t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_email").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_password").val(),a=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code").val(),r=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .temporary_clone_terms_and_conditions").is(":checked")?1:0,t&&e?o({form_data:{email:t,password:e,two_factor_code:a,consent:r}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html(""+updraftlion.error+" "+updraftlion.username_password_required).show())}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content .updraftplus_com_key .ud_key_connectsubmit",function(t){t.preventDefault();var t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key #temporary_clone_options_key").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .temporary_clone_terms_and_conditions").is(":checked")?1:0;t?a({form_data:{clone_key:t,consent:e}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html(""+updraftlion.error+" "+updraftlion.clone_key_required).show()}),h("#updraft-navtab-migrate-content").on("keydown",".updraft_migrate_widget_module_content .updraftplus_com_key input",function(t){var e;13==t.which&&(t.preventDefault(),t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key #temporary_clone_options_key").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .temporary_clone_terms_and_conditions").is(":checked")?1:0,t?a({form_data:{clone_key:t,consent:e}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html(""+updraftlion.error+" "+updraftlion.clone_key_required).show())}),h("#updraft-navtab-migrate-content").on("change",".updraft_migrate_widget_module_content #updraftplus_clone_php_options",function(){var t=h(this).data("php_version");h(this).val() option").each(function(){var t=h(this).val();"starter"==t&&h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+t+'"]').prop("selected",!0),h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+t+'"]').prop("disabled",!1)});var a,t=h(this).find("option:selected");"current"!=h(t).data("nonce")&&"wp_only"!=h(t).data("nonce")&&(a=h(t).data("size"),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options > option").each(function(){var t=h(this).data("size"),e=h(this).val();if(!(t<=a))return h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+e+'"]').prop("selected",!0),!1;h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+e+'"]').prop("disabled",!0)}))}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content #updraft_migrate_createclone",function(t){t.preventDefault(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone").prop("disabled",!0),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html(""),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner").addClass("visible");var t=h(this).data("clone_id"),e=h(this).data("secret_token"),a=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_php_options").val(),r=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_wp_options").val(),n=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_region_options").val(),o=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options").val(),d=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_updraftclone_branch").val(),s=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_updraftplus_branch").val(),u=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_admin_login_options").is(":checked"),i=h("#updraftplus_clone_use_queue").is(":checked")?1:0,p=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_all").is(":checked")?1:0,l=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_non_staff").is(":checked")?1:0,_=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_wc_order_data").is(":checked")?1:0,c="current",f="current",g=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backup_options").length,m=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backup_options").find("option:selected"),g=(0!==g&&void 0!==m&&(c=m.data("nonce"),f=m.data("timestamp")),{form_data:{clone_id:t,secret_token:e,install_info:{php_version:a,wp_version:r,region:n,package:o,admin_only:u,updraftclone_branch:void 0===d?"":d,updraftplus_branch:void 0===s?"":s,use_queue:void 0===i?1:i}}}),m={db_anon_all:p,db_anon_non_staff:l,db_anon_wc_orders:_,clone_region:n};"wp_only"===c&&(g.form_data.install_info.wp_only=1),function t(r,n,o,d){var s="";"current"!=n&&updraft_send_command("whichdownloadsneeded",{updraftplus_clone:!0,timestamp:n},function(t){if(t.hasOwnProperty("downloads")&&(console.log("UpdraftPlus: items which still require downloading follow"),s=t.downloads,console.log(s)),0!=s.length)for(var e=0;e'+r.fatal_error_message+"

              ")):(r="updraft_send_command: error: "+e+" ("+a+")",h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html('

              '+r+"

              "),console.log(r),console.log(t))}});setTimeout(function(){var e,a;0!=s.length?t(r,n,o,d):(e=r.form_data.clone_id,a=r.form_data.secret_token,updraft_send_command("process_updraftplus_clone_create",r,function(t){try{h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone").prop("disabled",!1),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("status")&&"error"==t.status?h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html(updraftlion.error+" "+t.message).show():"success"===t.status&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage3").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage3").html(t.html),temporary_clone_timeout&&clearTimeout(temporary_clone_timeout),t.hasOwnProperty("secret_token")&&(a=t.secret_token),"wp_only"===o?(jQuery("#updraft_clone_progress .updraftplus_spinner.spinner").addClass("visible"),y(e,a)):(jQuery("#updraft_clone_progress .updraftplus_spinner.spinner").addClass("visible"),b(e,a,t.url,t.key,o,n,d)))}catch(t){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone").prop("disabled",!1),console.log("Error when processing the response of process_updraftplus_clone_create (as follows)"),console.log(t)}}))},5e3)}(g,f,c,m)});var n={};function o(t){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html("").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .updraftplus_spinner.spinner").addClass("visible"),updraft_send_command("process_updraftplus_clone_login",t,function(t){try{h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("status")&&"error"==t.status?(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html(t.message).show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code").val("")):(t.hasOwnProperty("tfa_enabled")&&1==t.tfa_enabled&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 input#temporary_clone_options_two_factor_code").trigger("focus")),"authenticated"===t.status&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 input#temporary_clone_options_two_factor_code").val(""),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").html(t.html),t.hasOwnProperty("clone_info"))&&t.clone_info.hasOwnProperty("expires_after")&&r(t.clone_info.expires_after))}catch(t){console.log(t)}})}function a(t){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html("").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .updraftplus_spinner.spinner").addClass("visible"),updraft_send_command("process_updraftplus_clone_login",t,function(t){try{h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("status")&&"error"==t.status?h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html(t.message).show():"authenticated"===t.status&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").html(t.html),t.hasOwnProperty("clone_info"))&&t.clone_info.hasOwnProperty("expires_after")&&r(t.clone_info.expires_after)}catch(t){console.log(t)}})}function r(t){temporary_clone_timeout=setTimeout(function(){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").html(""),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1").show()},1e3*t)}function b(t,e,a,r,n,o,d){t={updraftplus_clone_backup:1,backupnow_nodb:0,backupnow_nofiles:0,backupnow_nocloud:0,backupnow_label:"UpdraftClone",extradata:"",onlythisfileentity:"plugins,themes,uploads,others",clone_id:t,secret_token:e,clone_url:a,key:r,backup_nonce:n,backup_timestamp:o,db_anon_all:d.db_anon_all,db_anon_non_staff:d.db_anon_non_staff,db_anon_wc_orders:d.db_anon_wc_orders,clone_region:d.clone_region};updraft_activejobslist_backupnownonce_only=1,updraft_send_command("backupnow",t,function(t){jQuery("#updraft_clone_progress .updraftplus_spinner.spinner").removeClass("visible"),jQuery("#updraft_backup_started").html(t.m),t.hasOwnProperty("nonce")&&(updraft_backupnow_nonce=t.nonce,updraft_clone_jobs.push(updraft_backupnow_nonce),updraft_inpage_success_callback=function(){jQuery("#updraft_clone_activejobsrow").hide(),updraft_aborted_jobs[updraft_backupnow_nonce]?jQuery("#updraft_clone_progress").html(updraftlion.clone_backup_aborted):jQuery("#updraft_clone_progress").html(updraftlion.clone_backup_complete)},console.log("UpdraftPlus: ID of started job: "+updraft_backupnow_nonce)),updraft_activejobs_update(!0)})}function y(e,a){var t={clone_id:e,secret_token:a};setTimeout(function(){updraft_send_command("process_updraftplus_clone_poll",t,function(t){if(t.hasOwnProperty("status")){if("error"==t.status)return void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html(updraftlion.error+" "+t.message).show();if("success"===t.status&&t.hasOwnProperty("data")&&t.data.hasOwnProperty("wordpress_credentials"))return h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner").removeClass("visible"),void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_clone_progress").append("
              WordPress "+updraftlion.credentials+":
              "+updraftlion.username+": "+t.data.wordpress_credentials.username+"
              "+updraftlion.password+": "+t.data.wordpress_credentials.password)}else console.log(t);y(e,a)})},6e4)}function d(t){var e=Handlebars.compile(updraftlion.remote_storage_templates[t]),a={},r=(Object.assign(a,updraftlion.remote_storage_options[t].template_properties,updraftlion.remote_storage_options[t].default),updraftlion.remote_storage_methods[t]),r=(a.instance_id="s-"+(t=>{for(var e="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=0;r li").each(function(){jQuery(this).find("select").each(function(){jQuery(this).prop("disabled",!1)})})):(jQuery(this).parents("tr.updraftplusmethod").find("div.logic ul.rules > li").each(function(){jQuery(this).find("select").each(function(){jQuery(this).prop("disabled",!0)})}),jQuery(this).parents("tr.updraftplusmethod").find("div.logic").hide())}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("change","select[class='conditional_logic_operand']",function(){if(updraft_settings_form_changed=!0,load_save_button(),jQuery(this).parent().find("select:nth(2)").empty(),"day_of_the_week"===jQuery(this).val())for(var t=0;t').text(updraftlion.conditional_logic.day_of_the_week_options[t].value));else if("day_of_the_month"===jQuery(this).val())for(t=1;t<=31;t++)jQuery(this).parent().find("select:nth(2)").append(jQuery('').text(t))}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("click","div.conditional_remote_backup ul.rules li span",function(){updraft_settings_form_changed=!0,load_save_button();var t=jQuery(this).parents("ul.rules");jQuery(this).hasClass("remove-rule")&&jQuery(this).parent().slideUp(function(){jQuery(this).remove(),jQuery(t).find("> li").length<2&&jQuery("li:nth(0) span.remove-rule",t).remove()})}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("click","div.conditional_remote_backup input.add-new-rule",function(){var t=jQuery(this).parent().find("ul.rules");jQuery(t).find("> li").length<2&&jQuery(t).find("li:nth(0)").append(''),$cloned_item=jQuery(t).find("> li").last().clone(),jQuery($cloned_item).find("> select").each(function(){jQuery(this).prop("name",jQuery(this).prop("name").replace(/\[instance_conditional_logic\]\[rules\]\[[0-9]+\]/gi,"[instance_conditional_logic][rules]["+jQuery(t).data("rules")+"]"))}),jQuery(t).append($cloned_item),jQuery(t).data("rules",parseInt(jQuery(t).data("rules"))+1),jQuery($cloned_item).find('select[name*="[operand]"]').trigger("change")}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("click",".updraftplusmethod button.updraft-test-button",function(){var r=jQuery(this).data("method"),n=jQuery(this).data("instance_id");updraft_remote_storage_test(r,function(t,e,a){return"sftp"==r&&(a.hasOwnProperty("scp")&&a.scp?alert(updraftlion.settings_test_result.replace("%s","SCP")+" "+t.output):alert(updraftlion.settings_test_result.replace("%s","SFTP")+" "+t.output),t.hasOwnProperty("data")&&t.data&&t.data.hasOwnProperty("valid_md5_fingerprint")&&t.data.valid_md5_fingerprint&&h("#updraft_sftp_fingerprint_"+n).val(t.data.valid_md5_fingerprint),!0)},n)}),h("#updraft-navtab-settings-content select.updraft_interval, #updraft-navtab-settings-content select.updraft_interval_database").on("change",function(){updraft_check_same_times()}),h("#backupnow_includefiles_showmoreoptions").on("click",function(t){t.preventDefault(),h("#backupnow_includefiles_moreoptions").toggle()}),h("#backupnow_database_showmoreoptions").on("click",function(t){t.preventDefault(),h("#backupnow_database_moreoptions").toggle()}),h("#updraft-navtab-migrate-content").on("click","#backupnow_database_showmoreoptions",function(t){t.preventDefault(),h("#updraft-navtab-migrate-content #backupnow_database_moreoptions").toggle()}),h("#backupnow_db_anon_all").on("click",function(t){h("#backupnow_db_anon_non_staff").prop("checked")&&h("#backupnow_db_anon_non_staff").prop("checked",!1)}),h("#backupnow_db_anon_non_staff").on("click",function(t){h("#backupnow_db_anon_all").prop("checked")&&h("#backupnow_db_anon_all").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_migration_backupnow_db_anon_all",function(){h("#updraftplus_migration_backupnow_db_anon_non_staff").prop("checked")&&h("#updraftplus_migration_backupnow_db_anon_non_staff").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_migration_backupnow_db_anon_non_staff",function(){h("#updraftplus_migration_backupnow_db_anon_all").prop("checked")&&h("#updraftplus_migration_backupnow_db_anon_all").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_clone_backupnow_db_anon_all",function(){h("#updraftplus_clone_backupnow_db_anon_non_staff").prop("checked")&&h("#updraftplus_clone_backupnow_db_anon_non_staff").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_clone_backupnow_db_anon_non_staff",function(){h("#updraftplus_clone_backupnow_db_anon_all").prop("checked")&&h("#updraftplus_clone_backupnow_db_anon_all").prop("checked",!1)}),h("#updraft-backupnow-modal").on("click","#backupnow_includecloud_showmoreoptions",function(t){t.preventDefault(),h("#backupnow_includecloud_moreoptions").toggle()}),h("#updraft-navtab-backups-content").on("click","a.updraft_diskspaceused_update",function(t){t.preventDefault(),updraftplus_diskspace()}),h(".advanced_settings_content a.updraft_diskspaceused_update").on("click",function(t){t.preventDefault(),jQuery(".advanced_settings_content .updraft_diskspaceused").html(""+updraftlion.calculating+""),updraft_send_command("get_fragment",{fragment:"disk_usage",data:"updraft"},function(t){jQuery(".advanced_settings_content .updraft_diskspaceused").html(t.output)},{type:"GET"})}),h("#updraft-navtab-backups-content a.updraft_uploader_toggle").on("click",function(t){t.preventDefault(),h("#updraft-plupload-modal").slideToggle()}),h("#updraft-navtab-backups-content a.updraft_rescan_local").on("click",function(t){t.preventDefault(),updraft_updatehistory(1,0)}),h("#updraft-navtab-backups-content a.updraft_rescan_remote").on("click",function(t){t.preventDefault(),confirm(updraftlion.remote_scan_warning)&&updraft_updatehistory(1,1)}),h("#updraftplus-remote-rescan-debug").on("click",function(t){t.preventDefault(),updraft_updatehistory(1,1,1)}),jQuery("#updraft_reset_sid").on("click",function(t){t.preventDefault(),updraft_send_command("reset_site_id",null,function(t){jQuery("#updraft_show_sid").html(t)},{json_parse:!1})}),jQuery("#updraft-navtab-settings-content").on("input","form input:not('.udignorechange'), form textarea:not('.udignorechange')",function(t){updraft_settings_form_changed=!0,load_save_button()}),jQuery("#updraft-navtab-settings-content").on("change","form select",function(t){updraft_settings_form_changed=!0,load_save_button()}),jQuery("#updraft-navtab-settings-content").on("click","form input[type='submit']",function(t){updraft_settings_form_changed=!1});var s=180,t=(jQuery(".updraft-bigbutton").each(function(t,e){e=jQuery(e).width();s'+t.count_backups+"");for(e=t.deleted_timestamps.split(","),a=0;a '+updraftlion.maybe_downloading_entities),updraft_send_command("whichdownloadsneeded",{downloads:u,timestamp:n},function(t){if(h(".updraft-restore--next-step").prop("disabled",!1),t.hasOwnProperty("downloads")&&(console.log("UpdraftPlus: items which still require downloading follow"),r=t.downloads,console.log(r)),0==r.length)updraft_restorer_checkstage2(0);else for(var e=0;e'+r.fatal_error_message+"

              ")):(r="updraft_send_command: error: "+e+" ("+a+")",h("#updraft-restore-modal-stage2a").html('

              '+r+"

              "),console.log(r),console.log(t))}})}catch(t){console.log("UpdraftPlus: error (follows) when looking for items needing downloading"),console.log(t),alert(updraftlion.jsonnotunderstood)}})});else if(2==updraft_restore_stage)updraft_restorer_checkstage2(1);else if(3==updraft_restore_stage){var l=1;if(jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!0),h("#updraft_restoreoptions_ui input.required").each(function(t){var e,a;0!=l&&(""==(e=h(this).val())?(alert(updraftlion.pleasefillinrequired),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1),l=0):""!=h(this).attr("pattern")&&(a=h(this).attr("pattern"),new RegExp(a,"g").test(e)||(alert(h(this).data("invalidpattern")),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1),l=0)))}),1!=o||(r=0,jQuery('input[name="updraft_restore_tables_options[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1)}),0!=r)||skipped_db_scan){if(1==d&&(r=0,jQuery(".updraftplus_restore_plugins_options_container").length||(r=1),jQuery('input[name="updraft_restore_plugins_options[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1)}),0==r))alert(updraftlion.youdidnotselectany),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);else if(1==s&&(r=0,jQuery(".updraftplus_restore_themes_options_container").length||(r=1),jQuery('input[name="updraft_restore_themes_options[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1)}),0==r))alert(updraftlion.youdidnotselectany),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);else if(1==n&&(r=0,jQuery('input[name="updraft_include_more_index[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1,""==jQuery("#updraft_include_more_path_restore"+t).val())&&alert(updraftlion.emptyrestorepath)}),0==r))alert(updraftlion.youdidnotselectany),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);else if(l){var _=h("#updraft_restoreoptions_ui select, #updraft_restoreoptions_ui input").serialize();if(jQuery.each(["tables","plugins","themes"],function(t,a){jQuery.each(jQuery('input[name="updraft_restore_'+a+"_options[]").filter(function(t){return!1===jQuery(this).prop("checked")}),function(t,e){_+="&"+jQuery(e).attr("name")+"=udp-skip-"+a+"-"+jQuery(e).val()})}),console.log("Restore options: "+_),void 0!==php_max_input_vars){var t,e=_.split("&").length,a='

              '+updraftlion.warnings+'

                ';if(!php_max_input_vars&&1e3<=e)console.log("Restore options: "+e+" PHP max input vars not detected; using default: 1000");else if(php_max_input_vars&&php_max_input_vars<=e)return t="
              • "+updraftlion.php_max_input_vars_detected_warning+"
              • ",1!=jQuery("#updraft-restore-modal-stage2a .notice-warning").length?(a=a+t+"
              ",jQuery("#updraft_restoreoptions_ui").prepend(a)):jQuery("#updraft-restore-modal-stage2a #updraft_restore_warnings").append(t),console.log("Restore options: "+e+" PHP max input vars: "+php_max_input_vars),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1),void(php_max_input_vars=void 0)}h("#updraft_restorer_restore_options").val(_),h("#updraft-restore-modal-stage2a").html(updraftlion.restore_proceeding),h("#updraft_restore_form").trigger("submit"),updraft_restore_stage=4}}else alert(updraftlion.youdidnotselectany),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1)}}else alert(updraftlion.youdidnotselectany)}},p=h(".updraft_restore_main--activity").width(),t=(jQuery("#activity-full-log").on("click",function(){var t="1460px"==h(".updraft_restore_main").css("max-width")?"860px":"1460px",e=h(".updraft_restore_main--activity").width()==p?"100%":p+"px",a="600px"==h(".updraft_restore_main--activity").css("min-height")?"0px":"600px",r=h("#activity-full-log").attr("title")==updraftlion.restoreactivitylogscreenexit?updraftlion.restoreactivitylogfullscreen:updraftlion.restoreactivitylogscreenexit;h("#activity-full-log").toggleClass("dashicons-fullscreen-exit-alt"),h("#activity-full-log").attr("title",r),h(".updraft_restore_main--components").toggle("fast"),h(".updraft_restore_main--header").toggle("fast"),h(".updraft_restore_main--activity").animate({minHeight:a,width:e}),h(".updraft_restore_main").animate({maxWidth:t})}),jQuery("#updraft-iframe-modal").dialog({autoOpen:!1,height:500,width:780,modal:!0}),jQuery("#updraft-backupnow-inpage-modal").dialog({autoOpen:!1,modal:!0,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){h(this).dialog("option","width",580),h(this).dialog("option","minHeight",261),h(this).dialog("option","height",380)}}),{});t[updraftlion.backupnow]=function(){var t,e,a=jQuery("#backupnow_includedb").is(":checked")?0:1,r=jQuery("#backupnow_includefiles").is(":checked")?0:1,n=jQuery("#backupnow_includecloud").is(":checked")?0:1,o=jQuery("#backupnow_db_anon_all").is(":checked")?1:0,d=jQuery("#backupnow_db_anon_non_staff").is(":checked")?1:0,s=jQuery("#backupnow_db_anon_wc_order_data").is(":checked")?1:0,u=backupnow_whichtables_checked(""),i=jQuery("#always_keep").is(":checked")?1:0,p="incremental"==jQuery("#updraft-backupnow-modal").data("backup-type")?1:0;updraftlion.hosting_restriction.includes("only_one_backup_per_month")&&!p?alert(updraftlion.hosting_restriction_one_backup_permonth):updraftlion.hosting_restriction.includes("only_one_incremental_per_day")&&p?alert(updraftlion.hosting_restriction_one_incremental_perday):""==u&&0==a?(alert(updraftlion.notableschosen),jQuery("#backupnow_database_moreoptions").show()):("boolean"==typeof u&&(u=null),""==(t=backupnow_whichfiles_checked(""))&&0==r?(alert(updraftlion.nofileschosen),jQuery("#backupnow_includefiles_moreoptions").show()):""==(e=jQuery("input[name^='updraft_include_remote_service_']").serializeArray())&&0==n?(alert(updraftlion.nocloudserviceschosen),jQuery("#backupnow_includecloud_moreoptions").show()):("boolean"==typeof e&&(e=null),a&&r?alert(updraftlion.excludedeverything):(jQuery(this).dialog("close"),setTimeout(function(){jQuery("#updraft_lastlogmessagerow").fadeOut("slow",function(){jQuery(this).fadeIn("slow")})},1700),updraft_backupnow_go(a,r,n,t,{always_keep:i,incremental:p,db_anon:{all:o,non_staff:d,wc_orders:s}},jQuery("#backupnow_label").val(),u,e))))},t[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-backupnow-modal").dialog({autoOpen:!1,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){h(this).dialog("option","width",610),h(this).dialog("option","minHeight",300),h(this).dialog("option","height",472)},modal:!0,buttons:t,create:function(){h(this).closest(".ui-dialog").find(".ui-dialog-buttonpane .ui-button").first().addClass("js-tour-backup-now-button")}}),jQuery("#updraft-poplog").dialog({autoOpen:!1,modal:!0,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){h(this).dialog("option","width",860),h(this).dialog("option","minHeight",260),600'+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft_zip_files_jstree").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["sort"]}):"contain-clause"==t&&jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree({core:{multiple:!1,data:function(t,e){updraft_send_command("get_jstree_directory_nodes",{entity:"filebrowser",directories_only:1,node:t,path:jQuery("#updraft_exclude_modal_path").val(),findex:0,skip_root_node:0},function(t){t.hasOwnProperty("error")?alert(t.error):e.call(this,t.nodes)},{error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),jQuery("#updraft_zip_files_jstree").html('

              '+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft_zip_files_jstree").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["sort"]}),jQuery("#updraft_exclude_modal_main").slideUp(),jQuery(".updraft-exclude-panel").hide(),jQuery(".updraft-exclude-panel[data-panel="+t+"]").slideDown()}),jQuery(".updraft-exclude-modal-reset").on("click",function(t){t.preventDefault(),jQuery("#updraft_exclude_files_folders_jstree").jstree("destroy"),jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree("destroy"),jQuery("#updraft_exclude_extension_field").val(""),jQuery("#updraft_exclude_prefix_field").val(""),jQuery(".updraft-exclude-panel").slideUp(),jQuery("#updraft_exclude_modal_main").slideDown()}),jQuery(".updraft-exclude-submit").on("click",function(){var t,e="";switch(jQuery(this).data("panel")){case"file-dir":if(0==(t=jQuery("#updraft_exclude_files_folders_jstree").jstree("get_selected")).length)return void alert(updraftlion.exclude_select_file_or_folder_msg);var a=t[0],r=jQuery("#updraft_exclude_modal_path").val(),e=a="/"==(a="/"==(a=a.substr(0,r.length)==r?a.substr(r.length,a.length):a).charAt(0)?a.substr(1):a).charAt(a.length-1)?a.substr(0,a.length-1):a;break;case"extension":var n=jQuery("#updraft_exclude_extension_field").val();if(""==n)return void alert(updraftlion.exclude_type_ext_msg);if(!n.match(/^[0-9a-zA-Z]+$/))return void alert(updraftlion.exclude_ext_error_msg);e="ext:"+n;break;case"begin-with":n=jQuery("#updraft_exclude_prefix_field").val();if(""==n)return void alert(updraftlion.exclude_type_prefix_msg);if(!n.match(/^\s*[a-z-_\d,\s]+\s*$/i))return void alert(updraftlion.exclude_prefix_error_msg);e="prefix:"+n;break;case"contain-clause":if(0==(t=jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree("get_selected")).length)return void alert(updraftlion.exclude_select_folder_wildcards_msg);var n=jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container input").val(),o=(jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container input").val(""),jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container select").val());if(""==n)return void alert(updraftlion.exclude_contain_error_msg);jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container select option").eq(0).prop("selected",!0);a=t[0],r=jQuery("#updraft_exclude_modal_path").val();""!==(e=a="/"==(a="/"==(a=a.substr(0,r.length)==r?a.substr(r.length,a.length):a).charAt(0)?a.substr(1):a).charAt(a.length-1)?a.substr(0,a.length-1):a)&&(e+="/"),n=n.replace(/\*/g,"\\*"),"beginning"===o?e+=n+"*":"middle"===o?e+="*"+n+"*":"end"===o&&(e+="*"+n);break;default:return}var d,s=jQuery("#updraft_exclude_modal_for").val();updraft_is_unique_exclude_rule(e,s)&&(d='
              ',jQuery('.updraft_exclude_entity_container[data-include-backup-file="'+s+'"]').append(d),updraft_exclude_entity_update(s),jQuery("#updraft_exclude_modal").dialog("close"))}),jQuery("#updraft-navtab-settings-content .updraft-service").on("change",function(){var t=jQuery(this).val();jQuery("#updraft-navtab-settings-content .updraftplusmethod").hide(),jQuery("#updraft-navtab-settings-content ."+t).show()}),jQuery("#updraft-navtab-settings-content a.updraft_show_decryption_widget").on("click",function(t){t.preventDefault(),jQuery("#updraftplus_db_decrypt").val(jQuery("#updraft_encryptionphrase").val()),jQuery("#updraft-manualdecrypt-modal").slideToggle()}),jQuery("#updraftplus-phpinfo").on("click",function(t){t.preventDefault(),updraft_iframe_modal("phpinfo",updraftlion.phpinfo)}),jQuery("#updraftplus-rawbackuphistory").on("click",function(t){t.preventDefault(),updraft_iframe_modal("rawbackuphistory",updraftlion.raw)}),jQuery("#updraft-navtab-status").on("click",function(t){t.preventDefault(),updraft_open_main_tab("status"),updraft_page_is_visible=1,updraft_console_focussed_tab="status",updraft_activejobs_update(!0)}),jQuery("#updraft-navtab-expert").on("click",function(t){t.preventDefault(),updraft_open_main_tab("expert"),updraft_page_is_visible=1}),jQuery("#updraft-navtab-settings, #updraft-navtab-settings2, #updraft_backupnow_gotosettings").on("click",function(t){t.preventDefault(),jQuery(this).parents(".updraftmessage").remove(),jQuery("#updraft-backupnow-modal").dialog("close"),updraft_open_main_tab("settings"),updraft_page_is_visible=1}),jQuery("#updraft-navtab-addons").on("click",function(t){t.preventDefault(),jQuery(this).addClass("b#nav-tab-active"),updraft_open_main_tab("addons"),updraft_page_is_visible=1}),jQuery("#updraft-navtab-backups").on("click",function(t){t.preventDefault(),updraft_console_focussed_tab="backups",updraft_historytimertoggle(1),updraft_open_main_tab("backups")}),jQuery("#updraft-navtab-migrate").on("click",function(t){t.preventDefault(),jQuery("#updraft_migrate_tab_alt").html("").hide(),updraft_open_main_tab("migrate"),updraft_page_is_visible=1,jQuery("#updraft_migrate .updraft_migrate_widget_module_content").is(":visible")||jQuery(".updraft_migrate_intro").show()}),"migrate"==updraftlion.tab&&jQuery("#updraft-navtab-migrate").trigger("click"),updraft_send_command("ping",null,function(t,e){"success"==e&&"pong"!=t&&0<=t.indexOf("pong")&&(jQuery("#updraft-navtab-backups-content .ud-whitespace-warning").show(),console.log("UpdraftPlus: Extra output warning: response (which should be just (string)'pong') follows."),console.log(t))},{json_parse:!1,type:"GET"});try{"undefined"!=typeof updraft_plupload_config&&((u=new plupload.Uploader(updraft_plupload_config)).bind("Init",function(t){var e=jQuery("#plupload-upload-ui");t.features.dragdrop?(e.addClass("drag-drop"),jQuery("#drag-drop-area").on("dragover.wp-uploader",function(){e.addClass("drag-over")}).on("dragleave.wp-uploader, drop.wp-uploader",function(){e.removeClass("drag-over")})):(e.removeClass("drag-drop"),jQuery("#drag-drop-area").off(".wp-uploader"))}),u.init(),u.bind("FilesAdded",function(t,e){h("#updraft-plupload-modal").is(":hidden")&&h("#updraft-plupload-modal").slideToggle(),plupload.each(e,function(t){if(!/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+([0-9]+?)?(\.(zip|gz|gz\.crypt))?$/i.test(t.name)&&!/^log\.([0-9a-f]{12})\.txt$/.test(t.name)){for(var e=!1,a=0;a"+t.name+"

              "+updraftlion.notarchive2),jQuery("#updraft-message-modal").dialog("open")):alert(t.name+": "+updraftlion.notarchive),void u.removeFile(t)}jQuery("#filelist").append('
              '+t.name+" ("+plupload.formatSize(0)+"/"+plupload.formatSize(t.size)+')
              ')}),t.refresh(),t.start()}),u.bind("UploadProgress",function(t,e){jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"),jQuery("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100))),e.size==e.loaded&&(jQuery("#"+e.id).html('
              '+e.name+" ("+plupload.formatSize(parseInt(e.size*e.percent/100))+"/"+plupload.formatSize(e.size)+") - "+updraftlion.complete+"
              "),jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"))}),u.bind("Error",function(t,e){console.log(e),a="-200"==e.code?"\n"+updraftlion.makesure2:updraftlion.makesure;var a,r=updraftlion.uploaderr+" (code "+e.code+") : "+e.message;e.hasOwnProperty("status")&&e.status&&(r+=" ("+updraftlion.http_code+" "+e.status+")"),e.hasOwnProperty("response")&&(console.log("UpdraftPlus: plupload error: "+e.response),e.response.length<100)&&(r+=" "+updraftlion.error+" "+e.response+"\n"),r+=" "+a,alert(r)}),u.bind("FileUploaded",function(t,e,a){if("200"==a.status)try{(resp=ud_parse_json(a.response)).e?alert(updraftlion.uploaderror+" "+resp.e):resp.dm?(alert(resp.dm),updraft_updatehistory(1,0)):resp.m?updraft_updatehistory(1,0):alert("Unknown server response: "+a.response)}catch(t){console.log(a),alert(updraftlion.jsonnotunderstood)}else alert("Unknown server response status: "+a.code),console.log(a)}))}catch(t){console.log(t)}function l(t){(params={uri:jQuery("#updraftplus_httpget_uri").val()}).curl=t,updraft_send_command("httpget",params,function(t){t.e&&alert(t.e),t.r?jQuery("#updraftplus_httpget_results").html("
              "+t.r+"
              "):console.log(t)},{type:"GET"})}function _(t,e,a){updraft_restore_setoptions(t),e.toString().match(/^[0-9]+$/i)&&jQuery("#updraft_restore_timestamp").val(e),jQuery(".updraft_restore_date").text(a),updraft_restore_stage=1,i.open(),updraft_activejobs_update(!0)}function c(t){t=t.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");t=new RegExp("[\\?&]"+t+"=([^&#]*)").exec(window.location.href);return null==t?"":decodeURIComponent(t[1].replace(/\+/g," "))}jQuery("#updraftplus_httpget_go").on("click",function(t){t.preventDefault(),l(0)}),jQuery("#updraftplus_httpget_gocurl").on("click",function(t){t.preventDefault(),l(1)}),jQuery("#updraftplus_callwpaction_go").on("click",function(t){t.preventDefault(),updraft_send_command("call_wordpress_action",params={wpaction:jQuery("#updraftplus_callwpaction").val()},function(t){t.e?alert(t.e):t.s||(t.r?jQuery("#updraftplus_callwpaction_results").html(t.r):(console.log(t),alert(updraftlion.jsonnotunderstood)))})}),jQuery("#updraft_activejobs_table, #updraft-navtab-migrate-content").on("click",".updraft_jobinfo_delete",function(t){t.preventDefault();t=jQuery(this).data("jobid");t?(h(this).addClass("disabled"),updraft_activejobs_delete(t)):console.log("UpdraftPlus: A stop job link was clicked, but the Job ID could not be found")}),jQuery("#updraft_activejobs_table, #updraft-navtab-backups-content .updraft_existing_backups, #updraft-backupnow-inpage-modal, #updraft-navtab-migrate-content").on("click",".updraft-log-link",function(t){t.preventDefault();var t=jQuery(this).data("fileid"),e=jQuery(this).data("jobid");t?updraft_popuplog(t):e?updraft_popuplog(e):console.log("UpdraftPlus: A log link was clicked, but the Job ID could not be found")}),jQuery("#updraft-navtab-backups-content .updraft_existing_backups").on("click","button.choose-components-button",function(t){_(jQuery(this).data("entities"),jQuery(this).data("backup_timestamp"),jQuery(this).data("showdata"))}),"initiate_restore"==c("udaction")&&_(c("entities"),c("backup_timestamp"),c("showdata"));t={};function f(){var t=jQuery(".db-search").val().toLowerCase();jQuery(".db-size-content tr").filter(function(){jQuery(this).toggle(-1
              '+updraftlion.loading+"
              ",updraftlion.raw,780,500)}),jQuery("#backupnow_database_moreoptions").on("click","div.backupnow-db-tables > a",function(t){t.preventDefault(),jQuery("> input",jQuery(this).parents("div.backupnow-db-tables")).prop("checked",!1),jQuery(this).hasClass("backupnow-select-all-table")?jQuery("> input",jQuery(this).parents("div.backupnow-db-tables")).prop("checked",!0):jQuery(this).hasClass("backupnow-select-all-this-site")&&jQuery("> input",jQuery(this).parents("div.backupnow-db-tables")).not("[data-non_wp_table]").prop("checked",!0)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_select_all_themes",function(t){t.preventDefault(),jQuery(".updraft_restore_themes_options").prop("checked",!0)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_deselect_all_themes",function(t){t.preventDefault(),jQuery(".updraft_restore_themes_options").prop("checked",!1)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_select_all_plugins",function(t){t.preventDefault(),jQuery(".updraft_restore_plugins_options").prop("checked",!0)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_deselect_all_plugins",function(t){t.preventDefault(),jQuery(".updraft_restore_plugins_options").prop("checked",!1)}),jQuery(".updraftmessage.admin-warning-litespeed").on("click",".notice-dismiss",function(t){t.preventDefault(),updraft_send_command("dismiss_admin_warning_litespeed")}),jQuery(".updraftmessage.admin-warning-pclzip").on("click",".notice-dismiss",function(t){t.preventDefault(),updraft_send_command("dismiss_admin_warning_pclzip")}),jQuery("#db_size.advanced_tools_button, .db-size-refresh").on("click",function(t){t.preventDefault();var e=jQuery(".advanced_settings_content .advanced_tools.db_size .total-size"),a=jQuery(".advanced_settings_content .advanced_tools.db_size tbody.db-size-content");jQuery(this).hasClass("advanced_tools_button")&&""!=a.html()||(a.html(""),updraft_send_command("db_size",1,function(t){e.html(t.size),a.html(t.html),f()}))}),jQuery(".db-search").on("input",function(){f()}),jQuery(".db-search-clear").on("click",function(t){t.preventDefault(),jQuery(".db-search").val(""),f()}),jQuery(".updraft_restore_main").on("click","button#updraft_restore_abort",function(t){t.preventDefault(),jQuery("#updraft_restore_continue_action").val("updraft_restore_abort"),jQuery(this).parent("form").trigger("submit")}),jQuery("#cron_events.advanced_tools_button").on("click",function(t){t.preventDefault();var r=jQuery(".advanced_settings_content .advanced_tools.cron_events tbody");r.html(""),updraft_send_command("get_cron_events",1,function(t){h.each(t,function(t,e){var a="";e.overdue&&(a=''),r.append(h("").append(h(a).text(e.hook),h("").text(e.name))),e.overdue?r.find("tr:last").append('
              '):r.find("tr:last").append("
              "),r.find("tr:last td:last span").not(".dashicons").first().text(e.time),r.find("tr:last td:last span").last().text(e.interval)})})})}),jQuery(function(n){var o="#updraft-navtab-settings-content ";n(o+"#remote-storage-holder").on("click",".updraftvault_backtostart",function(t){t.preventDefault(),n(o+"#updraftvault_settings_showoptions").slideUp(),n(o+"#updraftvault_settings_connect").slideUp(),n(o+"#updraftvault_settings_connected").slideUp(),n(o+"#updraftvault_settings_default").slideDown()}),n(o).on("keypress","#updraftvault_settings_connect input",function(t){if(13==t.which)return n(o+"#updraftvault_connect_go").trigger("click"),!1}),n(o+"#remote-storage-holder").on("click","#updraftvault_recountquota",function(t){t.preventDefault(),n(o+"#updraftvault_recountquota").html(updraftlion.counting);try{updraft_send_command("vault_recountquota",{instance_id:n("#updraftvault_settings_connect").data("instance_id")},function(t){n(o+"#updraftvault_recountquota").html(updraftlion.updatequotacount),t.hasOwnProperty("html")&&(n(o+"#updraftvault_settings_connected").html(t.html),t.hasOwnProperty("connected"))&&(t.connected?(n(o+"#updraftvault_settings_default").hide(),n(o+"#updraftvault_settings_connected")):(n(o+"#updraftvault_settings_connected").hide(),n(o+"#updraftvault_settings_default"))).show()},{error_callback:function(t,e,a,r){n(o+"#updraftvault_recountquota").html(updraftlion.updatequotacount),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})}catch(t){n(o+"#updraftvault_recountquota").html(updraftlion.updatequotacount),console.log(t)}}),n(o+"#remote-storage-holder").on("click","#updraftvault_disconnect",function(t){t.preventDefault(),n(o+"#updraftvault_disconnect").html(updraftlion.disconnecting);try{updraft_send_command("vault_disconnect",{immediate_echo:!0,instance_id:n("#updraftvault_settings_connect").data("instance_id")},function(t){n(o+"#updraftvault_disconnect").html(updraftlion.disconnect),t.hasOwnProperty("html")&&(n(o+"#updraftvault_settings_connected").html(t.html).slideUp(),n(o+"#updraftvault_settings_default").slideDown())},{error_callback:function(t,e,a,r){n(o+"#updraftvault_disconnect").html(updraftlion.disconnect),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})}catch(t){n(o+"#updraftvault_disconnect").html(updraftlion.disconnect),console.log(t)}}),n(o+"#remote-storage-holder").on("click","#updraftvault_connect",function(t){t.preventDefault(),n(o+"#updraftvault_settings_default").slideUp(),n(o+"#updraftvault_settings_connect").slideDown()}),n(o+"#remote-storage-holder").on("click","#updraftvault_showoptions",function(t){t.preventDefault(),n(o+"#updraftvault_settings_default").slideUp(),n(o+"#updraftvault_settings_showoptions").slideDown()}),n("#remote-storage-holder").on("keyup",".updraftplus_onedrive_folder_input",function(t){var e=n(this).val(),a=n(this).closest("td");0==e.indexOf("https:")||0==e.indexOf("http:")?a.find(".onedrive_folder_error").length||a.append('
              '+updraftlion.onedrive_folder_url_warning+"
              "):a.find(".onedrive_folder_error").slideUp("slow",function(){a.find(".onedrive_folder_error").remove()})}),n(o+"#remote-storage-holder").on("click","#updraftvault_connect_go",function(t){return n(o+"#updraftvault_connect_go").html(updraftlion.connecting),updraft_send_command("vault_connect",{email:n("#updraftvault_email").val(),pass:n("#updraftvault_pass").val(),instance_id:n("#updraftvault_settings_connect").data("instance_id")},function(t,e,a){n(o+"#updraftvault_connect_go").html(updraftlion.connect),t.hasOwnProperty("e")?(updraft_html_modal('

              '+updraftlion.errornocolon+"

              "+t.e+"

              ",updraftlion.disconnect,400,250),t.hasOwnProperty("code")&&"no_quota"==t.code&&(n(o+"#updraftvault_settings_connect").slideUp(),n(o+"#updraftvault_settings_default").slideDown())):t.hasOwnProperty("connected")&&t.connected&&t.hasOwnProperty("html")?(n(o+"#updraftvault_settings_connect").slideUp(),n(o+"#updraftvault_settings_connected").html(t.html).slideDown()):(console.log(t),alert(updraftlion.unexpectedresponse+" "+a))},{error_callback:function(t,e,a,r){n(o+"#updraftvault_connect_go").html(updraftlion.connect),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}}),!1}),n("#updraft-iframe-modal").on("change","#always_keep_this_backup",function(){var e=n(this).data("backup_key");updraft_send_command("always_keep_this_backup",{backup_key:e,always_keep:n(this).is(":checked")?1:0},function(t){t.hasOwnProperty("rawbackup")&&(jQuery("#updraft-iframe-modal").dialog("close"),jQuery(".updraft_existing_backups_row_"+e+" .updraft_existingbackup_date").data("rawbackup",t.rawbackup),updraft_html_modal(jQuery(".updraft_existing_backups_row_"+e+" .updraft_existingbackup_date").data("rawbackup"),updraftlion.raw,780,500))})})}),jQuery(function(t){try{"undefined"!=typeof updraft_plupload_config2&&((a=new plupload.Uploader(updraft_plupload_config2)).bind("Init",function(t){var e=jQuery("#plupload-upload-ui2");t.features.dragdrop?(e.addClass("drag-drop"),jQuery("#drag-drop-area2").on("dragover.wp-uploader",function(){e.addClass("drag-over")}).on("dragleave.wp-uploader, drop.wp-uploader",function(){e.removeClass("drag-over")})):(e.removeClass("drag-drop"),jQuery("#drag-drop-area2").off(".wp-uploader"))}),a.init(),a.bind("FilesAdded",function(t,e){plupload.each(e,function(t){/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?\.(gz\.crypt)$/i.test(t.name)?jQuery("#filelist2").append('
              '+t.name+" ("+plupload.formatSize(0)+"/"+plupload.formatSize(t.size)+')
              '):(alert(t.name+": "+updraftlion.notdba),a.removeFile(t))}),t.refresh(),t.start()}),a.bind("UploadProgress",function(t,e){jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"),jQuery("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100)))}),a.bind("Error",function(t,e){err_makesure="-200"==e.code?"\n"+updraftlion.makesure2:updraftlion.makesure,alert(updraftlion.uploaderr+" (code "+e.code+") : "+e.message+" "+err_makesure)}),a.bind("FileUploaded",function(t,e,a){"200"==a.status?"ERROR:"==a.response.substring(0,6)?alert(updraftlion.uploaderror+" "+a.response.substring(6)):"OK:"==a.response.substring(0,3)?(bkey=a.response.substring(3),jQuery("#"+e.id+" .fileprogress").hide(),jQuery("#"+e.id).append(updraftlion.uploaded+' '+updraftlion.followlink+" "+updraftlion.thiskey+" "+jQuery("#updraftplus_db_decrypt").val().replace(/&/g,"&").replace(//g,">"))):alert(updraftlion.unknownresp+" "+a.response):alert(updraftlion.ukrespstatus+" "+a.code)}))}catch(t){console.log(t)}var a;if(jQuery("#updraft-hidethis").remove(),Handlebars.registerHelper("ifeq",function(t,e,a){return(t="string"!=typeof t&&null!=t?t.toString():t)===(e="string"!=typeof e&&null!=e?e.toString():e)?a.fn(this):a.inverse(this)}),Handlebars.registerHelper("maskPassword",function(t){return t.replace(/./gi,"*")}),Handlebars.registerHelper("encodeURIComponent",function(t){return encodeURIComponent(t)}),Handlebars.registerHelper("ifCond",function(t,e,a,r){switch(e){case"==":return t==a?r.fn(this):r.inverse(this);case"===":return t===a?r.fn(this):r.inverse(this);case"!=":return t!=a?r.fn(this):r.inverse(this);case"!==":return t!==a?r.fn(this):r.inverse(this);case"<":return t":return a=":return a<=t?r.fn(this):r.inverse(this);case"&&":return t&&a?r.fn(this):r.inverse(this);case"||":return t||a?r.fn(this):r.inverse(this);case"typeof":return t===typeof a?r.fn(this):r.inverse(this);case"not_typeof":return t!==typeof a?r.fn(this):r.inverse(this);default:return r.inverse(this)}}),Handlebars.registerHelper("for",function(t,e,a,r){for(var n="",o=t;o \t\t\t \t\t\t \t\t\t\t

              \t\t\t\t\t \t\t\t\t

              \t\t\t \t\t"}),t("#remote-storage-holder").length){var e,r="",n=["default","template_properties"];for(e in updraftlion.remote_storage_templates)if(void 0!==updraftlion.remote_storage_options[e]&&n.length'+jQuery(this).html()+"

              "),e=!0}),e&&((t={})[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-authenticate-modal").dialog({autoOpen:!0,modal:!0,resizable:!1,draggable:!1,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){o(this).dialog("option","width",860),o(this).dialog("option","height",260)},buttons:t}).dialog("open"))}(new Image).src=updraftlion.ud_url+"/images/notices/updraft_logo.png",o("#updraft-navtab-settings-content input.updraft_include_entity").on("change",function(t){var e=o(this).attr("id"),a=o(this).is(":checked");o("#backupnow_files_"+e).prop("checked",a)}),o("#updraftplus-settings-save").on("click",function(t){t.preventDefault(),o.blockUI({css:{width:"300px",border:"none","border-radius":"10px",left:"calc(50% - 150px)",padding:"20px"},message:'

              '+updraftlion.saving+"
              "}),updraft_send_command("savesettings",{settings:a("string"),updraftplus_version:updraftlion.updraftplus_version},function(t,e,a){r(t,a),o("#updraft-wrap .fade").delay(6e3).fadeOut(2e3),window.updraft_main_tour&&!window.updraft_main_tour.canceled?(window.updraft_main_tour.show("settings_saved"),n()):o("html, body").animate({scrollTop:o("#updraft-wrap").offset().top},1e3,function(){n()}),o.unblockUI()},{action:"updraft_savesettings",error_callback:function(t,e,a,r){o.unblockUI(),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))},nonce:updraftplus_settings_nonce})}),o("#updraftplus-settings-export").on("click",function(){var t,e;updraft_settings_form_changed&&alert(updraftlion.unsaved_settings_export),t=a("object"),e=new Date,t=JSON.stringify({version:"1.12.40",epoch_date:e.getTime(),local_date:e.toLocaleString(),network_site_url:updraftlion.network_site_url,data:t}),(e=document.body.appendChild(document.createElement("a"))).setAttribute("download",updraftlion.export_settings_file_name),e.setAttribute("style","display:none;"),e.setAttribute("href","data:text/json;charset=UTF-8,"+encodeURIComponent(t)),e.click()}),o("#updraftplus-settings-import").on("click",function(){o.blockUI({css:{width:"300px",border:"none","border-radius":"10px",left:"calc(50% - 150px)",padding:"20px"},message:'

              '+updraftlion.importing+"
              "});var t,e=document.getElementById("import_settings");0==e.files.length?(alert(updraftlion.import_select_file),o.unblockUI()):(e=e.files[0],(t=new FileReader).onload=function(){var t,e=this.result;try{t=ud_parse_json(e)}catch(t){return void(o.unblockUI(),jQuery("#import_settings").val(""),console.log(e),console.log(t),alert(updraftlion.import_invalid_json_file))}window.confirm(updraftlion.importing_data_from+" "+t.network_site_url+"\n"+updraftlion.exported_on+" "+t.local_date+"\n"+updraftlion.continue_import)?updraft_send_command("importsettings",{settings:JSON.stringify(t.data),updraftplus_version:updraftlion.updraftplus_version},function(t,e,a){t=r(t);!t.hasOwnProperty("saved")||t.saved?(updraft_settings_form_changed=!1,location.replace(updraftlion.updraft_settings_url)):(o.unblockUI(),t.hasOwnProperty("error_message")&&t.error_message&&alert(t.error_message))},{action:"updraft_importsettings",nonce:updraftplus_settings_nonce,error_callback:function(t,e,a,r){o.unblockUI(),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),console.log(t),alert(r))}}):o.unblockUI()},t.readAsText(e))}),o(".udp-replace-with-iframe--js").on("click",function(t){t.preventDefault();t=o(this).prop("href");o(''),jQuery("#updraft-iframe-modal").dialog({title:e,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){jQuery(this).dialog("option","width",780),jQuery(this).dialog("option","minHeight",260),500r?jQuery(this).dialog("option","height",r):jQuery(this).dialog("option","height",jQuery(window).height()-30)}}).dialog("open")}function updraftplus_diskspace(){jQuery("#updraft-navtab-backups-content .updraft_diskspaceused").html(""+updraftlion.calculating+""),updraft_send_command("get_fragment",{fragment:"disk_usage",data:"updraft"},function(t){jQuery("#updraft-navtab-backups-content .updraft_diskspaceused").html(t.output)},{type:"GET"})}"undefined"!=typeof updraft_siteurl&&setInterval(function(){jQuery.get(updraft_siteurl+"/wp-cron.php")},21e4);lastlog_lastmessage="";function updraftplus_deletefromserver(t,e,a){updraft_send_command("updraft_download_backup",{stage:"delete",timestamp:t,type:e,findex:a=a||0},null,{action:"updraft_download_backup",nonce:updraft_download_nonce,nonce_key:"_wpnonce"})}function updraftplus_downloadstage2(t,e,a){location.href=ajaxurl+"?_wpnonce="+updraft_download_nonce+"×tamp="+t+"&type="+e+"&stage=2&findex="+a+"&action=updraft_download_backup"}function updraftplus_show_contents(t,e,a){updraft_html_modal('

              '+updraftlion.zip_file_contents_info+' -

              '+updraftlion.browse_download_link+'
              ',updraftlion.zip_file_contents,780,500),zip_files_jstree("zipbrowser",t,e,a)}function zip_files_jstree(a,r,n,o){jQuery("#updraft_zip_files_jstree").jstree({core:{multiple:!1,data:function(t,e){updraft_send_command("get_jstree_directory_nodes",{entity:a,node:t,timestamp:r,type:n,findex:o},function(t){t.hasOwnProperty("error")?alert(t.error):e.call(this,t.nodes)},{error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),jQuery("#updraft_zip_files_jstree").html('

              '+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft_zip_files_jstree").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["search","sort"]}),jQuery("#updraft_zip_files_jstree").on("ready.jstree",function(t,e){jQuery("#updraft-iframe-modal").dialog("option","title",updraftlion.zip_file_contents+": "+e.instance.get_node("#").children[0])});var t=!1;jQuery("#zip_files_jstree_search").on("keyup",function(){t&&clearTimeout(t),t=setTimeout(function(){var t=jQuery("#zip_files_jstree_search").val();jQuery("#updraft_zip_files_jstree").jstree(!0).search(t)},250)}),jQuery("#updraft_zip_files_jstree").on("changed.jstree",function(t,e){jQuery("#updraft_zip_path_text").text(e.node.li_attr.path),e.node.li_attr.size?(jQuery("#updraft_zip_size_text").text(e.node.li_attr.size),jQuery("#updraft_zip_download_item").show()):(jQuery("#updraft_zip_size_text").text(""),jQuery("#updraft_zip_download_item").hide())}),jQuery("#updraft_zip_download_item").on("click",function(t){t.preventDefault(),updraft_send_command("get_zipfile_download",{path:jQuery("#updraft_zip_path_text").text(),timestamp:r,type:n,findex:o},function(t){t.hasOwnProperty("error")?alert(t.error):t.hasOwnProperty("path")?location.href=ajaxurl+"?_wpnonce="+updraft_download_nonce+"×tamp="+r+"&type="+n+"&stage=2&findex="+o+"&filepath="+t.path+"&action=updraft_download_backup":alert(updraftlion.download_timeout)},{error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})})}function remove_updraft_downloader(t,e){jQuery(t).closest(".updraftplus_downloader").fadeOut().remove(),0==jQuery(".updraftplus_downloader_container_"+e+" .updraftplus_downloader").length&&jQuery(".updraftplus_downloader_container_"+e).remove()}function updraft_downloader(t,e,a,r,n,o,d){"string"!=typeof n&&(n=n.toString()),jQuery(".ud_downloadstatus").show();var n=n.split(","),o=o||e,u=jQuery("#updraft-navtab-backups-content .uddownloadform_"+a+"_"+e+"_"+n[0]).data("wp_nonce").toString();jQuery(".updraftplus_downloader_container_"+a).length||(jQuery(r).append('
              '),jQuery(".updraftplus_downloader_container_"+a).append(''+updraftlion.download+" "+a+" ("+o+"):"));for(var s=0;s'+a+l+':
              '+updraftlion.begunlooking+'
              '),jQuery(p).data("downloaderfor",{base:t,nonce:e,what:a,index:n[s]}),setTimeout(function(){updraft_activejobs_update(!0)},1500)),jQuery(p).data("lasttimebegan",(new Date).getTime())}return updraft_send_command("updraft_download_backup",{type:a,timestamp:e,findex:n},function(t){},{action:"updraft_download_backup",nonce_key:"_wpnonce",nonce:u,timeout:1e4,async:d=!!d}),!1}function ud_parse_json(e,a){if(!(a=void 0!==a))try{return JSON.parse(e)}catch(t){console.log("UpdraftPlus: Exception when trying to parse JSON (1) - will attempt to fix/re-parse based upon first/last curly brackets"),console.log(e)}var r=e.indexOf("{"),n=e.lastIndexOf("}");if(-1 '+updraftlion.preparing_backup_files),updraft_send_command("restore_alldownloaded",{timestamp:jQuery("#updraft_restore_timestamp").val(),restoreopts:jQuery("#updraft_restore_form").serialize()},function(e,t,a){var r=null;jQuery("#updraft_restorer_restore_options").val(""),jQuery(".updraft-restore--next-step").prop("disabled",!1);try{if(null==e)return void jQuery("#updraft-restore-modal-stage2a").html(updraftlion.emptyresponse);var n=e.m;if(""!=e.w&&(n=n+'

              '+updraftlion.warnings+"

              "+e.w+"
              "),""!=e.e?n=n+'

              '+updraftlion.errors+"

              "+e.e+"
              ":updraft_restore_stage=3,e.hasOwnProperty("i")){try{(r=ud_parse_json(e.i)).hasOwnProperty("addui")&&(console.log("Further UI options are being displayed"),n+='
              '+r.addui+"
              ","object"==typeof JSON&&"function"==typeof JSON.stringify&&(delete r.addui,e.i=JSON.stringify(r))),r.hasOwnProperty("php_max_input_vars")&&(php_max_input_vars=parseInt(r.php_max_input_vars)),r.hasOwnProperty("skipped_db_scan")&&(skipped_db_scan=parseInt(r.skipped_db_scan))}catch(t){console.log(t),console.log(e)}jQuery("#updraft_restorer_backup_info").val(e.i)}else jQuery("#updraft_restorer_backup_info").val();jQuery("#updraft-restore-modal-stage2a").html(n),jQuery(".updraft-restore--next-step").text(updraftlion.restore),0'+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft-restore-modal-stage2a").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}}))}function updraft_downloader_status(t,e,a,r){}function updraft_downloader_status_update(t,n){var o=0;return jQuery(t).each(function(t,e){var a,r;""!=e.base&&(a="."+(e.base+e.timestamp+"_"+e.what+"_"+e.findex),null!=e.e?(jQuery(a+" .raw").html(""+updraftlion.error+" "+e.e),console.log(e)):null!=e.p?(jQuery(a+"_st .dlfileprogress").width(e.p+"%"),null!=e.a&&0"+updraftlion.downloadtocomputer+' \t\t\t\t",e.hasOwnProperty("can_show_contents")&&e.can_show_contents&&(r+=' "),jQuery(a+" .raw").html(r),jQuery(a+"_st").remove()))):null!=e.m?jQuery(a+" .raw").html(e.m):(jQuery(a+" .raw").html(updraftlion.jsonnotunderstood+" ("+n+")"),o=1))}),o}function updraft_backupnow_go(t,e,a,r,n,o,d,u){var s,t={backupnow_nodb:t,backupnow_nofiles:e,backupnow_nocloud:a,backupnow_label:o,extradata:n};""!=r&&(t.onlythisfileentity=r),""!=d&&(t.onlythesetableentities=d),""!=u&&(t.only_these_cloud_services=u),t.always_keep=void 0!==n.always_keep?n.always_keep:0,delete n.always_keep,t.incremental=void 0!==n.incremental?n.incremental:0,delete n.incremental,t.db_anon_all=void 0!==n.db_anon&&void 0!==n.db_anon.all?n.db_anon.all:0,t.db_anon_non_staff=void 0!==n.db_anon&&void 0!==n.db_anon.non_staff?n.db_anon.non_staff:0,t.db_anon_wc_orders=void 0!==n.db_anon&&void 0!==n.db_anon.wc_orders?n.db_anon.wc_orders:0,void 0!==n.db_anon&&(delete n.db_anon.all,delete n.db_anon.non_staff,delete n.db_anon.wc_orders),jQuery(".updraft_requeststart").length||((s=jQuery('
              ').html(''+updraftlion.requeststart)).data("remove",!1),setTimeout(function(){s.data("remove",!0)},3e3),setTimeout(function(){s.remove()},75e3),jQuery("#updraft_activejobsrow").before(s)),updraft_activejobslist_backupnownonce_only=1,updraft_send_command("backupnow",t,function(t){if(t.hasOwnProperty("error"))return jQuery(".updraft_requeststart").remove(),void alert(t.error);jQuery("#updraft_backup_started").html(t.m),t.hasOwnProperty("nonce")&&(updraft_backupnow_nonce=t.nonce,console.log("UpdraftPlus: ID of started job: "+updraft_backupnow_nonce)),setTimeout(function(){updraft_activejobs_update(!0)},500)})}function updraft_process_status_check(t,e,a){if(t.hasOwnProperty("fatal_error"))return console.error(t.fatal_error_message),void(!0===updraftplus_activejobs_list_fatal_error_alert&&(updraftplus_activejobs_list_fatal_error_alert=!1,alert(this.alert_done+" "+t.fatal_error_message)));try{t.hasOwnProperty("l")&&(t.l?(jQuery("#updraft_lastlogmessagerow").show(),jQuery("#updraft_lastlogcontainer").html(t.l)):(jQuery("#updraft_lastlogmessagerow").hide(),jQuery("#updraft_lastlogcontainer").html("("+updraftlion.nothing_yet_logged+")"))),updraftlion.hasOwnProperty("hosting_restriction")&&updraftlion.hosting_restriction instanceof Array&&(updraftlion.hosting_restriction.length=0,t.hasOwnProperty("hosting_restriction")&&(t.hosting_restriction&&t.hosting_restriction.includes("only_one_backup_per_month")&&updraftlion.hosting_restriction.push("only_one_backup_per_month"),t.hosting_restriction&&t.hosting_restriction.includes("only_one_incremental_per_day")&&updraftlion.hosting_restriction.push("only_one_incremental_per_day"))),jQuery("#updraft-wrap #updraft-navtab-settings-content").is(":hidden")||t.hasOwnProperty("automatic_updates")&&jQuery('input[name="updraft_auto_updates"]').prop("checked",t.automatic_updates);var r,n,o=-1,d=jQuery(".updraft_requeststart"),u=(t.j&&d.length&&d.data("remove")&&d.remove(),jQuery(t.j)),s=(u.find(".updraft_jobtimings").each(function(t,e){var a,e=jQuery(e);e.data("jobid")&&(a=e.data("jobid"),e=e.closest(".updraft_row"),updraft_aborted_jobs[a]&&e.hide())}),jQuery("#updraft_activejobsrow").html(u),u.find('.job-id[data-isclone="1"]'));0updraft_last_forced_when+1e5&&(updraft_last_forced_jobid!=a||e!=updraft_last_forced_resumption)&&(updraft_last_forced_resumption=e,updraft_last_forced_jobid=a,updraft_last_forced_when=timenow,console.log("UpdraftPlus: force resumption: job_id="+a+", resumption="+e),updraft_send_command("forcescheduledresumption",{resumption:e,job_id:a},function(t){console.log(t)},{json_parse:!1,alert_on_error:!1})))}),timenow=(new Date).getTime(),updraft_activejobs_nextupdate=timenow+18e4,1==updraft_page_is_visible&&"backups"==updraft_console_focussed_tab&&(updraft_activejobs_nextupdate=-1"+updraftlion.error+" "+updraftlion.servererrorcode)):0<=a.url.search("subaction=restore_alldownloaded")&&jQuery("#updraft-restore-modal-stage2a").append("
              "+updraftlion.error+" "+updraftlion.servererrorcode+": "+r)))}),jQuery(function(h){var e;h(document).on("udp/checkout/done",function(t,e){e.hasOwnProperty("product")&&"updraftpremium"===e.product&&"complete"===e.status&&(h(".premium-upgrade-purchase-success").show(),h(".updraft_feat_table").closest("section").hide(),h(".updraft_premium_cta__action").hide())}),h(".expertmode .advanced_settings_container .advanced_tools_button").on("click",function(){var t;t=h(this).attr("id"),h('.expertmode .advanced_settings_container .advanced_tools:not(".'+t+'")').hide(),h(".expertmode .advanced_settings_container .advanced_tools."+t).fadeIn("slow"),h(".expertmode .advanced_settings_container .advanced_tools_button:not(#"+t+")").removeClass("active"),h(".expertmode .advanced_settings_container .advanced_tools_button#"+t).addClass("active")}),jQuery.ui&&jQuery.ui.dialog&&jQuery.ui.dialog.prototype._allowInteraction&&(e=jQuery.ui.dialog.prototype._allowInteraction,jQuery.ui.dialog.prototype._allowInteraction=function(t){return!!jQuery(t.target).closest(".select2-dropdown").length||e.apply(this,arguments)}),h("#updraft-navtab-settings-content #remote-storage-holder").on("change keyup paste",".updraft_webdav_settings",function(){var t,e,r=[],a=(h(".updraft_webdav_settings").each(function(t,e){var a,e=h(e).attr("id");e&&"updraft_webdav_"==e.substring(0,15)&&(e=e.substring(15),e=(id_split=e.split("_"))[0],a=id_split[1],void 0===r[a]&&(r[a]=[]),r[a][e]=this.value)}),"@"),n="/",o=":",d=":";for(e in r)(0<=r[e].host.indexOf("@")||""===r[e].host)&&(a=""),0<=r[e].host.indexOf("/")?h(".webdav-"+e+" .updraft_webdav_host_error").show():h(".webdav-"+e+" .updraft_webdav_host_error").hide(),0!=r[e].path.indexOf("/")&&""!==r[e].path||(n=""),""!==r[e].user&&""!==r[e].pass||(o=""),""!==r[e].host&&""!==r[e].port||(d=""),t=r[e].webdav+r[e].user+o+r[e].pass+a+encodeURIComponent(r[e].host)+d+r[e].port+n+r[e].path,masked_webdav_url=r[e].webdav+r[e].user+o+r[e].pass.replace(/./gi,"*")+a+encodeURIComponent(r[e].host)+d+r[e].port+n+r[e].path,h("#updraft_webdav_url_"+e).val(t),h("#updraft_webdav_masked_url_"+e).val(masked_webdav_url)}),h("div.ud-phpseclib-notice").on("click","button.notice-dismiss",function(t){t.stopImmediatePropagation(),updraft_send_command("dismiss_phpseclib_notice",null,function(t,e,a){t.hasOwnProperty("success")&&1===t.success||(console.log(t),alert(updraftlion.unexpectedresponse+" "+a))})}),h("#updraft-navtab-backups-content").on("click",".js--delete-selected-backups",function(t){t.preventDefault(),updraft_deleteallselected()}),h("#updraft-navtab-backups-content").on("click",".updraft_existing_backups .backup-select input",function(t){updraft_backups_selection.toggle(h(this).closest(".updraft_existing_backups_row"))}),h("#updraft-navtab-backups-content").on("click","#cb-select-all",function(t){h(this).is(":checked")?updraft_backups_selection.selectAll():updraft_backups_selection.deselectAll()}),h("#updraft-wrap").on("click","[id^=updraftplus_manual_authorisation_submit_]",function(t){t.preventDefault();var e,t=h(this).data("method"),a=h("#updraftplus_manual_authentication_data_"+t).val();h("#updraftplus_manual_authentication_error_"+t).text(),h("#updraft-wrap #updraftplus_manual_authorisation_template_"+t+" .updraftplus_spinner.spinner").addClass("visible"),h("#updraftplus_manual_authorisation_submit_"+t).prop("disabled",!0),updraft_send_command("manual_remote_storage_authentication",{method:e=t,auth_data:a},function(t){h("#updraft-wrap #updraftplus_manual_authorisation_template_"+e+" .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("result")&&"success"===t.result?(h("#updraft-wrap .updraftplus-top-menu").before(t.data),h("#updraft-wrap #updraftplus_manual_authorisation_template_"+e).parent().remove(),h("#updraft-wrap .updraft_authenticate_"+e).remove()):t.hasOwnProperty("result")&&"error"===t.result&&(h("#updraftplus_manual_authentication_error_"+e).text(t.data),h("#updraftplus_manual_authorisation_submit_"+e).prop("disabled",!1))})}),h("#updraft-navtab-backups-content").on("click",".js--select-all-backups",function(t){updraft_backups_selection.selectAll()}),h("#updraft-navtab-backups-content").on("click",".js--deselect-all-backups",function(t){updraft_backups_selection.deselectAll()}),h("#updraft-navtab-backups-content").on("click",".updraft_existing_backups .updraft_existing_backups_row",function(t){(t.ctrlKey||t.metaKey)&&(t.shiftKey?(void 0===updraft_backups_selection.firstMultipleSelectionIndex?(h(document).on("keyup.MultipleSelection",function(t){updraft_backups_selection.unregister_highlight_mode(),h(document).off(".MultipleSelection")}),updraft_backups_selection.select(this),h(this).addClass("range-selection-start"),updraft_backups_selection.register_highlight_mode()):(updraft_backups_selection.selectAllInBetween(this),jQuery("#updraft-navtab-backups-content .updraft_existing_backups .updraft_existing_backups_row").removeClass("range-selection")),updraft_backups_selection.firstMultipleSelectionIndex=this.rowIndex-1):updraft_backups_selection.toggle(this))}),updraft_backups_selection.checkSelectionStatus(),h("#updraft-navtab-addons-content .wrap").on("click",".updraftplus_com_login .ud_connectsubmit",function(t){t.preventDefault();var t=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_email").val(),e=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_password").val(),a=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_updates").is(":checked")?1:0,r=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_udc_connect").is(":checked")?1:0;n.submit({email:t,password:e,auto_update:a,auto_udc_connect:r})}),h("#updraft-navtab-addons-content .wrap").on("keydown",".updraftplus_com_login input",function(t){var e,a,r;13==t.which&&(t.preventDefault(),t=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_email").val(),e=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_password").val(),a=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_updates").is(":checked")?1:0,r=h("#updraft-navtab-addons-content .wrap .updraftplus_com_login #updraftplus-addons_options_auto_udc_connect").is(":checked")?1:0,n.submit({email:t,password:e,auto_update:a,auto_udc_connect:r}))}),h("#updraft-navtab-migrate-content").on("click",".updraftclone_show_step_1",function(t){h(".updraftplus-clone").addClass("opened"),h(".updraftclone_show_step_1").hide(),h(".updraft_migrate_widget_temporary_clone_stage1").show(),h(".updraft_migrate_widget_temporary_clone_stage0").hide()}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_temporary_clone_show_stage0",function(t){t.preventDefault(),h(".updraft_migrate_widget_temporary_clone_stage0").toggle()}),setup_migrate_tabs(),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content .close",function(t){h(".updraft_migrate_intro").show(),h(this).closest(".updraft_migrate_widget_module_content").hide()}),h("#updraft-navtab-migrate-content").on("click","#updraft_migrate_tab_alt .close",function(t){t.preventDefault(),h(".updraft_migrate_intro").show(),h("#updraft_migrate_tab_alt").html("").hide()}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_add_site--trigger",function(t){t.preventDefault(),h(".updraft_migrate_add_site").toggle()}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content .updraftplus_com_login .ud_connectsubmit",function(t){t.preventDefault();var t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_email").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_password").val(),a=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code").val(),r=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .temporary_clone_terms_and_conditions").is(":checked")?1:0;t&&e?o({form_data:{email:t,password:e,two_factor_code:a,consent:r}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html(""+updraftlion.error+" "+updraftlion.username_password_required).show()}),h("#updraft-navtab-migrate-content").on("keydown",".updraft_migrate_widget_module_content .updraftplus_com_login input",function(t){var e,a,r;13==t.which&&(t.preventDefault(),t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_email").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_password").val(),a=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code").val(),r=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .temporary_clone_terms_and_conditions").is(":checked")?1:0,t&&e?o({form_data:{email:t,password:e,two_factor_code:a,consent:r}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html(""+updraftlion.error+" "+updraftlion.username_password_required).show())}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content .updraftplus_com_key .ud_key_connectsubmit",function(t){t.preventDefault();var t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key #temporary_clone_options_key").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .temporary_clone_terms_and_conditions").is(":checked")?1:0;t?a({form_data:{clone_key:t,consent:e}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html(""+updraftlion.error+" "+updraftlion.clone_key_required).show()}),h("#updraft-navtab-migrate-content").on("keydown",".updraft_migrate_widget_module_content .updraftplus_com_key input",function(t){var e;13==t.which&&(t.preventDefault(),t=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key #temporary_clone_options_key").val(),e=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .temporary_clone_terms_and_conditions").is(":checked")?1:0,t?a({form_data:{clone_key:t,consent:e}}):h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html(""+updraftlion.error+" "+updraftlion.clone_key_required).show())}),h("#updraft-navtab-migrate-content").on("change",".updraft_migrate_widget_module_content #updraftplus_clone_php_options",function(){var t=h(this).data("php_version");h(this).val() option").each(function(){var t=h(this).val();"starter"==t&&h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+t+'"]').prop("selected",!0),h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+t+'"]').prop("disabled",!1)});var a,t=h(this).find("option:selected");"current"!=h(t).data("nonce")&&"wp_only"!=h(t).data("nonce")&&(a=h(t).data("size"),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options > option").each(function(){var t=h(this).data("size"),e=h(this).val();if(!(t<=a))return h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+e+'"]').prop("selected",!0),!1;h('#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options option[value="'+e+'"]').prop("disabled",!0)}))}),h("#updraft-navtab-migrate-content").on("click",".updraft_migrate_widget_module_content #updraft_migrate_createclone",function(t){t.preventDefault(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone").prop("disabled",!0),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html(""),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner").addClass("visible");var t=h(this).data("clone_id"),e=h(this).data("secret_token"),a=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_php_options").val(),r=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_wp_options").val(),n=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_region_options").val(),o=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_package_options").val(),d=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_updraftclone_branch").val(),u=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_updraftplus_branch").val(),s=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_admin_login_options").is(":checked"),i=h("#updraftplus_clone_use_queue").is(":checked")?1:0,p=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_all").is(":checked")?1:0,l=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_non_staff").is(":checked")?1:0,_=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backupnow_db_anon_wc_order_data").is(":checked")?1:0,c="current",f="current",m=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backup_options").length,g=h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraftplus_clone_backup_options").find("option:selected"),m=(0!==m&&void 0!==g&&(c=g.data("nonce"),f=g.data("timestamp")),{form_data:{clone_id:t,secret_token:e,install_info:{php_version:a,wp_version:r,region:n,package:o,admin_only:s,updraftclone_branch:void 0===d?"":d,updraftplus_branch:void 0===u?"":u,use_queue:void 0===i?1:i}}}),g={db_anon_all:p,db_anon_non_staff:l,db_anon_wc_orders:_,clone_region:n};"wp_only"===c&&(m.form_data.install_info.wp_only=1),function t(r,n,o,d){var u="";"current"!=n&&updraft_send_command("whichdownloadsneeded",{updraftplus_clone:!0,timestamp:n},function(t){if(t.hasOwnProperty("downloads")&&(console.log("UpdraftPlus: items which still require downloading follow"),u=t.downloads,console.log(u)),0!=u.length)for(var e=0;e'+r.fatal_error_message+"

              ")):(r="updraft_send_command: error: "+e+" ("+a+")",h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html('

              '+r+"

              "),console.log(r),console.log(t))}});setTimeout(function(){var e,a;0!=u.length?t(r,n,o,d):(e=r.form_data.clone_id,a=r.form_data.secret_token,updraft_send_command("process_updraftplus_clone_create",r,function(t){try{if(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone").prop("disabled",!1),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("status")&&"error"==t.status)return void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html(updraftlion.error+" "+t.message).show();"success"===t.status&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage3").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage3").html(t.html),temporary_clone_timeout&&clearTimeout(temporary_clone_timeout),t.hasOwnProperty("secret_token")&&(a=t.secret_token),"wp_only"===o?(jQuery("#updraft_clone_progress .updraftplus_spinner.spinner").addClass("visible"),y(e,a)):(jQuery("#updraft_clone_progress .updraftplus_spinner.spinner").addClass("visible"),b(e,a,t.url,t.key,o,n,d)))}catch(t){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_migrate_createclone").prop("disabled",!1),console.log("Error when processing the response of process_updraftplus_clone_create (as follows)"),console.log(t)}}))},5e3)}(m,f,c,g)});var n={};function o(t){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html("").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .updraftplus_spinner.spinner").addClass("visible"),updraft_send_command("process_updraftplus_clone_login",t,function(t){try{if(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("status")&&"error"==t.status)return h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login_status").html(t.message).show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields").show(),void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_login #temporary_clone_options_two_factor_code").val("");t.hasOwnProperty("tfa_enabled")&&1==t.tfa_enabled&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 input#temporary_clone_options_two_factor_code").trigger("focus")),"authenticated"===t.status&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .non_tfa_fields").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 .tfa_fields").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1 input#temporary_clone_options_two_factor_code").val(""),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").html(t.html),t.hasOwnProperty("clone_info")&&t.clone_info.hasOwnProperty("expires_after")&&r(t.clone_info.expires_after))}catch(t){console.log(t)}})}function a(t){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html("").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .updraftplus_spinner.spinner").addClass("visible"),updraft_send_command("process_updraftplus_clone_login",t,function(t){try{if(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key .updraftplus_spinner.spinner").removeClass("visible"),t.hasOwnProperty("status")&&"error"==t.status)return void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_com_key_status").html(t.message).show();"authenticated"===t.status&&(h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").show(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").html(t.html),t.hasOwnProperty("clone_info")&&t.clone_info.hasOwnProperty("expires_after")&&r(t.clone_info.expires_after))}catch(t){console.log(t)}})}function r(t){temporary_clone_timeout=setTimeout(function(){h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").hide(),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage2").html(""),h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraft_migrate_widget_temporary_clone_stage1").show()},1e3*t)}function b(t,e,a,r,n,o,d){t={updraftplus_clone_backup:1,backupnow_nodb:0,backupnow_nofiles:0,backupnow_nocloud:0,backupnow_label:"UpdraftPlus Clone",extradata:"",onlythisfileentity:"plugins,themes,uploads,others",clone_id:t,secret_token:e,clone_url:a,key:r,backup_nonce:n,backup_timestamp:o,db_anon_all:d.db_anon_all,db_anon_non_staff:d.db_anon_non_staff,db_anon_wc_orders:d.db_anon_wc_orders,clone_region:d.clone_region};updraft_activejobslist_backupnownonce_only=1,updraft_send_command("backupnow",t,function(t){jQuery("#updraft_clone_progress .updraftplus_spinner.spinner").removeClass("visible"),jQuery("#updraft_backup_started").html(t.m),t.hasOwnProperty("nonce")&&(updraft_backupnow_nonce=t.nonce,updraft_clone_jobs.push(updraft_backupnow_nonce),updraft_inpage_success_callback=function(){jQuery("#updraft_clone_activejobsrow").hide(),updraft_aborted_jobs[updraft_backupnow_nonce]?jQuery("#updraft_clone_progress").html(updraftlion.clone_backup_aborted):jQuery("#updraft_clone_progress").html(updraftlion.clone_backup_complete)},console.log("UpdraftPlus: ID of started job: "+updraft_backupnow_nonce)),updraft_activejobs_update(!0)})}function y(e,a){var t={clone_id:e,secret_token:a};setTimeout(function(){updraft_send_command("process_updraftplus_clone_poll",t,function(t){if(t.hasOwnProperty("status")){if("error"==t.status)return void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_clone_status").html(updraftlion.error+" "+t.message).show();if("success"===t.status&&t.hasOwnProperty("data")&&t.data.hasOwnProperty("wordpress_credentials"))return h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content .updraftplus_spinner.spinner").removeClass("visible"),void h("#updraft-navtab-migrate-content .updraft_migrate_widget_module_content #updraft_clone_progress").append("
              WordPress "+updraftlion.credentials+":
              "+updraftlion.username+": "+t.data.wordpress_credentials.username+"
              "+updraftlion.password+": "+t.data.wordpress_credentials.password)}else console.log(t);y(e,a)})},6e4)}function d(t){var e=Handlebars.compile(updraftlion.remote_storage_templates[t]),a={},r=(Object.assign(a,updraftlion.remote_storage_options[t].template_properties,updraftlion.remote_storage_options[t].default),updraftlion.remote_storage_methods[t]),r=(a.instance_id="s-"+function(t){for(var e="",a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",r=0;r li").each(function(){jQuery(this).find("select").each(function(){jQuery(this).prop("disabled",!1)})})):(jQuery(this).parents("tr.updraftplusmethod").find("div.logic ul.rules > li").each(function(){jQuery(this).find("select").each(function(){jQuery(this).prop("disabled",!0)})}),jQuery(this).parents("tr.updraftplusmethod").find("div.logic").hide())}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("change","select[class='conditional_logic_operand']",function(){if(updraft_settings_form_changed=!0,jQuery(this).parent().find("select:nth(2)").empty(),"day_of_the_week"===jQuery(this).val())for(var t=0;t').text(updraftlion.conditional_logic.day_of_the_week_options[t].value));else if("day_of_the_month"===jQuery(this).val())for(t=1;t<=31;t++)jQuery(this).parent().find("select:nth(2)").append(jQuery('').text(t))}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("click","div.conditional_remote_backup ul.rules li span",function(){updraft_settings_form_changed=!0;var t=jQuery(this).parents("ul.rules");jQuery(this).hasClass("remove-rule")&&jQuery(this).parent().slideUp(function(){jQuery(this).remove(),jQuery(t).find("> li").length<2&&jQuery("li:nth(0) span.remove-rule",t).remove()})}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("click","div.conditional_remote_backup input.add-new-rule",function(){var t=jQuery(this).parent().find("ul.rules");jQuery(t).find("> li").length<2&&jQuery(t).find("li:nth(0)").append(''),$cloned_item=jQuery(t).find("> li").last().clone(),jQuery($cloned_item).find("> select").each(function(){jQuery(this).prop("name",jQuery(this).prop("name").replace(/\[instance_conditional_logic\]\[rules\]\[[0-9]+\]/gi,"[instance_conditional_logic][rules]["+jQuery(t).data("rules")+"]"))}),jQuery(t).append($cloned_item),jQuery(t).data("rules",parseInt(jQuery(t).data("rules"))+1),jQuery($cloned_item).find('select[name*="[operand]"]').trigger("change")}),jQuery("#updraft-navtab-settings-content #remote-storage-holder").on("click",".updraftplusmethod button.updraft-test-button",function(){var r=jQuery(this).data("method"),n=jQuery(this).data("instance_id");updraft_remote_storage_test(r,function(t,e,a){return"sftp"==r&&(a.hasOwnProperty("scp")&&a.scp?alert(updraftlion.settings_test_result.replace("%s","SCP")+" "+t.output):alert(updraftlion.settings_test_result.replace("%s","SFTP")+" "+t.output),t.hasOwnProperty("data")&&t.data&&t.data.hasOwnProperty("valid_md5_fingerprint")&&t.data.valid_md5_fingerprint&&h("#updraft_sftp_fingerprint_"+n).val(t.data.valid_md5_fingerprint),!0)},n)}),h("#updraft-navtab-settings-content select.updraft_interval, #updraft-navtab-settings-content select.updraft_interval_database").on("change",function(){updraft_check_same_times()}),h("#backupnow_includefiles_showmoreoptions").on("click",function(t){t.preventDefault(),h("#backupnow_includefiles_moreoptions").toggle()}),h("#backupnow_database_showmoreoptions").on("click",function(t){t.preventDefault(),h("#backupnow_database_moreoptions").toggle()}),h("#updraft-navtab-migrate-content").on("click","#backupnow_database_showmoreoptions",function(t){t.preventDefault(),h("#updraft-navtab-migrate-content #backupnow_database_moreoptions").toggle()}),h("#backupnow_db_anon_all").on("click",function(t){h("#backupnow_db_anon_non_staff").prop("checked")&&h("#backupnow_db_anon_non_staff").prop("checked",!1)}),h("#backupnow_db_anon_non_staff").on("click",function(t){h("#backupnow_db_anon_all").prop("checked")&&h("#backupnow_db_anon_all").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_migration_backupnow_db_anon_all",function(){h("#updraftplus_migration_backupnow_db_anon_non_staff").prop("checked")&&h("#updraftplus_migration_backupnow_db_anon_non_staff").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_migration_backupnow_db_anon_non_staff",function(){h("#updraftplus_migration_backupnow_db_anon_all").prop("checked")&&h("#updraftplus_migration_backupnow_db_anon_all").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_clone_backupnow_db_anon_all",function(){h("#updraftplus_clone_backupnow_db_anon_non_staff").prop("checked")&&h("#updraftplus_clone_backupnow_db_anon_non_staff").prop("checked",!1)}),h("#updraft-navtab-migrate-content").on("click","#updraftplus_clone_backupnow_db_anon_non_staff",function(){h("#updraftplus_clone_backupnow_db_anon_all").prop("checked")&&h("#updraftplus_clone_backupnow_db_anon_all").prop("checked",!1)}),h("#updraft-backupnow-modal").on("click","#backupnow_includecloud_showmoreoptions",function(t){t.preventDefault(),h("#backupnow_includecloud_moreoptions").toggle()}),h("#updraft-navtab-backups-content").on("click","a.updraft_diskspaceused_update",function(t){t.preventDefault(),updraftplus_diskspace()}),h(".advanced_settings_content a.updraft_diskspaceused_update").on("click",function(t){t.preventDefault(),jQuery(".advanced_settings_content .updraft_diskspaceused").html(""+updraftlion.calculating+""),updraft_send_command("get_fragment",{fragment:"disk_usage",data:"updraft"},function(t){jQuery(".advanced_settings_content .updraft_diskspaceused").html(t.output)},{type:"GET"})}),h("#updraft-navtab-backups-content a.updraft_uploader_toggle").on("click",function(t){t.preventDefault(),h("#updraft-plupload-modal").slideToggle()}),h("#updraft-navtab-backups-content a.updraft_rescan_local").on("click",function(t){t.preventDefault(),updraft_updatehistory(1,0)}),h("#updraft-navtab-backups-content a.updraft_rescan_remote").on("click",function(t){t.preventDefault(),confirm(updraftlion.remote_scan_warning)&&updraft_updatehistory(1,1)}),h("#updraftplus-remote-rescan-debug").on("click",function(t){t.preventDefault(),updraft_updatehistory(1,1,1)}),jQuery("#updraft_reset_sid").on("click",function(t){t.preventDefault(),updraft_send_command("reset_site_id",null,function(t){jQuery("#updraft_show_sid").html(t)},{json_parse:!1})}),jQuery("#updraft-navtab-settings-content form input:not('.udignorechange'), #updraft-navtab-settings-content form select").on("change",function(t){updraft_settings_form_changed=!0}),jQuery("#updraft-navtab-settings-content form input[type='submit']").on("click",function(t){updraft_settings_form_changed=!1});var u=180,t=(jQuery(".updraft-bigbutton").each(function(t,e){e=jQuery(e).width();u'+t.count_backups+"");for(a=0;a '+updraftlion.maybe_downloading_entities),updraft_send_command("whichdownloadsneeded",{downloads:s,timestamp:_},function(t){if(h(".updraft-restore--next-step").prop("disabled",!1),t.hasOwnProperty("downloads")&&(console.log("UpdraftPlus: items which still require downloading follow"),l=t.downloads,console.log(l)),0==l.length)updraft_restorer_checkstage2(0);else for(var e=0;e'+r.fatal_error_message+"

              ")):(r="updraft_send_command: error: "+e+" ("+a+")",h("#updraft-restore-modal-stage2a").html('

              '+r+"

              "),console.log(r),console.log(t))}})}catch(t){console.log("UpdraftPlus: error (follows) when looking for items needing downloading"),console.log(t),alert(updraftlion.jsonnotunderstood)}}else if(2==updraft_restore_stage)updraft_restorer_checkstage2(1);else if(3==updraft_restore_stage){var c=1;if(jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!0),h("#updraft_restoreoptions_ui input.required").each(function(t){var e,a;0!=c&&(""==(e=h(this).val())?(alert(updraftlion.pleasefillinrequired),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1),c=0):""!=h(this).attr("pattern")&&(a=h(this).attr("pattern"),new RegExp(a,"g").test(e)||(alert(h(this).data("invalidpattern")),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1),c=0)))}),1==o&&(r=0,jQuery('input[name="updraft_restore_tables_options[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1)}),0==r&&!skipped_db_scan))return alert(updraftlion.youdidnotselectany),void jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);if(1==d&&(r=0,jQuery(".updraftplus_restore_plugins_options_container").length||(r=1),jQuery('input[name="updraft_restore_plugins_options[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1)}),0==r))return alert(updraftlion.youdidnotselectany),void jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);if(1==u&&(r=0,jQuery(".updraftplus_restore_themes_options_container").length||(r=1),jQuery('input[name="updraft_restore_themes_options[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1)}),0==r))return alert(updraftlion.youdidnotselectany),void jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);if(1==n&&(r=0,jQuery('input[name="updraft_include_more_index[]"').each(function(t,e){jQuery(e).is(":checked")&&!jQuery(e).is(":disabled")&&(r=1,""==jQuery("#updraft_include_more_path_restore"+t).val()&&alert(updraftlion.emptyrestorepath))}),0==r))return alert(updraftlion.youdidnotselectany),void jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1);if(c){var f=h("#updraft_restoreoptions_ui select, #updraft_restoreoptions_ui input").serialize();if(jQuery.each(["table","plugins","themes"],function(t,a){jQuery.each(jQuery('input[name="updraft_restore_'+a+"_options[]").filter(function(t){return!1===jQuery(this).prop("checked")}),function(t,e){f+="&"+jQuery(e).attr("name")+"=udp-skip-"+a+"-"+jQuery(e).val()})}),console.log("Restore options: "+f),void 0!==php_max_input_vars){var t,e=f.split("&").length,m='

              '+updraftlion.warnings+'

                ';if(!php_max_input_vars&&1e3<=e)console.log("Restore options: "+e+" PHP max input vars not detected; using default: 1000");else if(php_max_input_vars&&php_max_input_vars<=e)return t="
              • "+updraftlion.php_max_input_vars_detected_warning+"
              • ",1!=jQuery("#updraft-restore-modal-stage2a .notice-warning").length?(m=m+t+"
              ",jQuery("#updraft_restoreoptions_ui").prepend(m)):jQuery("#updraft-restore-modal-stage2a #updraft_restore_warnings").append(t),console.log("Restore options: "+e+" PHP max input vars: "+php_max_input_vars),jQuery(".updraft-restore--next-step, .updraft-restore--cancel").prop("disabled",!1),void(php_max_input_vars=void 0)}h("#updraft_restorer_restore_options").val(f),h("#updraft-restore-modal-stage2a").html(updraftlion.restore_proceeding),h("#updraft_restore_form").trigger("submit"),updraft_restore_stage=4}}}else alert(updraftlion.youdidnotselectany)}},p=h(".updraft_restore_main--activity").width(),t=(jQuery("#activity-full-log").on("click",function(){var t="1460px"==h(".updraft_restore_main").css("max-width")?"860px":"1460px",e=h(".updraft_restore_main--activity").width()==p?"100%":p+"px",a="600px"==h(".updraft_restore_main--activity").css("min-height")?"0px":"600px",r=h("#activity-full-log").attr("title")==updraftlion.restoreactivitylogscreenexit?updraftlion.restoreactivitylogfullscreen:updraftlion.restoreactivitylogscreenexit;h("#activity-full-log").toggleClass("dashicons-fullscreen-exit-alt"),h("#activity-full-log").attr("title",r),h(".updraft_restore_main--components").toggle("fast"),h(".updraft_restore_main--header").toggle("fast"),h(".updraft_restore_main--activity").animate({minHeight:a,width:e}),h(".updraft_restore_main").animate({maxWidth:t})}),jQuery("#updraft-iframe-modal").dialog({autoOpen:!1,height:500,width:780,modal:!0}),jQuery("#updraft-backupnow-inpage-modal").dialog({autoOpen:!1,modal:!0,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){h(this).dialog("option","width",580),h(this).dialog("option","minHeight",261),h(this).dialog("option","height",380)}}),{});t[updraftlion.backupnow]=function(){var t=jQuery("#backupnow_includedb").is(":checked")?0:1,e=jQuery("#backupnow_includefiles").is(":checked")?0:1,a=jQuery("#backupnow_includecloud").is(":checked")?0:1,r=jQuery("#backupnow_db_anon_all").is(":checked")?1:0,n=jQuery("#backupnow_db_anon_non_staff").is(":checked")?1:0,o=jQuery("#backupnow_db_anon_wc_order_data").is(":checked")?1:0,d=backupnow_whichtables_checked(""),u=jQuery("#always_keep").is(":checked")?1:0,s="incremental"==jQuery("#updraft-backupnow-modal").data("backup-type")?1:0;if(updraftlion.hosting_restriction.includes("only_one_backup_per_month")&&!s)alert(updraftlion.hosting_restriction_one_backup_permonth);else{if(!updraftlion.hosting_restriction.includes("only_one_incremental_per_day")||!s){if(""==d&&0==t)return alert(updraftlion.notableschosen),void jQuery("#backupnow_database_moreoptions").show();"boolean"==typeof d&&(d=null);var i,p=backupnow_whichfiles_checked("");return""==p&&0==e?(alert(updraftlion.nofileschosen),void jQuery("#backupnow_includefiles_moreoptions").show()):""==(i=jQuery("input[name^='updraft_include_remote_service_']").serializeArray())&&0==a?(alert(updraftlion.nocloudserviceschosen),void jQuery("#backupnow_includecloud_moreoptions").show()):("boolean"==typeof i&&(i=null),void(t&&e?alert(updraftlion.excludedeverything):(jQuery(this).dialog("close"),setTimeout(function(){jQuery("#updraft_lastlogmessagerow").fadeOut("slow",function(){jQuery(this).fadeIn("slow")})},1700),updraft_backupnow_go(t,e,a,p,{always_keep:u,incremental:s,db_anon:{all:r,non_staff:n,wc_orders:o}},jQuery("#backupnow_label").val(),d,i))))}alert(updraftlion.hosting_restriction_one_incremental_perday)}},t[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-backupnow-modal").dialog({autoOpen:!1,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){h(this).dialog("option","width",610),h(this).dialog("option","minHeight",300),h(this).dialog("option","height",472)},modal:!0,buttons:t,create:function(){h(this).closest(".ui-dialog").find(".ui-dialog-buttonpane .ui-button").first().addClass("js-tour-backup-now-button")}}),jQuery("#updraft-poplog").dialog({autoOpen:!1,modal:!0,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){h(this).dialog("option","width",860),h(this).dialog("option","minHeight",260),600'+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft_zip_files_jstree").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["sort"]}):"contain-clause"==t&&jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree({core:{multiple:!1,data:function(t,e){updraft_send_command("get_jstree_directory_nodes",{entity:"filebrowser",directories_only:1,node:t,path:jQuery("#updraft_exclude_modal_path").val(),findex:0,skip_root_node:0},function(t){t.hasOwnProperty("error")?alert(t.error):e.call(this,t.nodes)},{error_callback:function(t,e,a,r){void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),jQuery("#updraft_zip_files_jstree").html('

              '+r.fatal_error_message+"

              "),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",jQuery("#updraft_zip_files_jstree").html('

              '+r+"

              "),console.log(r),alert(r),console.log(t))}})},error:function(t){alert(t),console.log(t)}},search:{show_only_matches:!0},plugins:["sort"]}),jQuery("#updraft_exclude_modal_main").slideUp(),jQuery(".updraft-exclude-panel").hide(),jQuery(".updraft-exclude-panel[data-panel="+t+"]").slideDown()}),jQuery(".updraft-exclude-modal-reset").on("click",function(t){t.preventDefault(),jQuery("#updraft_exclude_files_folders_jstree").jstree("destroy"),jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree("destroy"),jQuery("#updraft_exclude_extension_field").val(""),jQuery("#updraft_exclude_prefix_field").val(""),jQuery(".updraft-exclude-panel").slideUp(),jQuery("#updraft_exclude_modal_main").slideDown()}),jQuery(".updraft-exclude-submit").on("click",function(){var t,e="";switch(jQuery(this).data("panel")){case"file-dir":if(0==(t=jQuery("#updraft_exclude_files_folders_jstree").jstree("get_selected")).length)return void alert(updraftlion.exclude_select_file_or_folder_msg);var a=t[0],r=jQuery("#updraft_exclude_modal_path").val(),e=a="/"==(a="/"==(a=a.substr(0,r.length)==r?a.substr(r.length,a.length):a).charAt(0)?a.substr(1):a).charAt(a.length-1)?a.substr(0,a.length-1):a;break;case"extension":var n=jQuery("#updraft_exclude_extension_field").val();if(""==n)return void alert(updraftlion.exclude_type_ext_msg);if(!n.match(/^[0-9a-zA-Z]+$/))return void alert(updraftlion.exclude_ext_error_msg);e="ext:"+n;break;case"begin-with":n=jQuery("#updraft_exclude_prefix_field").val();if(""==n)return void alert(updraftlion.exclude_type_prefix_msg);if(!n.match(/^\s*[a-z-_\d,\s]+\s*$/i))return void alert(updraftlion.exclude_prefix_error_msg);e="prefix:"+n;break;case"contain-clause":if(0==(t=jQuery("#updraft_exclude_files_folders_wildcards_jstree").jstree("get_selected")).length)return void alert(updraftlion.exclude_select_folder_wildcards_msg);var n=jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container input").val(),o=(jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container input").val(""),jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container select").val());if(""==n)return void alert(updraftlion.exclude_contain_error_msg);jQuery(this).parents("div.updraft-exclude-panel").find("div.clause-input-container select option").eq(0).prop("selected",!0);a=t[0],r=jQuery("#updraft_exclude_modal_path").val();""!==(e=a="/"==(a="/"==(a=a.substr(0,r.length)==r?a.substr(r.length,a.length):a).charAt(0)?a.substr(1):a).charAt(a.length-1)?a.substr(0,a.length-1):a)&&(e+="/"),n=n.replace(/\*/g,"\\*"),"beginning"===o?e+=n+"*":"middle"===o?e+="*"+n+"*":"end"===o&&(e+="*"+n);break;default:return}var d,u=jQuery("#updraft_exclude_modal_for").val();updraft_is_unique_exclude_rule(e,u)&&(d='
              ',jQuery('.updraft_exclude_entity_container[data-include-backup-file="'+u+'"]').append(d),updraft_exclude_entity_update(u),jQuery("#updraft_exclude_modal").dialog("close"))}),jQuery("#updraft-navtab-settings-content .updraft-service").on("change",function(){var t=jQuery(this).val();jQuery("#updraft-navtab-settings-content .updraftplusmethod").hide(),jQuery("#updraft-navtab-settings-content ."+t).show()}),jQuery("#updraft-navtab-settings-content a.updraft_show_decryption_widget").on("click",function(t){t.preventDefault(),jQuery("#updraftplus_db_decrypt").val(jQuery("#updraft_encryptionphrase").val()),jQuery("#updraft-manualdecrypt-modal").slideToggle()}),jQuery("#updraftplus-phpinfo").on("click",function(t){t.preventDefault(),updraft_iframe_modal("phpinfo",updraftlion.phpinfo)}),jQuery("#updraftplus-rawbackuphistory").on("click",function(t){t.preventDefault(),updraft_iframe_modal("rawbackuphistory",updraftlion.raw)}),jQuery("#updraft-navtab-status").on("click",function(t){t.preventDefault(),updraft_open_main_tab("status"),updraft_page_is_visible=1,updraft_console_focussed_tab="status",updraft_activejobs_update(!0)}),jQuery("#updraft-navtab-expert").on("click",function(t){t.preventDefault(),updraft_open_main_tab("expert"),updraft_page_is_visible=1}),jQuery("#updraft-navtab-settings, #updraft-navtab-settings2, #updraft_backupnow_gotosettings").on("click",function(t){t.preventDefault(),jQuery(this).parents(".updraftmessage").remove(),jQuery("#updraft-backupnow-modal").dialog("close"),updraft_open_main_tab("settings"),updraft_page_is_visible=1}),jQuery("#updraft-navtab-addons").on("click",function(t){t.preventDefault(),jQuery(this).addClass("b#nav-tab-active"),updraft_open_main_tab("addons"),updraft_page_is_visible=1}),jQuery("#updraft-navtab-backups").on("click",function(t){t.preventDefault(),updraft_console_focussed_tab="backups",updraft_historytimertoggle(1),updraft_open_main_tab("backups")}),jQuery("#updraft-navtab-migrate").on("click",function(t){t.preventDefault(),jQuery("#updraft_migrate_tab_alt").html("").hide(),updraft_open_main_tab("migrate"),updraft_page_is_visible=1,jQuery("#updraft_migrate .updraft_migrate_widget_module_content").is(":visible")||jQuery(".updraft_migrate_intro").show()}),"migrate"==updraftlion.tab&&jQuery("#updraft-navtab-migrate").trigger("click"),updraft_send_command("ping",null,function(t,e){"success"==e&&"pong"!=t&&0<=t.indexOf("pong")&&(jQuery("#updraft-navtab-backups-content .ud-whitespace-warning").show(),console.log("UpdraftPlus: Extra output warning: response (which should be just (string)'pong') follows."),console.log(t))},{json_parse:!1,type:"GET"});try{"undefined"!=typeof updraft_plupload_config&&((s=new plupload.Uploader(updraft_plupload_config)).bind("Init",function(t){var e=jQuery("#plupload-upload-ui");t.features.dragdrop?(e.addClass("drag-drop"),jQuery("#drag-drop-area").on("dragover.wp-uploader",function(){e.addClass("drag-over")}).on("dragleave.wp-uploader, drop.wp-uploader",function(){e.removeClass("drag-over")})):(e.removeClass("drag-drop"),jQuery("#drag-drop-area").off(".wp-uploader"))}),s.init(),s.bind("FilesAdded",function(t,e){h("#updraft-plupload-modal").is(":hidden")&&h("#updraft-plupload-modal").slideToggle(),plupload.each(e,function(t){if(!/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-[\-a-z]+([0-9]+?)?(\.(zip|gz|gz\.crypt))?$/i.test(t.name)&&!/^log\.([0-9a-f]{12})\.txt$/.test(t.name)){for(var e=!1,a=0;a"+t.name+"

              "+updraftlion.notarchive2),jQuery("#updraft-message-modal").dialog("open")):alert(t.name+": "+updraftlion.notarchive),void s.removeFile(t)}jQuery("#filelist").append('
              '+t.name+" ("+plupload.formatSize(0)+"/"+plupload.formatSize(t.size)+')
              ')}),t.refresh(),t.start()}),s.bind("UploadProgress",function(t,e){jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"),jQuery("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100))),e.size==e.loaded&&(jQuery("#"+e.id).html('
              '+e.name+" ("+plupload.formatSize(parseInt(e.size*e.percent/100))+"/"+plupload.formatSize(e.size)+") - "+updraftlion.complete+"
              "),jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"))}),s.bind("Error",function(t,e){console.log(e),a="-200"==e.code?"\n"+updraftlion.makesure2:updraftlion.makesure;var a,r=updraftlion.uploaderr+" (code "+e.code+") : "+e.message;e.hasOwnProperty("status")&&e.status&&(r+=" ("+updraftlion.http_code+" "+e.status+")"),e.hasOwnProperty("response")&&(console.log("UpdraftPlus: plupload error: "+e.response),e.response.length<100&&(r+=" "+updraftlion.error+" "+e.response+"\n")),r+=" "+a,alert(r)}),s.bind("FileUploaded",function(t,e,a){if("200"==a.status)try{(resp=ud_parse_json(a.response)).e?alert(updraftlion.uploaderror+" "+resp.e):resp.dm?(alert(resp.dm),updraft_updatehistory(1,0)):resp.m?updraft_updatehistory(1,0):alert("Unknown server response: "+a.response)}catch(t){console.log(a),alert(updraftlion.jsonnotunderstood)}else alert("Unknown server response status: "+a.code),console.log(a)}))}catch(t){console.log(t)}function l(t){(params={uri:jQuery("#updraftplus_httpget_uri").val()}).curl=t,updraft_send_command("httpget",params,function(t){t.e&&alert(t.e),t.r?jQuery("#updraftplus_httpget_results").html("
              "+t.r+"
              "):console.log(t)},{type:"GET"})}function _(t,e,a){updraft_restore_setoptions(t),jQuery("#updraft_restore_timestamp").val(e),jQuery(".updraft_restore_date").html(a),updraft_restore_stage=1,i.open(),updraft_activejobs_update(!0)}function c(t){t=t.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");t=new RegExp("[\\?&]"+t+"=([^&#]*)").exec(window.location.href);return null==t?"":decodeURIComponent(t[1].replace(/\+/g," "))}jQuery("#updraftplus_httpget_go").on("click",function(t){t.preventDefault(),l(0)}),jQuery("#updraftplus_httpget_gocurl").on("click",function(t){t.preventDefault(),l(1)}),jQuery("#updraftplus_callwpaction_go").on("click",function(t){t.preventDefault(),updraft_send_command("call_wordpress_action",params={wpaction:jQuery("#updraftplus_callwpaction").val()},function(t){t.e?alert(t.e):t.s||(t.r?jQuery("#updraftplus_callwpaction_results").html(t.r):(console.log(t),alert(updraftlion.jsonnotunderstood)))})}),jQuery("#updraft_activejobs_table, #updraft-navtab-migrate-content").on("click",".updraft_jobinfo_delete",function(t){t.preventDefault();t=jQuery(this).data("jobid");t?(h(this).addClass("disabled"),updraft_activejobs_delete(t)):console.log("UpdraftPlus: A stop job link was clicked, but the Job ID could not be found")}),jQuery("#updraft_activejobs_table, #updraft-navtab-backups-content .updraft_existing_backups, #updraft-backupnow-inpage-modal, #updraft-navtab-migrate-content").on("click",".updraft-log-link",function(t){t.preventDefault();var t=jQuery(this).data("fileid"),e=jQuery(this).data("jobid");t?updraft_popuplog(t):e?updraft_popuplog(e):console.log("UpdraftPlus: A log link was clicked, but the Job ID could not be found")}),jQuery("#updraft-navtab-backups-content .updraft_existing_backups").on("click","button.choose-components-button",function(t){_(jQuery(this).data("entities"),jQuery(this).data("backup_timestamp"),jQuery(this).data("showdata"))}),"initiate_restore"==c("udaction")&&_(c("entities"),c("backup_timestamp"),c("showdata"));t={};function f(){var t=jQuery(".db-search").val().toLowerCase();jQuery(".db-size-content tr").filter(function(){jQuery(this).toggle(-1
              '+updraftlion.loading+"
              ",updraftlion.raw,780,500)}),jQuery("#backupnow_database_moreoptions").on("click","div.backupnow-db-tables > a",function(t){t.preventDefault(),jQuery("> input",jQuery(this).parents("div.backupnow-db-tables")).prop("checked",!1),jQuery(this).hasClass("backupnow-select-all-table")?jQuery("> input",jQuery(this).parents("div.backupnow-db-tables")).prop("checked",!0):jQuery(this).hasClass("backupnow-select-all-this-site")&&jQuery("> input",jQuery(this).parents("div.backupnow-db-tables")).not("[data-non_wp_table]").prop("checked",!0)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_select_all_themes",function(t){t.preventDefault(),jQuery(".updraft_restore_themes_options").prop("checked",!0)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_deselect_all_themes",function(t){t.preventDefault(),jQuery(".updraft_restore_themes_options").prop("checked",!1)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_select_all_plugins",function(t){t.preventDefault(),jQuery(".updraft_restore_plugins_options").prop("checked",!0)}),jQuery("#updraft-restore-modal").on("click",".updraft_restore_deselect_all_plugins",function(t){t.preventDefault(),jQuery(".updraft_restore_plugins_options").prop("checked",!1)}),jQuery(".updraftmessage.admin-warning-litespeed").on("click",".notice-dismiss",function(t){t.preventDefault(),updraft_send_command("dismiss_admin_warning_litespeed",1,function(t){})}),jQuery("#db_size.advanced_tools_button, .db-size-refresh").on("click",function(t){t.preventDefault();var e=jQuery(".advanced_settings_content .advanced_tools.db_size .total-size"),a=jQuery(".advanced_settings_content .advanced_tools.db_size tbody.db-size-content");jQuery(this).hasClass("advanced_tools_button")&&""!=a.html()||(a.html(""),updraft_send_command("db_size",1,function(t){e.html(t.size),a.html(t.html),f()}))}),jQuery(".db-search").on("input",function(){f()}),jQuery(".db-search-clear").on("click",function(t){t.preventDefault(),jQuery(".db-search").val(""),f()})}),jQuery(function(n){var o="#updraft-navtab-settings-content ";n(o+"#remote-storage-holder").on("click",".updraftvault_backtostart",function(t){t.preventDefault(),n(o+"#updraftvault_settings_showoptions").slideUp(),n(o+"#updraftvault_settings_connect").slideUp(),n(o+"#updraftvault_settings_connected").slideUp(),n(o+"#updraftvault_settings_default").slideDown()}),n(o).on("keypress","#updraftvault_settings_connect input",function(t){if(13==t.which)return n(o+"#updraftvault_connect_go").trigger("click"),!1}),n(o+"#remote-storage-holder").on("click","#updraftvault_recountquota",function(t){t.preventDefault(),n(o+"#updraftvault_recountquota").html(updraftlion.counting);try{updraft_send_command("vault_recountquota",{instance_id:n("#updraftvault_settings_connect").data("instance_id")},function(t){n(o+"#updraftvault_recountquota").html(updraftlion.updatequotacount),t.hasOwnProperty("html")&&(n(o+"#updraftvault_settings_connected").html(t.html),t.hasOwnProperty("connected")&&(t.connected?(n(o+"#updraftvault_settings_default").hide(),n(o+"#updraftvault_settings_connected").show()):(n(o+"#updraftvault_settings_connected").hide(),n(o+"#updraftvault_settings_default").show())))},{error_callback:function(t,e,a,r){n(o+"#updraftvault_recountquota").html(updraftlion.updatequotacount),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})}catch(t){n(o+"#updraftvault_recountquota").html(updraftlion.updatequotacount),console.log(t)}}),n(o+"#remote-storage-holder").on("click","#updraftvault_disconnect",function(t){t.preventDefault(),n(o+"#updraftvault_disconnect").html(updraftlion.disconnecting);try{updraft_send_command("vault_disconnect",{immediate_echo:!0,instance_id:n("#updraftvault_settings_connect").data("instance_id")},function(t){n(o+"#updraftvault_disconnect").html(updraftlion.disconnect),t.hasOwnProperty("html")&&(n(o+"#updraftvault_settings_connected").html(t.html).slideUp(),n(o+"#updraftvault_settings_default").slideDown())},{error_callback:function(t,e,a,r){n(o+"#updraftvault_disconnect").html(updraftlion.disconnect),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}})}catch(t){n(o+"#updraftvault_disconnect").html(updraftlion.disconnect),console.log(t)}}),n(o+"#remote-storage-holder").on("click","#updraftvault_connect",function(t){t.preventDefault(),n(o+"#updraftvault_settings_default").slideUp(),n(o+"#updraftvault_settings_connect").slideDown()}),n(o+"#remote-storage-holder").on("click","#updraftvault_showoptions",function(t){t.preventDefault(),n(o+"#updraftvault_settings_default").slideUp(),n(o+"#updraftvault_settings_showoptions").slideDown()}),n("#remote-storage-holder").on("keyup",".updraftplus_onedrive_folder_input",function(t){var e=n(this).val(),a=n(this).closest("td");0==e.indexOf("https:")||0==e.indexOf("http:")?a.find(".onedrive_folder_error").length||a.append('
              '+updraftlion.onedrive_folder_url_warning+"
              "):a.find(".onedrive_folder_error").slideUp("slow",function(){a.find(".onedrive_folder_error").remove()})}),n(o+"#remote-storage-holder").on("click","#updraftvault_connect_go",function(t){return n(o+"#updraftvault_connect_go").html(updraftlion.connecting),updraft_send_command("vault_connect",{email:n("#updraftvault_email").val(),pass:n("#updraftvault_pass").val(),instance_id:n("#updraftvault_settings_connect").data("instance_id")},function(t,e,a){n(o+"#updraftvault_connect_go").html(updraftlion.connect),t.hasOwnProperty("e")?(updraft_html_modal('

              '+updraftlion.errornocolon+"

              "+t.e+"

              ",updraftlion.disconnect,400,250),t.hasOwnProperty("code")&&"no_quota"==t.code&&(n(o+"#updraftvault_settings_connect").slideUp(),n(o+"#updraftvault_settings_default").slideDown())):t.hasOwnProperty("connected")&&t.connected&&t.hasOwnProperty("html")?(n(o+"#updraftvault_settings_connect").slideUp(),n(o+"#updraftvault_settings_connected").html(t.html).slideDown()):(console.log(t),alert(updraftlion.unexpectedresponse+" "+a))},{error_callback:function(t,e,a,r){n(o+"#updraftvault_connect_go").html(updraftlion.connect),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))}}),!1}),n("#updraft-iframe-modal").on("change","#always_keep_this_backup",function(){var e=n(this).data("backup_key");updraft_send_command("always_keep_this_backup",{backup_key:e,always_keep:n(this).is(":checked")?1:0},function(t){t.hasOwnProperty("rawbackup")&&(jQuery("#updraft-iframe-modal").dialog("close"),jQuery(".updraft_existing_backups_row_"+e+" .updraft_existingbackup_date").data("rawbackup",t.rawbackup),updraft_html_modal(jQuery(".updraft_existing_backups_row_"+e+" .updraft_existingbackup_date").data("rawbackup"),updraftlion.raw,780,500))})})}),jQuery(function(t){try{"undefined"!=typeof updraft_plupload_config2&&((a=new plupload.Uploader(updraft_plupload_config2)).bind("Init",function(t){var e=jQuery("#plupload-upload-ui2");t.features.dragdrop?(e.addClass("drag-drop"),jQuery("#drag-drop-area2").on("dragover.wp-uploader",function(){e.addClass("drag-over")}).on("dragleave.wp-uploader, drop.wp-uploader",function(){e.removeClass("drag-over")})):(e.removeClass("drag-drop"),jQuery("#drag-drop-area2").off(".wp-uploader"))}),a.init(),a.bind("FilesAdded",function(t,e){plupload.each(e,function(t){if(!/^backup_([\-0-9]{15})_.*_([0-9a-f]{12})-db([0-9]+)?\.(gz\.crypt)$/i.test(t.name))return alert(t.name+": "+updraftlion.notdba),void a.removeFile(t);jQuery("#filelist2").append('
              '+t.name+" ("+plupload.formatSize(0)+"/"+plupload.formatSize(t.size)+')
              ')}),t.refresh(),t.start()}),a.bind("UploadProgress",function(t,e){jQuery("#"+e.id+" .fileprogress").width(e.percent+"%"),jQuery("#"+e.id+" span").html(plupload.formatSize(parseInt(e.size*e.percent/100)))}),a.bind("Error",function(t,e){err_makesure="-200"==e.code?"\n"+updraftlion.makesure2:updraftlion.makesure,alert(updraftlion.uploaderr+" (code "+e.code+") : "+e.message+" "+err_makesure)}),a.bind("FileUploaded",function(t,e,a){"200"==a.status?"ERROR:"==a.response.substring(0,6)?alert(updraftlion.uploaderror+" "+a.response.substring(6)):"OK:"==a.response.substring(0,3)?(bkey=a.response.substring(3),jQuery("#"+e.id+" .fileprogress").hide(),jQuery("#"+e.id).append(updraftlion.uploaded+' '+updraftlion.followlink+" "+updraftlion.thiskey+" "+jQuery("#updraftplus_db_decrypt").val().replace(/&/g,"&").replace(//g,">"))):alert(updraftlion.unknownresp+" "+a.response):alert(updraftlion.ukrespstatus+" "+a.code)}))}catch(t){console.log(t)}var a;if(jQuery("#updraft-hidethis").remove(),Handlebars.registerHelper("ifeq",function(t,e,a){return(t="string"!=typeof t&&null!=t?t.toString():t)===(e="string"!=typeof e&&null!=e?e.toString():e)?a.fn(this):a.inverse(this)}),Handlebars.registerHelper("maskPassword",function(t){return t.replace(/./gi,"*")}),Handlebars.registerHelper("encodeURIComponent",function(t){return encodeURIComponent(t)}),Handlebars.registerHelper("ifCond",function(t,e,a,r){switch(e){case"==":return t==a?r.fn(this):r.inverse(this);case"===":return t===a?r.fn(this):r.inverse(this);case"!=":return t!=a?r.fn(this):r.inverse(this);case"!==":return t!==a?r.fn(this):r.inverse(this);case"<":return t":return a=":return a<=t?r.fn(this):r.inverse(this);case"&&":return t&&a?r.fn(this):r.inverse(this);case"||":return t||a?r.fn(this):r.inverse(this);case"typeof":return t===typeof a?r.fn(this):r.inverse(this);case"not_typeof":return t!==typeof a?r.fn(this):r.inverse(this);default:return r.inverse(this)}}),Handlebars.registerHelper("for",function(t,e,a,r){for(var n="",o=t;o \t\t\t \t\t\t \t\t\t\t

              \t\t\t\t\t \t\t\t\t

              \t\t\t \t\t"}),t("#remote-storage-holder").length){var e,r="",n=["default","template_properties"];for(e in updraftlion.remote_storage_templates)if(void 0!==updraftlion.remote_storage_options[e]&&n.length'+jQuery(this).html()+"

              "),e=!0}),e&&((t={})[updraftlion.cancel]=function(){jQuery(this).dialog("close")},jQuery("#updraft-authenticate-modal").dialog({autoOpen:!0,modal:!0,resizable:!1,draggable:!1,resizeOnWindowResize:!0,scrollWithViewport:!0,resizeAccordingToViewport:!0,useContentSize:!1,open:function(t,e){o(this).dialog("option","width",860),o(this).dialog("option","height",260)},buttons:t}).dialog("open"))}(new Image).src=updraftlion.ud_url+"/images/notices/updraft_logo.png",o("#updraft-navtab-settings-content input.updraft_include_entity").on("change",function(t){var e=o(this).attr("id"),a=o(this).is(":checked");o("#backupnow_files_"+e).prop("checked",a)}),o("#updraftplus-settings-save").on("click",function(t){t.preventDefault(),o.blockUI({css:{width:"300px",border:"none","border-radius":"10px",left:"calc(50% - 150px)",padding:"20px"},message:'

              '+updraftlion.saving+"
              "}),updraft_send_command("savesettings",{settings:a("string"),updraftplus_version:updraftlion.updraftplus_version},function(t,e,a){r(t,a),o("#updraft-wrap .fade").delay(6e3).fadeOut(2e3),window.updraft_main_tour&&!window.updraft_main_tour.canceled?(window.updraft_main_tour.show("settings_saved"),n()):o("html, body").animate({scrollTop:o("#updraft-wrap").offset().top},1e3,function(){n()}),o.unblockUI()},{action:"updraft_savesettings",error_callback:function(t,e,a,r){o.unblockUI(),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),alert(r),console.log(t))},nonce:updraftplus_settings_nonce})}),o("#updraftplus-settings-export").on("click",function(){var t,e;updraft_settings_form_changed&&alert(updraftlion.unsaved_settings_export),t=a("object"),e=new Date,t=JSON.stringify({version:"1.12.40",epoch_date:e.getTime(),local_date:e.toLocaleString(),network_site_url:updraftlion.network_site_url,data:t}),(e=document.body.appendChild(document.createElement("a"))).setAttribute("download",updraftlion.export_settings_file_name),e.setAttribute("style","display:none;"),e.setAttribute("href","data:text/json;charset=UTF-8,"+encodeURIComponent(t)),e.click()}),o("#updraftplus-settings-import").on("click",function(){o.blockUI({css:{width:"300px",border:"none","border-radius":"10px",left:"calc(50% - 150px)",padding:"20px"},message:'

              '+updraftlion.importing+"
              "});var t=document.getElementById("import_settings");if(0==t.files.length)return alert(updraftlion.import_select_file),void o.unblockUI();var t=t.files[0],e=new FileReader;e.onload=function(){var t,e=this.result;try{t=ud_parse_json(e)}catch(t){return void(o.unblockUI(),jQuery("#import_settings").val(""),console.log(e),console.log(t),alert(updraftlion.import_invalid_json_file))}window.confirm(updraftlion.importing_data_from+" "+t.network_site_url+"\n"+updraftlion.exported_on+" "+t.local_date+"\n"+updraftlion.continue_import)?updraft_send_command("importsettings",{settings:JSON.stringify(t.data),updraftplus_version:updraftlion.updraftplus_version},function(t,e,a){t=r(t);!t.hasOwnProperty("saved")||t.saved?(updraft_settings_form_changed=!1,location.replace(updraftlion.updraft_settings_url)):(o.unblockUI(),t.hasOwnProperty("error_message")&&t.error_message&&alert(t.error_message))},{action:"updraft_importsettings",nonce:updraftplus_settings_nonce,error_callback:function(t,e,a,r){o.unblockUI(),void 0!==r&&r.hasOwnProperty("fatal_error")?(console.error(r.fatal_error_message),alert(r.fatal_error_message)):(r="updraft_send_command: error: "+e+" ("+a+")",console.log(r),console.log(t),alert(r))}}):o.unblockUI()},e.readAsText(t)}),o(".udp-replace-with-iframe--js").on("click",function(t){t.preventDefault();t=o(this).prop("href");o('