From 78c9b72ce0f576884490af117f99bc373ec86057 Mon Sep 17 00:00:00 2001 From: Spencer Finnell Date: Tue, 11 Oct 2022 12:59:37 -0400 Subject: [PATCH] `release/4.6.0` (#183) --- data/tax-codes.json | 2654 +++++++++++++++++ includes/core/api/paymentintents.php | 42 + includes/core/assets/css/admin/admin.scss | 13 +- includes/core/assets/css/simpay-admin.min.css | 2 +- .../core/assets/css/simpay-admin.min.css.map | 2 +- includes/core/assets/js/admin/index.js | 1 + .../assets/js/admin/payment-form/index.js | 1 + .../assets/js/admin/payment-form/taxes.js | 20 + includes/core/assets/js/frontend/index.js | 43 +- .../assets/js/frontend/payment-forms/index.js | 2 +- .../payment-forms/stripe-checkout/submit.js | 34 +- .../assets/js/packages/api/src/customers.js | 7 +- .../core/assets/js/packages/api/src/index.js | 1 + .../core/assets/js/packages/api/src/orders.js | 55 + .../js/packages/api/src/paymentintents.js | 7 +- .../assets/js/packages/api/src/sessions.js | 7 +- .../js/packages/api/src/setupintents.js | 4 +- .../js/packages/api/src/subscriptions.js | 7 +- .../core/assets/js/packages/cart/src/cart.js | 146 +- .../assets/js/packages/cart/src/line-item.js | 13 +- .../js/packages/payment-forms/src/utils.js | 3 +- .../js/packages/utils/src/upgrade-modal.js | 3 +- .../assets/js/simpay-admin-notices.min.js | 2 +- .../assets/js/simpay-admin-page-smtp.min.js | 2 +- includes/core/assets/js/simpay-admin.min.js | 2 +- .../core/assets/js/simpay-admin.min.js.map | 2 +- .../assets/js/simpay-block-button.min.js.map | 1 + .../core/assets/js/simpay-polyfill.min.js | 2 +- .../assets/js/simpay-public-shared.min.js | 2 +- includes/core/assets/js/simpay-public.min.js | 2 +- .../core/assets/js/simpay-public.min.js.map | 2 +- includes/core/class-simplepay.php | 1 + includes/core/forms/class-price-options.php | 14 +- includes/core/forms/functions.php | 92 +- includes/core/functions/shared.php | 32 +- includes/core/i18n/countries.php | 75 +- includes/core/i18n/states.php | 2095 +++++++++++++ includes/core/i18n/stripe.php | 9 +- includes/core/payments/class-stripe-api.php | 49 +- includes/core/payments/customer.php | 4 + .../payment-confirmation-template-tags.php | 14 +- includes/core/payments/paymentintent.php | 63 +- .../core/post-types/simple-pay/actions.php | 54 + .../simple-pay/edit-form-payment-options.php | 124 +- .../core/post-types/simple-pay/edit-form.php | 4 +- includes/core/recaptcha/index.php | 90 + includes/core/recaptcha/settings.php | 28 +- includes/core/rest-api/class-controller.php | 80 +- .../v2/class-checkout-session-controller.php | 48 +- .../rest-api/v2/class-customer-controller.php | 39 +- .../v2/class-paymentintent-controller.php | 17 +- includes/core/utils/class-rate-limiting.php | 13 +- lib/Stripe/CHANGELOG.md | 119 +- lib/Stripe/Makefile | 2 +- lib/Stripe/OPENAPI_VERSION | 2 +- lib/Stripe/README.md | 2 +- lib/Stripe/VERSION | 2 +- lib/Stripe/data/ca-certificates.crt | 1661 +++++------ lib/Stripe/init.php | 11 +- lib/Stripe/lib/Account.php | 71 +- lib/Stripe/lib/ApiRequestor.php | 6 +- lib/Stripe/lib/BitcoinReceiver.php | 71 - lib/Stripe/lib/BitcoinTransaction.php | 19 - lib/Stripe/lib/Card.php | 7 +- lib/Stripe/lib/CashBalance.php | 2 +- lib/Stripe/lib/Charge.php | 5 +- lib/Stripe/lib/Checkout/Session.php | 20 +- lib/Stripe/lib/Collection.php | 3 + lib/Stripe/lib/Coupon.php | 1 + lib/Stripe/lib/CreditNote.php | 22 +- lib/Stripe/lib/CreditNoteLineItem.php | 2 + lib/Stripe/lib/Customer.php | 17 +- lib/Stripe/lib/Dispute.php | 6 +- lib/Stripe/lib/EphemeralKey.php | 1 - lib/Stripe/lib/ErrorObject.php | 56 +- lib/Stripe/lib/Event.php | 16 +- lib/Stripe/lib/File.php | 5 - .../lib/FinancialConnections/Account.php | 2 +- lib/Stripe/lib/Invoice.php | 64 +- lib/Stripe/lib/InvoiceLineItem.php | 2 + lib/Stripe/lib/Issuing/Card.php | 20 +- lib/Stripe/lib/Issuing/Dispute.php | 2 +- lib/Stripe/lib/LineItem.php | 2 - lib/Stripe/lib/Order.php | 2 +- lib/Stripe/lib/OrderItem.php | 19 - lib/Stripe/lib/PaymentIntent.php | 2 +- lib/Stripe/lib/PaymentLink.php | 2 +- lib/Stripe/lib/PaymentMethod.php | 2 + lib/Stripe/lib/Payout.php | 2 + lib/Stripe/lib/Price.php | 2 + lib/Stripe/lib/Quote.php | 4 +- lib/Stripe/lib/Recipient.php | 44 - lib/Stripe/lib/Refund.php | 6 +- lib/Stripe/lib/SearchResult.php | 3 + .../lib/Service/Checkout/SessionService.php | 6 +- lib/Stripe/lib/Service/CreditNoteService.php | 2 +- lib/Stripe/lib/Service/CustomerService.php | 18 +- .../FinancialConnections/AccountService.php | 2 +- lib/Stripe/lib/Service/InvoiceService.php | 4 +- lib/Stripe/lib/Service/OrderService.php | 2 +- .../lib/Service/PaymentIntentService.php | 4 - lib/Stripe/lib/Service/PaymentLinkService.php | 2 +- .../lib/Service/PaymentMethodService.php | 19 +- lib/Stripe/lib/Service/QuoteService.php | 4 +- lib/Stripe/lib/Service/SourceService.php | 8 +- .../Service/TestHelpers/CustomerService.php | 24 + .../TestHelpers/Issuing/CardService.php | 76 + .../Issuing/IssuingServiceFactory.php | 25 + .../TestHelpers/TestHelpersServiceFactory.php | 4 + lib/Stripe/lib/Service/TransferService.php | 14 - lib/Stripe/lib/SetupAttempt.php | 2 + lib/Stripe/lib/ShippingRate.php | 3 +- lib/Stripe/lib/Source.php | 27 +- lib/Stripe/lib/Stripe.php | 2 +- lib/Stripe/lib/StripeObject.php | 24 +- lib/Stripe/lib/Subscription.php | 24 +- lib/Stripe/lib/SubscriptionItem.php | 20 - lib/Stripe/lib/ThreeDSecure.php | 37 - lib/Stripe/lib/Transfer.php | 22 +- lib/Stripe/lib/Treasury/CreditReversal.php | 2 +- lib/Stripe/lib/Treasury/DebitReversal.php | 2 +- lib/Stripe/lib/Treasury/InboundTransfer.php | 6 +- lib/Stripe/lib/Treasury/OutboundPayment.php | 4 +- lib/Stripe/lib/Treasury/OutboundTransfer.php | 2 +- lib/Stripe/lib/Treasury/ReceivedCredit.php | 2 + lib/Stripe/lib/Treasury/ReceivedDebit.php | 2 + lib/Stripe/lib/Util/ApiVersion.php | 10 + lib/Stripe/lib/Util/CaseInsensitiveArray.php | 3 + lib/Stripe/lib/Util/ObjectTypes.php | 6 - package.json | 2 +- readme.txt | 91 +- .../SiteHealth/SiteHealthDebugInformation.php | 77 +- src/AntiSpam/AntiSpamServiceProvider.php | 60 + src/AntiSpam/EmailVerification.php | 947 ++++++ src/AntiSpam/RequireAuthentication.php | 139 + src/Block/ButtonBlock.php | 12 +- src/PaymentPage/PaymentPageOutput.php | 5 + src/Plugin.php | 1 + src/StripeConnect/ApplicationFee.php | 30 + src/StripeConnect/ConnectionSubscriber.php | 6 +- stripe-checkout.php | 4 +- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 8 +- vendor/composer/autoload_static.php | 8 +- vendor/composer/installed.json | 14 +- vendor/composer/installed.php | 10 +- 146 files changed, 8318 insertions(+), 1850 deletions(-) create mode 100644 data/tax-codes.json create mode 100644 includes/core/api/paymentintents.php create mode 100644 includes/core/assets/js/admin/payment-form/taxes.js create mode 100644 includes/core/assets/js/packages/api/src/orders.js create mode 100644 includes/core/assets/js/simpay-block-button.min.js.map create mode 100644 includes/core/i18n/states.php delete mode 100644 lib/Stripe/lib/BitcoinReceiver.php delete mode 100644 lib/Stripe/lib/BitcoinTransaction.php delete mode 100644 lib/Stripe/lib/OrderItem.php delete mode 100644 lib/Stripe/lib/Recipient.php create mode 100644 lib/Stripe/lib/Service/TestHelpers/CustomerService.php create mode 100644 lib/Stripe/lib/Service/TestHelpers/Issuing/CardService.php create mode 100644 lib/Stripe/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php delete mode 100644 lib/Stripe/lib/ThreeDSecure.php create mode 100644 lib/Stripe/lib/Util/ApiVersion.php create mode 100644 src/AntiSpam/AntiSpamServiceProvider.php create mode 100644 src/AntiSpam/EmailVerification.php create mode 100644 src/AntiSpam/RequireAuthentication.php diff --git a/data/tax-codes.json b/data/tax-codes.json new file mode 100644 index 00000000..4bd52370 --- /dev/null +++ b/data/tax-codes.json @@ -0,0 +1,2654 @@ +[ + { + "id": "txcd_99999999", + "object": "tax_code", + "description": "Any tangible or physical good. For jurisdictions that impose a tax, the standard rate is applied.", + "name": "General - Tangible Goods" + }, + { + "id": "txcd_20030000", + "object": "tax_code", + "description": "Miscellaneous services. This code will only treat services as taxable if the jurisdiction taxes services generally.", + "name": "General - Services" + }, + { + "id": "txcd_10000000", + "object": "tax_code", + "description": "Any electronically supplied good or service.", + "name": "General - Electronically Supplied Services" + }, + { + "id": "txcd_00000000", + "object": "tax_code", + "description": "Any nontaxable good or service which can be used to ensure no tax is applied, even for jurisdictions that impose a tax.", + "name": "Nontaxable" + }, + { + "id": "txcd_10010001", + "object": "tax_code", + "description": "Cloud service offering infrastructure resources (specifically server storage, RAM, and CPU usage) over the internet. This offering is intended for personal use, rather than for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Infrastructure as a service (IaaS) - personal use" + }, + { + "id": "txcd_10101000", + "object": "tax_code", + "description": "Cloud service offering infrastructure resources (specifically server storage, RAM, and CPU usage) over the internet. This offering is intended for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Infrastructure as a service (IaaS) - business use" + }, + { + "id": "txcd_10102000", + "object": "tax_code", + "description": "Cloud service providing a platform for users to develop, run, and manage applications. This offering is intended for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Platform as a service (PaaS) - business use" + }, + { + "id": "txcd_10102001", + "object": "tax_code", + "description": "Cloud service providing a platform for users to develop, run, and manage applications. This offering is intended for personal use, rather than for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Platform as a Service (PaaS) - personal use" + }, + { + "id": "txcd_10103000", + "object": "tax_code", + "description": "Cloud services software delivered over the internet. The software isn't customized for a specific buyer and they don't download anything. The software is intended for personal use, rather than for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Software as a service (SaaS) - personal use" + }, + { + "id": "txcd_10103001", + "object": "tax_code", + "description": "Cloud services software delivered over the internet. The software isn't customized for a specific buyer and they don't download anything. The software is intended for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Software as a service (SaaS) - business use" + }, + { + "id": "txcd_10103100", + "object": "tax_code", + "description": "Cloud services software delivered over the internet. The software isn't customized for a specific buyer and this model assumes an electronic transfer to the buyer, such as an app download. The software is intended for personal use, rather than for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Software as a service (SaaS) -- electronic download - personal use" + }, + { + "id": "txcd_10103101", + "object": "tax_code", + "description": "Cloud services software delivered over the internet. The software isn't customized for a specific buyer and this model assumes an electronic transfer to the buyer, such as an app download. The software is intended for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Software as a service (SaaS) -- electronic download - business use" + }, + { + "id": "txcd_10104001", + "object": "tax_code", + "description": "Cloud service providing business process outsourcing services over the internet.", + "name": "Cloud-based business process as a service" + }, + { + "id": "txcd_10201000", + "object": "tax_code", + "description": "Video or electronic games in the common sense that are transferred electronically. These goods are downloaded to a device with permanent access granted.", + "name": "Video Games - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10201001", + "object": "tax_code", + "description": "Video or electronic games in the common sense that are transferred electronically. These goods are downloaded to a device with access that expires after a stated period of time.", + "name": "Video Games - downloaded - non subscription - with limited rights" + }, + { + "id": "txcd_10201002", + "object": "tax_code", + "description": "Video or electronic games in the common sense that are transferred electronically. These goods are downloaded to a device with access that is conditioned upon continued subscription payment.", + "name": "Video Games - downloaded - subscription - with conditional rights" + }, + { + "id": "txcd_10201003", + "object": "tax_code", + "description": "Video or electronic games in the common sense that are transferred electronically. These goods are streamed to a device with access that expires after a stated period of time.", + "name": "Video Games - streamed - non subscription - with limited rights" + }, + { + "id": "txcd_10201004", + "object": "tax_code", + "description": "Video or electronic games in the common sense that are transferred electronically. These goods are streamed to a device with access that is conditioned upon continued subscription payment.", + "name": "Video Games - streamed - subscription - with conditional rights" + }, + { + "id": "txcd_10202000", + "object": "tax_code", + "description": "Prewritten (\"canned\") software that the buyer downloads. The software is intended for personal use, rather than for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Downloadable software - personal use" + }, + { + "id": "txcd_10202001", + "object": "tax_code", + "description": "Prewritten (\"canned\") software that the buyer downloads used for non-recreational purposes, such as antivirus, database, educational, financial, word processing, etc. The software is intended for personal use, rather than for consumption in a commercial enterprise. Note: The distinction between business use and personal use for this tax code is relevant only if you are transacting business in the US.", + "name": "Downloadable software - non-recreational" + }, + { + "id": "txcd_10202003", + "object": "tax_code", + "description": "Prewritten (\"canned\") software that the buyer downloads. The software is intended for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Downloadable software - business use" + }, + { + "id": "txcd_10203000", + "object": "tax_code", + "description": "Custom software that the buyer downloads. The software is intended for personal use, rather than for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Downloadable software - custom - personal use" + }, + { + "id": "txcd_10203001", + "object": "tax_code", + "description": "Custom software that the buyer downloads. The software is intended for use by a commercial enterprise. Note: The distinction between business use and personal use for this product tax category is relevant only if you have sales in the US.", + "name": "Downloadable software - custom - business use" + }, + { + "id": "txcd_10301000", + "object": "tax_code", + "description": "The recording of a book read aloud and sold with unlimited usage (e.g., a downloaded audio copy of The High Growth Handbook).", + "name": "Audiobook" + }, + { + "id": "txcd_10302000", + "object": "tax_code", + "description": "Works that are generally recognized in the ordinary and usual sense as books and are transferred electronically. These goods are downloaded to a device with permanent access granted. These goods include novels, autobiographies, encyclopedias, dictionaries, repair manuals, phone directories, business directories, zip code directories, cookbooks, etc.", + "name": "Digital Books - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10302001", + "object": "tax_code", + "description": "Works that are generally recognized in the ordinary and usual sense as books and are transferred electronically. These goods are downloaded to a device with access that expires after a stated period of time. These goods include novels, autobiographies, encyclopedias, dictionaries, repair manuals, phone directories, business directories, zip code directories, cookbooks, etc.", + "name": "Digital Books - downloaded - non subscription - with limited rights" + }, + { + "id": "txcd_10302002", + "object": "tax_code", + "description": "Works that are generally recognized in the ordinary and usual sense as books and are transferred electronically. These goods are downloaded to a device with access that is conditioned upon continued subscription payment. These goods include novels, autobiographies, encyclopedias, dictionaries, repair manuals, phone directories, business directories, zip code directories, cookbooks, etc.", + "name": "Digital Books - downloaded - subscription - with conditional rights" + }, + { + "id": "txcd_10302003", + "object": "tax_code", + "description": "Works that are generally recognized in the ordinary and usual sense as books and are transferred electronically. These goods are viewable (but not downloadable) on a device with access that is conditioned upon continued subscription payment. These goods include novels, autobiographies, encyclopedias, dictionaries, repair manuals, phone directories, business directories, zip code directories, cookbooks, etc.", + "name": "Digital Books - viewable only - subscription - with conditional rights" + }, + { + "id": "txcd_10303000", + "object": "tax_code", + "description": "A digital version of a traditional periodical published at regular intervals with the entire publication or individual articles downloaded to a device with access that is conditioned upon continued subscription payment.", + "name": "Digital Magazines/Periodicals - downloadable - subscription - with conditional rights" + }, + { + "id": "txcd_10303001", + "object": "tax_code", + "description": "A digital version of a traditional magazine published at regular intervals. The publication is accessed via a subscription which also entitles the purchaser to physical copies of the media.", + "name": "Digital Magazines/Periodicals - subscription tangible and digital" + }, + { + "id": "txcd_10303002", + "object": "tax_code", + "description": "A digital version of a traditional periodical published at regular intervals with the entire publication or individual articles viewable (but not downloadable) on a device with access that is conditioned upon continued subscription payment.", + "name": "Digital Magazines/Periodicals - viewable only - subscription - with conditional rights" + }, + { + "id": "txcd_10303100", + "object": "tax_code", + "description": "A digital version of a traditional periodical published at regular intervals with the entire publication or individual articles downloaded to a device with permanent access granted. The publication is accessed without a subscription.", + "name": "Digital Magazines/Periodicals - downloadable - non subscription - with permanent rights" + }, + { + "id": "txcd_10303101", + "object": "tax_code", + "description": "A digital version of a traditional periodical published at regular intervals with the entire publication or individual articles viewable (but not downloadable) on a device with access that expires after a stated period of time. The publication is accessed without a subscription.", + "name": "Digital Magazines/Periodicals - viewable only - non subscription - with limited rights" + }, + { + "id": "txcd_10303102", + "object": "tax_code", + "description": "A digital version of a traditional periodical published at regular intervals with the entire publication or individual articles viewable (but not downloadable) on a device with permanent access granted. The publication is accessed without a subscription.", + "name": "Digital Magazines/Periodicals - viewable only - non subscription - with permanent rights" + }, + { + "id": "txcd_10303104", + "object": "tax_code", + "description": "A digital version of a traditional periodical published at regular intervals with the entire publication or individual articles downloaded to a device with access that expires after a stated period of time. The publication is accessed without a subscription.", + "name": "Digital Magazines/Periodicals - downloadable - non subscription - with limited rights" + }, + { + "id": "txcd_10304000", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals with the entire publication or individual articles downloaded to a device with permanent access granted. The publication is accessed without a subscription.", + "name": "Digital Newspapers - downloadable - non subscription - with permanent rights" + }, + { + "id": "txcd_10304001", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals with the entire publication or individual articles viewable (but not downloadable) on a device with access that expires after a stated period of time. The publication is accessed without a subscription.", + "name": "Digital Newspapers - viewable only - non subscription - with limited rights" + }, + { + "id": "txcd_10304002", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals with the entire publication or individual articles viewable (but not downloadable) on a device with permanent access granted. The publication is accessed without a subscription.", + "name": "Digital Newspapers - viewable only - non subscription - with permanent rights" + }, + { + "id": "txcd_10304003", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals with the entire publication or individual articles downloaded to a device with access that expires after a stated period of time. The publication is accessed without a subscription.", + "name": "Digital Newspapers - downloadable - non subscription - with limited rights" + }, + { + "id": "txcd_10304100", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals with the entire publication or individual articles downloaded to a device with access that is conditioned upon continued subscription payment.", + "name": "Digital Newspapers - downloadable - subscription - with conditional rights" + }, + { + "id": "txcd_10304101", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals. The publication is accessed via a subscription which also entitles the purchaser to physical copies of the media.", + "name": "Digital Newspapers - subscription tangible and digital" + }, + { + "id": "txcd_10304102", + "object": "tax_code", + "description": "A digital version of a traditional newspaper published at regular intervals with the entire publication or individual articles viewable (but not downloadable) on a device with access that is conditioned upon continued subscription payment.", + "name": "Digital Newspapers - viewable only - subscription - with conditional rights" + }, + { + "id": "txcd_10305000", + "object": "tax_code", + "description": "Works that are required as part of a formal academic education program and are transferred electronically. These goods are downloaded to a device with access that expires after a stated period of time.", + "name": "Digital School Textbooks - downloaded - non subscription - with limited rights" + }, + { + "id": "txcd_10305001", + "object": "tax_code", + "description": "Works that are required as part of a formal academic education program and are transferred electronically. These goods are downloaded to a device with permanent access granted.", + "name": "Digital School Textbooks - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10401000", + "object": "tax_code", + "description": "Works that result from the fixation of a series of musical, spoken, or other sounds that are transferred electronically. These goods are streamed to a device with access that expires after a stated period of time. These goods include prerecorded or live music, prerecorded or live readings of books or other written materials, prerecorded or live speeches, ringtones, or other sound recordings, but not including audio greeting cards.", + "name": "Digital Audio Works - streamed - non subscription - with limited rights" + }, + { + "id": "txcd_10401001", + "object": "tax_code", + "description": "Works that result from the fixation of a series of musical, spoken, or other sounds that are transferred electronically. These goods are downloaded to a device with access that expires after a stated period of time. These goods include prerecorded or live music, prerecorded or live readings of books or other written materials, prerecorded or live speeches, ringtones, or other sound recordings, but not including audio greeting cards.", + "name": "Digital Audio Works - downloaded - non subscription - with limited rights" + }, + { + "id": "txcd_10401100", + "object": "tax_code", + "description": "Works that result from the fixation of a series of musical, spoken, or other sounds that are transferred electronically. These goods are downloaded to a device with permanent access granted. These goods include prerecorded or live music, prerecorded or live readings of books or other written materials, prerecorded or live speeches, ringtones, or other sound recordings, but not including audio greeting cards.", + "name": "Digital Audio Works - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10401200", + "object": "tax_code", + "description": "Works that result from the fixation of a series of musical, spoken, or other sounds that are transferred electronically. These goods are streamed to a device with access that is conditioned upon continued subscription payment. These goods include prerecorded or live music, prerecorded or live readings of books or other written materials, prerecorded or live speeches, ringtones, or other sound recordings, but not including audio greeting cards.", + "name": "Digital Audio Works - streamed - subscription - with conditional rights" + }, + { + "id": "txcd_10402000", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods are streamed to a device with access that expires after a stated period of time. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - streamed - non subscription - with limited rights" + }, + { + "id": "txcd_10402100", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods are downloaded to a device with permanent access granted. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10402110", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods are downloaded to a device with access that expires after a stated period of time. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - downloaded - non subscription - with limited rights" + }, + { + "id": "txcd_10402200", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods are streamed to a device with access that is conditioned upon continued subscription payment. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - streamed - subscription - with conditional rights" + }, + { + "id": "txcd_10402300", + "object": "tax_code", + "description": "An audio visual work of a live performance streamed over the internet that you can only access for a limited time during the performance (e.g., a live concert stream).", + "name": "Digital video streaming -- live performance (limited use)" + }, + { + "id": "txcd_10501000", + "object": "tax_code", + "description": "Digital images that are downloaded to a device with permanent access granted.", + "name": "Digital Photographs/Images - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10502000", + "object": "tax_code", + "description": "Gift card or gift certificate that that you purchase and receive electronically and assumed to be multi-purpose.", + "name": "Gift card" + }, + { + "id": "txcd_10503000", + "object": "tax_code", + "description": "Individual digital news articles, newsletters, and other stand-alone documents. These goods are downloaded to a device with permanent access granted. These publications are accessed without a subscription.", + "name": "Digital other news or documents - downloadable - non subscription - with permanent rights" + }, + { + "id": "txcd_10503001", + "object": "tax_code", + "description": "Individual digital news articles, newsletters, and other stand-alone documents. These goods are downloaded to a device with access that expires after a stated period of time.", + "name": "Digital other news or documents - downloadable - non subscription - with limited rights" + }, + { + "id": "txcd_10503002", + "object": "tax_code", + "description": "Individual digital news articles, newsletters, and other stand-alone documents. These goods are downloaded to a device with access that is conditioned upon continued subscription payment.", + "name": "Digital other news or documents - downloadable - subscription - with conditional rights" + }, + { + "id": "txcd_10503003", + "object": "tax_code", + "description": "Individual digital news articles, newsletters, and other stand-alone documents. These goods are viewable (but not downloadable) on a device with access that expires after a stated period of time.", + "name": "Digital other news or documents - viewable only - non subscription - with limited rights" + }, + { + "id": "txcd_10503004", + "object": "tax_code", + "description": "Individual digital news articles, newsletters, and other stand-alone documents. These goods are viewable (but not downloadable) on a device with permanent access granted.", + "name": "Digital other news or documents - viewable only - non subscription - with permanent rights" + }, + { + "id": "txcd_10503005", + "object": "tax_code", + "description": "Individual digital news articles, newsletters, and other stand-alone documents. These goods are viewable (but not downloadable) on a device with access that is conditioned upon continued subscription payment.", + "name": "Digital other news or documents - viewable only - subscription - with conditional rights" + }, + { + "id": "txcd_10504000", + "object": "tax_code", + "description": "Electronic software documentation or user manuals - For custom software & delivered electronically.", + "name": "Electronic software documentation or user manuals - Custom, electronic delivery" + }, + { + "id": "txcd_10504003", + "object": "tax_code", + "description": "Electronic software documentation or user manuals - For prewritten software & delivered electronically.", + "name": "Electronic software documentation or user manuals - Prewritten, electronic delivery" + }, + { + "id": "txcd_10505000", + "object": "tax_code", + "description": "The final art used for actual reproduction by photomechanical or other processes or for display purposes, but does not include website or home page design, and that is transferred electronically. These goods are downloaded to a device with access that expires after a stated period of time. These goods include drawings, paintings, designs, photographs, lettering, paste-ups, mechanicals, assemblies, charts, graphs, illustrative materials, etc.", + "name": "Digital Finished Artwork - downloaded - non subscription - with limited rights" + }, + { + "id": "txcd_10505001", + "object": "tax_code", + "description": "The final art used for actual reproduction by photomechanical or other processes or for display purposes, but does not include website or home page design, and that is transferred electronically. These goods are downloaded to a device with permanent access granted. These goods include drawings, paintings, designs, photographs, lettering, paste-ups, mechanicals, assemblies, charts, graphs, illustrative materials, etc.", + "name": "Digital Finished Artwork - downloaded - non subscription - with permanent rights" + }, + { + "id": "txcd_10505002", + "object": "tax_code", + "description": "The final art used for actual reproduction by photomechanical or other processes or for display purposes, but does not include website or home page design, and that is transferred electronically. These goods are downloaded to a device with access that is conditioned upon continued subscription payment. These goods include drawings, paintings, designs, photographs, lettering, paste-ups, mechanicals, assemblies, charts, graphs, illustrative materials, etc.", + "name": "Digital Finished Artwork - downloaded - subscription - with conditional rights" + }, + { + "id": "txcd_10506000", + "object": "tax_code", + "description": "An electronic greeting \"card\" typically sent via email that contains an audio only message.", + "name": "Digital Greeting Cards - Audio Only" + }, + { + "id": "txcd_10506001", + "object": "tax_code", + "description": "An electronic greeting \"card\" typically sent via email that contains a series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any.", + "name": "Digital Greeting Cards - Audio Visual" + }, + { + "id": "txcd_10506002", + "object": "tax_code", + "description": "An electronic greeting \"card\" typically sent via email that contains only static images or text, rather than an audio visual or audio only experience.", + "name": "Digital Greeting Cards - Static text and/or images only" + }, + { + "id": "txcd_10701000", + "object": "tax_code", + "description": "Online advertising services such as creating and uploading advertisements on the internet. This is a standalone service that doesn’t involve the sale of tangible personal property.", + "name": "Website advertising" + }, + { + "id": "txcd_10701100", + "object": "tax_code", + "description": "A service to enable a customer's website to be accessible on the internet.", + "name": "Website hosting" + }, + { + "id": "txcd_10701200", + "object": "tax_code", + "description": "A service to design a website or webpage.", + "name": "Website design" + }, + { + "id": "txcd_10701300", + "object": "tax_code", + "description": "An online service that allows a customer to create, transform, process, or access data electronically.", + "name": "Website data processing" + }, + { + "id": "txcd_10701400", + "object": "tax_code", + "description": "An online service furnishing information to customers, including online search and data comparison.", + "name": "Website information services" + }, + { + "id": "txcd_10702000", + "object": "tax_code", + "description": "A subscription service for membership to an online dating platform.", + "name": "Online Dating Services" + }, + { + "id": "txcd_10804001", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods are streamed and/or downloaded to a device with access that is conditioned upon continued subscription payment. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - bundle - downloaded and streamed - subscription - with conditional rights" + }, + { + "id": "txcd_10804002", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods can be streamed and/or downloaded to a device with access that expires after a stated period of time. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - bundle - downloaded with limited rights and streamed - non subscription" + }, + { + "id": "txcd_10804003", + "object": "tax_code", + "description": "A series of related images which, when shown in succession, impart an impression of motion, together with accompanying sounds, if any. These goods can be streamed and/or downloaded to a device with permanent access granted. These goods include motion pictures, music videos, animations, news and entertainment programs, and live events, but do not include video greeting cards or video or electronic games.", + "name": "Digital Audio Visual Works - bundle - downloaded with permanent rights and streamed - non subscription" + }, + { + "id": "txcd_20010001", + "object": "tax_code", + "description": "A charge to clean, wash or wax a motor vehicle, other than a self-service coin (or credit card) operated washing station. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Car Washing" + }, + { + "id": "txcd_20010003", + "object": "tax_code", + "description": "A charge for the cleaning of tangible personal property, other than motor vehicles or clothing.", + "name": "Cleaning of Tangible Personal Property" + }, + { + "id": "txcd_20010004", + "object": "tax_code", + "description": "A charge for janitorial services to commercial buildings, including the cleaning of floors, carpets, walls, windows, fixtures, exterior cleaning, etc.", + "name": "Commercial Cleaning Services" + }, + { + "id": "txcd_20010006", + "object": "tax_code", + "description": "A charge for custodial services to residential structures, including the cleaning of floors, carpets, walls, windows, appliances, furniture, fixtures, exterior cleaning, etc. No Tangible Personal Property is transferred.", + "name": "Residential Cleaning Services" + }, + { + "id": "txcd_20010007", + "object": "tax_code", + "description": "A charge for the service to maintain the proper operation of home or building gutters through cleaning out debris that could otherwise affect the proper water flow through the gutter system.", + "name": "Gutter Cleaning Services" + }, + { + "id": "txcd_20020009", + "object": "tax_code", + "description": "A labor charge to install hardware where the installed property isn't considered permanently attached to the real property.", + "name": "Installation of hardware -- nonpermanent" + }, + { + "id": "txcd_20020010", + "object": "tax_code", + "description": "A labor charge to install hardware where the installed property is permanently attached to the real property.", + "name": "Installation of hardware -- permanent" + }, + { + "id": "txcd_20020018", + "object": "tax_code", + "description": "A charge separately stated from any sale of the product itself for the installation of tangible personal property. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Installation services" + }, + { + "id": "txcd_20030002", + "object": "tax_code", + "description": "Services provided by a facility for overnight care of an animal not related to veterinary care.", + "name": "Pet boarding" + }, + { + "id": "txcd_20030003", + "object": "tax_code", + "description": "Grooming services for an animal such as haircuts, bathing, nail trimming, and flea dips.", + "name": "Pet grooming" + }, + { + "id": "txcd_20030004", + "object": "tax_code", + "description": "A charge for providing usage of a parking space.", + "name": "Parking Services" + }, + { + "id": "txcd_20030005", + "object": "tax_code", + "description": "Service to train an animal to obey certain commands.", + "name": "Pet Services - Obedience Training" + }, + { + "id": "txcd_20040001", + "object": "tax_code", + "description": "Services provided by beauty shops and barber shops, including but not limited to haircutting, hair coloring, shampooing, blow drying, permanents, hair extensions, hair straightening, and hair restorations.", + "name": "Hairdressing Services" + }, + { + "id": "txcd_20040002", + "object": "tax_code", + "description": "A charge for personal care services. Please select a more granular product tax category where appropriate.", + "name": "Personal Care Services" + }, + { + "id": "txcd_20040003", + "object": "tax_code", + "description": "A charge for the puncturing or penetration of the skin of a person and the insertion of jewelry or other adornment into the opening.", + "name": "Body Piercing" + }, + { + "id": "txcd_20040004", + "object": "tax_code", + "description": "Services that provide non-medical care and supervision for infant to school-age children or senior citizens.", + "name": "Childcare Services / Adultcare" + }, + { + "id": "txcd_20040005", + "object": "tax_code", + "description": "A service that arranges introductions, for a fee, for strangers seeking romantic partners or friends. This excludes online dating services.", + "name": "Dating Services" + }, + { + "id": "txcd_20040006", + "object": "tax_code", + "description": "Services provided by employment agencies to match employees to employers and employers to employees.", + "name": "Employment Services" + }, + { + "id": "txcd_20040007", + "object": "tax_code", + "description": "A charge for the cosmetic beauty treatment for the fingernails and toenails, including filing, cutting, shaping and the application of polish.", + "name": "Manicure Services" + }, + { + "id": "txcd_20040008", + "object": "tax_code", + "description": "Services where the use of structured touch, include holding, applying pressure, positioning, and mobilizing soft tissue of the body by manual technique. Note: This does not include medical massage prescribed by a physician.", + "name": "Massage Services" + }, + { + "id": "txcd_20040009", + "object": "tax_code", + "description": "Personal services typically with the purpose of improving health, beauty and relaxation through treatments such as hair, massages and facials.", + "name": "Spa Services" + }, + { + "id": "txcd_20040010", + "object": "tax_code", + "description": "Services for artificial tanning and skin beautification.", + "name": "Tanning Services" + }, + { + "id": "txcd_20040011", + "object": "tax_code", + "description": "A charge for the process that uses needles and colored ink to permanently put a mark or design on a person’s skin. Also applying permanent make-up, such as eyelining and other permanent colors to enhance the skin of the face, lips, eyelids, and eyebrows.", + "name": "Tattooing Services" + }, + { + "id": "txcd_20060000", + "object": "tax_code", + "description": "A charge for a service performed by providers considered professionals due to the extensive initial and continuing education and/or training requirements, and the likelihood of state or federal licensing requirements. Choose this product tax code for any professional service offering in which a more detailed code is not available.", + "name": "Professional Services" + }, + { + "id": "txcd_20060001", + "object": "tax_code", + "description": "The measurement, processing and communication of financial information about economic entities including, but is not limited to, financial accounting, management accounting, auditing, cost containment and auditing services, taxation and accounting information systems; excluding general bookkeeping service.", + "name": "Accounting Services" + }, + { + "id": "txcd_20060002", + "object": "tax_code", + "description": "Services rendered for advertising which do not include the exchange of tangible personal property.", + "name": "Advertising Services" + }, + { + "id": "txcd_20060008", + "object": "tax_code", + "description": "Services rendered for the compiling and relating of information regarding the history of financial transactions of a person or entity.", + "name": "Credit Reporting Services" + }, + { + "id": "txcd_20060009", + "object": "tax_code", + "description": "A service that allows data to be created, transformed, where the service is not performed online. Select \"Website data processing\" if the service is performed online and data is accessed by the customer electronically.", + "name": "Tangible services -- data processing" + }, + { + "id": "txcd_20060010", + "object": "tax_code", + "description": "Services performed to collect or adjust past-due debt from borrowers.", + "name": "Debt Collection Services" + }, + { + "id": "txcd_20060013", + "object": "tax_code", + "description": "Services provided by a professional trained to apply physical laws and principles of engineering in the design, development, and utilization of machines, materials, instruments, structures, processes, and systems. The services involve any of the following activities: provision of advice, preparation of feasibility studies, preparation of preliminary and final plans and designs, provision of technical services during the construction or installation phase, inspection and evaluation of engineering projects, and related services.", + "name": "Engineering Services" + }, + { + "id": "txcd_20060017", + "object": "tax_code", + "description": "Charges for installing, configuring, debugging, modifying, testing, or troubleshooting computer hardware, networks, programs or software. Labor only charge.", + "name": "Technical Support Services" + }, + { + "id": "txcd_20060021", + "object": "tax_code", + "description": "Charges associated loss or damage appraisals, inspections, actuarial services, claims adjustment or processing. Investigations as excluded from this definition.", + "name": "Insurance Services" + }, + { + "id": "txcd_20060022", + "object": "tax_code", + "description": "Planning and design of interior spaces, including preparation of layout drawings, furniture arranging, design planning and purchasing of furniture, fixtures, and cabinetry, staging, lighting and sound design.", + "name": "Interior decorating" + }, + { + "id": "txcd_20060026", + "object": "tax_code", + "description": "Services relating to advocating for the passage or defeat of legislation to members or staff of the government.", + "name": "Lobbying Services" + }, + { + "id": "txcd_20060027", + "object": "tax_code", + "description": "Services provided by a licensed or registered professional in the medical field. Examples: Doctor, dentist, nurse, optometrist, etc.", + "name": "Medical Professional Services" + }, + { + "id": "txcd_20060029", + "object": "tax_code", + "description": "Services to process employee payroll, including wages, withholding taxes, benefits. etc.", + "name": "Payroll Services" + }, + { + "id": "txcd_20060030", + "object": "tax_code", + "description": "Services providing a systematic inquiry, examination, or analysis of people, events or documents through surveillance, background checks, computer searches, fingerprinting, lie detector services, interviews, etc.", + "name": "Private Investigator Services" + }, + { + "id": "txcd_20060035", + "object": "tax_code", + "description": "Services which include, but are not limited to, editing, letter writing, proofreading, resume writing, typing or word processing. Doesn't include court reporting and stenographic services.", + "name": "Secretarial services" + }, + { + "id": "txcd_20060040", + "object": "tax_code", + "description": "Charges to electronically file a tax return on behalf of the taxpayer. This does not include manual preparation of tax returns.", + "name": "Electronic Filing Service" + }, + { + "id": "txcd_20060042", + "object": "tax_code", + "description": "Services related to providing personnel, on a temporary basis, to perform work or labor under the supervision or control of another.", + "name": "Temporary help services" + }, + { + "id": "txcd_20060044", + "object": "tax_code", + "description": "A charge for training sessions which provide instruction to the buyer.", + "name": "Training services" + }, + { + "id": "txcd_20060045", + "object": "tax_code", + "description": "Live web based training. This does not include video replays of the instruction or course.", + "name": "Training Services - Live Virtual" + }, + { + "id": "txcd_20060047", + "object": "tax_code", + "description": "Services related to the art and science of designing and building structures for human habitation or use and includes planning, providing preliminary studies, designs, specifications, working drawings and providing for general administration of construction contracts.", + "name": "Architectural Services" + }, + { + "id": "txcd_20060048", + "object": "tax_code", + "description": "The provision of expertise or strategic advice that is presented for consideration and decision-making.", + "name": "Consulting Services" + }, + { + "id": "txcd_20060049", + "object": "tax_code", + "description": "Medical procedure performed on an individual that is directed at improving the individual's appearance and that does not meaningfully promote the proper function of the body or prevent or treat illness or disease.", + "name": "Cosmetic Medical Procedure" + }, + { + "id": "txcd_20060050", + "object": "tax_code", + "description": "Credit monitoring services are companies consumers pay to keep an eye on your credit files. The services notifies one when they see activity in credit files, so one can determine if that activity is a result of action one took or possibly fraudulent.", + "name": "Credit Monitoring Services" + }, + { + "id": "txcd_20060051", + "object": "tax_code", + "description": "Services to track one's credit reports and provide notifications of activity with the intent of avoiding fraud.", + "name": "Credit Card Processing Services" + }, + { + "id": "txcd_20060052", + "object": "tax_code", + "description": "Academic classes provided by traditional private education establishments and organizations.", + "name": "Educational Services" + }, + { + "id": "txcd_20060053", + "object": "tax_code", + "description": "A charge for an objective visual examination of a house’s systems and physical structure. The charge includes a report of the inspector's findings including pictures, analysis, and recommendations.", + "name": "Home Inspection Services" + }, + { + "id": "txcd_20060054", + "object": "tax_code", + "description": "Services relating to or concerned with the law. Such services include, but are not limited to, representation by an attorney (or other person, when permitted) in an administrative or legal proceeding, legal drafting, paralegal services, legal research services, arbitration, mediation, and court reporting services.", + "name": "Legal Services" + }, + { + "id": "txcd_20060055", + "object": "tax_code", + "description": "Services for consumer research and testing in connection with the development of particular products or services that the client sells to consumers in the regular course of business.", + "name": "Marketing Services" + }, + { + "id": "txcd_20060056", + "object": "tax_code", + "description": "Services to provide outreach designed to influence the general public or other groups by promoting the interests of a service recipient.", + "name": "Public Relations" + }, + { + "id": "txcd_20060057", + "object": "tax_code", + "description": "Services that include typing, taking shorthand, and taking and transcribing dictation for others for a consideration.", + "name": "Stenographic Services" + }, + { + "id": "txcd_20060058", + "object": "tax_code", + "description": "Self Study web based training, not instructor led. This does not include downloads of video replays.", + "name": "Training Services - Self Study Web Based" + }, + { + "id": "txcd_20060059", + "object": "tax_code", + "description": "Personal or small group teaching, designed to help people who need extra help with their studies.", + "name": "Tutoring" + }, + { + "id": "txcd_20070001", + "object": "tax_code", + "description": "A charge for monitoring an electronically controlled alarm system for residential or commercial properties to minimize or prevent loss or damage to life, limb, or property.", + "name": "Security - Alarm Services" + }, + { + "id": "txcd_20070006", + "object": "tax_code", + "description": "A charge for services related to the eradication of insects, rodents, and other pests.", + "name": "Extermination services" + }, + { + "id": "txcd_20070007", + "object": "tax_code", + "description": "A charge for services related to the maintenance of grounds.", + "name": "Landscaping services" + }, + { + "id": "txcd_20070008", + "object": "tax_code", + "description": "A charge for services of general lawn and grounds maintenance, including lawn cutting, weeding, yard clean-up, shrub and tree trimming, periodic seeding or aeration, etc. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Lawn Maintenance Services" + }, + { + "id": "txcd_20070010", + "object": "tax_code", + "description": "A charge for services related to the painting of surfaces or the application of wallpaper.", + "name": "Painting and wallpapering services" + }, + { + "id": "txcd_20070013", + "object": "tax_code", + "description": "Services related to protecting persons or their property, preventing the theft of goods, merchandise, or money. Responding to alarm signal device, burglar alarm, television camera, still camera, or a mechanical or electronic device installed or used to prevent or detect burglary, theft, shoplifting, pilferage, losses, or other security measures. Providing management and control of crowds for safety and protection.", + "name": "Security - Guard Services" + }, + { + "id": "txcd_20070016", + "object": "tax_code", + "description": "Services mapping, detecting or establishing the relative position of points at, above, or below the surface of the earth. These services may include surveying and mapping of areas above or below the surface of the earth, such as the creation of view easements or segregating rights in parcels of land by creating underground utility easements.", + "name": "Property Surveying Services" + }, + { + "id": "txcd_20080003", + "object": "tax_code", + "description": "A charge to repair or restore to operating condition a motor vehicle that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Motor Vehicle Repair" + }, + { + "id": "txcd_20080004", + "object": "tax_code", + "description": "A charge to repair or restore footwear was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Shoe Repair" + }, + { + "id": "txcd_20080005", + "object": "tax_code", + "description": "A charge to repair or restore tangible personal property that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Repair of Tangible Personal Property" + }, + { + "id": "txcd_20080007", + "object": "tax_code", + "description": "A charge to repair or maintain real property including repairs to HVAC, electrical, flooring, etc.", + "name": "Repair services -- real property" + }, + { + "id": "txcd_20080008", + "object": "tax_code", + "description": "A charge to repair or restore to operating condition an aircraft that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential. Commercial aircraft is excluded.", + "name": "Aircraft Repair" + }, + { + "id": "txcd_20080009", + "object": "tax_code", + "description": "A charge to repair or restore to operating condition an appliance (dishwasher, washing machine, refrigerator, etc.) that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Appliance Repair" + }, + { + "id": "txcd_20080010", + "object": "tax_code", + "description": "A charge to repair or restore to operating condition computer hardware that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Computer Repair" + }, + { + "id": "txcd_20080011", + "object": "tax_code", + "description": "A separately stated labor charge to cover a piece of furniture previously owned by the customer with new fabric coverings. Any materials transferred as part of the service are separately stated.", + "name": "Furniture Reupholstering" + }, + { + "id": "txcd_20080012", + "object": "tax_code", + "description": "A charge to repair or restore jewelry that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Jewelry Repair" + }, + { + "id": "txcd_20080013", + "object": "tax_code", + "description": "A charge to repair or restore to operating condition a machine that was broken, worn, damaged, defective, or malfunctioning. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Machine Repair" + }, + { + "id": "txcd_20090001", + "object": "tax_code", + "description": "A charge to perform an alteration on a item of clothing by the vendor of the article. The alteration is separately stated from the clothing, but contracted for at the time of the clothing purchase. Alterations could include hemming of a dress, shortening of pants, adjusting the waistline of a garment, etc.", + "name": "Garment Alterations - in conjunction with purchase of garment" + }, + { + "id": "txcd_20090002", + "object": "tax_code", + "description": "A charge to perform an alteration on a item of clothing by a service provider other than vendor of the article. The alteration is not linked to the clothing purchase. Alterations could include hemming of a dress, shortening of pants, adjusting the waistline of a garment, etc.", + "name": "Garment Alterations - separate from purchase of garment" + }, + { + "id": "txcd_20090003", + "object": "tax_code", + "description": "A charge to have files or documents shredded either onsite or offsite.", + "name": "Shredding Service" + }, + { + "id": "txcd_20090004", + "object": "tax_code", + "description": "A charge to a non-commercial customer for the cleaning or renovating clothing by immersion and agitation, spraying, vaporization, or immersion only, in a volatile, commercially moisture-free solvent or by the use of a volatile or inflammable product. This does not include the use of a self-service coin (or credit card) operated cleaning machine.", + "name": "Dry Cleaning" + }, + { + "id": "txcd_20090006", + "object": "tax_code", + "description": "A charge to create a finished good from materials supplied by the customer. This is a labor only charge to transform a customer's existing property.", + "name": "Fabrication" + }, + { + "id": "txcd_20090010", + "object": "tax_code", + "description": "A charge for the wrapping of articles in a box or bag with paper and other decorative additions. The charge is separately stated from the article. This is not relevant for non-US countries where packaging is added to the price of the product.", + "name": "Gift Wrapping - in conjunction with purchase of article" + }, + { + "id": "txcd_20090012", + "object": "tax_code", + "description": "A charge to provide laundry services to clothing. The business customer is the owner of the items being cleaned.", + "name": "Linen Services - Laundry only" + }, + { + "id": "txcd_20090015", + "object": "tax_code", + "description": "A charge separately stated from the sale of the product itself that entitles the purchaser to future repair and labor services to return the defective item of tangible personal property to its original state. The warranty contract is mandatory and is required to be purchased on conjunction with the purchased tangible personal property. Motor vehicle warranties are excluded.", + "name": "Warranty - Mandatory" + }, + { + "id": "txcd_20090018", + "object": "tax_code", + "description": "A charge separately stated from the sale of the product itself that entitles the purchaser to future repair and labor services to return the defective item of tangible personal property to its original state. The warranty contract is optional to the purchaser. Motor vehicle warranties are excluded.", + "name": "Warranty - Optional" + }, + { + "id": "txcd_20090022", + "object": "tax_code", + "description": "A charge separately stated from the sale of the product itself to bring the article to its finished state and in the condition specified by the buyer.", + "name": "Assembly - in conjunction with final purchase of article" + }, + { + "id": "txcd_20090023", + "object": "tax_code", + "description": "A charge to assemble goods for a purchaser who will later sell the assembled goods to end consumers.", + "name": "Assembly - prior to final purchase of article" + }, + { + "id": "txcd_20090024", + "object": "tax_code", + "description": "A charge to a non-commercial customer for the cleaning or renovating items other than clothing by immersion and agitation, spraying, vaporization, or immersion only, in a volatile, commercially moisture-free solvent or by the use of a volatile or inflammable product. This does not include the use of a self-service coin (or credit card) operated cleaning machine.", + "name": "Dry Cleaning - other than clothing" + }, + { + "id": "txcd_20090025", + "object": "tax_code", + "description": "A charge for the wrapping of articles in a box or bag with paper and other decorative additions. The wrapping not linked the purchased of the article(s) and is performed by a party other vendor of the article(s).", + "name": "Gift Wrapping - separate from purchase of article" + }, + { + "id": "txcd_20090026", + "object": "tax_code", + "description": "A charge to provide laundry services to linens and the like. This charge is not for clothing items. The business customer is the owner of the items being cleaned.", + "name": "Linen Services - Laundry only - other than clothing" + }, + { + "id": "txcd_20090027", + "object": "tax_code", + "description": "A charge to make customer provided meat suitable for human consumption, typically referred to a butcher or slaughter services.", + "name": "Meat Processing" + }, + { + "id": "txcd_20090028", + "object": "tax_code", + "description": "A charge for the printing, imprinting, lithographing, mimeographing, photocopying, and similar reproductions of various articles including mailers, catalogs, letterhead, envelopes, business cards, presentation folders, forms, signage, etc. The end result is the transfer of tangible personal property to the customer.", + "name": "Printing" + }, + { + "id": "txcd_20090029", + "object": "tax_code", + "description": "A charge for the printing, imprinting, or lithographing on any article supplied by the customer. The customer owns the article throughout the process. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Printing - customer supplied articles" + }, + { + "id": "txcd_20090030", + "object": "tax_code", + "description": "A charge to preserve an animal's body via mounting or stuffing, for the purpose of display or study. The customer provide the animal. This a labor charge, with any non-separately stated property transferred in performing the service considered inconsequential.", + "name": "Taxidermy Services" + }, + { + "id": "txcd_20090031", + "object": "tax_code", + "description": "A charge for engraving services performed on goods owned by the purchaser. This is a standalone service not done in conjunction with the sale of the goods.", + "name": "Engraving Services - separate from purchase of article" + }, + { + "id": "txcd_20090032", + "object": "tax_code", + "description": "A charge for engraving a good, such as jewelry, in conjunction with the retail purchase of that item. The charge for the engraving services is separately stated from the charge for the good being engraved.", + "name": "Engraving Services - in conjunction with purchase of article" + }, + { + "id": "txcd_20091000", + "object": "tax_code", + "description": "An agreement between a service contract provider and a customer where the service provider agrees to repair or replace certain parts on a motor vehicle that has had a failure after the original manufacturer’s warranty has expired. Commonly referred to as extended warranty or protection plan. Contract covers both parts and labor, and is made at the same time as Motor Vehicle purchase but is separately stated.", + "name": "Optional Extended Warranty Contract on Motor Vehicle" + }, + { + "id": "txcd_20091001", + "object": "tax_code", + "description": "An agreement between a service contract provider and a customer for prepaid routine maintenance (e.g. oil changes, tire rotations, air filter, spark plugs, transmission and transfer case fluid changes) for a motor vehicle. Contract covers both parts and labor and is made at the same time as Motor Vehicle purchase but is separately stated.", + "name": "Optional Maintenance Contract on Motor Vehicle" + }, + { + "id": "txcd_20091002", + "object": "tax_code", + "description": "An agreement between a service contract provider and a customer for prepaid routine maintenance (e.g. oil changes, tire rotations, air filter, spark plugs, transmission and transfer case fluid changes) of a leased motor vehicle. Contract covers both parts and labor.", + "name": "Optional Extended Warranty Contract on Leased Motor Vehicle" + }, + { + "id": "txcd_20091003", + "object": "tax_code", + "description": "An agreement between a service contract provider and a customer where the service provider agrees to repair or replace certain parts on a leased motor vehicle that has had a failure after the original manufacturer’s warranty has expired. Commonly referred to as extended warranty or protection plan. Contract covers both parts and labor.", + "name": "Optional Maintenance Contract on Leased Motor Vehicle" + }, + { + "id": "txcd_20091004", + "object": "tax_code", + "description": "An agreement between a service contract provider and a customer where the service provider agrees to repair or replace certain parts on a motor vehicle that has had a failure after the original manufacturer’s warranty has expired. Commonly referred to as extended warranty or protection plan. Contract covers both parts and labor and is made after the motor vehicle purchase.", + "name": "Optional Extended Warranty Contract on Motor Vehicle - After Market" + }, + { + "id": "txcd_20091005", + "object": "tax_code", + "description": "An agreement between a service contract provider and a customer for prepaid routine maintenance (e.g. oil changes, tire rotations, air filter, spark plugs, transmission and transfer case fluid changes) of a motor vehicle. Contract covers both parts and labor and is made after the motor vehicle purchase.", + "name": "Optional Maintenance Contract on Motor Vehicle - After Market" + }, + { + "id": "txcd_20100001", + "object": "tax_code", + "description": "Services under armed private security guard to transport from one place to another any currency, jewels, stocks, bonds, paintings, or other valuables of any kind in a specially equipped motor vehicle that offers a high degree of security. It is assumed that the transport takes place within one country.", + "name": "Armored Car Services" + }, + { + "id": "txcd_30011000", + "object": "tax_code", + "description": "Apparel and footwear for people made for general use.", + "name": "Clothing and footwear" + }, + { + "id": "txcd_30011002", + "object": "tax_code", + "description": "The clasp used to fasten a belt, sold separately fro the belt.", + "name": "Belt Buckle" + }, + { + "id": "txcd_30011003", + "object": "tax_code", + "description": "A belt is band of flexible material worn around a person's waist for supporting clothing. Suspenders are a pair of straps that pass over the shoulders and fasten to the waistband of a pair of trousers or a skirt at the front and back to hold it up.", + "name": "Belts or Suspenders" + }, + { + "id": "txcd_30011015", + "object": "tax_code", + "description": "A closed tube of fabric worn about the neck for warmth. It can be pulled over mouth and nose to protect against wind, dust, or other particles.", + "name": "Neck Gaiter" + }, + { + "id": "txcd_30011020", + "object": "tax_code", + "description": "A set of standardized clothes worn primarily during attendnce at an educational institution.", + "name": "School Uniforms" + }, + { + "id": "txcd_30011028", + "object": "tax_code", + "description": "Clothing or footwear, such as coats, hats, ear muffs, gloves, etc. worn on the human body made of imitation fur materials.", + "name": "Fur Clothing - Synthetic" + }, + { + "id": "txcd_30011034", + "object": "tax_code", + "description": "A broad strip of cloth that covers the shoulders, neck, or head for warmth or appearance.", + "name": "Scarves" + }, + { + "id": "txcd_30011045", + "object": "tax_code", + "description": "A necktie, or simply a tie, is a piece of cloth worn by men and women for decorative purposes around the neck, resting under the shirt collar and knotted at the throat, and often draped down the chest.", + "name": "Neckties" + }, + { + "id": "txcd_30011100", + "object": "tax_code", + "description": "Clothing designed for, and not normally worn except while attending, a formal function, including tuxedos, bridal gowns, and evening gowns.", + "name": "Formal or Special Occasion Wear" + }, + { + "id": "txcd_30011200", + "object": "tax_code", + "description": "Children's clothing and footwear including general purpose articles intended to be worn by a person based on certain size or age requirements.", + "name": "Children's clothing and footwear" + }, + { + "id": "txcd_30011201", + "object": "tax_code", + "description": "Clothing or footwear, such as coats, hats, ear muffs, gloves, etc. worn on the human body made of the real pelt of an animal.", + "name": "Fur Clothing" + }, + { + "id": "txcd_30021000", + "object": "tax_code", + "description": "Clothing, footwear, and accessories worn on a person's body while participating in recreational or sporting activities, and which are not typical for everyday usage. Please select a more granular product tax category where appropriate.", + "name": "Athletic Activity Clothing" + }, + { + "id": "txcd_30021001", + "object": "tax_code", + "description": "A band of absorbent material worn around the head or wrist to soak up sweat, especially by participants in physical activity.", + "name": "Sweat Bands" + }, + { + "id": "txcd_30021200", + "object": "tax_code", + "description": "Bathing suits, swim trunks, or bathing costumes meant to be worn in or near water.", + "name": "Swim suits" + }, + { + "id": "txcd_30030001", + "object": "tax_code", + "description": "Clothing worn while performing an employment role, such as paramedic uniforms, firefighter uniforms, military uniforms, medical attire, law enforcement attire, etc.", + "name": "Occupational Uniforms" + }, + { + "id": "txcd_30031004", + "object": "tax_code", + "description": "Clothing and related covering material that is worn within cleanrooms, which require controlled low levels of environmental contaminants such as dusts, microbes, vapors, and aerosol particles.", + "name": "Cleanroom Apparel" + }, + { + "id": "txcd_30031041", + "object": "tax_code", + "description": "High-visibility warning clothing to signal the presence of the user in places and situations which may cause potential threats to their health and safety.", + "name": "Reflective Apparel" + }, + { + "id": "txcd_30031404", + "object": "tax_code", + "description": "Clothing for human wear and designed as protection of the wearer against injury or disease or as protections against damage or injury of other persons or property but not suitable for general use.", + "name": "Protective/Safety Clothing" + }, + { + "id": "txcd_30031405", + "object": "tax_code", + "description": "Clothing worn by an employee during the course of his employment for protection against injury or disease or as protection against damage or injury of other persons or property. Such clothing items are not suitable for general use.", + "name": "Protective/Safety Clothing - Occupational Use" + }, + { + "id": "txcd_30031406", + "object": "tax_code", + "description": "Footwear for human wear and designed as protection of the wearer against injury or disease or as protections against damage or injury of other persons or property but not suitable for general use.", + "name": "Protective/Safety Footwear" + }, + { + "id": "txcd_30031407", + "object": "tax_code", + "description": "Foowear worn by an employee during the course of his employment for protection against injury or disease or as protection against damage or injury of other persons or property. Such clothing items are not suitable for general use.", + "name": "Protective/Safety Footwear - Occupational Use" + }, + { + "id": "txcd_30031408", + "object": "tax_code", + "description": "Equipment type accessories (such as helmets, eyeshields, facemasks, pads, etc) for human wear and designed as protection of the wearer against injury or disease or as protections against damage or injury of other persons or property but not suitable for general use.", + "name": "Protective/Safety Equipment" + }, + { + "id": "txcd_30031409", + "object": "tax_code", + "description": "Equipment type accessories (such as helmets, eyeshields, facemasks, pads, etc) worn by an employee during the course of his employment for protection against injury or disease or as protection against damage or injury of other persons or property. Such clothing items are not suitable for general use.", + "name": "Protective/Safety Equipment - Occupational Use" + }, + { + "id": "txcd_30040003", + "object": "tax_code", + "description": "A reusable mask made of common fabrics worn over the mouth and nose to act as personal protection from airborne particles or pathogens.", + "name": "Cloth Face Masks" + }, + { + "id": "txcd_30040005", + "object": "tax_code", + "description": "Masks and accessories sold separately to be worn for costume purposes for seasonal or cultural holidays or celebrations.", + "name": "Costume Masks and Accessories" + }, + { + "id": "txcd_30040006", + "object": "tax_code", + "description": "Apparel worn by a person for seasonal or cultural holidays or celebrations, rather than for everday wear.", + "name": "Costumes" + }, + { + "id": "txcd_30051302", + "object": "tax_code", + "description": "Gloves for general use (e.g., leather), but not gloves used for sporting (e.g., baseball, football gloves).", + "name": "Gloves (general use)" + }, + { + "id": "txcd_30060001", + "object": "tax_code", + "description": "Bags including handbags, purses, coin purses, fanny packs / bum bags, and diaper / nappy bags.", + "name": "Purses and Handbags" + }, + { + "id": "txcd_30060004", + "object": "tax_code", + "description": "A small usually square piece of cloth used for usually personal purposes (such as blowing the nose) or as a clothing accessory.", + "name": "Handkerchiefs" + }, + { + "id": "txcd_30060005", + "object": "tax_code", + "description": "Hair notions such as headbands, barrettes, bows, clips, and pins.", + "name": "Hair Accessories" + }, + { + "id": "txcd_30060006", + "object": "tax_code", + "description": "A shaped covering for the head worn for warmth, as a fashion item, or as part of a uniform.", + "name": "Hats" + }, + { + "id": "txcd_30060007", + "object": "tax_code", + "description": "Jewlery such as necklaces, earrings, rings, and more.", + "name": "Jewelry" + }, + { + "id": "txcd_30060010", + "object": "tax_code", + "description": "Articles, although worn on the body, which are not considered clothing or footwear. Examples include armbands, pocket protectors, shoulder boards, sleep masks, etc. Please select a more granular product tax category where appropriate.", + "name": "Non-Clothing Accessories" + }, + { + "id": "txcd_30060011", + "object": "tax_code", + "description": "A plastic cap worn in the shower to keep the hair dry.", + "name": "Shower Caps" + }, + { + "id": "txcd_30060013", + "object": "tax_code", + "description": "Umbrellas.", + "name": "Umbrellas" + }, + { + "id": "txcd_30060014", + "object": "tax_code", + "description": "Wigs, Hairpieces, Hair extensions.", + "name": "Wigs, Hairpieces, Hair extensions" + }, + { + "id": "txcd_30060015", + "object": "tax_code", + "description": "Suitcases and baggage typically used for transporting travellers' belongings.", + "name": "Luggage" + }, + { + "id": "txcd_30060016", + "object": "tax_code", + "description": "A small timepiece worn typically on a strap on one's wrist.", + "name": "Watches" + }, + { + "id": "txcd_30060017", + "object": "tax_code", + "description": "Sunglasses with a lens containing no lens powers to correct vision problems.", + "name": "Sunglasses - Non-prescription" + }, + { + "id": "txcd_30060018", + "object": "tax_code", + "description": "A digital wristwatch that provides many other features besides timekeeping. Like a smartphone, a smartwatch has a touchscreen display, which allows you to perform actions by tapping or swiping on the screen. Smartwatches include allow access to apps, similar to apps for smartphones and tablets.", + "name": "Watches - Smart" + }, + { + "id": "txcd_30060019", + "object": "tax_code", + "description": "A flat, rectangular case with a handle, often of leather, for carrying books, papers, etc.", + "name": "Briefcases" + }, + { + "id": "txcd_30060020", + "object": "tax_code", + "description": "A piece of clothing that you wear over the front of other clothes to keep the clothes clean...eg. a kitchen apron.", + "name": "Aprons" + }, + { + "id": "txcd_30060021", + "object": "tax_code", + "description": "A triangular or square piece of cloth tied around the head, face or neck for protective or decorative purposes.", + "name": "Bandannas" + }, + { + "id": "txcd_30060101", + "object": "tax_code", + "description": "A small folding case for carrying paper money, credit cards and other flat objects.", + "name": "Wallets" + }, + { + "id": "txcd_30070001", + "object": "tax_code", + "description": "A bicycle helmet that is NOT marketed and labeled as being intended for youth.", + "name": "Bicycle Helmets - Adult" + }, + { + "id": "txcd_30070002", + "object": "tax_code", + "description": "A bicycle helmet marketed and labeled as being intended for youth.", + "name": "Bicycle Helmets - Youth" + }, + { + "id": "txcd_30070003", + "object": "tax_code", + "description": "Footwear worn exclusively while participating in ballet or tap dancing.", + "name": "Ballet or Tap Shoes" + }, + { + "id": "txcd_30070004", + "object": "tax_code", + "description": "Gloves worn by baseball/softball participants while hitting.", + "name": "Baseball Batting Gloves" + }, + { + "id": "txcd_30070005", + "object": "tax_code", + "description": "Gloves worn while rolling a bowling ball to the support the muscles in the hand and wrist, and to provide extra padding or grip.", + "name": "Bowling Gloves" + }, + { + "id": "txcd_30070006", + "object": "tax_code", + "description": "Footwear uniquely designed to be worn while bowling, having a slick smooth sole meant for gliding.", + "name": "Bowling Shoes" + }, + { + "id": "txcd_30070007", + "object": "tax_code", + "description": "A heavily padded mitten worn in boxing.", + "name": "Boxing Gloves" + }, + { + "id": "txcd_30070008", + "object": "tax_code", + "description": "Athletic footwear having cleats or spikes to improve traction on various playing field surfaces.", + "name": "Cleated or Spiked Shoes" + }, + { + "id": "txcd_30070009", + "object": "tax_code", + "description": "Thin, lightweight gloves designed mainly for wide receivers in football to help with grip while catching.", + "name": "Football Receiver Gloves" + }, + { + "id": "txcd_30070010", + "object": "tax_code", + "description": "A glove worn by golfers to give a firm grip on the handle of the golf club.", + "name": "Golf Gloves" + }, + { + "id": "txcd_30070011", + "object": "tax_code", + "description": "Footwear designed for golf course play, usually spiked (featuring actual cleats on the outsole) or spikeless (featuring a flat outsole with rubber studs or dimples in place of spikes).", + "name": "Golf Shoes" + }, + { + "id": "txcd_30070012", + "object": "tax_code", + "description": "Ice Skates.", + "name": "Ice Skates" + }, + { + "id": "txcd_30070013", + "object": "tax_code", + "description": "A inflatable sleeveless jacket worn to keep a person afloat when in danger of drowning.", + "name": "Life Vests" + }, + { + "id": "txcd_30070014", + "object": "tax_code", + "description": "Clothing apparel/uniforms that are specific to the training and competition of various martial arts.", + "name": "Martial Arts Attire" + }, + { + "id": "txcd_30070015", + "object": "tax_code", + "description": "A helmet designed for used when opertating a motorcycle, atv, snowmobile, etc.", + "name": "Motorcycle Helmets" + }, + { + "id": "txcd_30070017", + "object": "tax_code", + "description": "A protective device for the mouth that covers the teeth and gums to prevent and reduce injury to the teeth, arches, lips and gums.", + "name": "Mouth Guards" + }, + { + "id": "txcd_30070018", + "object": "tax_code", + "description": "Roller Skates or Roller Blades.", + "name": "Roller Skates or Roller Blades" + }, + { + "id": "txcd_30070019", + "object": "tax_code", + "description": "A stiff pad worn typically worn under socks to protect the shins when playing soccer, hockey, and other sports.", + "name": "Shin Guards" + }, + { + "id": "txcd_30070020", + "object": "tax_code", + "description": "A hard protective pad for the shoulders used in certain sports, such as ice hockey and football.", + "name": "Shoulder Pads for Sports" + }, + { + "id": "txcd_30070021", + "object": "tax_code", + "description": "A rigid padded shoe that extends above the ankle, is secured to the foot, and is locked into position in a ski binding.", + "name": "Ski Boots" + }, + { + "id": "txcd_30070022", + "object": "tax_code", + "description": "Athletic uniforms not containing protective padding or gear.", + "name": "Sport Uniforms" + }, + { + "id": "txcd_30070023", + "object": "tax_code", + "description": "Flippers on the foot or leg and made from rubber or plastic, to aid movement through the water in water sports.", + "name": "Swim Fins" + }, + { + "id": "txcd_30070024", + "object": "tax_code", + "description": "Goggles to protect the eyes from material in the water, while swimming.", + "name": "Swim Goggles" + }, + { + "id": "txcd_30070025", + "object": "tax_code", + "description": "A close-fitting garment covering most of the body worn for warmth in water sports or diving.", + "name": "Wetsuit" + }, + { + "id": "txcd_30070026", + "object": "tax_code", + "description": "An elastic support for the male genitals, worn especially in athletic or other strenuous activity.", + "name": "Athletic Supporter" + }, + { + "id": "txcd_30070028", + "object": "tax_code", + "description": "Vests designed primarily for wear while hunting, but which are also adaptable to everyday use.", + "name": "Hunting Vests" + }, + { + "id": "txcd_30070029", + "object": "tax_code", + "description": "Clothing, footwear, and accessories for wear while hunting, but that are not adaptable to everyday use.", + "name": "Hunting Activity Clothing" + }, + { + "id": "txcd_30071000", + "object": "tax_code", + "description": "Protective gear worn about the human body while participating in athletic, recreational, or sporting activities, and which are not typical for everyday usage. Please select a more granular product tax category where appropriate.", + "name": "Sports Activities Equipment" + }, + { + "id": "txcd_30080001", + "object": "tax_code", + "description": "Button covers are clothing accessories that slip over simple buttons for stylistic adornment.", + "name": "Button Covers" + }, + { + "id": "txcd_30080002", + "object": "tax_code", + "description": "Items items used to make or repair clothing, including buttons, clasps, fabric, thread, yarn, snaps, hooks, zippers, sequins, fabric dye, and the like.", + "name": "Component Clothing Items" + }, + { + "id": "txcd_30090005", + "object": "tax_code", + "description": "Rubber boots worn over regular footwear to prevent them from wet or soiled.", + "name": "Overshoes" + }, + { + "id": "txcd_30090009", + "object": "tax_code", + "description": "Over the counter inserts or insoles for in-shoe foot comfort.", + "name": "Shoe Inserts" + }, + { + "id": "txcd_30090010", + "object": "tax_code", + "description": "Shoelaces.", + "name": "Shoelaces" + }, + { + "id": "txcd_31020001", + "object": "tax_code", + "description": "A piece of cloth or plastic fastened around a baby's neck to keep their clothes clean while eating.", + "name": "Bibs" + }, + { + "id": "txcd_31020002", + "object": "tax_code", + "description": "Blankets made to stretch to tightly around babies, and may have features like velcro or specially designed shapes or flaps to facilitate swaddle wrapping.", + "name": "Infant Swaddles" + }, + { + "id": "txcd_31020003", + "object": "tax_code", + "description": "A small lightweight blanket used to wrap an infant, eg. after bathing.", + "name": "Infant Receiving Blankets" + }, + { + "id": "txcd_31030001", + "object": "tax_code", + "description": "Scented talcum powder or corn starch for use on babies' skin or an ointment or paste for protecting baby's skin.", + "name": "Baby powder and diaper cream" + }, + { + "id": "txcd_31030003", + "object": "tax_code", + "description": "Non medicated disposable moistened cleansing wipes. These products do not contain a \"drug facts\" panel or a statement of active ingredients.", + "name": "Baby wipes" + }, + { + "id": "txcd_31031202", + "object": "tax_code", + "description": "Disposable diapers for infants.", + "name": "Infant diapers" + }, + { + "id": "txcd_31031203", + "object": "tax_code", + "description": "Absorbent single use underpants worn by children during potty training as a transition between diapers and cloth underwear.", + "name": "Disposable Toddler Training Pants" + }, + { + "id": "txcd_31031204", + "object": "tax_code", + "description": "One time use diaper liners for capturing solid waste for ease of disposal.", + "name": "Diaper Liners - Single Use" + }, + { + "id": "txcd_31031205", + "object": "tax_code", + "description": "Infant washable/reusable cloth diapers.", + "name": "Cloth Diapers" + }, + { + "id": "txcd_31040001", + "object": "tax_code", + "description": "A bottle with a teat or nipple in the US made for babies to drink from.", + "name": "Baby bottles and nipples" + }, + { + "id": "txcd_31040002", + "object": "tax_code", + "description": "A mechanical device that lactating women use to extract milk from their breasts.", + "name": "Breast pumps" + }, + { + "id": "txcd_31070001", + "object": "tax_code", + "description": "Baby or child car seat, including boosters.", + "name": "Baby or child car seat" + }, + { + "id": "txcd_32010001", + "object": "tax_code", + "description": "Electronic devices which measure the glucose level in human blood (e.g., blood sugar meters, glucose meters or glucometers).", + "name": "Blood glucose monitoring devices" + }, + { + "id": "txcd_32010002", + "object": "tax_code", + "description": "Equipment, devices or chemical reagents which may be used by a diabetic to test or monitor blood or urine.", + "name": "Diabetic testing equipment and supplies" + }, + { + "id": "txcd_32020002", + "object": "tax_code", + "description": "A compound, substance or preparation intended for use in the diagnosis, cure, mitigation, treatment, or prevention of disease and dispensed legally without a prescription.", + "name": "Drugs - over the counter" + }, + { + "id": "txcd_32030001", + "object": "tax_code", + "description": "Male or female condoms used to prevent pregnacy or exposure to sexually transmitted diseases.", + "name": "Condoms" + }, + { + "id": "txcd_32040005", + "object": "tax_code", + "description": "Feminine hygiene product designed to absorb the menstrual flow.", + "name": "Tampons, pads, and sanitary napkins" + }, + { + "id": "txcd_32050001", + "object": "tax_code", + "description": "Adult disposable diapers.", + "name": "Adult disposable diapers" + }, + { + "id": "txcd_32050005", + "object": "tax_code", + "description": "A mask worn on an individual's face that is not intended for repeated use and is typically discarded after each use.", + "name": "Disposable face masks" + }, + { + "id": "txcd_32050006", + "object": "tax_code", + "description": "Soaps, cleaning solutions, shampoo, toothpaste, mouthwash, antiperspirants, suntan lotions, etc.", + "name": "Grooming and hygiene products" + }, + { + "id": "txcd_32050007", + "object": "tax_code", + "description": "Soaps, cleaning solutions, shampoo, toothpaste, mouthwash, antiperspirants, suntan lotions, and sunscreens that contain medicinal ingredients as described on the product's label.", + "name": "Grooming and hygiene products - medicated" + }, + { + "id": "txcd_32050009", + "object": "tax_code", + "description": "A liquid, gel, foam, or wipe generally used to decrease infectious agents on the hands that contain a \"drug facts\" panel or a statement of active ingredients.", + "name": "Hand sanitizers" + }, + { + "id": "txcd_32050012", + "object": "tax_code", + "description": "Topical medicated solutions for treating skin acne that contain a \"drug facts\" panel or a statement of active ingredients.", + "name": "Medicated acne treatments" + }, + { + "id": "txcd_32050013", + "object": "tax_code", + "description": "Lotions, moisturizers, creams, powders, sprays, etc that promote optimal skin health that do not contain a \"drug facts\" panel or a statement of active ingredients.", + "name": "Skin care products" + }, + { + "id": "txcd_32050014", + "object": "tax_code", + "description": "Lotions, moisturizers, creams, powders, sprays, etc that promote optimal skin health and contain a \"drug facts\" panel or a statement of active ingredients.", + "name": "Skin care products -- medicated" + }, + { + "id": "txcd_32050015", + "object": "tax_code", + "description": "Over-the-counter nicotine replacement products, including patches, gum, lozenges, sprays and inhalers that contain a \"drug facts\" panel or a statement of active ingredients.", + "name": "Smoking cessation products" + }, + { + "id": "txcd_32050017", + "object": "tax_code", + "description": "Toilet tissue or paper primarily used for the removal of feces.", + "name": "Toilet tissue" + }, + { + "id": "txcd_32050018", + "object": "tax_code", + "description": "A small brush with a long handle, used for cleaning the teeth.", + "name": "Toothbrush" + }, + { + "id": "txcd_32050019", + "object": "tax_code", + "description": "A thick, soft, moist substance used on a brush for cleaning one's teeth.", + "name": "Toothpaste" + }, + { + "id": "txcd_32060001", + "object": "tax_code", + "description": "Equipment primarily and customarily used to serve a medical purpose and generally is not useful to a person in the absence of illness or injury and is not worn in or on the body (e.g., hospital beds, commode chairs, bed pans, IV poles, etc.).", + "name": "Durable medical equipment" + }, + { + "id": "txcd_32070003", + "object": "tax_code", + "description": "Item that is applied directly to or inside a wound to absorb wound drainage, protect healing tissue, maintain a moist or dry wound environment (as appropriate), or prevent bacterial contamination.", + "name": "Wound care supplies -- bandages, dressings, gauze" + }, + { + "id": "txcd_32070004", + "object": "tax_code", + "description": "An item that to treat a wound applied directly. These supplies contain medication such as an antibiotic ointment and are a labeled with a \"drug facts\" panel or a statement of active ingredients.", + "name": "Wound care supplies -- bandages, dressings, gauze (medicated)" + }, + { + "id": "txcd_32070018", + "object": "tax_code", + "description": "A collection of mixed supplies and equipment that is used to give medical treatment. Exempt or low rated qualifying medicinal items (e.g., over the counter drugs) make up 51% or more of the value of the kit.", + "name": "First aid kits" + }, + { + "id": "txcd_32070019", + "object": "tax_code", + "description": "Single use disposable gloves (latex, nitrile, vinyl, etc) not used for medical purposes.", + "name": "Gloves - Disposable (non medical use)" + }, + { + "id": "txcd_32070020", + "object": "tax_code", + "description": "Single use disposable gloves (latex, nitrile, vinyl, etc) that have an application in a first aid or medical setting. This code is intended for sales directly to end consumers that are NOT healthcare providers.", + "name": "Gloves - Disposable (medical use)" + }, + { + "id": "txcd_32070028", + "object": "tax_code", + "description": "Items for use in cure, treatment or diagnosis of injury, illness, disease or incapacity, and which is consumed during the use.", + "name": "Medical supplies - consumable" + }, + { + "id": "txcd_32080001", + "object": "tax_code", + "description": "Aids that can increase, improve, or assist mobility in the bathroom such as raised toilet seat, tub & shower stool, hand rails, grab bars, etc.", + "name": "Bath aids" + }, + { + "id": "txcd_32080003", + "object": "tax_code", + "description": "Equipment which is primarily and customarily used to provide or increase the ability to move from one place to another and is not generally used by persons with normal mobility (e.g., crutches, walkers, and wheelchairs).", + "name": "Mobility enhancing equipment" + }, + { + "id": "txcd_32080004", + "object": "tax_code", + "description": "Parts for items such as crutch pads, walker tips, cane tips, crutch tips, etc.", + "name": "Repair & replacement parts for mobility enhancing equipment" + }, + { + "id": "txcd_32090003", + "object": "tax_code", + "description": "Corrective lenses, including eyeglasses and contact lenses, sold without a prescription order of a licensed professional.", + "name": "Corrective lenses" + }, + { + "id": "txcd_32090005", + "object": "tax_code", + "description": "Batteries specifically labeled and designed to operate hearing aid devices, sold without a prescription order of a licensed professional.", + "name": "Hearing aid batteries" + }, + { + "id": "txcd_32090006", + "object": "tax_code", + "description": "Artificial devices to correct or alleviate hearing deficiencies, sold without a prescription order of a licensed professional.", + "name": "Hearing aids" + }, + { + "id": "txcd_32090007", + "object": "tax_code", + "description": "A replacement, corrective, or supportive device, worn on or in the body to artificially replace a missing portion of the body, prevent or correct physical deformity, etc. sold without prescription order of a licensed professional.", + "name": "Prosthetic device" + }, + { + "id": "txcd_32100006", + "object": "tax_code", + "description": "One-time use medical thermometers for oral, temporal and forehead, or rectal body temperature diagnostics.", + "name": "Medical thermometers -- disposable" + }, + { + "id": "txcd_32100007", + "object": "tax_code", + "description": "Multiple use medical thermometers for oral, temporal and forehead, or rectal body temperature diagnostics.", + "name": "Medical thermometers -- reusable" + }, + { + "id": "txcd_32100008", + "object": "tax_code", + "description": "Products carrying an ENERGY STAR rating (e.g., light bulbs, appliances, etc.).", + "name": "ENERGY STAR products" + }, + { + "id": "txcd_33020001", + "object": "tax_code", + "description": "Ceiling Fans carrying an Energy Star rating.", + "name": "Ceiling fans - Energy Star" + }, + { + "id": "txcd_33020002", + "object": "tax_code", + "description": "Domestic air conditioning (central or room) systems carrying Energy Star rating.", + "name": "Air conditioners - Energy Star" + }, + { + "id": "txcd_33020003", + "object": "tax_code", + "description": "Domestic gas or oil furnaces carrying an Energy Star rating.", + "name": "Furnaces - Energy Star" + }, + { + "id": "txcd_33020004", + "object": "tax_code", + "description": "Domestic air source heat pumps carrying Energy Star rating.", + "name": "Heat Pumps - Energy Star" + }, + { + "id": "txcd_33020005", + "object": "tax_code", + "description": "Domestic water heater carrying Energy Star rating.", + "name": "Water heater - Energy Star" + }, + { + "id": "txcd_33020006", + "object": "tax_code", + "description": "Domestic appliance carrying an Energy Star Rating which reduces and maintains the level of humidity in the air.", + "name": "Dehumidifier - Energy Star" + }, + { + "id": "txcd_33020007", + "object": "tax_code", + "description": "Domestic gas or oil boilers for space or water heating carrying an Energy Star rating.", + "name": "Boilers - Energy Star" + }, + { + "id": "txcd_33020008", + "object": "tax_code", + "description": "An in home programmable thermostat, such as a WiFi enabled smart thermostat, carrying an Energy Star rating.", + "name": "Programmable Wall Thermostat - Energy Star" + }, + { + "id": "txcd_33020009", + "object": "tax_code", + "description": "Domestic standard size refrigerators carrying Energy Star rating.", + "name": "Refrigerators - Energy Star" + }, + { + "id": "txcd_33020010", + "object": "tax_code", + "description": "Domestic dish washing appliances carrying Energy Star rating.", + "name": "Dishwashers - Energy Star" + }, + { + "id": "txcd_33020011", + "object": "tax_code", + "description": "Domestic freezers carrying Energy Star rating.", + "name": "Freezers- Energy Star" + }, + { + "id": "txcd_33020012", + "object": "tax_code", + "description": "Domestic clothes washing appliances carrying Energy Star rating.", + "name": "Clothes Washing Machine - Energy Star" + }, + { + "id": "txcd_33020013", + "object": "tax_code", + "description": "Domestic clothes drying appliances carrying Energy Star rating.", + "name": "Clothes drying machine - Energy Star" + }, + { + "id": "txcd_33020014", + "object": "tax_code", + "description": "Non-electric can opener.", + "name": "Can opener - manual" + }, + { + "id": "txcd_33020200", + "object": "tax_code", + "description": "Products used for conservation or efficient use of water to be environmental friendly.", + "name": "Water efficiency products" + }, + { + "id": "txcd_33030001", + "object": "tax_code", + "description": "Single or multi-pack AA, AAA, c, D, 6-volt or 9-volt batteries, excluding automobile or boat batteries.", + "name": "Alkaline Batteries" + }, + { + "id": "txcd_33031001", + "object": "tax_code", + "description": "Mobile phone batteries.", + "name": "Mobile Phone Batteries" + }, + { + "id": "txcd_33080201", + "object": "tax_code", + "description": "Wipes used in the process of eliminating or reducing harmful microorganisms from inanimate objects and surfaces.", + "name": "Disinfectant wipes" + }, + { + "id": "txcd_33080202", + "object": "tax_code", + "description": "Disposable household paper products such as paper towels, napkins, tissues, plates, cups, bags, etc.", + "name": "Disposable household paper products" + }, + { + "id": "txcd_33080300", + "object": "tax_code", + "description": "Includes blankets, pillows, bed linens/sheets, comforters, towels, wash cloths, shower curtains and bath mats.", + "name": "Household linens, bedding, towels, and shower curtains" + }, + { + "id": "txcd_33100001", + "object": "tax_code", + "description": "Landscape soil, mulch, compost - residential.", + "name": "Landscape Soil/ Mulch/ Compost - Residential" + }, + { + "id": "txcd_33100101", + "object": "tax_code", + "description": "Chemicals for use in non-commercial gardens to produce foods for human consumption.", + "name": "Insecticides, herbicides, fungicides" + }, + { + "id": "txcd_33100200", + "object": "tax_code", + "description": "Any substance such as manure or a mixture of nitrates used to make soil more fertile.", + "name": "Plant food" + }, + { + "id": "txcd_33110001", + "object": "tax_code", + "description": "Standard incandescent light bulbs carrying an Energy Star rating.", + "name": "Incandescent Light Bulbs - Energy Star" + }, + { + "id": "txcd_33110002", + "object": "tax_code", + "description": "Compact Fluorescent light (CFL) bulbs carrying an Energy Star rating.", + "name": "Compact Fluorescent Light Bulbs - Energy Star" + }, + { + "id": "txcd_33110003", + "object": "tax_code", + "description": "Light emitting diode (LED) bulbs carrying an Energy Star rating.", + "name": "LED Bulbs - Energy Star" + }, + { + "id": "txcd_33110004", + "object": "tax_code", + "description": "Portable self-powered or battery powered light sources, including flashlights, lanterns, emergency glow sticks or light sticks.", + "name": "Portable Light Sources" + }, + { + "id": "txcd_33110005", + "object": "tax_code", + "description": "Candles to be used a light source.", + "name": "Candles" + }, + { + "id": "txcd_33120000", + "object": "tax_code", + "description": "Qualifying items for purposes of certain sales tax holidays such as cell phone batteries, cell phone chargers, and two-way radios.", + "name": "Storm preparedness items" + }, + { + "id": "txcd_33120001", + "object": "tax_code", + "description": "Portable self-powered or battery powered radio, two-way radio, weatherband radio.", + "name": "Portable Radios" + }, + { + "id": "txcd_33120002", + "object": "tax_code", + "description": "Non-electric food or beverage cooler.", + "name": "Food Storage Cooler" + }, + { + "id": "txcd_33120003", + "object": "tax_code", + "description": "Smoke Detectors.", + "name": "Smoke Detectors" + }, + { + "id": "txcd_33120004", + "object": "tax_code", + "description": "Carbon Monoxide Detectors.", + "name": "Carbon Monoxide Detectors" + }, + { + "id": "txcd_33120005", + "object": "tax_code", + "description": "Fire Extinguishers.", + "name": "Fire Extinguishers" + }, + { + "id": "txcd_33120006", + "object": "tax_code", + "description": "Portable fuel container.", + "name": "Portable Fuel Container" + }, + { + "id": "txcd_33120007", + "object": "tax_code", + "description": "Non-electric water container to store water for emergency usage.", + "name": "Water storage container" + }, + { + "id": "txcd_33120008", + "object": "tax_code", + "description": "Artificial ice, blue ice, ice packs, reusable ice.", + "name": "Artificial Ice" + }, + { + "id": "txcd_33120009", + "object": "tax_code", + "description": "Tarps, plastic sheeting, plastic drop cloths, waterproof sheeting.", + "name": "Tarpaulins and Weatherproof Sheeting" + }, + { + "id": "txcd_33120010", + "object": "tax_code", + "description": "Portable generator used to provide light or communications or power appliances during a power outage.", + "name": "Portable Generator" + }, + { + "id": "txcd_33120011", + "object": "tax_code", + "description": "Power cords used to connect electrical equipment and devices to power sockets.", + "name": "Power cords" + }, + { + "id": "txcd_33120012", + "object": "tax_code", + "description": "An hand held tool with a bladed head on a handle used for hewing, cleaving, chopping, etc.", + "name": "Axes/Hatchets" + }, + { + "id": "txcd_33120013", + "object": "tax_code", + "description": "Gas-powered chainsaw.", + "name": "Garden chainsaw" + }, + { + "id": "txcd_33120014", + "object": "tax_code", + "description": "Chainsaw accessories include chains, lubricants, motor oil, chain sharpeners, bars, wrenches, carrying cases, repair parts, safety apparel.", + "name": "Chainsaw accessories" + }, + { + "id": "txcd_33120015", + "object": "tax_code", + "description": "Plywood, window film, storm shutters, hurricane shutters or other materials specifically designed to protect windows.", + "name": "Storm shutters/window protection devices" + }, + { + "id": "txcd_33120016", + "object": "tax_code", + "description": "Ladder used for home emergency evacuation.", + "name": "Emergency/rescue ladder" + }, + { + "id": "txcd_33120017", + "object": "tax_code", + "description": "Ropes and Cords and similar fastening products.", + "name": "Ropes and Cords" + }, + { + "id": "txcd_33120018", + "object": "tax_code", + "description": "Ground anchor systems and tie down kits for securing property against severe weather.", + "name": "Ground Anchor Systems and Tie-down Kits" + }, + { + "id": "txcd_33120019", + "object": "tax_code", + "description": "Duct Tape.", + "name": "Duct Tape" + }, + { + "id": "txcd_33150001", + "object": "tax_code", + "description": "WaterSense labeled toilets.", + "name": "Toilets - WaterSense" + }, + { + "id": "txcd_33150002", + "object": "tax_code", + "description": "WaterSense labeled urinals.", + "name": "Urinals - WaterSense" + }, + { + "id": "txcd_33150003", + "object": "tax_code", + "description": "WaterSense labeled bathroom sink faucets and accessories.", + "name": "Bathroom Faucets - WaterSense" + }, + { + "id": "txcd_33150004", + "object": "tax_code", + "description": "WaterSense labeled sprinkler body is the exterior shell that connects to the irrigation system piping and houses the spray nozzle that applies water on the landscape.", + "name": "Spray Water Sprinkler Bodies - WaterSense" + }, + { + "id": "txcd_33150005", + "object": "tax_code", + "description": "WaterSense labeled irrigation controllers, which act like a thermostat for your sprinkler system telling it when to turn on and off, use local weather and landscape conditions to tailor watering schedules to actual conditions on the site.", + "name": "Irrigation Controls - WaterSense" + }, + { + "id": "txcd_33150006", + "object": "tax_code", + "description": "WaterSense labeled showerheads.", + "name": "Showerheads - WaterSense" + }, + { + "id": "txcd_34010001", + "object": "tax_code", + "description": "A type of consumer electronic device used to play vinyl recordings.", + "name": "Audio Turntables" + }, + { + "id": "txcd_34010002", + "object": "tax_code", + "description": "Portable audio equipment that plays audio files encoded in MP3 and other audio formats.", + "name": "Digital Music Players" + }, + { + "id": "txcd_34010003", + "object": "tax_code", + "description": "A camera that captures moving images and sound and converts them into electronic signals so that they can be saved on a storage device, such as videotape or a hard drive, or viewed on a monitor.", + "name": "Video Cameras" + }, + { + "id": "txcd_34020001", + "object": "tax_code", + "description": "A camera that captures photographs in digital memory.", + "name": "Digital Cameras" + }, + { + "id": "txcd_34020002", + "object": "tax_code", + "description": "A framed display designed to display preloaded digital images (jpeg or any digital image format). Has slots for flash memory cards and/or an interface for digital photo camera connection.", + "name": "Digital Picture Frames" + }, + { + "id": "txcd_34020003", + "object": "tax_code", + "description": "A portable electronic device for reading digital books and periodicals.", + "name": "E-Book Readers" + }, + { + "id": "txcd_34020004", + "object": "tax_code", + "description": "Wired and bluetooth headphones and earbuds for audio listening.", + "name": "Headphones/Earbuds" + }, + { + "id": "txcd_34020005", + "object": "tax_code", + "description": "Consumer electronics peripherals and accessories. Please select a more granular product tax category where appropriate.", + "name": "Consumer Electronics Peripherals/Accessories" + }, + { + "id": "txcd_34020006", + "object": "tax_code", + "description": "Televisions.", + "name": "Televisions" + }, + { + "id": "txcd_34020027", + "object": "tax_code", + "description": "Electronic devices bought for personal rather than commercial use. Please select a more granular product tax category where appropriate.", + "name": "Consumer Electronics" + }, + { + "id": "txcd_34021000", + "object": "tax_code", + "description": "A portable device for connecting to a telecommunications network in order to transmit and receive voice, video, or other data.", + "name": "Mobile Phones" + }, + { + "id": "txcd_34021001", + "object": "tax_code", + "description": "A device for recharging the battery of a mobile phone, especially one consisting of a cable connected to an adaptor which plugs into an electrical socket or usb port.", + "name": "Mobile Phone Charging Device/cord" + }, + { + "id": "txcd_34022000", + "object": "tax_code", + "description": "A specialized computer system designed for interactive video gameplay that typically connects to a television or other monitor.", + "name": "Video Gaming Console - Fixed" + }, + { + "id": "txcd_34022001", + "object": "tax_code", + "description": "A handheld portable electronic device used for playing video games that has its own screen, speakers and controls in one unit.", + "name": "Video Gaming Console - Portable" + }, + { + "id": "txcd_34040001", + "object": "tax_code", + "description": "Typically a lithium-ion remote power source for laptop computers.", + "name": "Computer Batteries" + }, + { + "id": "txcd_34040002", + "object": "tax_code", + "description": "Cables with industry standard connection and termination configurations used to connect various peripherals and equipment to computers.", + "name": "Computer Cables" + }, + { + "id": "txcd_34040003", + "object": "tax_code", + "description": "Storage drives, hard drives, Zip drives, etc.", + "name": "Computer Drives" + }, + { + "id": "txcd_34040004", + "object": "tax_code", + "description": "Computer Keyboards.", + "name": "Computer Keyboards" + }, + { + "id": "txcd_34040005", + "object": "tax_code", + "description": "Computer Microphones.", + "name": "Computer Microphones" + }, + { + "id": "txcd_34040006", + "object": "tax_code", + "description": "Computer Monitor/Displays.", + "name": "Computer Monitor/Displays" + }, + { + "id": "txcd_34040007", + "object": "tax_code", + "description": "Computer Mouse/Pointing Devices.", + "name": "Computer Mouse/Pointing Devices" + }, + { + "id": "txcd_34040008", + "object": "tax_code", + "description": "Computer Printer.", + "name": "Computer Printer" + }, + { + "id": "txcd_34040009", + "object": "tax_code", + "description": "Computer Speakers.", + "name": "Computer Speakers" + }, + { + "id": "txcd_34040010", + "object": "tax_code", + "description": "A docking station is a hardware frame and set of electrical connection interfaces that enable a notebook computer to effectively serve as a desktop computer.", + "name": "Docking Stations" + }, + { + "id": "txcd_34040011", + "object": "tax_code", + "description": "A device that makes possible the transmission of data to or from a computer via telephone or other communication lines.", + "name": "Modems" + }, + { + "id": "txcd_34040012", + "object": "tax_code", + "description": "A motherboard is the physical component in a computer that contains the computer's basic circuitry and other components.", + "name": "Motherboards" + }, + { + "id": "txcd_34040013", + "object": "tax_code", + "description": "A port replicator is an attachment for a notebook computer that allows a number of devices such as a printer, large monitor, and keyboard to be simultaneously connected.", + "name": "Port Replicators" + }, + { + "id": "txcd_34040014", + "object": "tax_code", + "description": "A device that connects computer networks to each other, and sends information between networks. The router, as commonly used in the home, is the hardware that allows communication between your personal computers and other connected device and the internet.", + "name": "Routers" + }, + { + "id": "txcd_34040015", + "object": "tax_code", + "description": "A device that scans documents and images and converts them into digital data for use on a computer.", + "name": "Scanners" + }, + { + "id": "txcd_34040016", + "object": "tax_code", + "description": "A sound card is an expansion component used in computers to receive and send audio.", + "name": "Sound Cards" + }, + { + "id": "txcd_34040017", + "object": "tax_code", + "description": "An expansion card that allows the computer to send graphical information to a video display device such as a monitor, TV, or projector. Video cards are often used by gamers in place of integrated graphics due to their extra processing power and video ram.", + "name": "Video/Graphics Card" + }, + { + "id": "txcd_34040018", + "object": "tax_code", + "description": "A webcam is a video camera that feeds or streams an image or video in real time to or through a computer to a computer network, such as the Internet. Webcams are typically small cameras that sit on a desk, attach to a user's monitor, or are built into the hardware.", + "name": "Web Camera" + }, + { + "id": "txcd_35010000", + "object": "tax_code", + "description": "Books or booklets consisting of text or illustrations bound in a stiffer cover than the pages.", + "name": "Books" + }, + { + "id": "txcd_35010001", + "object": "tax_code", + "description": "Children's books including picture books, painting, drawing, and activity books.", + "name": "Books for children" + }, + { + "id": "txcd_35010400", + "object": "tax_code", + "description": "Printed religious books and manuals.", + "name": "Religious books" + }, + { + "id": "txcd_35010500", + "object": "tax_code", + "description": "Recognized in the ordinary and usual sense as a \"book\", except that the product is audio and delivered electronically or on a CD/DVD instead of in a printed format.", + "name": "Audiobook (Physical Copy)" + }, + { + "id": "txcd_35020100", + "object": "tax_code", + "description": "Publications distributed to the public at regular intervals that contains news of general interest.", + "name": "Newspapers" + }, + { + "id": "txcd_35020200", + "object": "tax_code", + "description": "Publications, including magazines, distributed on a periodic basis.", + "name": "Magazines" + }, + { + "id": "txcd_36010001", + "object": "tax_code", + "description": "Flea and tick products for animal use including soaps, cleaning solutions, and shampoos (e.g., flea collars, flea powder, tick and flea soap, and tick sprays).", + "name": "Flea and tick products" + }, + { + "id": "txcd_36010002", + "object": "tax_code", + "description": "Drugs or substance for treating animals and intended for use in the diagnosis, cure, mitigation, treatment, or prevention of disease.", + "name": "Over-the-counter drugs for animal use - without a prescription" + }, + { + "id": "txcd_36010003", + "object": "tax_code", + "description": "Medical supplies available without a prescription and used in the treatment of companion animals (e.g., first aid items such as bandages and gauze).", + "name": "Over-the-counter medical supplies for pets" + }, + { + "id": "txcd_36010004", + "object": "tax_code", + "description": "Food for household pets that is consumed for nutritional value. This code is not intended for food related to working farm animals or animals raised for meat or milk production.", + "name": "Pet food" + }, + { + "id": "txcd_36010005", + "object": "tax_code", + "description": "Pet food products offering additional nutrients or functional ingredients.", + "name": "Pet vitamins" + }, + { + "id": "txcd_37010000", + "object": "tax_code", + "description": "Personal computers, including laptops, tablets, desktops.", + "name": "Personal Computers" + }, + { + "id": "txcd_37010003", + "object": "tax_code", + "description": "Removable storage media such as compact disks, flash drives, thumb drives, flash memory cards.", + "name": "Computer Storage Media" + }, + { + "id": "txcd_37010036", + "object": "tax_code", + "description": "Ink catridges for printers.", + "name": "Printer Ink" + }, + { + "id": "txcd_37030002", + "object": "tax_code", + "description": "A globe that could be used by a student in a course of study as a reference and to learn the subject being taught.", + "name": "Globes - Student" + }, + { + "id": "txcd_37030003", + "object": "tax_code", + "description": "A map that could be used by a student in a course of study as a reference and to learn the subject being taught.", + "name": "Maps - Student" + }, + { + "id": "txcd_37040001", + "object": "tax_code", + "description": "Paper suitable for printers.", + "name": "Printer Paper" + }, + { + "id": "txcd_37050001", + "object": "tax_code", + "description": "Books that are required or approved for use in conjunction with a curriculum provided by an educational institution.", + "name": "School textbooks" + }, + { + "id": "txcd_37060001", + "object": "tax_code", + "description": "Bags designed to carry students' books during the school day. This category does not include backpacks for traveling, hiking, camping, etc.", + "name": "Bookbags/Backpacks - Student" + }, + { + "id": "txcd_37060002", + "object": "tax_code", + "description": "Typically a small electonic device with a keyboard and visual display used for making used for making mathematical calculations.", + "name": "Calculators" + }, + { + "id": "txcd_37060003", + "object": "tax_code", + "description": "A calendar based notebook to aid in outlining one's daily appointments, classes, activities, etc.", + "name": "Daily Planners" + }, + { + "id": "txcd_37060008", + "object": "tax_code", + "description": "Portable locks used by students in a school setting to prevent use, theft, vandalism or harm.", + "name": "Padlocks - Student" + }, + { + "id": "txcd_37060009", + "object": "tax_code", + "description": "An item commonly used by a student in a course of study for artwork. This category is limited to the following items...clay and glazes, paints, paintbrushes for artwork, sketch and drawing pads, watercolors.", + "name": "School Art Supplies" + }, + { + "id": "txcd_37060010", + "object": "tax_code", + "description": "Reference printed material commonly used by a student in a course of study as a reference and to learn the subject being taught.", + "name": "Dictionaries/Thesauruses" + }, + { + "id": "txcd_37060011", + "object": "tax_code", + "description": "Sheet music used by a student in conjunciton with school activities.", + "name": "Sheet music - Student" + }, + { + "id": "txcd_37060012", + "object": "tax_code", + "description": "An item commonly used by a student in a course of study. This category is limited to the following items...binders, blackboard chalk, cellophane tape, compasses, composition books, crayons, erasers, folders, glue/paste/glue sticks, highlighters, index cards, index card boxes, legal pads, lunch boxes, markers, notebooks, paper (copy, graph, tracing, manila, colored, construction, notebook), pencils, pencil boxes, pencil sharpeners, pens, posterboard, protractors, rulers, scissors, writing tablets.", + "name": "School Supplies" + }, + { + "id": "txcd_37060013", + "object": "tax_code", + "description": "A device that joins pages of paper or similar material by fastening a thin metal staple through the sheets and folding the ends underneath.", + "name": "Staplers/Staples" + }, + { + "id": "txcd_37060035", + "object": "tax_code", + "description": "Pins/tacks to secure papers, pictures, calendars, etc. to bulletin boards, walls, etc.", + "name": "Push pins/tacks" + }, + { + "id": "txcd_37060045", + "object": "tax_code", + "description": "A handheld computer that is capable of plotting graphs, solving simultaneous equations, and performing other tasks with variables.", + "name": "Graphing Calculators" + }, + { + "id": "txcd_37060046", + "object": "tax_code", + "description": "A musical instrument used by a student in conjunciton with school activities.", + "name": "Musical instruments - Student" + }, + { + "id": "txcd_37070001", + "object": "tax_code", + "description": "Software prewritten and delivered on tangible media.", + "name": "Tangible media -- prewritten software" + }, + { + "id": "txcd_40040000", + "object": "tax_code", + "description": "Food and food ingredients for home consumption.", + "name": "Food" + }, + { + "id": "txcd_40040004", + "object": "tax_code", + "description": "Foods and formulas meant for feeding babies and infants.", + "name": "Baby food" + }, + { + "id": "txcd_40050004", + "object": "tax_code", + "description": "Food bundle or basket containing food staples combined with tangible personal property, with the food comprising between 50% and 90% of the overall value of the bundle.", + "name": "Tangible personal property bundle -- 50-90% food" + }, + { + "id": "txcd_40050005", + "object": "tax_code", + "description": "Food bundle or basket containing food staples combined with tangible personal property, with the food comprising less 90% or more of the overall value of the bundle.", + "name": "Tangible personal property bundle -- 90% food or more" + }, + { + "id": "txcd_40050006", + "object": "tax_code", + "description": "Food bundle or basket containing food staples combined with tangible personal property, with the food comprising less than 50% of the overall value of the bundle.", + "name": "Tangible personal property bundle -- less than 50% food" + }, + { + "id": "txcd_40060003", + "object": "tax_code", + "description": "Ready to eat foods intended to be consumed on site by people.", + "name": "Prepared foods" + }, + { + "id": "txcd_40070005", + "object": "tax_code", + "description": "Snack foods including chips, crisps, puffs, curls or sticks, popped corn, brittle pretzels, salted nuts and salted seeds, granola products and snack mixes. This category does not include items such as crackers, cookies, snack cakes or breakfast cereal.", + "name": "Snack foods" + }, + { + "id": "txcd_40090001", + "object": "tax_code", + "description": "Tablet, capsule, powder, softgel, gelcap, or liquid intended that contain a vitamin, mineral, herb, other botanical, or amino acid and is labeled as a dietary supplement identifiable by the \"supplement facts\" box found on the label.", + "name": "Dietary supplements" + }, + { + "id": "txcd_40090005", + "object": "tax_code", + "description": "A food which intended to be or is represented for special dietary use solely as a food for infants by reason of its simulation of human milk or its suitability as a complete or partial substitute for human milk.", + "name": "Infant formula" + }, + { + "id": "txcd_40090008", + "object": "tax_code", + "description": "Products in various forms that are intended for ingestion and represented as a conventional food and labeled as a nutritional supplement and identifiable by the \"Nutrition Facts\" box found on the label.", + "name": "Nutritional supplements" + }, + { + "id": "txcd_40100001", + "object": "tax_code", + "description": "A preparation of natural or artificial sweeteners in combination with chocolate, fruits, nuts, or other ingredients or flavorings in the form of bars, drops, or pieces.", + "name": "Candy and sweets" + }, + { + "id": "txcd_40100002", + "object": "tax_code", + "description": "A preparation of natural or artificial sweeteners in combination with chocolate, fruits, nuts, or other ingredients or flavorings in the form of bars, drops, or pieces and that contains flour as an ingredient.", + "name": "Candy and sweets -- contains flour" + }, + { + "id": "txcd_41030001", + "object": "tax_code", + "description": "Regular, unsweetened, non carbonated water sold in containers.", + "name": "Bottled water" + }, + { + "id": "txcd_41030002", + "object": "tax_code", + "description": "Unsweetened water that is carbonated artificially or naturally, including naturally sparkling mineral water.", + "name": "Carbonated bottled water" + }, + { + "id": "txcd_41040002", + "object": "tax_code", + "description": "Carbonated non-alcoholic beverages that contain natural or artificial sweeteners, and zero natural fruit or vegetable juice, not including carbonated water. Includes energy drinks that carry a Nutrition Facts label and contain a blend of energy enhancing ingredients.", + "name": "Carbonated soft drinks" + }, + { + "id": "txcd_41040003", + "object": "tax_code", + "description": "Ready to drink non-carbonated beverage containing tea with natural or artificial sweeteners.", + "name": "Bottled tea -- non-carbonated (sweetened)" + }, + { + "id": "txcd_41040004", + "object": "tax_code", + "description": "Bottled water for human consumption, containing natural or artificial sweeteners, non-carbonated.", + "name": "Bottled water - flavored" + }, + { + "id": "txcd_41040005", + "object": "tax_code", + "description": "Bottled water for human consumption, containing natural or artificial sweeteners, carbonated.", + "name": "Bottled water -- carbonated (sweetened)" + }, + { + "id": "txcd_41040008", + "object": "tax_code", + "description": "Non-carbonated, non-alcoholic beverages that contain sweeteners, and zero natural fruit or vegetable juice, such as sweetened cocktail mixes that can be combined with alcohol, but doesn't include flavored water.", + "name": "Soft drinks -- non-carbonated" + }, + { + "id": "txcd_41050006", + "object": "tax_code", + "description": "Coffee beans or ground coffee.", + "name": "Coffee beans and ground coffee" + }, + { + "id": "txcd_41050008", + "object": "tax_code", + "description": "Tea leaves and tea bags.", + "name": "Tea leaves and tea bags" + }, + { + "id": "txcd_41060003", + "object": "tax_code", + "description": "Milk type beverages from non-animal sources, such as soy, rice, almond, coconut, peanut, and hemp.", + "name": "Milk substitutes" + }, + { + "id": "txcd_41060006", + "object": "tax_code", + "description": "Milk or milk substitutes, or drinks with bases of milk, coffee, unsweetened tea or cocoa.", + "name": "Milk, coffee, tea, and cocoa beverages" + }, + { + "id": "txcd_90020001", + "object": "tax_code", + "description": "Gratuity, otherwise known as a tip, is money that a customer leaves for an employee or employees that is in addition to and separate from the amount due for the goods or services rendered.", + "name": "Optional Gratuity" + }, + { + "id": "txcd_92010001", + "object": "tax_code", + "description": "A shipping charge for the delivery of physical goods in conjunction with the sale of these goods. This tax category is not appropriate for stand alone transportation charges that are not associated with the sale of the goods being delivered.", + "name": "Shipping" + } +] \ No newline at end of file diff --git a/includes/core/api/paymentintents.php b/includes/core/api/paymentintents.php new file mode 100644 index 00000000..c08b4999 --- /dev/null +++ b/includes/core/api/paymentintents.php @@ -0,0 +1,42 @@ +h2:not(.nav-tab-wrapper){clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.simpay-settings .form-table td fieldset+p,.simpay-settings .form-table td label+p,.simpay-settings .form-table td select+p,.simpay-settings .form-table td input+p{color:#666;font-style:italic}.simpay-settings .simpay-settings-subsections__subsection{display:flex;align-items:center}.simpay-settings .simpay-settings-subsections__subsection .simpay-settings-bubble{margin-left:5px}.button.button-large.simpay-button-large{font-size:14px;line-height:30px;padding:4px 12px}.simpay-copy-hidden-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.fixed .column-livemode{width:15%;text-align:right}@media screen and (max-width: 782px){.fixed .column-livemode{text-align:left}}.fixed .column-livemode .simpay-badge{margin-top:3px}.fixed .column-shortcode{width:25%}.fixed .column-shortcode .simpay-shortcode{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.post-type-simple-pay .misc-pub-curtime,.post-type-simple-pay .misc-pub-visibility{display:none}.simpay-metabox-title{border:1px solid #eee}.simpay-shortcode-section{border-top:1px solid #ddd;border-width:1px 0;padding-top:15px;padding-bottom:15px;position:relative}.simpay-shortcode-section label{display:block;margin-bottom:6px}.simpay-shortcode-section label .dashicons{color:#8c8f94;margin-right:3px}.simpay-shortcode-section .simpay-copy-button{line-height:normal;position:absolute;right:20px;bottom:20px;border:0;background:none;box-shadow:none;padding:0}.simpay-shortcode-section .simpay-copy-button:hover{border:0;background:none;box-shadow:none}.simpay-shortcode-section .simpay-copy-button .dashicons{color:#3c434a}.simpay-shortcode{width:100%;padding:8px;line-height:1;margin:0;height:32px;resize:none}.simpay-badge{color:#3f3f46;text-align:center;line-height:1;padding:5px 7px;border-radius:3px;background:#e4e4e7;border:0;box-shadow:none;display:inline-flex;align-items:center}button.simpay-badge{cursor:pointer}button.simpay-badge:hover{background:#d4d4d8}.simpay-badge__icon{opacity:.8;margin:2px 5px 0 0}.simpay-badge--green{color:#0e6245;background:#cbf4c9}.simpay-badge--yellow{color:#983705;background:#f8e5b9}.simpay-stripe-account-info{display:flex;align-items:center;margin-bottom:8px}.simpay-stripe-account-info .spinner{float:none;margin-top:0;margin-left:0}.simple-pay_page_simpay_settings .simpay-settings-upgrade,.post-type-simple-pay .simpay-settings-upgrade{margin-top:20px;padding:1px;position:relative;background:#fff;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.1);max-width:677px}.simple-pay_page_simpay_settings .simpay-settings-upgrade__inner,.post-type-simple-pay .simpay-settings-upgrade__inner{text-align:center;margin:0;padding:30px}.simple-pay_page_simpay_settings .simpay-settings-upgrade h3,.post-type-simple-pay .simpay-settings-upgrade h3{line-height:1.5;font-size:22px;margin:0 0 1.5rem}.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin:1.5rem 0 calc(1.5rem - 6px);display:flex;flex-wrap:wrap;justify-content:center}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin-left:4rem;margin-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{font-size:15px;margin:6px 0;width:100%}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a,.post-type-simple-pay .simpay-settings-upgrade li a{color:#3c434a;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a:hover,.post-type-simple-pay .simpay-settings-upgrade li a:hover{color:var(--wp-admin-theme-color);text-decoration:underline}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{text-align:left;width:50%}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button.button-large,.post-type-simple-pay .simpay-settings-upgrade .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simple-pay_page_simpay_settings .simpay-settings-upgrade small,.post-type-simple-pay .simpay-settings-upgrade small{color:#666;margin:15px 0 0;display:block}.simple-pay_page_simpay_settings .simpay-settings-upgrade .dashicons-yes,.post-type-simple-pay .simpay-settings-upgrade .dashicons-yes{color:#428bca}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link,.post-type-simple-pay .simpay-settings-upgrade .button-link{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:hover,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:active,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:focus,.post-type-simple-pay .simpay-settings-upgrade .button-link:hover,.post-type-simple-pay .simpay-settings-upgrade .button-link:active,.post-type-simple-pay .simpay-settings-upgrade .button-link:focus{color:#666;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{text-align:center;margin:0;padding:30px 20px 20px;background-color:#fcf9e8;border:1px solid #edeac9;border-width:1px 0 0;position:relative;border-radius:0;border-bottom-left-radius:4px;border-bottom-right-radius:4px}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{padding-left:4rem;padding-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;box-shadow:0 0 0 1px #edeac9;width:28px;height:28px;position:absolute;top:-18px;left:50%;margin-left:-18px}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext u,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext a,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext a{font-weight:normal;display:inline-block}#simpay-payment-form-settings table{width:100%;border-collapse:collapse}#simpay-payment-form-settings ::-webkit-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings ::-moz-placeholder{color:#9ba1a9;opacity:1}#simpay-payment-form-settings :-ms-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings .inside{margin:0;padding:0}#simpay-payment-form-settings .simpay-panel-field .toolbar{margin-bottom:-4px}#simpay-payment-form-settings .simpay-panel-field .toolbar .simpay-field-select{margin:0 0 4px;width:auto;max-width:70%}#simpay-payment-form-settings .simpay-tabs{margin:0;padding:0;list-style:none;background:#fafafa;border-right:1px solid #ccd0d4;line-height:1em;position:relative;flex:0 0 25%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs{flex-basis:100%;flex-grow:1;border-right:0}}#simpay-payment-form-settings .simpay-tabs li{margin:0;padding:0}#simpay-payment-form-settings .simpay-tabs li:first-child{margin-top:-1px}#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:20px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:0}}#simpay-payment-form-settings .simpay-tabs li.active{margin-left:-1px;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-tabs li.active:focus:after{display:none}#simpay-payment-form-settings .simpay-tabs li.active:before,#simpay-payment-form-settings .simpay-tabs li.active:after{content:"";width:calc(100% + 1px);height:1px;background:#ccd0d4;position:absolute;top:0;left:0;right:0;z-index:2}#simpay-payment-form-settings .simpay-tabs li.active:after{top:auto;bottom:0}#simpay-payment-form-settings .simpay-tabs li.active a{font-weight:bold;background-color:#fff;position:relative;margin-right:-1px}#simpay-payment-form-settings .simpay-tabs li.active a:before{content:"";position:absolute;top:0;left:0;bottom:0;width:4px;height:100%;background:currentColor;z-index:3}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li.active a{margin-right:0}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{display:flex;align-items:center;line-height:20px;margin:0;padding:10px 10px 10px 14px;text-decoration:none;transition:all .05s ease-in-out}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item svg,#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item .dashicons{margin-right:6px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{padding:18px}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item:focus{outline:0;position:relative;z-index:3;box-shadow:inset 0 0 0 2px currentColor}#simpay-payment-form-settings .simpay-tabs li:not(.active) .simpay-tab-item{color:inherit}#simpay-payment-form-settings .simpay-panels-wrap{background:#fff;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels-wrap{flex-direction:column}}#simpay-payment-form-settings .simpay-panels{flex:0 0 75%;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels{flex-basis:100%}}#simpay-payment-form-settings .simpay-panel,#simpay-payment-form-settings .simpay-panel-section{width:100%}#simpay-payment-form-settings .simpay-panel>table,#simpay-payment-form-settings .simpay-panel>table>tr,#simpay-payment-form-settings .simpay-panel>table>tbody,#simpay-payment-form-settings .simpay-panel>table>tbody>tr,#simpay-payment-form-settings .simpay-panel>table>thead,#simpay-payment-form-settings .simpay-panel>table>thead>tr{display:block;width:100%}#simpay-payment-form-settings .simpay-panel>table:last-child>tbody:last-child>tr:last-child>td{border-bottom:0}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade{position:relative}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div{margin-right:80px}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div .button-small{position:absolute;top:calc(50% - 13px);right:18px}#simpay-payment-form-settings .simpay-panel-field,#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{text-align:left;display:block}#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{width:calc(100% - 36px);margin-left:18px;margin-right:18px}#simpay-payment-form-settings .simpay-panel-field th{font-weight:bold;padding-top:18px;padding-bottom:5px}#simpay-payment-form-settings .simpay-panel-field td{border-bottom:1px solid #ddd;padding-bottom:18px}#simpay-payment-form-settings .simpay-panel-field p.description{margin-top:4px}#simpay-payment-form-settings .simpay-panel-field p.description:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested{margin-top:18px}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested label{font-weight:bold;display:block;margin-bottom:4px}#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:75%;max-width:100%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:0;width:100%}}#simpay-payment-form-settings .simpay-panel-field .simpay-field-textarea{width:100%;max-width:100%}#simpay-payment-form-settings .simpay-panel-field .notice:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .error,#simpay-payment-form-settings .simpay-panel-field .simpay-important{color:#a94442;font-weight:normal}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap{position:relative;margin-top:12px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview{position:absolute;top:-15px;left:-15px;cursor:pointer;background-color:#fff}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview::before{font-size:22px;line-height:26px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-image-preview{max-height:128px;max-width:128px;border:1px solid #ddd}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box{background-color:#f4f4f4;border:1px solid #e5e5e5;padding:18px;margin-top:18px;position:relative}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss{color:inherit;text-decoration:none;position:absolute;top:8px;right:8px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss .dashicons-dismiss{font-size:16px;width:16px;height:16px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box h3{font-size:18px;font-weight:600;margin:0;padding:0}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p{font-size:14px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p:last-child{margin-bottom:0}#simpay-payment-form-settings .simpay-metabox-content{margin-bottom:-1px;background-color:#f5f5f5;border:1px solid #c3c4c7;border-width:1px 0;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-show-if,#simpay-payment-form-settings .simpay-panel-hidden{display:none}#simpay-payment-form-settings .simpay-payment-methods{border:1px solid #ccd0d4;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04)}#simpay-payment-form-settings .simpay-panel-field-payment-method{display:block;border-top:1px solid #ccd0d4;padding:7px;box-sizing:border-box}#simpay-payment-form-settings .simpay-panel-field-payment-method:first-child{border-top:0;border-top-left-radius:4px;border-top-right-radius:4px}#simpay-payment-form-settings .simpay-panel-field-payment-method input[type=checkbox]{margin-top:0;margin-right:8px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help{color:#666;text-decoration:none;margin-right:5px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help .dashicons{font-size:18px;width:18px;height:18px}#simpay-payment-form-settings .simpay-panel-field-payment-method__restrictions{margin-left:65px}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon{border-radius:3px;overflow:hidden;margin:0 8px 0 5px;width:30px;height:30px;flex-shrink:0}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon svg{width:30px;height:30px}#simpay-global-settings .sortable-placeholder,#simpay-form-settings .sortable-placeholder{margin:5px;display:block;min-height:36px}#simpay-global-settings .chosen-container,#simpay-form-settings .chosen-container{min-width:20em;max-width:30em}#simpay-global-settings .simpay-field.simpay-small-text,#simpay-form-settings .simpay-field.simpay-small-text{width:7em}#simpay-global-settings .simpay-field.simpay-medium-text,#simpay-form-settings .simpay-field.simpay-medium-text{width:15em}#simpay-global-settings .simpay-field-radios ul,#simpay-form-settings .simpay-field-radios ul{margin:0}#simpay-global-settings .simpay-field-radios>i,#simpay-form-settings .simpay-field-radios>i{margin-left:5px;vertical-align:middle}#simpay-global-settings ul.simpay-field-radios-inline,#simpay-form-settings ul.simpay-field-radios-inline{margin:0 0 -10px}#simpay-global-settings ul.simpay-field-radios-inline li,#simpay-form-settings ul.simpay-field-radios-inline li{display:inline-block;margin:0 10px 10px 0}#simpay-global-settings ul.simpay-field-radios-inline li:last-child,#simpay-form-settings ul.simpay-field-radios-inline li:last-child{margin-right:0}#simpay-global-settings .simpay-currency-field,#simpay-form-settings .simpay-currency-field{display:flex;align-items:center}>#simpay-global-settings .simpay-currency-field:focus,>#simpay-form-settings .simpay-currency-field:focus{position:relative;z-index:5}#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{line-height:38px}}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}#simpay-global-settings div.simpay-currency-symbol,#simpay-form-settings div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}#simpay-global-settings select.simpay-currency-symbol,#simpay-form-settings select.simpay-currency-symbol{padding-right:25px}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-width:1px 0 1px 1px}#simpay-global-settings .simpay-currency-symbol-left+.simpay-field-amount,#simpay-form-settings .simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-width:1px 1px 1px 0}#simpay-global-settings .simpay-field-amount,#simpay-form-settings .simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-error,#simpay-form-settings .simpay-error{color:red}#simpay-global-settings .simpay-docs-link-wrap,#simpay-form-settings .simpay-docs-link-wrap{position:absolute;right:0;bottom:0;color:#666;font-size:13px;font-style:italic;padding:15px 18px}#simpay-global-settings .simpay-docs-link-wrap a .dashicons-editor-help,#simpay-form-settings .simpay-docs-link-wrap a .dashicons-editor-help{color:#666;text-decoration:none;width:17px;height:17px;font-size:17px;padding-left:4px}#simpay-global-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon{color:#666}#simpay-global-settings .simpay-docs-icon,#simpay-global-settings .simpay-docs-icon .dashicons-editor-help,#simpay-form-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon .dashicons-editor-help{text-decoration:none;width:17px;height:17px;font-size:17px}.button.button-primary.simpay-upgrade-btn{background-color:#428bca;border:1px solid #428bca;color:#fff;display:inline-block}.button.button-primary.simpay-upgrade-btn:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2d6ca2}.button.button-primary.simpay-upgrade-btn:hover{background-color:#037ad0;border:1px solid #428bca}.simpay-upgrade-btn-subtext{color:#3c434a;font-size:14px;line-height:1.5;text-align:center;margin:40px 0 0;padding:30px 35px 20px;background-color:#fcf9e8;border:3px solid #ebe29a;border-radius:4px;position:relative}.simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:3px solid #ebe29a;width:28px;height:28px;position:absolute;top:-14px;left:50%;margin-left:-14px}.simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-btn-subtext a{text-decoration:none;display:block;margin-top:6px;font-weight:bold}.post-type-simple-pay #post-body-content{display:none}.simpay-card{margin:0 0 20px;padding:30px;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-card,.simpay-card p{line-height:1.5;font-size:16px}.simpay-card h3{line-height:1.6;font-size:18px;margin:0 0 20px;color:#23282c}.simpay-card p{margin:0 0 20px}.simpay-card p:last-child,.simpay-card ul:last-child{margin-bottom:0}.simpay-card figure{float:right;margin:0 0 30px 30px;max-width:400px}.simpay-card figure iframe,.simpay-card figure img{max-width:100%}.simpay-card figure figcaption{text-align:center}@media screen and (max-width: 782px){.simpay-card figure{margin:0 0 30px;max-width:100%;float:none}}.simpay-doc-suggestions{width:100%;display:flex;flex-wrap:wrap;padding:0}.simpay-doc-suggestion{text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:0 1 33.333%;padding:30px;border-right:1px solid #c3c4c7;box-sizing:border-box}.simpay-doc-suggestion:nth-child(3n){border-right:0}@media screen and (max-width: 782px){.simpay-doc-suggestion{flex:0 1 100%;border-bottom:1px solid #c3c4c7;border-right:0}.simpay-doc-suggestion:last-child{border-bottom:0}}.simpay-doc-suggestion h3{font-size:20px;margin-bottom:10px}.simpay-doc-suggestion p{font-size:15px}.simpay-doc-suggestion .dashicons{font-size:40px;width:40px;height:40px;display:block;margin-bottom:10px}.simpay-doc-suggestion .button-large{font-size:16px}.simpay-addons{display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.simpay-addon{background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;display:flex;flex-direction:column;flex-basis:calc(33% - 10px);box-sizing:border-box}@media screen and (max-width: 782px){.simpay-addon{flex-basis:100%}}.simpay-addon img{float:left;max-width:75px}.simpay-addon h5{margin:0 0 10px 100px;font-size:16px}.simpay-addon__details{padding:20px;flex:1 0 auto}.simpay-addon__actions{display:flex;align-items:center;justify-content:space-between;flex:0 1 auto;background-color:#f7f7f7;border-top:1px solid #ddd;margin-top:auto;padding:20px;position:relative}.simpay-addon__actions .msg{text-align:center;justify-content:center;display:flex;align-items:center;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#f7f7f7;z-index:3}.simpay-addon .error,.simpay-addon .status-label.status-installed{color:#d63638}.simpay-addon .success,.simpay-addon .status-label.status-active{color:#00a32a}.simpay-addon .addon-desc{margin:0 0 0 100px}.form-table td .simpay-stripe-connect-help{margin:15px 0;display:flex;align-items:center}.form-table td .simpay-stripe-connect-help .dashicons{margin-right:4px}.simpay-currency-field{display:flex;align-items:center}>.simpay-currency-field:focus{position:relative;z-index:5}.simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){.simpay-currency-symbol{line-height:38px}}.simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}select.simpay-currency-symbol{padding-right:25px}.simpay-currency-symbol-left{border-width:1px 0 1px 1px}.simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}.simpay-currency-symbol-right{border-width:1px 1px 1px 0}.simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.post-new-php.post-type-simple-pay #screen-meta-links,.post-php.post-type-simple-pay #screen-meta-links,.edit-php.post-type-simple-pay #screen-meta-links{display:none}.simpay-branding-bar{margin-left:-20px;padding:14px 20px 14px 22px;background:#fff;border-bottom:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-branding-bar__title{display:flex;align-items:center;float:left;margin:8px 0}.simpay-branding-bar__logo{width:200px}.simpay-branding-bar__divider{color:#dadbdf;font-size:23px;font-weight:400;margin:0 15px}.simpay-branding-bar__actions{float:right;margin-top:4px;display:flex;align-items:center}.simpay-branding-bar__actions>div{margin-left:10px;min-width:40px}.simpay-branding-bar__actions-button{color:#000;cursor:pointer;padding:10px;width:40px;height:40px;background-color:#f3f4f5;border-radius:50%;border:0;box-shadow:none;position:relative;transition:background-color .2s ease;box-sizing:border-box;display:block}.simpay-branding-bar__actions-button:hover{background-color:#e5e5e5}.simpay-branding-bar__actions-button:active,.simpay-branding-bar__actions-button:focus{box-shadow:0 0 0 2px var(--wp-admin-theme-color)}.simpay-branding-bar__actions-button-count{font-weight:600;font-size:10px;line-height:16px;color:#fff;margin:0;background-color:#df2a4a;border-radius:100%;width:16px;height:16px;position:absolute;top:-8px;left:50%;margin-left:-8px}.simpay-branding-bar .wp-heading-inline{font-size:23px;font-weight:400;margin:0}.simpay-branding-bar .page-title-action{font-weight:600;font-size:13px;line-height:normal;cursor:pointer;text-shadow:none;text-decoration:none;margin-left:10px;padding:4px 8px;border:1px solid currentColor;border-radius:2px;background:#f6f7f7}.simpay-landing-zone{text-align:center;max-width:700px;margin:40px auto}.simpay-landing-zone__title{font-size:26px;font-weight:600;margin:0 0 1.5rem;padding:0}.simpay-landing-zone__subtitle{font-size:17px;color:#666;margin:.25rem 0}.simpay-landing-zone__subtitle strong{color:#444}.simpay-landing-zone section{margin:2rem 0}.simpay-landing-zone__empty-state-graphic img{width:425px}.simpay-landing-zone__screenshot>*{vertical-align:middle}.simpay-landing-zone__screenshot-img{display:inline-block;position:relative;width:315px;padding:5px;background-color:#fff;box-shadow:0px 2px 5px 0px rgba(0,0,0,.05);border-radius:3px}.simpay-landing-zone__screenshot-img img{max-width:100%;display:block}.simpay-landing-zone__screenshot-img .hover{position:absolute;opacity:0;height:calc(100% - 10px);width:calc(100% - 10px);top:0;left:0;border:5px solid #fff;background-color:rgba(0,0,0,.15);background-image:url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwYXRoIGQ9Ik01MCAwYzI3LjYxNCAwIDUwIDIyLjM4NiA1MCA1MHMtMjIuMzg2IDUwLTUwIDUwUzAgNzcuNjE0IDAgNTAgMjIuMzg2IDAgNTAgMHoiIGZpbGw9IiMxNjg1YjciLz48cGF0aCBkPSJNNzMuMDIzIDY3LjA2N2wtOS4zNDQtOS4zNDRhMi4yNDcgMi4yNDcgMCAwMC0xLjU5My0uNjU2aC0xLjUyOGExOS4zOTkgMTkuMzk5IDAgMDA0LjEyNC0xMS45OTZjMC0xMC43Ny04LjcyNS0xOS40OTUtMTkuNDk0LTE5LjQ5NS0xMC43NjggMC0xOS40OTQgOC43MjYtMTkuNDk0IDE5LjQ5NSAwIDEwLjc2OCA4LjcyNiAxOS40OTMgMTkuNDk0IDE5LjQ5M2ExOS40IDE5LjQgMCAwMDExLjk5Ny00LjEyM3YxLjUyN2MwIC42LjIzNCAxLjE3Mi42NTUgMS41OTRsOS4zNDQgOS4zNDRhMi4yNCAyLjI0IDAgMDAzLjE3OCAwbDIuNjUyLTIuNjUzYTIuMjYgMi4yNiAwIDAwLjAxLTMuMTg2em0tMjcuODM1LTEwYy02LjYyNiAwLTExLjk5Ni01LjM2MS0xMS45OTYtMTEuOTk2IDAtNi42MjcgNS4zNi0xMS45OTcgMTEuOTk2LTExLjk5NyA2LjYyNiAwIDExLjk5NyA1LjM2MSAxMS45OTcgMTEuOTk3IDAgNi42MjYtNS4zNjEgMTEuOTk2LTExLjk5NyAxMS45OTZ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center;background-size:50px;transition:all .3s}.simpay-landing-zone__screenshot-img:hover .hover{opacity:1;transition:all .3s}.simpay-landing-zone__screenshot ul{text-align:left;display:inline-block;margin:0 0 0 30px;list-style-type:none;max-width:calc(100% - 350px)}@media screen and (max-width: 782px){.simpay-landing-zone__screenshot ul{text-align:center;margin:30px auto;max-width:100%;display:block}}.simpay-landing-zone__screenshot li{margin:16px 0;padding:0;font-size:15px;color:#777;position:relative}.simpay-landing-zone__screenshot li:before{content:"";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:center;background-repeat:no-repeat;background-size:14px;width:14px;height:14px;display:inline-block;margin:-3px 5px 0 0;vertical-align:middle}.simpay-landing-zone .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-landing-zone__purchased{display:block;margin:15px 0 0}.simpay-upgrade-modal{padding:0 !important}.simpay-upgrade-modal *{box-sizing:border-box}.simpay-upgrade-modal__content{text-align:center;display:flex;flex-direction:column;align-items:center;padding:16px 32px 32px}.simpay-upgrade-modal__content>.dashicons{color:#333;font-size:48px;width:48px;height:48px}.simpay-upgrade-modal__title{font-size:22px;line-height:1.5;display:block;margin:12px 0 0}.simpay-upgrade-modal__description{color:#777;font-size:16px;margin:16px 0 24px}.simpay-upgrade-modal__description strong{color:#333}.simpay-upgrade-modal__discount{font-size:15px;text-align:center;margin:32px -32px -32px;padding:24px 40px;background-color:#fcf9e8;position:relative}.simpay-upgrade-modal__discount svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;width:32px;height:32px;position:absolute;top:-16px;left:50%;margin-left:-16px}.simpay-upgrade-modal__discount u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-modal .button-large{font-size:16px;font-weight:bold;margin:0 0 15px;padding:8px 30px !important;height:auto}.simpay-teaser-float{margin:50px;position:relative}.simpay-teaser-float__card{text-align:center;padding:30px;background:#fff;border-radius:4px;box-shadow:0 0 30px 15px rgba(0,0,0,.18);position:relative;z-index:2}#poststuff .simpay-teaser-float h2,.simpay-teaser-float h2{font-size:24px;font-weight:600;margin:0;padding:0}.simpay-teaser-float p{font-size:15px;line-height:1.35;color:#666}.simpay-teaser-float p strong{color:#444}.simpay-teaser-float ul{text-align:left;display:inline-block;margin:-10px 0 20px;list-style-type:none}.simpay-teaser-float li{margin:16px 0;padding:0 0 0 24px;font-size:15px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:left 3px;background-repeat:no-repeat;background-size:14px;color:#777}.simpay-teaser-float .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-teaser-float .simpay-notice-dismiss{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simpay-teaser-float .simpay-notice-dismiss:hover,.simpay-teaser-float .simpay-notice-dismiss:active,.simpay-teaser-float .simpay-notice-dismiss:focus{color:#666;text-decoration:none}.simpay-teaser-float:after,.simpay-teaser-float:before{opacity:.75;z-index:0;content:"";position:absolute;left:-30px;right:-30px;top:-35px;width:calc(100% + 60px);height:170px;background-image:linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee),linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee);background-repeat:no-repeat;background-size:100% 20px,100% 40px,100% 20px,100% 40px;background-position:0 0,0 30px,0 100px,0 130px}.simpay-teaser-float:before{top:170px}.simpay-teaser-float .simpay-upgrade-btn-subtext{margin:24px -30px -30px;padding:32px 40px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;border:0}.simpay-teaser-float .simpay-upgrade-btn-subtext svg{border-color:#fff}.simpay-teaser-float--inline{margin:40px 30px 30px}.simpay-teaser-float--inline .simpay-teaser-float__card{padding:30px;box-shadow:0 0 12px 6px rgba(0,0,0,.16)}#poststuff .simpay-teaser-float--inline h2,.simpay-teaser-float--inline h2{font-size:20px}.simpay-teaser-float--inline p{font-size:15px;margin:.75rem 0}.simpay-teaser-float--inline .button.button-large{font-size:15px;line-height:24px;margin:1rem 0;padding:8px 14px;display:inline-block}.simpay-teaser-float--inline:before,.simpay-teaser-float--inline:after{opacity:.6}.simpay-teaser-float--inline:before{display:none}.simpay-teaser-float--inline:after{top:15px}.simpay-form-settings-notice{color:#1d2327;position:relative;margin:18px 18px 0;padding:14px;border-radius:4px;background:#f5f5ff}.simpay-form-settings-notice a{color:#635aff}.simpay-form-settings-notice .simpay-external-link .dashicons-external{margin:1px 0 0 2px}.simpay-form-settings-notice strong{font-size:14px}.simpay-form-settings-notice p{margin:5px 0 0 23px}.simpay-form-settings-notice .simpay-notice-dismiss{font-size:20px;color:#b0b0f0;font-weight:bold;line-height:1;position:absolute;top:0;right:5px;text-decoration:none;padding:0 5px;z-index:2}.simpay-form-settings-notice .simpay-notice-dismiss:hover,.simpay-form-settings-notice .simpay-notice-dismiss:active,.simpay-form-settings-notice .simpay-notice-dismiss:focus{color:#9191ef;text-decoration:none;background:none}.post-type-simple-pay .lity{z-index:999999999;padding:20px}.post-type-simple-pay .lity-close{margin:10px}.post-type-simple-pay .lity-content{max-width:80vw;max-height:80vh}.post-type-simple-pay .lity-content img{max-height:80vh !important;max-width:80vw !important}#wpsp-api-keys-row-hide{display:none}.post-type-simple-pay #post-preview:not(.simpay-preview-button){display:none}.simpay-license-field-wrapper{margin:20px 0}#simpay-settings-license-key-license-key{margin:0}#simpay-settings-license-key-license-key[readonly]{background:#fff}.simpay-license-message__loading,.simpay-license-field{display:flex;align-items:center}.wp-core-ui .button.simpay-license-button.button-primary,.wp-core-ui .button.simpay-license-button.button-secondary{font-size:1rem;line-height:1;margin:0 8px;padding:13px}.simpay-license-message{font-size:15px;margin-top:8px}.simpay-license-message--valid{color:green}.simpay-license-message--invalid{color:#cc1818} +.simpay-settings-subsections{display:flex;align-items:center;box-shadow:inset 0 -1px 0 0 #ccc}.simpay-settings-subsections__subsection{font-weight:500;text-decoration:none;padding:15px;display:flex;align-items:center}.simpay-settings-subsections__subsection .dashicons{width:18px;height:18px;font-size:18px;margin-right:4px}.simpay-settings-subsections__subsection.is-active{box-shadow:inset 0 -4px 0 0 currentColor;position:relative;z-index:1}.simpay-settings-subsections__subsection:not(.is-active){color:#23282d}.simpay-settings form>h2:not(.nav-tab-wrapper){clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.simpay-settings .form-table td fieldset+p,.simpay-settings .form-table td label+p,.simpay-settings .form-table td select+p,.simpay-settings .form-table td input+p{color:#666;font-style:italic}.simpay-settings .simpay-settings-subsections__subsection{display:flex;align-items:center}.simpay-settings .simpay-settings-subsections__subsection .simpay-settings-bubble{margin-left:5px}.button.button-large.simpay-button-large{font-size:14px;line-height:30px;padding:4px 12px}.simpay-copy-hidden-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.fixed .column-livemode{width:15%;text-align:right}@media screen and (max-width: 782px){.fixed .column-livemode{text-align:left}}.fixed .column-livemode .simpay-badge{margin-top:3px}.fixed .column-shortcode{width:25%}.fixed .column-shortcode .simpay-shortcode{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.post-type-simple-pay .misc-pub-curtime,.post-type-simple-pay .misc-pub-visibility{display:none}.simpay-metabox-title{border:1px solid #eee}.simpay-shortcode-section{border-top:1px solid #ddd;border-width:1px 0;padding-top:15px;padding-bottom:15px;position:relative}.simpay-shortcode-section label{display:block;margin-bottom:6px}.simpay-shortcode-section label .dashicons{color:#8c8f94;margin-right:3px}.simpay-shortcode-section .simpay-copy-button{line-height:normal;position:absolute;right:20px;bottom:20px;border:0;background:none;box-shadow:none;padding:0}.simpay-shortcode-section .simpay-copy-button:hover{border:0;background:none;box-shadow:none}.simpay-shortcode-section .simpay-copy-button .dashicons{color:#3c434a}.simpay-shortcode{width:100%;padding:8px;line-height:1;margin:0;height:32px;resize:none}.simpay-badge{color:#3f3f46;text-align:center;line-height:1;padding:5px 7px;border-radius:3px;background:#e4e4e7;border:0;box-shadow:none;display:inline-flex;align-items:center}button.simpay-badge{cursor:pointer}button.simpay-badge:hover{background:#d4d4d8}.simpay-badge__icon{opacity:.8;margin:2px 5px 0 0}.simpay-badge--green{color:#0e6245;background:#cbf4c9}.simpay-badge--yellow{color:#983705;background:#f8e5b9}.simpay-stripe-account-info{display:flex;align-items:center;margin-bottom:8px}.simpay-stripe-account-info .spinner{float:none;margin-top:0;margin-left:0}.simple-pay_page_simpay_settings .simpay-settings-upgrade,.post-type-simple-pay .simpay-settings-upgrade{margin-top:20px;padding:1px;position:relative;background:#fff;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.1);max-width:677px}.simple-pay_page_simpay_settings .simpay-settings-upgrade__inner,.post-type-simple-pay .simpay-settings-upgrade__inner{text-align:center;margin:0;padding:30px}.simple-pay_page_simpay_settings .simpay-settings-upgrade h3,.post-type-simple-pay .simpay-settings-upgrade h3{line-height:1.5;font-size:22px;margin:0 0 1.5rem}.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin:1.5rem 0 calc(1.5rem - 6px);display:flex;flex-wrap:wrap;justify-content:center}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin-left:4rem;margin-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{font-size:15px;margin:6px 0;width:100%}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a,.post-type-simple-pay .simpay-settings-upgrade li a{color:#3c434a;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a:hover,.post-type-simple-pay .simpay-settings-upgrade li a:hover{color:var(--wp-admin-theme-color);text-decoration:underline}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{text-align:left;width:50%}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button.button-large,.post-type-simple-pay .simpay-settings-upgrade .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simple-pay_page_simpay_settings .simpay-settings-upgrade small,.post-type-simple-pay .simpay-settings-upgrade small{color:#666;margin:15px 0 0;display:block}.simple-pay_page_simpay_settings .simpay-settings-upgrade .dashicons-yes,.post-type-simple-pay .simpay-settings-upgrade .dashicons-yes{color:#428bca}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link,.post-type-simple-pay .simpay-settings-upgrade .button-link{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:hover,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:active,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:focus,.post-type-simple-pay .simpay-settings-upgrade .button-link:hover,.post-type-simple-pay .simpay-settings-upgrade .button-link:active,.post-type-simple-pay .simpay-settings-upgrade .button-link:focus{color:#666;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{text-align:center;margin:0;padding:30px 20px 20px;background-color:#fcf9e8;border:1px solid #edeac9;border-width:1px 0 0;position:relative;border-radius:0;border-bottom-left-radius:4px;border-bottom-right-radius:4px}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{padding-left:4rem;padding-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;box-shadow:0 0 0 1px #edeac9;width:28px;height:28px;position:absolute;top:-18px;left:50%;margin-left:-18px}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext u,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext a,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext a{font-weight:normal;display:inline-block}#simpay-payment-form-settings table{width:100%;border-collapse:collapse}#simpay-payment-form-settings ::-webkit-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings ::-moz-placeholder{color:#9ba1a9;opacity:1}#simpay-payment-form-settings :-ms-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings .inside{margin:0;padding:0}#simpay-payment-form-settings .simpay-panel-field .toolbar{margin-bottom:-4px}#simpay-payment-form-settings .simpay-panel-field .toolbar .simpay-field-select{margin:0 0 4px;width:auto;max-width:70%}#simpay-payment-form-settings .simpay-tabs{margin:0;padding:0;list-style:none;background:#fafafa;border-right:1px solid #ccd0d4;line-height:1em;position:relative;flex:0 0 25%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs{flex-basis:100%;flex-grow:1;border-right:0}}#simpay-payment-form-settings .simpay-tabs li{margin:0;padding:0}#simpay-payment-form-settings .simpay-tabs li:first-child{margin-top:-1px}#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:20px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:0}}#simpay-payment-form-settings .simpay-tabs li.active{margin-left:-1px;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-tabs li.active:focus:after{display:none}#simpay-payment-form-settings .simpay-tabs li.active:before,#simpay-payment-form-settings .simpay-tabs li.active:after{content:"";width:calc(100% + 1px);height:1px;background:#ccd0d4;position:absolute;top:0;left:0;right:0;z-index:2}#simpay-payment-form-settings .simpay-tabs li.active:after{top:auto;bottom:0}#simpay-payment-form-settings .simpay-tabs li.active a{font-weight:bold;background-color:#fff;position:relative;margin-right:-1px}#simpay-payment-form-settings .simpay-tabs li.active a:before{content:"";position:absolute;top:0;left:0;bottom:0;width:4px;height:100%;background:currentColor;z-index:3}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li.active a{margin-right:0}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{display:flex;align-items:center;line-height:20px;margin:0;padding:10px 10px 10px 14px;text-decoration:none;transition:all .05s ease-in-out}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item svg,#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item .dashicons{margin-right:6px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{padding:18px}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item:focus{outline:0;position:relative;z-index:3;box-shadow:inset 0 0 0 2px currentColor}#simpay-payment-form-settings .simpay-tabs li:not(.active) .simpay-tab-item{color:inherit}#simpay-payment-form-settings .simpay-panels-wrap{background:#fff;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels-wrap{flex-direction:column}}#simpay-payment-form-settings .simpay-panels{flex:0 0 75%;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels{flex-basis:100%}}#simpay-payment-form-settings .simpay-panel,#simpay-payment-form-settings .simpay-panel-section{width:100%}#simpay-payment-form-settings .simpay-panel>table,#simpay-payment-form-settings .simpay-panel>table>tr,#simpay-payment-form-settings .simpay-panel>table>tbody,#simpay-payment-form-settings .simpay-panel>table>tbody>tr,#simpay-payment-form-settings .simpay-panel>table>thead,#simpay-payment-form-settings .simpay-panel>table>thead>tr{display:block;width:100%}#simpay-payment-form-settings .simpay-panel>table:last-child>tbody:last-child>tr:last-child>td{border-bottom:0}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade{position:relative}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div{margin-right:80px}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div .button-small{position:absolute;top:calc(50% - 13px);right:18px}#simpay-payment-form-settings .simpay-panel-field,#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{text-align:left;display:block}#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{width:calc(100% - 36px);margin-left:18px;margin-right:18px}#simpay-payment-form-settings .simpay-panel-field th{font-weight:bold;padding-top:18px;padding-bottom:5px}#simpay-payment-form-settings .simpay-panel-field td{border-bottom:1px solid #ddd;padding-bottom:18px}#simpay-payment-form-settings .simpay-panel-field p.description{margin-top:4px}#simpay-payment-form-settings .simpay-panel-field p.description:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested{margin-top:18px}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested label{font-weight:bold;display:block;margin-bottom:4px}#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:75%;max-width:100%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:0;width:100%}}#simpay-payment-form-settings .simpay-panel-field .simpay-field-textarea{width:100%;max-width:100%}#simpay-payment-form-settings .simpay-panel-field .notice:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .error,#simpay-payment-form-settings .simpay-panel-field .simpay-important{color:#a94442;font-weight:normal}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap{position:relative;margin-top:12px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview{position:absolute;top:-15px;left:-15px;cursor:pointer;background-color:#fff}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview::before{font-size:22px;line-height:26px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-image-preview{max-height:128px;max-width:128px;border:1px solid #ddd}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box{background-color:#f4f4f4;border:1px solid #e5e5e5;padding:18px;margin-top:18px;position:relative}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss{color:inherit;text-decoration:none;position:absolute;top:8px;right:8px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss .dashicons-dismiss{font-size:16px;width:16px;height:16px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box h3{font-size:18px;font-weight:600;margin:0;padding:0}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p{font-size:14px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p:last-child{margin-bottom:0}#simpay-payment-form-settings .simpay-metabox-content{margin-bottom:-1px;background-color:#f5f5f5;border:1px solid #c3c4c7;border-width:1px 0;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-show-if,#simpay-payment-form-settings .simpay-panel-hidden{display:none}#simpay-payment-form-settings .simpay-payment-methods{border:1px solid #ccd0d4;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04)}#simpay-payment-form-settings .simpay-panel-field-payment-method{display:block;border-top:1px solid #ccd0d4;padding:7px;box-sizing:border-box}#simpay-payment-form-settings .simpay-panel-field-payment-method:first-child{border-top:0;border-top-left-radius:4px;border-top-right-radius:4px}#simpay-payment-form-settings .simpay-panel-field-payment-method input[type=checkbox]{margin-top:0;margin-right:8px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help{color:#666;text-decoration:none;margin-right:5px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help .dashicons{font-size:18px;width:18px;height:18px}#simpay-payment-form-settings .simpay-panel-field-payment-method__restrictions,#simpay-payment-form-settings .simpay-panel-field-payment-method__restrictions-ach{margin-left:72px}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon{border-radius:3px;overflow:hidden;margin:0 8px 0 5px;width:30px;height:30px;flex-shrink:0}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon svg{width:30px;height:30px}#simpay-global-settings .sortable-placeholder,#simpay-form-settings .sortable-placeholder{margin:5px;display:block;min-height:36px}#simpay-global-settings .chosen-container,#simpay-form-settings .chosen-container{min-width:20em;max-width:30em}#simpay-global-settings .simpay-field.simpay-small-text,#simpay-form-settings .simpay-field.simpay-small-text{width:7em}#simpay-global-settings .simpay-field.simpay-medium-text,#simpay-form-settings .simpay-field.simpay-medium-text{width:15em}#simpay-global-settings .simpay-field-radios ul,#simpay-form-settings .simpay-field-radios ul{margin:0}#simpay-global-settings .simpay-field-radios>i,#simpay-form-settings .simpay-field-radios>i{margin-left:5px;vertical-align:middle}#simpay-global-settings ul.simpay-field-radios-inline,#simpay-form-settings ul.simpay-field-radios-inline{margin:0 0 -10px}#simpay-global-settings ul.simpay-field-radios-inline li,#simpay-form-settings ul.simpay-field-radios-inline li{display:inline-block;margin:0 10px 10px 0}#simpay-global-settings ul.simpay-field-radios-inline li:last-child,#simpay-form-settings ul.simpay-field-radios-inline li:last-child{margin-right:0}#simpay-global-settings .simpay-currency-field,#simpay-form-settings .simpay-currency-field{display:flex;align-items:center}>#simpay-global-settings .simpay-currency-field:focus,>#simpay-form-settings .simpay-currency-field:focus{position:relative;z-index:5}#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{line-height:38px}}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}#simpay-global-settings div.simpay-currency-symbol,#simpay-form-settings div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}#simpay-global-settings select.simpay-currency-symbol,#simpay-form-settings select.simpay-currency-symbol{padding-right:25px}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-width:1px 0 1px 1px}#simpay-global-settings .simpay-currency-symbol-left+.simpay-field-amount,#simpay-form-settings .simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-width:1px 1px 1px 0}#simpay-global-settings .simpay-field-amount,#simpay-form-settings .simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-error,#simpay-form-settings .simpay-error{color:red}#simpay-global-settings .simpay-docs-link-wrap,#simpay-form-settings .simpay-docs-link-wrap{position:absolute;right:0;bottom:0;color:#666;font-size:13px;font-style:italic;padding:15px 18px}#simpay-global-settings .simpay-docs-link-wrap a .dashicons-editor-help,#simpay-form-settings .simpay-docs-link-wrap a .dashicons-editor-help{color:#666;text-decoration:none;width:17px;height:17px;font-size:17px;padding-left:4px}#simpay-global-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon{color:#666}#simpay-global-settings .simpay-docs-icon,#simpay-global-settings .simpay-docs-icon .dashicons-editor-help,#simpay-form-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon .dashicons-editor-help{text-decoration:none;width:17px;height:17px;font-size:17px}.button.button-primary.simpay-upgrade-btn{background-color:#428bca;border:1px solid #428bca;color:#fff;display:inline-block}.button.button-primary.simpay-upgrade-btn:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2d6ca2}.button.button-primary.simpay-upgrade-btn:hover{background-color:#037ad0;border:1px solid #428bca}.simpay-upgrade-btn-subtext{color:#3c434a;font-size:14px;line-height:1.5;text-align:center;margin:40px 0 0;padding:30px 35px 20px;background-color:#fcf9e8;border:3px solid #ebe29a;border-radius:4px;position:relative}.simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:3px solid #ebe29a;width:28px;height:28px;position:absolute;top:-14px;left:50%;margin-left:-14px}.simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-btn-subtext a{text-decoration:none;display:block;margin-top:6px;font-weight:bold}.post-type-simple-pay #post-body-content{display:none}.simpay-card{margin:0 0 20px;padding:30px;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-card,.simpay-card p{line-height:1.5;font-size:16px}.simpay-card h3{line-height:1.6;font-size:18px;margin:0 0 20px;color:#23282c}.simpay-card p{margin:0 0 20px}.simpay-card p:last-child,.simpay-card ul:last-child{margin-bottom:0}.simpay-card figure{float:right;margin:0 0 30px 30px;max-width:400px}.simpay-card figure iframe,.simpay-card figure img{max-width:100%}.simpay-card figure figcaption{text-align:center}@media screen and (max-width: 782px){.simpay-card figure{margin:0 0 30px;max-width:100%;float:none}}.simpay-doc-suggestions{width:100%;display:flex;flex-wrap:wrap;padding:0}.simpay-doc-suggestion{text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:0 1 33.333%;padding:30px;border-right:1px solid #c3c4c7;box-sizing:border-box}.simpay-doc-suggestion:nth-child(3n){border-right:0}@media screen and (max-width: 782px){.simpay-doc-suggestion{flex:0 1 100%;border-bottom:1px solid #c3c4c7;border-right:0}.simpay-doc-suggestion:last-child{border-bottom:0}}.simpay-doc-suggestion h3{font-size:20px;margin-bottom:10px}.simpay-doc-suggestion p{font-size:15px}.simpay-doc-suggestion .dashicons{font-size:40px;width:40px;height:40px;display:block;margin-bottom:10px}.simpay-doc-suggestion .button-large{font-size:16px}.simpay-addons{display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.simpay-addon{background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;display:flex;flex-direction:column;flex-basis:calc(33% - 10px);box-sizing:border-box}@media screen and (max-width: 782px){.simpay-addon{flex-basis:100%}}.simpay-addon img{float:left;max-width:75px}.simpay-addon h5{margin:0 0 10px 100px;font-size:16px}.simpay-addon__details{padding:20px;flex:1 0 auto}.simpay-addon__actions{display:flex;align-items:center;justify-content:space-between;flex:0 1 auto;background-color:#f7f7f7;border-top:1px solid #ddd;margin-top:auto;padding:20px;position:relative}.simpay-addon__actions .msg{text-align:center;justify-content:center;display:flex;align-items:center;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#f7f7f7;z-index:3}.simpay-addon .error,.simpay-addon .status-label.status-installed{color:#d63638}.simpay-addon .success,.simpay-addon .status-label.status-active{color:#00a32a}.simpay-addon .addon-desc{margin:0 0 0 100px}.form-table td .simpay-stripe-connect-help{margin:15px 0;display:flex;align-items:center}.form-table td .simpay-stripe-connect-help .dashicons{margin-right:4px}.simpay-currency-field{display:flex;align-items:center}>.simpay-currency-field:focus{position:relative;z-index:5}.simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){.simpay-currency-symbol{line-height:38px}}.simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}select.simpay-currency-symbol{padding-right:25px}.simpay-currency-symbol-left{border-width:1px 0 1px 1px}.simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}.simpay-currency-symbol-right{border-width:1px 1px 1px 0}.simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.post-new-php.post-type-simple-pay #screen-meta-links,.post-php.post-type-simple-pay #screen-meta-links,.edit-php.post-type-simple-pay #screen-meta-links{display:none}.simpay-branding-bar{margin-left:-20px;padding:14px 20px 14px 22px;background:#fff;border-bottom:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-branding-bar__title{display:flex;align-items:center;float:left;margin:8px 0}.simpay-branding-bar__logo{width:200px}.simpay-branding-bar__divider{color:#dadbdf;font-size:23px;font-weight:400;margin:0 15px}.simpay-branding-bar__actions{float:right;margin-top:4px;display:flex;align-items:center}.simpay-branding-bar__actions>div{margin-left:10px;min-width:40px}.simpay-branding-bar__actions-button{color:#000;cursor:pointer;padding:10px;width:40px;height:40px;background-color:#f3f4f5;border-radius:50%;border:0;box-shadow:none;position:relative;transition:background-color .2s ease;box-sizing:border-box;display:block}.simpay-branding-bar__actions-button:hover{background-color:#e5e5e5}.simpay-branding-bar__actions-button:active,.simpay-branding-bar__actions-button:focus{box-shadow:0 0 0 2px var(--wp-admin-theme-color)}.simpay-branding-bar__actions-button-count{font-weight:600;font-size:10px;line-height:16px;color:#fff;margin:0;background-color:#df2a4a;border-radius:100%;width:16px;height:16px;position:absolute;top:-8px;left:50%;margin-left:-8px}.simpay-branding-bar .wp-heading-inline{font-size:23px;font-weight:400;margin:0}.simpay-branding-bar .page-title-action{font-weight:600;font-size:13px;line-height:normal;cursor:pointer;text-shadow:none;text-decoration:none;margin-left:10px;padding:4px 8px;border:1px solid currentColor;border-radius:2px;background:#f6f7f7}.simpay-landing-zone{text-align:center;max-width:700px;margin:40px auto}.simpay-landing-zone__title{font-size:26px;font-weight:600;margin:0 0 1.5rem;padding:0}.simpay-landing-zone__subtitle{font-size:17px;color:#666;margin:.25rem 0}.simpay-landing-zone__subtitle strong{color:#444}.simpay-landing-zone section{margin:2rem 0}.simpay-landing-zone__empty-state-graphic img{width:425px}.simpay-landing-zone__screenshot>*{vertical-align:middle}.simpay-landing-zone__screenshot-img{display:inline-block;position:relative;width:315px;padding:5px;background-color:#fff;box-shadow:0px 2px 5px 0px rgba(0,0,0,.05);border-radius:3px}.simpay-landing-zone__screenshot-img img{max-width:100%;display:block}.simpay-landing-zone__screenshot-img .hover{position:absolute;opacity:0;height:calc(100% - 10px);width:calc(100% - 10px);top:0;left:0;border:5px solid #fff;background-color:rgba(0,0,0,.15);background-image:url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwYXRoIGQ9Ik01MCAwYzI3LjYxNCAwIDUwIDIyLjM4NiA1MCA1MHMtMjIuMzg2IDUwLTUwIDUwUzAgNzcuNjE0IDAgNTAgMjIuMzg2IDAgNTAgMHoiIGZpbGw9IiMxNjg1YjciLz48cGF0aCBkPSJNNzMuMDIzIDY3LjA2N2wtOS4zNDQtOS4zNDRhMi4yNDcgMi4yNDcgMCAwMC0xLjU5My0uNjU2aC0xLjUyOGExOS4zOTkgMTkuMzk5IDAgMDA0LjEyNC0xMS45OTZjMC0xMC43Ny04LjcyNS0xOS40OTUtMTkuNDk0LTE5LjQ5NS0xMC43NjggMC0xOS40OTQgOC43MjYtMTkuNDk0IDE5LjQ5NSAwIDEwLjc2OCA4LjcyNiAxOS40OTMgMTkuNDk0IDE5LjQ5M2ExOS40IDE5LjQgMCAwMDExLjk5Ny00LjEyM3YxLjUyN2MwIC42LjIzNCAxLjE3Mi42NTUgMS41OTRsOS4zNDQgOS4zNDRhMi4yNCAyLjI0IDAgMDAzLjE3OCAwbDIuNjUyLTIuNjUzYTIuMjYgMi4yNiAwIDAwLjAxLTMuMTg2em0tMjcuODM1LTEwYy02LjYyNiAwLTExLjk5Ni01LjM2MS0xMS45OTYtMTEuOTk2IDAtNi42MjcgNS4zNi0xMS45OTcgMTEuOTk2LTExLjk5NyA2LjYyNiAwIDExLjk5NyA1LjM2MSAxMS45OTcgMTEuOTk3IDAgNi42MjYtNS4zNjEgMTEuOTk2LTExLjk5NyAxMS45OTZ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center;background-size:50px;transition:all .3s}.simpay-landing-zone__screenshot-img:hover .hover{opacity:1;transition:all .3s}.simpay-landing-zone__screenshot ul{text-align:left;display:inline-block;margin:0 0 0 30px;list-style-type:none;max-width:calc(100% - 350px)}@media screen and (max-width: 782px){.simpay-landing-zone__screenshot ul{text-align:center;margin:30px auto;max-width:100%;display:block}}.simpay-landing-zone__screenshot li{margin:16px 0;padding:0;font-size:15px;color:#777;position:relative}.simpay-landing-zone__screenshot li:before{content:"";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:center;background-repeat:no-repeat;background-size:14px;width:14px;height:14px;display:inline-block;margin:-3px 5px 0 0;vertical-align:middle}.simpay-landing-zone .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-landing-zone__purchased{display:block;margin:15px 0 0}.simpay-upgrade-modal{padding:0 !important}.simpay-upgrade-modal *{box-sizing:border-box}.simpay-upgrade-modal__content{text-align:center;display:flex;flex-direction:column;align-items:center;padding:16px 32px 32px}.simpay-upgrade-modal__content>.dashicons{color:#333;font-size:48px;width:48px;height:48px}.simpay-upgrade-modal__title{font-size:22px;line-height:1.5;display:block;margin:12px 0 0}.simpay-upgrade-modal__description{color:#777;font-size:16px;margin:16px 0 24px}.simpay-upgrade-modal__description strong{color:#333}.simpay-upgrade-modal__discount{font-size:15px;text-align:center;margin:32px -32px -32px;padding:24px 40px;background-color:#fcf9e8;position:relative}.simpay-upgrade-modal__discount svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;width:32px;height:32px;position:absolute;top:-16px;left:50%;margin-left:-16px}.simpay-upgrade-modal__discount u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-modal .button-large{font-size:16px;font-weight:bold;margin:0 0 15px;padding:8px 30px !important;height:auto}.simpay-teaser-float{margin:50px;position:relative}.simpay-teaser-float__card{text-align:center;padding:30px;background:#fff;border-radius:4px;box-shadow:0 0 30px 15px rgba(0,0,0,.18);position:relative;z-index:2}#poststuff .simpay-teaser-float h2,.simpay-teaser-float h2{font-size:24px;font-weight:600;margin:0;padding:0}.simpay-teaser-float p{font-size:15px;line-height:1.35;color:#666}.simpay-teaser-float p strong{color:#444}.simpay-teaser-float ul{text-align:left;display:inline-block;margin:-10px 0 20px;list-style-type:none}.simpay-teaser-float li{margin:16px 0;padding:0 0 0 24px;font-size:15px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:left 3px;background-repeat:no-repeat;background-size:14px;color:#777}.simpay-teaser-float .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-teaser-float .simpay-notice-dismiss{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simpay-teaser-float .simpay-notice-dismiss:hover,.simpay-teaser-float .simpay-notice-dismiss:active,.simpay-teaser-float .simpay-notice-dismiss:focus{color:#666;text-decoration:none}.simpay-teaser-float:after,.simpay-teaser-float:before{opacity:.75;z-index:0;content:"";position:absolute;left:-30px;right:-30px;top:-35px;width:calc(100% + 60px);height:170px;background-image:linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee),linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee);background-repeat:no-repeat;background-size:100% 20px,100% 40px,100% 20px,100% 40px;background-position:0 0,0 30px,0 100px,0 130px}.simpay-teaser-float:before{top:170px}.simpay-teaser-float .simpay-upgrade-btn-subtext{margin:24px -30px -30px;padding:32px 40px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;border:0}.simpay-teaser-float .simpay-upgrade-btn-subtext svg{border-color:#fff}.simpay-teaser-float--inline{margin:40px 30px 30px}.simpay-teaser-float--inline .simpay-teaser-float__card{padding:30px;box-shadow:0 0 12px 6px rgba(0,0,0,.16)}#poststuff .simpay-teaser-float--inline h2,.simpay-teaser-float--inline h2{font-size:20px}.simpay-teaser-float--inline p{font-size:15px;margin:.75rem 0}.simpay-teaser-float--inline .button.button-large{font-size:15px;line-height:24px;margin:1rem 0;padding:8px 14px;display:inline-block}.simpay-teaser-float--inline:before,.simpay-teaser-float--inline:after{opacity:.6}.simpay-teaser-float--inline:before{display:none}.simpay-teaser-float--inline:after{top:15px}.simpay-form-settings-notice{font-weight:normal;color:#1d2327;position:relative;margin:18px 18px 0;padding:14px;border-radius:4px;background:#f5f5ff}.simpay-form-settings-notice a{color:#635aff}.simpay-form-settings-notice .simpay-external-link .dashicons-external{margin:1px 0 0 2px}.simpay-form-settings-notice strong{font-size:14px}.simpay-form-settings-notice p{margin:5px 0 0 23px}.simpay-form-settings-notice .simpay-notice-dismiss{font-size:20px;color:#b0b0f0;font-weight:bold;line-height:1;position:absolute;top:0;right:5px;text-decoration:none;padding:0 5px;z-index:2}.simpay-form-settings-notice .simpay-notice-dismiss:hover,.simpay-form-settings-notice .simpay-notice-dismiss:active,.simpay-form-settings-notice .simpay-notice-dismiss:focus{color:#9191ef;text-decoration:none;background:none}.simpay-settings .simpay-form-settings-notice{border:2px solid #645aff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.post-type-simple-pay .lity{z-index:999999999;padding:20px}.post-type-simple-pay .lity-close{margin:10px}.post-type-simple-pay .lity-content{max-width:80vw;max-height:80vh}.post-type-simple-pay .lity-content img{max-height:80vh !important;max-width:80vw !important}#wpsp-api-keys-row-hide{display:none}.post-type-simple-pay #post-preview:not(.simpay-preview-button){display:none}.simpay-license-field-wrapper{margin:20px 0}#simpay-settings-license-key-license-key{margin:0}#simpay-settings-license-key-license-key[readonly]{background:#fff}.simpay-license-message__loading,.simpay-license-field{display:flex;align-items:center}.wp-core-ui .button.simpay-license-button.button-primary,.wp-core-ui .button.simpay-license-button.button-secondary{font-size:1rem;line-height:1;margin:0 8px;padding:13px}.simpay-license-message{font-size:15px;margin-top:8px}.simpay-license-message--valid{color:green}.simpay-license-message--invalid{color:#cc1818} /*# sourceMappingURL=simpay-admin.min.css.map*/ \ No newline at end of file diff --git a/includes/core/assets/css/simpay-admin.min.css.map b/includes/core/assets/css/simpay-admin.min.css.map index 8b7b7ece..3ee2149a 100644 --- a/includes/core/assets/css/simpay-admin.min.css.map +++ b/includes/core/assets/css/simpay-admin.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./css/admin/admin.scss"],"names":[],"mappings":"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","file":"./../css/simpay-admin.min.css","sourcesContent":[".simpay-settings-subsections{display:flex;align-items:center;box-shadow:inset 0 -1px 0 0 #ccc}.simpay-settings-subsections__subsection{font-weight:500;text-decoration:none;padding:15px;display:flex;align-items:center}.simpay-settings-subsections__subsection .dashicons{width:18px;height:18px;font-size:18px;margin-right:4px}.simpay-settings-subsections__subsection.is-active{box-shadow:inset 0 -4px 0 0 currentColor;position:relative;z-index:1}.simpay-settings-subsections__subsection:not(.is-active){color:#23282d}.simpay-settings form>h2:not(.nav-tab-wrapper){clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.simpay-settings .form-table td fieldset+p,.simpay-settings .form-table td label+p,.simpay-settings .form-table td select+p,.simpay-settings .form-table td input+p{color:#666;font-style:italic}.simpay-settings .simpay-settings-subsections__subsection{display:flex;align-items:center}.simpay-settings .simpay-settings-subsections__subsection .simpay-settings-bubble{margin-left:5px}.button.button-large.simpay-button-large{font-size:14px;line-height:30px;padding:4px 12px}.simpay-copy-hidden-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.fixed .column-livemode{width:15%;text-align:right}@media screen and (max-width: 782px){.fixed .column-livemode{text-align:left}}.fixed .column-livemode .simpay-badge{margin-top:3px}.fixed .column-shortcode{width:25%}.fixed .column-shortcode .simpay-shortcode{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.post-type-simple-pay .misc-pub-curtime,.post-type-simple-pay .misc-pub-visibility{display:none}.simpay-metabox-title{border:1px solid #eee}.simpay-shortcode-section{border-top:1px solid #ddd;border-width:1px 0;padding-top:15px;padding-bottom:15px;position:relative}.simpay-shortcode-section label{display:block;margin-bottom:6px}.simpay-shortcode-section label .dashicons{color:#8c8f94;margin-right:3px}.simpay-shortcode-section .simpay-copy-button{line-height:normal;position:absolute;right:20px;bottom:20px;border:0;background:none;box-shadow:none;padding:0}.simpay-shortcode-section .simpay-copy-button:hover{border:0;background:none;box-shadow:none}.simpay-shortcode-section .simpay-copy-button .dashicons{color:#3c434a}.simpay-shortcode{width:100%;padding:8px;line-height:1;margin:0;height:32px;resize:none}.simpay-badge{color:#3f3f46;text-align:center;line-height:1;padding:5px 7px;border-radius:3px;background:#e4e4e7;border:0;box-shadow:none;display:inline-flex;align-items:center}button.simpay-badge{cursor:pointer}button.simpay-badge:hover{background:#d4d4d8}.simpay-badge__icon{opacity:.8;margin:2px 5px 0 0}.simpay-badge--green{color:#0e6245;background:#cbf4c9}.simpay-badge--yellow{color:#983705;background:#f8e5b9}.simpay-stripe-account-info{display:flex;align-items:center;margin-bottom:8px}.simpay-stripe-account-info .spinner{float:none;margin-top:0;margin-left:0}.simple-pay_page_simpay_settings .simpay-settings-upgrade,.post-type-simple-pay .simpay-settings-upgrade{margin-top:20px;padding:1px;position:relative;background:#fff;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.1);max-width:677px}.simple-pay_page_simpay_settings .simpay-settings-upgrade__inner,.post-type-simple-pay .simpay-settings-upgrade__inner{text-align:center;margin:0;padding:30px}.simple-pay_page_simpay_settings .simpay-settings-upgrade h3,.post-type-simple-pay .simpay-settings-upgrade h3{line-height:1.5;font-size:22px;margin:0 0 1.5rem}.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin:1.5rem 0 calc(1.5rem - 6px);display:flex;flex-wrap:wrap;justify-content:center}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin-left:4rem;margin-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{font-size:15px;margin:6px 0;width:100%}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a,.post-type-simple-pay .simpay-settings-upgrade li a{color:#3c434a;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a:hover,.post-type-simple-pay .simpay-settings-upgrade li a:hover{color:var(--wp-admin-theme-color);text-decoration:underline}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{text-align:left;width:50%}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button.button-large,.post-type-simple-pay .simpay-settings-upgrade .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simple-pay_page_simpay_settings .simpay-settings-upgrade small,.post-type-simple-pay .simpay-settings-upgrade small{color:#666;margin:15px 0 0;display:block}.simple-pay_page_simpay_settings .simpay-settings-upgrade .dashicons-yes,.post-type-simple-pay .simpay-settings-upgrade .dashicons-yes{color:#428bca}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link,.post-type-simple-pay .simpay-settings-upgrade .button-link{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:hover,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:active,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:focus,.post-type-simple-pay .simpay-settings-upgrade .button-link:hover,.post-type-simple-pay .simpay-settings-upgrade .button-link:active,.post-type-simple-pay .simpay-settings-upgrade .button-link:focus{color:#666;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{text-align:center;margin:0;padding:30px 20px 20px;background-color:#fcf9e8;border:1px solid #edeac9;border-width:1px 0 0;position:relative;border-radius:0;border-bottom-left-radius:4px;border-bottom-right-radius:4px}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{padding-left:4rem;padding-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;box-shadow:0 0 0 1px #edeac9;width:28px;height:28px;position:absolute;top:-18px;left:50%;margin-left:-18px}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext u,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext a,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext a{font-weight:normal;display:inline-block}#simpay-payment-form-settings table{width:100%;border-collapse:collapse}#simpay-payment-form-settings ::-webkit-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings ::-moz-placeholder{color:#9ba1a9;opacity:1}#simpay-payment-form-settings :-ms-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings .inside{margin:0;padding:0}#simpay-payment-form-settings .simpay-panel-field .toolbar{margin-bottom:-4px}#simpay-payment-form-settings .simpay-panel-field .toolbar .simpay-field-select{margin:0 0 4px;width:auto;max-width:70%}#simpay-payment-form-settings .simpay-tabs{margin:0;padding:0;list-style:none;background:#fafafa;border-right:1px solid #ccd0d4;line-height:1em;position:relative;flex:0 0 25%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs{flex-basis:100%;flex-grow:1;border-right:0}}#simpay-payment-form-settings .simpay-tabs li{margin:0;padding:0}#simpay-payment-form-settings .simpay-tabs li:first-child{margin-top:-1px}#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:20px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:0}}#simpay-payment-form-settings .simpay-tabs li.active{margin-left:-1px;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-tabs li.active:focus:after{display:none}#simpay-payment-form-settings .simpay-tabs li.active:before,#simpay-payment-form-settings .simpay-tabs li.active:after{content:\"\";width:calc(100% + 1px);height:1px;background:#ccd0d4;position:absolute;top:0;left:0;right:0;z-index:2}#simpay-payment-form-settings .simpay-tabs li.active:after{top:auto;bottom:0}#simpay-payment-form-settings .simpay-tabs li.active a{font-weight:bold;background-color:#fff;position:relative;margin-right:-1px}#simpay-payment-form-settings .simpay-tabs li.active a:before{content:\"\";position:absolute;top:0;left:0;bottom:0;width:4px;height:100%;background:currentColor;z-index:3}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li.active a{margin-right:0}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{display:flex;align-items:center;line-height:20px;margin:0;padding:10px 10px 10px 14px;text-decoration:none;transition:all .05s ease-in-out}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item svg,#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item .dashicons{margin-right:6px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{padding:18px}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item:focus{outline:0;position:relative;z-index:3;box-shadow:inset 0 0 0 2px currentColor}#simpay-payment-form-settings .simpay-tabs li:not(.active) .simpay-tab-item{color:inherit}#simpay-payment-form-settings .simpay-panels-wrap{background:#fff;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels-wrap{flex-direction:column}}#simpay-payment-form-settings .simpay-panels{flex:0 0 75%;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels{flex-basis:100%}}#simpay-payment-form-settings .simpay-panel,#simpay-payment-form-settings .simpay-panel-section{width:100%}#simpay-payment-form-settings .simpay-panel>table,#simpay-payment-form-settings .simpay-panel>table>tr,#simpay-payment-form-settings .simpay-panel>table>tbody,#simpay-payment-form-settings .simpay-panel>table>tbody>tr,#simpay-payment-form-settings .simpay-panel>table>thead,#simpay-payment-form-settings .simpay-panel>table>thead>tr{display:block;width:100%}#simpay-payment-form-settings .simpay-panel>table:last-child>tbody:last-child>tr:last-child>td{border-bottom:0}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade{position:relative}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div{margin-right:80px}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div .button-small{position:absolute;top:calc(50% - 13px);right:18px}#simpay-payment-form-settings .simpay-panel-field,#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{text-align:left;display:block}#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{width:calc(100% - 36px);margin-left:18px;margin-right:18px}#simpay-payment-form-settings .simpay-panel-field th{font-weight:bold;padding-top:18px;padding-bottom:5px}#simpay-payment-form-settings .simpay-panel-field td{border-bottom:1px solid #ddd;padding-bottom:18px}#simpay-payment-form-settings .simpay-panel-field p.description{margin-top:4px}#simpay-payment-form-settings .simpay-panel-field p.description:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested{margin-top:18px}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested label{font-weight:bold;display:block;margin-bottom:4px}#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:75%;max-width:100%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:0;width:100%}}#simpay-payment-form-settings .simpay-panel-field .simpay-field-textarea{width:100%;max-width:100%}#simpay-payment-form-settings .simpay-panel-field .notice:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .error,#simpay-payment-form-settings .simpay-panel-field .simpay-important{color:#a94442;font-weight:normal}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap{position:relative;margin-top:12px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview{position:absolute;top:-15px;left:-15px;cursor:pointer;background-color:#fff}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview::before{font-size:22px;line-height:26px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-image-preview{max-height:128px;max-width:128px;border:1px solid #ddd}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box{background-color:#f4f4f4;border:1px solid #e5e5e5;padding:18px;margin-top:18px;position:relative}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss{color:inherit;text-decoration:none;position:absolute;top:8px;right:8px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss .dashicons-dismiss{font-size:16px;width:16px;height:16px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box h3{font-size:18px;font-weight:600;margin:0;padding:0}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p{font-size:14px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p:last-child{margin-bottom:0}#simpay-payment-form-settings .simpay-metabox-content{margin-bottom:-1px;background-color:#f5f5f5;border:1px solid #c3c4c7;border-width:1px 0;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-show-if,#simpay-payment-form-settings .simpay-panel-hidden{display:none}#simpay-payment-form-settings .simpay-payment-methods{border:1px solid #ccd0d4;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04)}#simpay-payment-form-settings .simpay-panel-field-payment-method{display:block;border-top:1px solid #ccd0d4;padding:7px;box-sizing:border-box}#simpay-payment-form-settings .simpay-panel-field-payment-method:first-child{border-top:0;border-top-left-radius:4px;border-top-right-radius:4px}#simpay-payment-form-settings .simpay-panel-field-payment-method input[type=checkbox]{margin-top:0;margin-right:8px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help{color:#666;text-decoration:none;margin-right:5px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help .dashicons{font-size:18px;width:18px;height:18px}#simpay-payment-form-settings .simpay-panel-field-payment-method__restrictions{margin-left:65px}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon{border-radius:3px;overflow:hidden;margin:0 8px 0 5px;width:30px;height:30px;flex-shrink:0}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon svg{width:30px;height:30px}#simpay-global-settings .sortable-placeholder,#simpay-form-settings .sortable-placeholder{margin:5px;display:block;min-height:36px}#simpay-global-settings .chosen-container,#simpay-form-settings .chosen-container{min-width:20em;max-width:30em}#simpay-global-settings .simpay-field.simpay-small-text,#simpay-form-settings .simpay-field.simpay-small-text{width:7em}#simpay-global-settings .simpay-field.simpay-medium-text,#simpay-form-settings .simpay-field.simpay-medium-text{width:15em}#simpay-global-settings .simpay-field-radios ul,#simpay-form-settings .simpay-field-radios ul{margin:0}#simpay-global-settings .simpay-field-radios>i,#simpay-form-settings .simpay-field-radios>i{margin-left:5px;vertical-align:middle}#simpay-global-settings ul.simpay-field-radios-inline,#simpay-form-settings ul.simpay-field-radios-inline{margin:0 0 -10px}#simpay-global-settings ul.simpay-field-radios-inline li,#simpay-form-settings ul.simpay-field-radios-inline li{display:inline-block;margin:0 10px 10px 0}#simpay-global-settings ul.simpay-field-radios-inline li:last-child,#simpay-form-settings ul.simpay-field-radios-inline li:last-child{margin-right:0}#simpay-global-settings .simpay-currency-field,#simpay-form-settings .simpay-currency-field{display:flex;align-items:center}>#simpay-global-settings .simpay-currency-field:focus,>#simpay-form-settings .simpay-currency-field:focus{position:relative;z-index:5}#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{line-height:38px}}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}#simpay-global-settings div.simpay-currency-symbol,#simpay-form-settings div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}#simpay-global-settings select.simpay-currency-symbol,#simpay-form-settings select.simpay-currency-symbol{padding-right:25px}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-width:1px 0 1px 1px}#simpay-global-settings .simpay-currency-symbol-left+.simpay-field-amount,#simpay-form-settings .simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-width:1px 1px 1px 0}#simpay-global-settings .simpay-field-amount,#simpay-form-settings .simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-error,#simpay-form-settings .simpay-error{color:red}#simpay-global-settings .simpay-docs-link-wrap,#simpay-form-settings .simpay-docs-link-wrap{position:absolute;right:0;bottom:0;color:#666;font-size:13px;font-style:italic;padding:15px 18px}#simpay-global-settings .simpay-docs-link-wrap a .dashicons-editor-help,#simpay-form-settings .simpay-docs-link-wrap a .dashicons-editor-help{color:#666;text-decoration:none;width:17px;height:17px;font-size:17px;padding-left:4px}#simpay-global-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon{color:#666}#simpay-global-settings .simpay-docs-icon,#simpay-global-settings .simpay-docs-icon .dashicons-editor-help,#simpay-form-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon .dashicons-editor-help{text-decoration:none;width:17px;height:17px;font-size:17px}.button.button-primary.simpay-upgrade-btn{background-color:#428bca;border:1px solid #428bca;color:#fff;display:inline-block}.button.button-primary.simpay-upgrade-btn:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2d6ca2}.button.button-primary.simpay-upgrade-btn:hover{background-color:#037ad0;border:1px solid #428bca}.simpay-upgrade-btn-subtext{color:#3c434a;font-size:14px;line-height:1.5;text-align:center;margin:40px 0 0;padding:30px 35px 20px;background-color:#fcf9e8;border:3px solid #ebe29a;border-radius:4px;position:relative}.simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:3px solid #ebe29a;width:28px;height:28px;position:absolute;top:-14px;left:50%;margin-left:-14px}.simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-btn-subtext a{text-decoration:none;display:block;margin-top:6px;font-weight:bold}.post-type-simple-pay #post-body-content{display:none}.simpay-card{margin:0 0 20px;padding:30px;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-card,.simpay-card p{line-height:1.5;font-size:16px}.simpay-card h3{line-height:1.6;font-size:18px;margin:0 0 20px;color:#23282c}.simpay-card p{margin:0 0 20px}.simpay-card p:last-child,.simpay-card ul:last-child{margin-bottom:0}.simpay-card figure{float:right;margin:0 0 30px 30px;max-width:400px}.simpay-card figure iframe,.simpay-card figure img{max-width:100%}.simpay-card figure figcaption{text-align:center}@media screen and (max-width: 782px){.simpay-card figure{margin:0 0 30px;max-width:100%;float:none}}.simpay-doc-suggestions{width:100%;display:flex;flex-wrap:wrap;padding:0}.simpay-doc-suggestion{text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:0 1 33.333%;padding:30px;border-right:1px solid #c3c4c7;box-sizing:border-box}.simpay-doc-suggestion:nth-child(3n){border-right:0}@media screen and (max-width: 782px){.simpay-doc-suggestion{flex:0 1 100%;border-bottom:1px solid #c3c4c7;border-right:0}.simpay-doc-suggestion:last-child{border-bottom:0}}.simpay-doc-suggestion h3{font-size:20px;margin-bottom:10px}.simpay-doc-suggestion p{font-size:15px}.simpay-doc-suggestion .dashicons{font-size:40px;width:40px;height:40px;display:block;margin-bottom:10px}.simpay-doc-suggestion .button-large{font-size:16px}.simpay-addons{display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.simpay-addon{background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;display:flex;flex-direction:column;flex-basis:calc(33% - 10px);box-sizing:border-box}@media screen and (max-width: 782px){.simpay-addon{flex-basis:100%}}.simpay-addon img{float:left;max-width:75px}.simpay-addon h5{margin:0 0 10px 100px;font-size:16px}.simpay-addon__details{padding:20px;flex:1 0 auto}.simpay-addon__actions{display:flex;align-items:center;justify-content:space-between;flex:0 1 auto;background-color:#f7f7f7;border-top:1px solid #ddd;margin-top:auto;padding:20px;position:relative}.simpay-addon__actions .msg{text-align:center;justify-content:center;display:flex;align-items:center;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#f7f7f7;z-index:3}.simpay-addon .error,.simpay-addon .status-label.status-installed{color:#d63638}.simpay-addon .success,.simpay-addon .status-label.status-active{color:#00a32a}.simpay-addon .addon-desc{margin:0 0 0 100px}.form-table td .simpay-stripe-connect-help{margin:15px 0;display:flex;align-items:center}.form-table td .simpay-stripe-connect-help .dashicons{margin-right:4px}.simpay-currency-field{display:flex;align-items:center}>.simpay-currency-field:focus{position:relative;z-index:5}.simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){.simpay-currency-symbol{line-height:38px}}.simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}select.simpay-currency-symbol{padding-right:25px}.simpay-currency-symbol-left{border-width:1px 0 1px 1px}.simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}.simpay-currency-symbol-right{border-width:1px 1px 1px 0}.simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.post-new-php.post-type-simple-pay #screen-meta-links,.post-php.post-type-simple-pay #screen-meta-links,.edit-php.post-type-simple-pay #screen-meta-links{display:none}.simpay-branding-bar{margin-left:-20px;padding:14px 20px 14px 22px;background:#fff;border-bottom:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-branding-bar__title{display:flex;align-items:center;float:left;margin:8px 0}.simpay-branding-bar__logo{width:200px}.simpay-branding-bar__divider{color:#dadbdf;font-size:23px;font-weight:400;margin:0 15px}.simpay-branding-bar__actions{float:right;margin-top:4px;display:flex;align-items:center}.simpay-branding-bar__actions>div{margin-left:10px;min-width:40px}.simpay-branding-bar__actions-button{color:#000;cursor:pointer;padding:10px;width:40px;height:40px;background-color:#f3f4f5;border-radius:50%;border:0;box-shadow:none;position:relative;transition:background-color .2s ease;box-sizing:border-box;display:block}.simpay-branding-bar__actions-button:hover{background-color:#e5e5e5}.simpay-branding-bar__actions-button:active,.simpay-branding-bar__actions-button:focus{box-shadow:0 0 0 2px var(--wp-admin-theme-color)}.simpay-branding-bar__actions-button-count{font-weight:600;font-size:10px;line-height:16px;color:#fff;margin:0;background-color:#df2a4a;border-radius:100%;width:16px;height:16px;position:absolute;top:-8px;left:50%;margin-left:-8px}.simpay-branding-bar .wp-heading-inline{font-size:23px;font-weight:400;margin:0}.simpay-branding-bar .page-title-action{font-weight:600;font-size:13px;line-height:normal;cursor:pointer;text-shadow:none;text-decoration:none;margin-left:10px;padding:4px 8px;border:1px solid currentColor;border-radius:2px;background:#f6f7f7}.simpay-landing-zone{text-align:center;max-width:700px;margin:40px auto}.simpay-landing-zone__title{font-size:26px;font-weight:600;margin:0 0 1.5rem;padding:0}.simpay-landing-zone__subtitle{font-size:17px;color:#666;margin:.25rem 0}.simpay-landing-zone__subtitle strong{color:#444}.simpay-landing-zone section{margin:2rem 0}.simpay-landing-zone__empty-state-graphic img{width:425px}.simpay-landing-zone__screenshot>*{vertical-align:middle}.simpay-landing-zone__screenshot-img{display:inline-block;position:relative;width:315px;padding:5px;background-color:#fff;box-shadow:0px 2px 5px 0px rgba(0,0,0,.05);border-radius:3px}.simpay-landing-zone__screenshot-img img{max-width:100%;display:block}.simpay-landing-zone__screenshot-img .hover{position:absolute;opacity:0;height:calc(100% - 10px);width:calc(100% - 10px);top:0;left:0;border:5px solid #fff;background-color:rgba(0,0,0,.15);background-image:url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwYXRoIGQ9Ik01MCAwYzI3LjYxNCAwIDUwIDIyLjM4NiA1MCA1MHMtMjIuMzg2IDUwLTUwIDUwUzAgNzcuNjE0IDAgNTAgMjIuMzg2IDAgNTAgMHoiIGZpbGw9IiMxNjg1YjciLz48cGF0aCBkPSJNNzMuMDIzIDY3LjA2N2wtOS4zNDQtOS4zNDRhMi4yNDcgMi4yNDcgMCAwMC0xLjU5My0uNjU2aC0xLjUyOGExOS4zOTkgMTkuMzk5IDAgMDA0LjEyNC0xMS45OTZjMC0xMC43Ny04LjcyNS0xOS40OTUtMTkuNDk0LTE5LjQ5NS0xMC43NjggMC0xOS40OTQgOC43MjYtMTkuNDk0IDE5LjQ5NSAwIDEwLjc2OCA4LjcyNiAxOS40OTMgMTkuNDk0IDE5LjQ5M2ExOS40IDE5LjQgMCAwMDExLjk5Ny00LjEyM3YxLjUyN2MwIC42LjIzNCAxLjE3Mi42NTUgMS41OTRsOS4zNDQgOS4zNDRhMi4yNCAyLjI0IDAgMDAzLjE3OCAwbDIuNjUyLTIuNjUzYTIuMjYgMi4yNiAwIDAwLjAxLTMuMTg2em0tMjcuODM1LTEwYy02LjYyNiAwLTExLjk5Ni01LjM2MS0xMS45OTYtMTEuOTk2IDAtNi42MjcgNS4zNi0xMS45OTcgMTEuOTk2LTExLjk5NyA2LjYyNiAwIDExLjk5NyA1LjM2MSAxMS45OTcgMTEuOTk3IDAgNi42MjYtNS4zNjEgMTEuOTk2LTExLjk5NyAxMS45OTZ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center;background-size:50px;transition:all .3s}.simpay-landing-zone__screenshot-img:hover .hover{opacity:1;transition:all .3s}.simpay-landing-zone__screenshot ul{text-align:left;display:inline-block;margin:0 0 0 30px;list-style-type:none;max-width:calc(100% - 350px)}@media screen and (max-width: 782px){.simpay-landing-zone__screenshot ul{text-align:center;margin:30px auto;max-width:100%;display:block}}.simpay-landing-zone__screenshot li{margin:16px 0;padding:0;font-size:15px;color:#777;position:relative}.simpay-landing-zone__screenshot li:before{content:\"\";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:center;background-repeat:no-repeat;background-size:14px;width:14px;height:14px;display:inline-block;margin:-3px 5px 0 0;vertical-align:middle}.simpay-landing-zone .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-landing-zone__purchased{display:block;margin:15px 0 0}.simpay-upgrade-modal{padding:0 !important}.simpay-upgrade-modal *{box-sizing:border-box}.simpay-upgrade-modal__content{text-align:center;display:flex;flex-direction:column;align-items:center;padding:16px 32px 32px}.simpay-upgrade-modal__content>.dashicons{color:#333;font-size:48px;width:48px;height:48px}.simpay-upgrade-modal__title{font-size:22px;line-height:1.5;display:block;margin:12px 0 0}.simpay-upgrade-modal__description{color:#777;font-size:16px;margin:16px 0 24px}.simpay-upgrade-modal__description strong{color:#333}.simpay-upgrade-modal__discount{font-size:15px;text-align:center;margin:32px -32px -32px;padding:24px 40px;background-color:#fcf9e8;position:relative}.simpay-upgrade-modal__discount svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;width:32px;height:32px;position:absolute;top:-16px;left:50%;margin-left:-16px}.simpay-upgrade-modal__discount u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-modal .button-large{font-size:16px;font-weight:bold;margin:0 0 15px;padding:8px 30px !important;height:auto}.simpay-teaser-float{margin:50px;position:relative}.simpay-teaser-float__card{text-align:center;padding:30px;background:#fff;border-radius:4px;box-shadow:0 0 30px 15px rgba(0,0,0,.18);position:relative;z-index:2}#poststuff .simpay-teaser-float h2,.simpay-teaser-float h2{font-size:24px;font-weight:600;margin:0;padding:0}.simpay-teaser-float p{font-size:15px;line-height:1.35;color:#666}.simpay-teaser-float p strong{color:#444}.simpay-teaser-float ul{text-align:left;display:inline-block;margin:-10px 0 20px;list-style-type:none}.simpay-teaser-float li{margin:16px 0;padding:0 0 0 24px;font-size:15px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:left 3px;background-repeat:no-repeat;background-size:14px;color:#777}.simpay-teaser-float .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-teaser-float .simpay-notice-dismiss{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simpay-teaser-float .simpay-notice-dismiss:hover,.simpay-teaser-float .simpay-notice-dismiss:active,.simpay-teaser-float .simpay-notice-dismiss:focus{color:#666;text-decoration:none}.simpay-teaser-float:after,.simpay-teaser-float:before{opacity:.75;z-index:0;content:\"\";position:absolute;left:-30px;right:-30px;top:-35px;width:calc(100% + 60px);height:170px;background-image:linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee),linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee);background-repeat:no-repeat;background-size:100% 20px,100% 40px,100% 20px,100% 40px;background-position:0 0,0 30px,0 100px,0 130px}.simpay-teaser-float:before{top:170px}.simpay-teaser-float .simpay-upgrade-btn-subtext{margin:24px -30px -30px;padding:32px 40px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;border:0}.simpay-teaser-float .simpay-upgrade-btn-subtext svg{border-color:#fff}.simpay-teaser-float--inline{margin:40px 30px 30px}.simpay-teaser-float--inline .simpay-teaser-float__card{padding:30px;box-shadow:0 0 12px 6px rgba(0,0,0,.16)}#poststuff .simpay-teaser-float--inline h2,.simpay-teaser-float--inline h2{font-size:20px}.simpay-teaser-float--inline p{font-size:15px;margin:.75rem 0}.simpay-teaser-float--inline .button.button-large{font-size:15px;line-height:24px;margin:1rem 0;padding:8px 14px;display:inline-block}.simpay-teaser-float--inline:before,.simpay-teaser-float--inline:after{opacity:.6}.simpay-teaser-float--inline:before{display:none}.simpay-teaser-float--inline:after{top:15px}.simpay-form-settings-notice{color:#1d2327;position:relative;margin:18px 18px 0;padding:14px;border-radius:4px;background:#f5f5ff}.simpay-form-settings-notice a{color:#635aff}.simpay-form-settings-notice .simpay-external-link .dashicons-external{margin:1px 0 0 2px}.simpay-form-settings-notice strong{font-size:14px}.simpay-form-settings-notice p{margin:5px 0 0 23px}.simpay-form-settings-notice .simpay-notice-dismiss{font-size:20px;color:#b0b0f0;font-weight:bold;line-height:1;position:absolute;top:0;right:5px;text-decoration:none;padding:0 5px;z-index:2}.simpay-form-settings-notice .simpay-notice-dismiss:hover,.simpay-form-settings-notice .simpay-notice-dismiss:active,.simpay-form-settings-notice .simpay-notice-dismiss:focus{color:#9191ef;text-decoration:none;background:none}.post-type-simple-pay .lity{z-index:999999999;padding:20px}.post-type-simple-pay .lity-close{margin:10px}.post-type-simple-pay .lity-content{max-width:80vw;max-height:80vh}.post-type-simple-pay .lity-content img{max-height:80vh !important;max-width:80vw !important}#wpsp-api-keys-row-hide{display:none}.post-type-simple-pay #post-preview:not(.simpay-preview-button){display:none}.simpay-license-field-wrapper{margin:20px 0}#simpay-settings-license-key-license-key{margin:0}#simpay-settings-license-key-license-key[readonly]{background:#fff}.simpay-license-message__loading,.simpay-license-field{display:flex;align-items:center}.wp-core-ui .button.simpay-license-button.button-primary,.wp-core-ui .button.simpay-license-button.button-secondary{font-size:1rem;line-height:1;margin:0 8px;padding:13px}.simpay-license-message{font-size:15px;margin-top:8px}.simpay-license-message--valid{color:green}.simpay-license-message--invalid{color:#cc1818}"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./css/admin/admin.scss"],"names":[],"mappings":"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","file":"./../css/simpay-admin.min.css","sourcesContent":[".simpay-settings-subsections{display:flex;align-items:center;box-shadow:inset 0 -1px 0 0 #ccc}.simpay-settings-subsections__subsection{font-weight:500;text-decoration:none;padding:15px;display:flex;align-items:center}.simpay-settings-subsections__subsection .dashicons{width:18px;height:18px;font-size:18px;margin-right:4px}.simpay-settings-subsections__subsection.is-active{box-shadow:inset 0 -4px 0 0 currentColor;position:relative;z-index:1}.simpay-settings-subsections__subsection:not(.is-active){color:#23282d}.simpay-settings form>h2:not(.nav-tab-wrapper){clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute !important;width:1px}.simpay-settings .form-table td fieldset+p,.simpay-settings .form-table td label+p,.simpay-settings .form-table td select+p,.simpay-settings .form-table td input+p{color:#666;font-style:italic}.simpay-settings .simpay-settings-subsections__subsection{display:flex;align-items:center}.simpay-settings .simpay-settings-subsections__subsection .simpay-settings-bubble{margin-left:5px}.button.button-large.simpay-button-large{font-size:14px;line-height:30px;padding:4px 12px}.simpay-copy-hidden-input{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.fixed .column-livemode{width:15%;text-align:right}@media screen and (max-width: 782px){.fixed .column-livemode{text-align:left}}.fixed .column-livemode .simpay-badge{margin-top:3px}.fixed .column-shortcode{width:25%}.fixed .column-shortcode .simpay-shortcode{clip:rect(1px, 1px, 1px, 1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.post-type-simple-pay .misc-pub-curtime,.post-type-simple-pay .misc-pub-visibility{display:none}.simpay-metabox-title{border:1px solid #eee}.simpay-shortcode-section{border-top:1px solid #ddd;border-width:1px 0;padding-top:15px;padding-bottom:15px;position:relative}.simpay-shortcode-section label{display:block;margin-bottom:6px}.simpay-shortcode-section label .dashicons{color:#8c8f94;margin-right:3px}.simpay-shortcode-section .simpay-copy-button{line-height:normal;position:absolute;right:20px;bottom:20px;border:0;background:none;box-shadow:none;padding:0}.simpay-shortcode-section .simpay-copy-button:hover{border:0;background:none;box-shadow:none}.simpay-shortcode-section .simpay-copy-button .dashicons{color:#3c434a}.simpay-shortcode{width:100%;padding:8px;line-height:1;margin:0;height:32px;resize:none}.simpay-badge{color:#3f3f46;text-align:center;line-height:1;padding:5px 7px;border-radius:3px;background:#e4e4e7;border:0;box-shadow:none;display:inline-flex;align-items:center}button.simpay-badge{cursor:pointer}button.simpay-badge:hover{background:#d4d4d8}.simpay-badge__icon{opacity:.8;margin:2px 5px 0 0}.simpay-badge--green{color:#0e6245;background:#cbf4c9}.simpay-badge--yellow{color:#983705;background:#f8e5b9}.simpay-stripe-account-info{display:flex;align-items:center;margin-bottom:8px}.simpay-stripe-account-info .spinner{float:none;margin-top:0;margin-left:0}.simple-pay_page_simpay_settings .simpay-settings-upgrade,.post-type-simple-pay .simpay-settings-upgrade{margin-top:20px;padding:1px;position:relative;background:#fff;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.1);max-width:677px}.simple-pay_page_simpay_settings .simpay-settings-upgrade__inner,.post-type-simple-pay .simpay-settings-upgrade__inner{text-align:center;margin:0;padding:30px}.simple-pay_page_simpay_settings .simpay-settings-upgrade h3,.post-type-simple-pay .simpay-settings-upgrade h3{line-height:1.5;font-size:22px;margin:0 0 1.5rem}.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin:1.5rem 0 calc(1.5rem - 6px);display:flex;flex-wrap:wrap;justify-content:center}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade ul,.post-type-simple-pay .simpay-settings-upgrade ul{margin-left:4rem;margin-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{font-size:15px;margin:6px 0;width:100%}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a,.post-type-simple-pay .simpay-settings-upgrade li a{color:#3c434a;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade li a:hover,.post-type-simple-pay .simpay-settings-upgrade li a:hover{color:var(--wp-admin-theme-color);text-decoration:underline}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade li,.post-type-simple-pay .simpay-settings-upgrade li{text-align:left;width:50%}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button.button-large,.post-type-simple-pay .simpay-settings-upgrade .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simple-pay_page_simpay_settings .simpay-settings-upgrade small,.post-type-simple-pay .simpay-settings-upgrade small{color:#666;margin:15px 0 0;display:block}.simple-pay_page_simpay_settings .simpay-settings-upgrade .dashicons-yes,.post-type-simple-pay .simpay-settings-upgrade .dashicons-yes{color:#428bca}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link,.post-type-simple-pay .simpay-settings-upgrade .button-link{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:hover,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:active,.simple-pay_page_simpay_settings .simpay-settings-upgrade .button-link:focus,.post-type-simple-pay .simpay-settings-upgrade .button-link:hover,.post-type-simple-pay .simpay-settings-upgrade .button-link:active,.post-type-simple-pay .simpay-settings-upgrade .button-link:focus{color:#666;text-decoration:none}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{text-align:center;margin:0;padding:30px 20px 20px;background-color:#fcf9e8;border:1px solid #edeac9;border-width:1px 0 0;position:relative;border-radius:0;border-bottom-left-radius:4px;border-bottom-right-radius:4px}@media screen and (min-width: 782px){.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext{padding-left:4rem;padding-right:4rem}}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;box-shadow:0 0 0 1px #edeac9;width:28px;height:28px;position:absolute;top:-18px;left:50%;margin-left:-18px}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext u,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simple-pay_page_simpay_settings .simpay-settings-upgrade .simpay-upgrade-btn-subtext a,.post-type-simple-pay .simpay-settings-upgrade .simpay-upgrade-btn-subtext a{font-weight:normal;display:inline-block}#simpay-payment-form-settings table{width:100%;border-collapse:collapse}#simpay-payment-form-settings ::-webkit-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings ::-moz-placeholder{color:#9ba1a9;opacity:1}#simpay-payment-form-settings :-ms-input-placeholder{color:#9ba1a9}#simpay-payment-form-settings .inside{margin:0;padding:0}#simpay-payment-form-settings .simpay-panel-field .toolbar{margin-bottom:-4px}#simpay-payment-form-settings .simpay-panel-field .toolbar .simpay-field-select{margin:0 0 4px;width:auto;max-width:70%}#simpay-payment-form-settings .simpay-tabs{margin:0;padding:0;list-style:none;background:#fafafa;border-right:1px solid #ccd0d4;line-height:1em;position:relative;flex:0 0 25%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs{flex-basis:100%;flex-grow:1;border-right:0}}#simpay-payment-form-settings .simpay-tabs li{margin:0;padding:0}#simpay-payment-form-settings .simpay-tabs li:first-child{margin-top:-1px}#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:20px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li:last-child{margin-bottom:0}}#simpay-payment-form-settings .simpay-tabs li.active{margin-left:-1px;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-tabs li.active:focus:after{display:none}#simpay-payment-form-settings .simpay-tabs li.active:before,#simpay-payment-form-settings .simpay-tabs li.active:after{content:\"\";width:calc(100% + 1px);height:1px;background:#ccd0d4;position:absolute;top:0;left:0;right:0;z-index:2}#simpay-payment-form-settings .simpay-tabs li.active:after{top:auto;bottom:0}#simpay-payment-form-settings .simpay-tabs li.active a{font-weight:bold;background-color:#fff;position:relative;margin-right:-1px}#simpay-payment-form-settings .simpay-tabs li.active a:before{content:\"\";position:absolute;top:0;left:0;bottom:0;width:4px;height:100%;background:currentColor;z-index:3}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li.active a{margin-right:0}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{display:flex;align-items:center;line-height:20px;margin:0;padding:10px 10px 10px 14px;text-decoration:none;transition:all .05s ease-in-out}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item svg,#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item .dashicons{margin-right:6px}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item{padding:18px}}#simpay-payment-form-settings .simpay-tabs li .simpay-tab-item:focus{outline:0;position:relative;z-index:3;box-shadow:inset 0 0 0 2px currentColor}#simpay-payment-form-settings .simpay-tabs li:not(.active) .simpay-tab-item{color:inherit}#simpay-payment-form-settings .simpay-panels-wrap{background:#fff;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels-wrap{flex-direction:column}}#simpay-payment-form-settings .simpay-panels{flex:0 0 75%;display:flex}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panels{flex-basis:100%}}#simpay-payment-form-settings .simpay-panel,#simpay-payment-form-settings .simpay-panel-section{width:100%}#simpay-payment-form-settings .simpay-panel>table,#simpay-payment-form-settings .simpay-panel>table>tr,#simpay-payment-form-settings .simpay-panel>table>tbody,#simpay-payment-form-settings .simpay-panel>table>tbody>tr,#simpay-payment-form-settings .simpay-panel>table>thead,#simpay-payment-form-settings .simpay-panel>table>thead>tr{display:block;width:100%}#simpay-payment-form-settings .simpay-panel>table:last-child>tbody:last-child>tr:last-child>td{border-bottom:0}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade{position:relative}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div{margin-right:80px}#simpay-payment-form-settings .simpay-panel-field--requires-upgrade td>div .button-small{position:absolute;top:calc(50% - 13px);right:18px}#simpay-payment-form-settings .simpay-panel-field,#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{text-align:left;display:block}#simpay-payment-form-settings .simpay-panel-field>td,#simpay-payment-form-settings .simpay-panel-field>th{width:calc(100% - 36px);margin-left:18px;margin-right:18px}#simpay-payment-form-settings .simpay-panel-field th{font-weight:bold;padding-top:18px;padding-bottom:5px}#simpay-payment-form-settings .simpay-panel-field td{border-bottom:1px solid #ddd;padding-bottom:18px}#simpay-payment-form-settings .simpay-panel-field p.description{margin-top:4px}#simpay-payment-form-settings .simpay-panel-field p.description:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested{margin-top:18px}#simpay-payment-form-settings .simpay-panel-field .simpay-panel-field__nested label{font-weight:bold;display:block;margin-bottom:4px}#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:75%;max-width:100%}@media screen and (max-width: 782px){#simpay-payment-form-settings .simpay-panel-field .simpay-field-select,#simpay-payment-form-settings .simpay-panel-field .simpay-field-text{min-width:0;width:100%}}#simpay-payment-form-settings .simpay-panel-field .simpay-field-textarea{width:100%;max-width:100%}#simpay-payment-form-settings .simpay-panel-field .notice:last-of-type{margin-bottom:0}#simpay-payment-form-settings .simpay-panel-field .error,#simpay-payment-form-settings .simpay-panel-field .simpay-important{color:#a94442;font-weight:normal}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap{position:relative;margin-top:12px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview{position:absolute;top:-15px;left:-15px;cursor:pointer;background-color:#fff}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-remove-image-preview::before{font-size:22px;line-height:26px}#simpay-payment-form-settings .simpay-panel-field .simpay-image-preview-wrap .simpay-image-preview{max-height:128px;max-width:128px;border:1px solid #ddd}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box{background-color:#f4f4f4;border:1px solid #e5e5e5;padding:18px;margin-top:18px;position:relative}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss{color:inherit;text-decoration:none;position:absolute;top:8px;right:8px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box__dismiss .dashicons-dismiss{font-size:16px;width:16px;height:16px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box h3{font-size:18px;font-weight:600;margin:0;padding:0}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p{font-size:14px}#simpay-payment-form-settings .simpay-panel .simpay-promo-under-box p:last-child{margin-bottom:0}#simpay-payment-form-settings .simpay-metabox-content{margin-bottom:-1px;background-color:#f5f5f5;border:1px solid #c3c4c7;border-width:1px 0;box-shadow:0 1px 1px rgba(0,0,0,.04);position:relative}#simpay-payment-form-settings .simpay-show-if,#simpay-payment-form-settings .simpay-panel-hidden{display:none}#simpay-payment-form-settings .simpay-payment-methods{border:1px solid #ccd0d4;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.04)}#simpay-payment-form-settings .simpay-panel-field-payment-method{display:block;border-top:1px solid #ccd0d4;padding:7px;box-sizing:border-box}#simpay-payment-form-settings .simpay-panel-field-payment-method:first-child{border-top:0;border-top-left-radius:4px;border-top-right-radius:4px}#simpay-payment-form-settings .simpay-panel-field-payment-method input[type=checkbox]{margin-top:0;margin-right:8px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help{color:#666;text-decoration:none;margin-right:5px}#simpay-payment-form-settings .simpay-panel-field-payment-method__help .dashicons{font-size:18px;width:18px;height:18px}#simpay-payment-form-settings .simpay-panel-field-payment-method__restrictions,#simpay-payment-form-settings .simpay-panel-field-payment-method__restrictions-ach{margin-left:72px}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon{border-radius:3px;overflow:hidden;margin:0 8px 0 5px;width:30px;height:30px;flex-shrink:0}#simpay-payment-form-settings .simpay-panel-field-payment-method__icon svg{width:30px;height:30px}#simpay-global-settings .sortable-placeholder,#simpay-form-settings .sortable-placeholder{margin:5px;display:block;min-height:36px}#simpay-global-settings .chosen-container,#simpay-form-settings .chosen-container{min-width:20em;max-width:30em}#simpay-global-settings .simpay-field.simpay-small-text,#simpay-form-settings .simpay-field.simpay-small-text{width:7em}#simpay-global-settings .simpay-field.simpay-medium-text,#simpay-form-settings .simpay-field.simpay-medium-text{width:15em}#simpay-global-settings .simpay-field-radios ul,#simpay-form-settings .simpay-field-radios ul{margin:0}#simpay-global-settings .simpay-field-radios>i,#simpay-form-settings .simpay-field-radios>i{margin-left:5px;vertical-align:middle}#simpay-global-settings ul.simpay-field-radios-inline,#simpay-form-settings ul.simpay-field-radios-inline{margin:0 0 -10px}#simpay-global-settings ul.simpay-field-radios-inline li,#simpay-form-settings ul.simpay-field-radios-inline li{display:inline-block;margin:0 10px 10px 0}#simpay-global-settings ul.simpay-field-radios-inline li:last-child,#simpay-form-settings ul.simpay-field-radios-inline li:last-child{margin-right:0}#simpay-global-settings .simpay-currency-field,#simpay-form-settings .simpay-currency-field{display:flex;align-items:center}>#simpay-global-settings .simpay-currency-field:focus,>#simpay-form-settings .simpay-currency-field:focus{position:relative;z-index:5}#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){#simpay-global-settings .simpay-currency-symbol,#simpay-form-settings .simpay-currency-symbol{line-height:38px}}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}#simpay-global-settings div.simpay-currency-symbol,#simpay-form-settings div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}#simpay-global-settings select.simpay-currency-symbol,#simpay-form-settings select.simpay-currency-symbol{padding-right:25px}#simpay-global-settings .simpay-currency-symbol-left,#simpay-form-settings .simpay-currency-symbol-left{border-width:1px 0 1px 1px}#simpay-global-settings .simpay-currency-symbol-left+.simpay-field-amount,#simpay-form-settings .simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}#simpay-global-settings .simpay-currency-symbol-right,#simpay-form-settings .simpay-currency-symbol-right{border-width:1px 1px 1px 0}#simpay-global-settings .simpay-field-amount,#simpay-form-settings .simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#simpay-global-settings .simpay-error,#simpay-form-settings .simpay-error{color:red}#simpay-global-settings .simpay-docs-link-wrap,#simpay-form-settings .simpay-docs-link-wrap{position:absolute;right:0;bottom:0;color:#666;font-size:13px;font-style:italic;padding:15px 18px}#simpay-global-settings .simpay-docs-link-wrap a .dashicons-editor-help,#simpay-form-settings .simpay-docs-link-wrap a .dashicons-editor-help{color:#666;text-decoration:none;width:17px;height:17px;font-size:17px;padding-left:4px}#simpay-global-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon{color:#666}#simpay-global-settings .simpay-docs-icon,#simpay-global-settings .simpay-docs-icon .dashicons-editor-help,#simpay-form-settings .simpay-docs-icon,#simpay-form-settings .simpay-docs-icon .dashicons-editor-help{text-decoration:none;width:17px;height:17px;font-size:17px}.button.button-primary.simpay-upgrade-btn{background-color:#428bca;border:1px solid #428bca;color:#fff;display:inline-block}.button.button-primary.simpay-upgrade-btn:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2d6ca2}.button.button-primary.simpay-upgrade-btn:hover{background-color:#037ad0;border:1px solid #428bca}.simpay-upgrade-btn-subtext{color:#3c434a;font-size:14px;line-height:1.5;text-align:center;margin:40px 0 0;padding:30px 35px 20px;background-color:#fcf9e8;border:3px solid #ebe29a;border-radius:4px;position:relative}.simpay-upgrade-btn-subtext svg{background:#00a32a;fill:#fff;border-radius:50%;border:3px solid #ebe29a;width:28px;height:28px;position:absolute;top:-14px;left:50%;margin-left:-14px}.simpay-upgrade-btn-subtext u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-btn-subtext a{text-decoration:none;display:block;margin-top:6px;font-weight:bold}.post-type-simple-pay #post-body-content{display:none}.simpay-card{margin:0 0 20px;padding:30px;background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-card,.simpay-card p{line-height:1.5;font-size:16px}.simpay-card h3{line-height:1.6;font-size:18px;margin:0 0 20px;color:#23282c}.simpay-card p{margin:0 0 20px}.simpay-card p:last-child,.simpay-card ul:last-child{margin-bottom:0}.simpay-card figure{float:right;margin:0 0 30px 30px;max-width:400px}.simpay-card figure iframe,.simpay-card figure img{max-width:100%}.simpay-card figure figcaption{text-align:center}@media screen and (max-width: 782px){.simpay-card figure{margin:0 0 30px;max-width:100%;float:none}}.simpay-doc-suggestions{width:100%;display:flex;flex-wrap:wrap;padding:0}.simpay-doc-suggestion{text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:0 1 33.333%;padding:30px;border-right:1px solid #c3c4c7;box-sizing:border-box}.simpay-doc-suggestion:nth-child(3n){border-right:0}@media screen and (max-width: 782px){.simpay-doc-suggestion{flex:0 1 100%;border-bottom:1px solid #c3c4c7;border-right:0}.simpay-doc-suggestion:last-child{border-bottom:0}}.simpay-doc-suggestion h3{font-size:20px;margin-bottom:10px}.simpay-doc-suggestion p{font-size:15px}.simpay-doc-suggestion .dashicons{font-size:40px;width:40px;height:40px;display:block;margin-bottom:10px}.simpay-doc-suggestion .button-large{font-size:16px}.simpay-addons{display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.simpay-addon{background:#fff;border:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04);margin-bottom:20px;display:flex;flex-direction:column;flex-basis:calc(33% - 10px);box-sizing:border-box}@media screen and (max-width: 782px){.simpay-addon{flex-basis:100%}}.simpay-addon img{float:left;max-width:75px}.simpay-addon h5{margin:0 0 10px 100px;font-size:16px}.simpay-addon__details{padding:20px;flex:1 0 auto}.simpay-addon__actions{display:flex;align-items:center;justify-content:space-between;flex:0 1 auto;background-color:#f7f7f7;border-top:1px solid #ddd;margin-top:auto;padding:20px;position:relative}.simpay-addon__actions .msg{text-align:center;justify-content:center;display:flex;align-items:center;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#f7f7f7;z-index:3}.simpay-addon .error,.simpay-addon .status-label.status-installed{color:#d63638}.simpay-addon .success,.simpay-addon .status-label.status-active{color:#00a32a}.simpay-addon .addon-desc{margin:0 0 0 100px}.form-table td .simpay-stripe-connect-help{margin:15px 0;display:flex;align-items:center}.form-table td .simpay-stripe-connect-help .dashicons{margin-right:4px}.simpay-currency-field{display:flex;align-items:center}>.simpay-currency-field:focus{position:relative;z-index:5}.simpay-currency-symbol{margin:0;padding-left:8px;padding-right:8px;line-height:28px;font-size:14px}@media screen and (max-width: 782px){.simpay-currency-symbol{line-height:38px}}.simpay-currency-symbol-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.simpay-currency-symbol-right{border-top-right-radius:4px;border-bottom-right-radius:4px}div.simpay-currency-symbol{border-color:#7e8993;border-style:solid;background-color:#fff}select.simpay-currency-symbol{padding-right:25px}.simpay-currency-symbol-left{border-width:1px 0 1px 1px}.simpay-currency-symbol-left+.simpay-field-amount{border-radius:0 4px 4px 0}.simpay-currency-symbol-right{border-width:1px 1px 1px 0}.simpay-field-amount{margin:0;padding-left:8px;padding-right:8px;font-size:14px;width:6em;position:relative;z-index:2;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.post-new-php.post-type-simple-pay #screen-meta-links,.post-php.post-type-simple-pay #screen-meta-links,.edit-php.post-type-simple-pay #screen-meta-links{display:none}.simpay-branding-bar{margin-left:-20px;padding:14px 20px 14px 22px;background:#fff;border-bottom:1px solid #c3c4c7;box-shadow:0 1px 1px rgba(0,0,0,.04)}.simpay-branding-bar__title{display:flex;align-items:center;float:left;margin:8px 0}.simpay-branding-bar__logo{width:200px}.simpay-branding-bar__divider{color:#dadbdf;font-size:23px;font-weight:400;margin:0 15px}.simpay-branding-bar__actions{float:right;margin-top:4px;display:flex;align-items:center}.simpay-branding-bar__actions>div{margin-left:10px;min-width:40px}.simpay-branding-bar__actions-button{color:#000;cursor:pointer;padding:10px;width:40px;height:40px;background-color:#f3f4f5;border-radius:50%;border:0;box-shadow:none;position:relative;transition:background-color .2s ease;box-sizing:border-box;display:block}.simpay-branding-bar__actions-button:hover{background-color:#e5e5e5}.simpay-branding-bar__actions-button:active,.simpay-branding-bar__actions-button:focus{box-shadow:0 0 0 2px var(--wp-admin-theme-color)}.simpay-branding-bar__actions-button-count{font-weight:600;font-size:10px;line-height:16px;color:#fff;margin:0;background-color:#df2a4a;border-radius:100%;width:16px;height:16px;position:absolute;top:-8px;left:50%;margin-left:-8px}.simpay-branding-bar .wp-heading-inline{font-size:23px;font-weight:400;margin:0}.simpay-branding-bar .page-title-action{font-weight:600;font-size:13px;line-height:normal;cursor:pointer;text-shadow:none;text-decoration:none;margin-left:10px;padding:4px 8px;border:1px solid currentColor;border-radius:2px;background:#f6f7f7}.simpay-landing-zone{text-align:center;max-width:700px;margin:40px auto}.simpay-landing-zone__title{font-size:26px;font-weight:600;margin:0 0 1.5rem;padding:0}.simpay-landing-zone__subtitle{font-size:17px;color:#666;margin:.25rem 0}.simpay-landing-zone__subtitle strong{color:#444}.simpay-landing-zone section{margin:2rem 0}.simpay-landing-zone__empty-state-graphic img{width:425px}.simpay-landing-zone__screenshot>*{vertical-align:middle}.simpay-landing-zone__screenshot-img{display:inline-block;position:relative;width:315px;padding:5px;background-color:#fff;box-shadow:0px 2px 5px 0px rgba(0,0,0,.05);border-radius:3px}.simpay-landing-zone__screenshot-img img{max-width:100%;display:block}.simpay-landing-zone__screenshot-img .hover{position:absolute;opacity:0;height:calc(100% - 10px);width:calc(100% - 10px);top:0;left:0;border:5px solid #fff;background-color:rgba(0,0,0,.15);background-image:url(data:image/svg+xml;base64,PHN2ZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPjxwYXRoIGQ9Ik01MCAwYzI3LjYxNCAwIDUwIDIyLjM4NiA1MCA1MHMtMjIuMzg2IDUwLTUwIDUwUzAgNzcuNjE0IDAgNTAgMjIuMzg2IDAgNTAgMHoiIGZpbGw9IiMxNjg1YjciLz48cGF0aCBkPSJNNzMuMDIzIDY3LjA2N2wtOS4zNDQtOS4zNDRhMi4yNDcgMi4yNDcgMCAwMC0xLjU5My0uNjU2aC0xLjUyOGExOS4zOTkgMTkuMzk5IDAgMDA0LjEyNC0xMS45OTZjMC0xMC43Ny04LjcyNS0xOS40OTUtMTkuNDk0LTE5LjQ5NS0xMC43NjggMC0xOS40OTQgOC43MjYtMTkuNDk0IDE5LjQ5NSAwIDEwLjc2OCA4LjcyNiAxOS40OTMgMTkuNDk0IDE5LjQ5M2ExOS40IDE5LjQgMCAwMDExLjk5Ny00LjEyM3YxLjUyN2MwIC42LjIzNCAxLjE3Mi42NTUgMS41OTRsOS4zNDQgOS4zNDRhMi4yNCAyLjI0IDAgMDAzLjE3OCAwbDIuNjUyLTIuNjUzYTIuMjYgMi4yNiAwIDAwLjAxLTMuMTg2em0tMjcuODM1LTEwYy02LjYyNiAwLTExLjk5Ni01LjM2MS0xMS45OTYtMTEuOTk2IDAtNi42MjcgNS4zNi0xMS45OTcgMTEuOTk2LTExLjk5NyA2LjYyNiAwIDExLjk5NyA1LjM2MSAxMS45OTcgMTEuOTk3IDAgNi42MjYtNS4zNjEgMTEuOTk2LTExLjk5NyAxMS45OTZ6IiBmaWxsPSIjZmZmIi8+PC9zdmc+);background-repeat:no-repeat;background-position:center;background-size:50px;transition:all .3s}.simpay-landing-zone__screenshot-img:hover .hover{opacity:1;transition:all .3s}.simpay-landing-zone__screenshot ul{text-align:left;display:inline-block;margin:0 0 0 30px;list-style-type:none;max-width:calc(100% - 350px)}@media screen and (max-width: 782px){.simpay-landing-zone__screenshot ul{text-align:center;margin:30px auto;max-width:100%;display:block}}.simpay-landing-zone__screenshot li{margin:16px 0;padding:0;font-size:15px;color:#777;position:relative}.simpay-landing-zone__screenshot li:before{content:\"\";background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:center;background-repeat:no-repeat;background-size:14px;width:14px;height:14px;display:inline-block;margin:-3px 5px 0 0;vertical-align:middle}.simpay-landing-zone .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-landing-zone__purchased{display:block;margin:15px 0 0}.simpay-upgrade-modal{padding:0 !important}.simpay-upgrade-modal *{box-sizing:border-box}.simpay-upgrade-modal__content{text-align:center;display:flex;flex-direction:column;align-items:center;padding:16px 32px 32px}.simpay-upgrade-modal__content>.dashicons{color:#333;font-size:48px;width:48px;height:48px}.simpay-upgrade-modal__title{font-size:22px;line-height:1.5;display:block;margin:12px 0 0}.simpay-upgrade-modal__description{color:#777;font-size:16px;margin:16px 0 24px}.simpay-upgrade-modal__description strong{color:#333}.simpay-upgrade-modal__discount{font-size:15px;text-align:center;margin:32px -32px -32px;padding:24px 40px;background-color:#fcf9e8;position:relative}.simpay-upgrade-modal__discount svg{background:#00a32a;fill:#fff;border-radius:50%;border:4px solid #fff;width:32px;height:32px;position:absolute;top:-16px;left:50%;margin-left:-16px}.simpay-upgrade-modal__discount u{text-decoration:none;font-weight:bold;color:#00a32a}.simpay-upgrade-modal .button-large{font-size:16px;font-weight:bold;margin:0 0 15px;padding:8px 30px !important;height:auto}.simpay-teaser-float{margin:50px;position:relative}.simpay-teaser-float__card{text-align:center;padding:30px;background:#fff;border-radius:4px;box-shadow:0 0 30px 15px rgba(0,0,0,.18);position:relative;z-index:2}#poststuff .simpay-teaser-float h2,.simpay-teaser-float h2{font-size:24px;font-weight:600;margin:0;padding:0}.simpay-teaser-float p{font-size:15px;line-height:1.35;color:#666}.simpay-teaser-float p strong{color:#444}.simpay-teaser-float ul{text-align:left;display:inline-block;margin:-10px 0 20px;list-style-type:none}.simpay-teaser-float li{margin:16px 0;padding:0 0 0 24px;font-size:15px;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEzLjc3NjIgNi40NTYwNUw4LjcyMDMyIDEuNDAwMDVDOC41NzU5OSAxLjI1NTcyIDguMzgzNjQgMS4xNzY1IDguMTc4NTMgMS4xNzY1QzcuOTczMiAxLjE3NjUgNy43ODA5NiAxLjI1NTg0IDcuNjM2NjQgMS40MDAwNUw3LjE3NzYgMS44NTkyQzcuMDMzMzkgMi4wMDMyOSA2Ljk1Mzk1IDIuMTk1NzYgNi45NTM5NSAyLjQwMDk4QzYuOTUzOTUgMi42MDYwOCA3LjAzMzM5IDIuODA1MDQgNy4xNzc2IDIuOTQ5MTRMMTAuMTI3MSA1LjkwNTE2SDAuNzU2MzM0QzAuMzMzODM0IDUuOTA1MTYgMCA2LjIzNTkyIDAgNi42NTg1NFY3LjMwNzY1QzAgNy43MzAyNyAwLjMzMzgzNCA4LjA5NDM4IDAuNzU2MzM0IDguMDk0MzhIMTAuMTYwNkw3LjE3NzcyIDExLjA2NjlDNy4wMzM1MSAxMS4yMTEyIDYuOTU0MDYgMTEuMzk4NSA2Ljk1NDA2IDExLjYwMzdDNi45NTQwNiAxMS44MDg3IDcuMDMzNTEgMTEuOTk4NiA3LjE3NzcyIDEyLjE0MjhMNy42MzY3NSAxMi42MDA1QzcuNzgxMDcgMTIuNzQ0OCA3Ljk3MzMyIDEyLjgyMzUgOC4xNzg2NSAxMi44MjM1QzguMzgzNzUgMTIuODIzNSA4LjU3NjExIDEyLjc0MzggOC43MjA0MyAxMi41OTk1TDEzLjc3NjMgNy41NDM2QzEzLjkyMSA3LjM5ODgyIDE0LjAwMDUgNy4yMDU1NiAxNCA3LjAwMDExQzE0LjAwMDQgNi43OTM5OCAxMy45MjEgNi42MDA2IDEzLjc3NjIgNi40NTYwNVY2LjQ1NjA1WiIgZmlsbD0iIzQyOEJDQSIvPgo8L3N2Zz4K);background-position:left 3px;background-repeat:no-repeat;background-size:14px;color:#777}.simpay-teaser-float .button.button-large{font-size:17px;line-height:30px;padding:10px 20px}.simpay-teaser-float .simpay-notice-dismiss{position:absolute;top:0;right:0;font-size:20px;color:#666;font-weight:bold;text-decoration:none;margin-left:5px;padding:6px 10px;z-index:2}.simpay-teaser-float .simpay-notice-dismiss:hover,.simpay-teaser-float .simpay-notice-dismiss:active,.simpay-teaser-float .simpay-notice-dismiss:focus{color:#666;text-decoration:none}.simpay-teaser-float:after,.simpay-teaser-float:before{opacity:.75;z-index:0;content:\"\";position:absolute;left:-30px;right:-30px;top:-35px;width:calc(100% + 60px);height:170px;background-image:linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee),linear-gradient(#ddd, #ddd),linear-gradient(#eee, #eee);background-repeat:no-repeat;background-size:100% 20px,100% 40px,100% 20px,100% 40px;background-position:0 0,0 30px,0 100px,0 130px}.simpay-teaser-float:before{top:170px}.simpay-teaser-float .simpay-upgrade-btn-subtext{margin:24px -30px -30px;padding:32px 40px;border-bottom-left-radius:2px;border-bottom-right-radius:2px;border:0}.simpay-teaser-float .simpay-upgrade-btn-subtext svg{border-color:#fff}.simpay-teaser-float--inline{margin:40px 30px 30px}.simpay-teaser-float--inline .simpay-teaser-float__card{padding:30px;box-shadow:0 0 12px 6px rgba(0,0,0,.16)}#poststuff .simpay-teaser-float--inline h2,.simpay-teaser-float--inline h2{font-size:20px}.simpay-teaser-float--inline p{font-size:15px;margin:.75rem 0}.simpay-teaser-float--inline .button.button-large{font-size:15px;line-height:24px;margin:1rem 0;padding:8px 14px;display:inline-block}.simpay-teaser-float--inline:before,.simpay-teaser-float--inline:after{opacity:.6}.simpay-teaser-float--inline:before{display:none}.simpay-teaser-float--inline:after{top:15px}.simpay-form-settings-notice{font-weight:normal;color:#1d2327;position:relative;margin:18px 18px 0;padding:14px;border-radius:4px;background:#f5f5ff}.simpay-form-settings-notice a{color:#635aff}.simpay-form-settings-notice .simpay-external-link .dashicons-external{margin:1px 0 0 2px}.simpay-form-settings-notice strong{font-size:14px}.simpay-form-settings-notice p{margin:5px 0 0 23px}.simpay-form-settings-notice .simpay-notice-dismiss{font-size:20px;color:#b0b0f0;font-weight:bold;line-height:1;position:absolute;top:0;right:5px;text-decoration:none;padding:0 5px;z-index:2}.simpay-form-settings-notice .simpay-notice-dismiss:hover,.simpay-form-settings-notice .simpay-notice-dismiss:active,.simpay-form-settings-notice .simpay-notice-dismiss:focus{color:#9191ef;text-decoration:none;background:none}.simpay-settings .simpay-form-settings-notice{border:2px solid #645aff;box-shadow:0 1px 1px rgba(0,0,0,.04)}.post-type-simple-pay .lity{z-index:999999999;padding:20px}.post-type-simple-pay .lity-close{margin:10px}.post-type-simple-pay .lity-content{max-width:80vw;max-height:80vh}.post-type-simple-pay .lity-content img{max-height:80vh !important;max-width:80vw !important}#wpsp-api-keys-row-hide{display:none}.post-type-simple-pay #post-preview:not(.simpay-preview-button){display:none}.simpay-license-field-wrapper{margin:20px 0}#simpay-settings-license-key-license-key{margin:0}#simpay-settings-license-key-license-key[readonly]{background:#fff}.simpay-license-message__loading,.simpay-license-field{display:flex;align-items:center}.wp-core-ui .button.simpay-license-button.button-primary,.wp-core-ui .button.simpay-license-button.button-secondary{font-size:1rem;line-height:1;margin:0 8px;padding:13px}.simpay-license-message{font-size:15px;margin-top:8px}.simpay-license-message--valid{color:green}.simpay-license-message--invalid{color:#cc1818}"],"sourceRoot":""} \ No newline at end of file diff --git a/includes/core/assets/js/admin/index.js b/includes/core/assets/js/admin/index.js index d41b178e..b1d6fc73 100644 --- a/includes/core/assets/js/admin/index.js +++ b/includes/core/assets/js/admin/index.js @@ -57,6 +57,7 @@ let spAdmin = {}; '_subscription_type', '_subscription_custom_amount', '_form_type', + '_tax_status', '_enable_payment_page', '.simpay-total-amount-label-recurring', '.simpay-total-amount-label-tax', diff --git a/includes/core/assets/js/admin/payment-form/index.js b/includes/core/assets/js/admin/payment-form/index.js index 5bdb38ac..e53b82eb 100644 --- a/includes/core/assets/js/admin/payment-form/index.js +++ b/includes/core/assets/js/admin/payment-form/index.js @@ -1,6 +1,7 @@ import './general.js'; import './prices.js'; import './payment-methods.js'; +import './taxes.js'; import './custom-fields.js'; import './stripe-checkout.js'; import './payment-page.js'; diff --git a/includes/core/assets/js/admin/payment-form/taxes.js b/includes/core/assets/js/admin/payment-form/taxes.js new file mode 100644 index 00000000..b41eef50 --- /dev/null +++ b/includes/core/assets/js/admin/payment-form/taxes.js @@ -0,0 +1,20 @@ +/** + * WordPress dependencies + */ +import domReady from '@wordpress/dom-ready'; + +/** + * Internal dependencies + */ +import { maybeBlockSelectWithUpgradeModal } from '@wpsimplepay/utils'; + +/** + * DOM ready. + */ +domReady( () => { + const selector = document.getElementById( '_tax_status_lite' ); + + if ( selector ) { + selector.addEventListener( 'change', maybeBlockSelectWithUpgradeModal ); + } +} ); diff --git a/includes/core/assets/js/frontend/index.js b/includes/core/assets/js/frontend/index.js index 9bd3cee0..299de8d1 100644 --- a/includes/core/assets/js/frontend/index.js +++ b/includes/core/assets/js/frontend/index.js @@ -5,7 +5,6 @@ */ import { default as hooks, doAction } from '@wpsimplepay/hooks'; import * as paymentForms from '@wpsimplepay/payment-forms'; -import * as api from '@wpsimplepay/api'; import { default as legacyHelpers } from './utils/legacy.js'; import './payment-forms'; @@ -14,27 +13,10 @@ import './payment-forms'; * * @todo Create automatically with Webpack. */ - -// Don't expose api.apiRequest to window. -const { - customers, - paymentintents, - sessions, - setupintents, - subscriptions, -} = api; - window.wpsp = { hooks, paymentForms, initPaymentForm, - api: { - customers, - paymentintents, - sessions, - setupintents, - subscriptions, - }, }; /** @@ -100,7 +82,11 @@ function initPaymentForm( $paymentForm, __unstableFormVars = false ) { form: { prices, livemode, config = {} }, } = paymentFormData; - const { taxRates = [], paymentMethods = [] } = config; + const { + taxRates = [], + paymentMethods = [], + taxStatus = 'fixed-global', + } = config; // Merge localized form data in to a semi-simplified object. // Maintained for backwards compatibility. @@ -150,6 +136,7 @@ function initPaymentForm( $paymentForm, __unstableFormVars = false ) { } ), paymentMethod: _.first( paymentMethods ), taxRates, + taxStatus, paymentMethods, livemode, displayType: formData.formDisplayType, @@ -163,6 +150,24 @@ function initPaymentForm( $paymentForm, __unstableFormVars = false ) { }; }; + // Attach a helper to get the form data/state. + $paymentForm.getFormData = function () { + const _formData = { + ...$paymentForm.__unstableLegacyFormData, + ...$paymentForm.state, + }; + + // Remove additional data that is not needed and may trigger WAF rules. + const { + order: _o, + customer: _cus, + paymentMethods: _pms, + ...cleanFormData // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#rest_property + } = _formData; + + return JSON.stringify( cleanFormData ); + }; + // Attach a Stripe instance to the Payment Form jQuery object. const { key: publishableKey, diff --git a/includes/core/assets/js/frontend/payment-forms/index.js b/includes/core/assets/js/frontend/payment-forms/index.js index ece0faf1..80e2a69b 100644 --- a/includes/core/assets/js/frontend/payment-forms/index.js +++ b/includes/core/assets/js/frontend/payment-forms/index.js @@ -75,7 +75,7 @@ async function submitPaymentForm( paymentForm ) { } ); - submit().catch( onError ); + submit(); } catch ( error ) { onError( error ); } diff --git a/includes/core/assets/js/frontend/payment-forms/stripe-checkout/submit.js b/includes/core/assets/js/frontend/payment-forms/stripe-checkout/submit.js index d543a945..a8a28c93 100644 --- a/includes/core/assets/js/frontend/payment-forms/stripe-checkout/submit.js +++ b/includes/core/assets/js/frontend/payment-forms/stripe-checkout/submit.js @@ -27,24 +27,44 @@ async function submit( paymentForm ) { // Only generate a custom Customer if we need to map on-page form fields. if ( hasCustomerFields ) { + const customerData = await customers + .create( {}, paymentForm ) + .catch( onError ); + + if ( ! customerData ) { + return; + } + const { customer: { id }, - } = await customers.create( {}, paymentForm ); + } = customerData; customerId = id; } // Generate a Checkout Session. + const session = await sessions + .create( + { + customer_id: customerId, + payment_method_type: __unstableLegacyFormData.paymentMethods + ? __unstableLegacyFormData.paymentMethods[ 0 ].id + : 'card', + }, + paymentForm + ) + .catch( onError ); + + // Bail if there was an error. + if ( ! session ) { + return; + } + const { sessionId, session: { url }, redirect_type: redirectType, - } = await sessions.create( - { - customer_id: customerId, - }, - paymentForm - ); + } = session; // Redirect to Stripe. if ( 'stripe' === redirectType ) { diff --git a/includes/core/assets/js/packages/api/src/customers.js b/includes/core/assets/js/packages/api/src/customers.js index e7053a01..dfe79a8f 100644 --- a/includes/core/assets/js/packages/api/src/customers.js +++ b/includes/core/assets/js/packages/api/src/customers.js @@ -20,14 +20,11 @@ import { apiRequest } from './api-request.js'; * @return {jqXHR} jQuery XMLHttpRequest object. */ export function create( data = {}, paymentForm ) { - const { id, state, __unstableLegacyFormData } = paymentForm; + const { id, getFormData } = paymentForm; return apiRequest( 'v2/customer', { form_values: serialize( paymentForm[ 0 ], { hash: true } ), - form_data: JSON.stringify( { - ...__unstableLegacyFormData, - ...state, - } ), + form_data: getFormData(), form_id: id, ...data, } ); diff --git a/includes/core/assets/js/packages/api/src/index.js b/includes/core/assets/js/packages/api/src/index.js index d6907b20..58b28006 100644 --- a/includes/core/assets/js/packages/api/src/index.js +++ b/includes/core/assets/js/packages/api/src/index.js @@ -2,6 +2,7 @@ export * from './api-request.js'; export * as customers from './customers.js'; export * as paymentintents from './paymentintents.js'; +export * as orders from './orders.js'; export * as sessions from './sessions.js'; export * as setupintents from './setupintents.js'; export * as subscriptions from './subscriptions.js'; diff --git a/includes/core/assets/js/packages/api/src/orders.js b/includes/core/assets/js/packages/api/src/orders.js new file mode 100644 index 00000000..03bad6a5 --- /dev/null +++ b/includes/core/assets/js/packages/api/src/orders.js @@ -0,0 +1,55 @@ +/** + * "Order" refers to an internal order, not a Stripe Order object. + */ + +/** + * Internal dependencies. + */ +import { apiRequest } from './api-request.js'; +import { createToken } from '../../../frontend/utils/recaptcha.js'; + +/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */ + +/** + * Creates and returns an order preview. + * + * @since 4.6.0 + * + * @param {Object} data Data to pass to REST endpoint. + * @return {jqXHR} jQuery XMLHttpRequest object. + */ +export async function preview( data ) { + // Create a token for the reCAPTCHA. + const recaptcha = await createToken( + `simple_pay_form_${ data.form_id }_order_preview` + ); + + return apiRequest( 'v2/order/preview', { + ...data, + captcha: { + recaptcha, + }, + } ); +} + +/** + * Submits an Order. + * + * @since 4.6.0 + * + * @param {Object} data Data to pass to REST endpoint. + * @return {jqXHR} jQuery XMLHttpRequest object. + */ +export async function submit( data ) { + // Create a token for the reCAPTCHA. + const recaptcha = await createToken( + `simple_pay_form_${ data.form_id }_order_submit` + ); + + return apiRequest( 'v2/order/submit', { + ...data, + captcha: { + recaptcha, + }, + } ); +} diff --git a/includes/core/assets/js/packages/api/src/paymentintents.js b/includes/core/assets/js/packages/api/src/paymentintents.js index 3388899b..127947f1 100644 --- a/includes/core/assets/js/packages/api/src/paymentintents.js +++ b/includes/core/assets/js/packages/api/src/paymentintents.js @@ -20,14 +20,11 @@ import { apiRequest } from './api-request.js'; * @return {jqXHR} jQuery XMLHttpRequest object. */ export function create( data = {}, paymentForm ) { - const { id, state, __unstableLegacyFormData } = paymentForm; + const { id, getFormData } = paymentForm; return apiRequest( 'v2/paymentintent/create', { form_values: serialize( paymentForm[ 0 ], { hash: true } ), - form_data: JSON.stringify( { - ...__unstableLegacyFormData, - ...state, - } ), + form_data: getFormData(), form_id: id, ...data, } ); diff --git a/includes/core/assets/js/packages/api/src/sessions.js b/includes/core/assets/js/packages/api/src/sessions.js index e56d8bf7..e07a9ac8 100644 --- a/includes/core/assets/js/packages/api/src/sessions.js +++ b/includes/core/assets/js/packages/api/src/sessions.js @@ -20,14 +20,11 @@ import { apiRequest } from './api-request.js'; * @return {jqXHR} jQuery XMLHttpRequest object. */ export function create( data = {}, paymentForm ) { - const { id, state, __unstableLegacyFormData } = paymentForm; + const { id, getFormData } = paymentForm; return apiRequest( 'v2/checkout-session', { form_values: serialize( paymentForm[ 0 ], { hash: true } ), - form_data: JSON.stringify( { - ...__unstableLegacyFormData, - ...state, - } ), + form_data: getFormData(), form_id: id, ...data, } ); diff --git a/includes/core/assets/js/packages/api/src/setupintents.js b/includes/core/assets/js/packages/api/src/setupintents.js index 1dafdf77..83b1a514 100644 --- a/includes/core/assets/js/packages/api/src/setupintents.js +++ b/includes/core/assets/js/packages/api/src/setupintents.js @@ -20,11 +20,11 @@ import { apiRequest } from './api-request.js'; * @return {jqXHR} jQuery XMLHttpRequest object. */ export function create( data = {}, paymentForm ) { - const { id, state } = paymentForm; + const { id, getFormData } = paymentForm; return apiRequest( 'v2/setupintent/create', { form_values: serialize( paymentForm[ 0 ], { hash: true } ), - form_data: JSON.stringify( state ), + form_data: getFormData(), form_id: id, ...data, } ); diff --git a/includes/core/assets/js/packages/api/src/subscriptions.js b/includes/core/assets/js/packages/api/src/subscriptions.js index cb6cdc09..46268b40 100644 --- a/includes/core/assets/js/packages/api/src/subscriptions.js +++ b/includes/core/assets/js/packages/api/src/subscriptions.js @@ -20,14 +20,11 @@ import { apiRequest } from './api-request.js'; * @return {jqXHR} jQuery XMLHttpRequest object. */ export function create( data = {}, paymentForm ) { - const { id, state, __unstableLegacyFormData } = paymentForm; + const { id, getFormData } = paymentForm; return apiRequest( 'v2/subscription', { form_values: serialize( paymentForm[ 0 ], { hash: true } ), - form_data: JSON.stringify( { - ...__unstableLegacyFormData, - ...state, - } ), + form_data: getFormData(), form_id: id, ...data, } ); diff --git a/includes/core/assets/js/packages/cart/src/cart.js b/includes/core/assets/js/packages/cart/src/cart.js index 6a7ac72d..12e6a951 100644 --- a/includes/core/assets/js/packages/cart/src/cart.js +++ b/includes/core/assets/js/packages/cart/src/cart.js @@ -24,6 +24,9 @@ export const Cart = class Cart { this.currency = 'usd'; this.taxPercent = 0; this.taxRates = []; + this.taxStatus = 'fixed-global'; + this.taxBehavior = 'exclusive'; + this.automaticTax = {}; this.coupon = false; this.isNonDecimalCurrency = false; @@ -48,6 +51,9 @@ export const Cart = class Cart { currency, taxPercent, taxRates, + taxStatus, + taxBehavior, + automaticTax, coupon, isNonDecimalCurrency, } = { @@ -75,11 +81,23 @@ export const Cart = class Cart { this.taxPercent = parseFloat( taxPercent ); } - // Tax rates. + // Tax. if ( taxRates && Array.isArray( taxRates ) ) { this.taxRates = taxRates; } + if ( taxStatus && 'string' === typeof taxStatus ) { + this.taxStatus = taxStatus; + } + + if ( taxBehavior && 'string' === typeof taxBehavior ) { + this.taxBehavior = taxBehavior; + } + + if ( automaticTax && 'object' === typeof automaticTax ) { + this.automaticTax = automaticTax; + } + // Set coupon. // @todo Validate coupon data. if ( ! ( false === coupon || 'object' === typeof coupon ) ) { @@ -289,6 +307,10 @@ export const Cart = class Cart { * @return {number} Cart tax. */ getTax() { + if ( 'none' === this.taxStatus ) { + return 0; + } + return this.getLineItems().reduce( ( tax, lineItem ) => { return ( tax += lineItem.getTax() ); }, 0 ); @@ -429,6 +451,16 @@ export const Cart = class Cart { * @return {number} Cart total due today. */ getTotalDueToday() { + let initialTax = 0; + + if ( + 'exclusive' === this.taxBehavior && + this.automaticTax && + ! this.hasFreeTrial() + ) { + initialTax = parseInt( this.automaticTax.amount_tax || initialTax ); + } + return this.getLineItems().reduce( ( total, lineItem ) => { // Return current total if the line item has a free trial. if ( lineItem.hasFreeTrial() ) { @@ -437,7 +469,7 @@ export const Cart = class Cart { // Add line item total to existing total. return ( total += lineItem.getTotal() ); - }, 0 ); + }, initialTax ); } /** @@ -496,28 +528,39 @@ export const Cart = class Cart { const recurringSubtotal = recurring.getUnitPrice() * recurring.getQuantity(); - const taxRates = this.getTaxRates(); - const taxRate = this.getTaxPercent( 'inclusive' ) / 100; - - const inclusiveTaxAmount = Math.round( - recurringSubtotal - recurringSubtotal / ( 1 + taxRate ) - ); - - const postInclusiveTaxAmount = Math.round( - recurringSubtotal - inclusiveTaxAmount - ); - const taxAmount = taxRates.reduce( - ( tax, { percentage, calculation } ) => { - if ( 'inclusive' === calculation ) { - return tax; - } - - return ( tax += Math.round( - postInclusiveTaxAmount * ( percentage / 100 ) - ) ); - }, - 0 - ); + let taxAmount = 0; + + if ( 'automatic' !== this.taxStatus && 'none' !== this.taxStatus ) { + const taxRates = this.getTaxRates(); + const taxRate = this.getTaxPercent( 'inclusive' ) / 100; + + const inclusiveTaxAmount = Math.round( + recurringSubtotal - recurringSubtotal / ( 1 + taxRate ) + ); + + const postInclusiveTaxAmount = Math.round( + recurringSubtotal - inclusiveTaxAmount + ); + + taxAmount = taxRates.reduce( + ( tax, { percentage, calculation } ) => { + if ( 'inclusive' === calculation ) { + return tax; + } + + return ( tax += Math.round( + postInclusiveTaxAmount * ( percentage / 100 ) + ) ); + }, + 0 + ); + } else if ( + 'automatic' === this.taxStatus && + 'exclusive' === this.taxBehavior && + this.automaticTax + ) { + taxAmount = this.automaticTax.upcomingInvoice?.amount_tax || 0; + } return Math.round( recurringSubtotal + taxAmount ); } @@ -557,28 +600,39 @@ export const Cart = class Cart { recurringSubtotal = Math.round( recurringSubtotal - discount ); } - const taxRates = this.getTaxRates(); - const taxRate = this.getTaxPercent( 'inclusive' ) / 100; - - const inclusiveTaxAmount = Math.round( - recurringSubtotal - recurringSubtotal / ( 1 + taxRate ) - ); - - const postInclusiveTaxAmount = Math.round( - recurringSubtotal - inclusiveTaxAmount - ); - const taxAmount = taxRates.reduce( - ( tax, { percentage, calculation } ) => { - if ( 'inclusive' === calculation ) { - return tax; - } - - return ( tax += Math.round( - postInclusiveTaxAmount * ( percentage / 100 ) - ) ); - }, - 0 - ); + let taxAmount = 0; + + if ( 'automatic' !== this.taxStatus && 'none' !== this.taxStatus ) { + const taxRates = this.getTaxRates(); + const taxRate = this.getTaxPercent( 'inclusive' ) / 100; + + const inclusiveTaxAmount = Math.round( + recurringSubtotal - recurringSubtotal / ( 1 + taxRate ) + ); + + const postInclusiveTaxAmount = Math.round( + recurringSubtotal - inclusiveTaxAmount + ); + + taxAmount = taxRates.reduce( + ( tax, { percentage, calculation } ) => { + if ( 'inclusive' === calculation ) { + return tax; + } + + return ( tax += Math.round( + postInclusiveTaxAmount * ( percentage / 100 ) + ) ); + }, + 0 + ); + } else if ( + 'automatic' === this.taxStatus && + 'exclusive' === this.taxBehavior && + this.automaticTax + ) { + taxAmount = this.automaticTax.upcomingInvoice?.amount_tax || 0; + } return Math.round( recurringSubtotal + taxAmount ); } diff --git a/includes/core/assets/js/packages/cart/src/line-item.js b/includes/core/assets/js/packages/cart/src/line-item.js index b65ada1c..908e6c77 100644 --- a/includes/core/assets/js/packages/cart/src/line-item.js +++ b/includes/core/assets/js/packages/cart/src/line-item.js @@ -261,6 +261,13 @@ export const LineItem = class LineItem { * @return {number} Cart line item tax. */ getTax() { + if ( + 'automatic' === this.cart.taxStatus || + 'none' === this.cart.taxStatus + ) { + return 0; + } + const taxableAmount = this.getTaxableAmount(); const taxPercent = this.cart.getTaxPercent( 'exclusive' ); @@ -292,7 +299,11 @@ export const LineItem = class LineItem { return false; } - return price.recurring && price.recurring.trial_period_days; + return ( + false !== this.subscription && + price.recurring && + price.recurring.trial_period_days + ); } }; diff --git a/includes/core/assets/js/packages/payment-forms/src/utils.js b/includes/core/assets/js/packages/payment-forms/src/utils.js index 064eb13c..891ef192 100644 --- a/includes/core/assets/js/packages/payment-forms/src/utils.js +++ b/includes/core/assets/js/packages/payment-forms/src/utils.js @@ -9,7 +9,7 @@ */ export function __unstableUpdatePaymentFormCart( paymentForm, cart ) { const { - state: { price, taxRates }, + state: { price, taxRates, taxStatus }, } = paymentForm; // Create a cart from the default price. @@ -23,6 +23,7 @@ export function __unstableUpdatePaymentFormCart( paymentForm, cart ) { cart.update( { currency, taxRates, + taxStatus, } ); cart.addLineItem( { diff --git a/includes/core/assets/js/packages/utils/src/upgrade-modal.js b/includes/core/assets/js/packages/utils/src/upgrade-modal.js index 9f7e3165..1da5f01b 100644 --- a/includes/core/assets/js/packages/utils/src/upgrade-modal.js +++ b/includes/core/assets/js/packages/utils/src/upgrade-modal.js @@ -76,8 +76,7 @@ export function maybeBlockButtonWithUpgradeModal( e ) { * * @since 4.4.7 * - * @param {Event} e Click event. - * @param {HTMLElement} e.target Button being pressed. + * @param {Event} e Change event. */ export function maybeBlockSelectWithUpgradeModal( e ) { const { target } = e; diff --git a/includes/core/assets/js/simpay-admin-notices.min.js b/includes/core/assets/js/simpay-admin-notices.min.js index 1542bcb0..397ef02d 100644 --- a/includes/core/assets/js/simpay-admin-notices.min.js +++ b/includes/core/assets/js/simpay-admin-notices.min.js @@ -1 +1 @@ -!function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=344)}({14:function(t,e){t.exports=jQuery},344:function(t,e,n){"use strict";n.r(e),function(t){var e=n(5);Object(e.a)((function(){var e;document.querySelectorAll(".simpay-admin-notice-five-star-rating").forEach((function(t){var e=t.querySelectorAll("[data-navigate]");e&&e.forEach((function(t){t.addEventListener("click",(function(t){var e=t.target.dataset.navigate,n=document.querySelector('.simpay-admin-notice-five-star-rating[data-step="'.concat(e,'"]')),o=document.querySelectorAll('.simpay-admin-notice-five-star-rating:not([data-step="'.concat(e,'"])'));n&&(n.style.display="block"),o.length>0&&o.forEach((function(t){t.style.display="none"}))}))}))})),(e=document.querySelector('#adminmenu a[href^="https://wpsimplepay.com/lite-vs-pro"]'))&&e.setAttribute("target","_blank"),t(".simpay-notice").each((function(){var e=t(this),n=e.data("id"),o=e.data("nonce"),i=e.data("lifespan");e.on("click",".notice-dismiss, .simpay-notice-dismiss",(function(){wp.ajax.send("simpay_dismiss_admin_notice",{data:{notice_id:n,nonce:o,lifespan:i},success:function(){e.slideUp("fast");var t=userSettings.uid,o=void 0===t?0:t,i="simpay-notice-".concat(n,"-seen-").concat(o);window.localStorage.removeItem(i)}})}))}));var n=t(".simpay-admin-notice-top-of-page");if(n.length>0){var o=n.detach();t("#wpbody-content").prepend(o);var i=userSettings.uid,a=void 0===i?0:i,r=o.data("id"),c="simpay-notice-".concat(r,"-seen-").concat(a);window.localStorage.getItem(c)?o.show():setTimeout((function(){window.localStorage.setItem(c,!0),n.slideDown()}),1500)}}))}.call(this,n(14))},5:function(t,e,n){"use strict";function o(t){"complete"!==document.readyState&&"interactive"!==document.readyState?document.addEventListener("DOMContentLoaded",t):t()}n.d(e,"a",(function(){return o}))}}); \ No newline at end of file +!function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=346)}({16:function(t,e){t.exports=jQuery},3:function(t,e,n){"use strict";function o(t){"complete"!==document.readyState&&"interactive"!==document.readyState?document.addEventListener("DOMContentLoaded",t):t()}n.d(e,"a",(function(){return o}))},346:function(t,e,n){"use strict";n.r(e),function(t){var e=n(3);Object(e.a)((function(){var e;document.querySelectorAll(".simpay-admin-notice-five-star-rating").forEach((function(t){var e=t.querySelectorAll("[data-navigate]");e&&e.forEach((function(t){t.addEventListener("click",(function(t){var e=t.target.dataset.navigate,n=document.querySelector('.simpay-admin-notice-five-star-rating[data-step="'.concat(e,'"]')),o=document.querySelectorAll('.simpay-admin-notice-five-star-rating:not([data-step="'.concat(e,'"])'));n&&(n.style.display="block"),o.length>0&&o.forEach((function(t){t.style.display="none"}))}))}))})),(e=document.querySelector('#adminmenu a[href^="https://wpsimplepay.com/lite-vs-pro"]'))&&e.setAttribute("target","_blank"),t(".simpay-notice").each((function(){var e=t(this),n=e.data("id"),o=e.data("nonce"),i=e.data("lifespan");e.on("click",".notice-dismiss, .simpay-notice-dismiss",(function(){wp.ajax.send("simpay_dismiss_admin_notice",{data:{notice_id:n,nonce:o,lifespan:i},success:function(){e.slideUp("fast");var t=userSettings.uid,o=void 0===t?0:t,i="simpay-notice-".concat(n,"-seen-").concat(o);window.localStorage.removeItem(i)}})}))}));var n=t(".simpay-admin-notice-top-of-page");if(n.length>0){var o=n.detach();t("#wpbody-content").prepend(o);var i=userSettings.uid,a=void 0===i?0:i,r=o.data("id"),c="simpay-notice-".concat(r,"-seen-").concat(a);window.localStorage.getItem(c)?o.show():setTimeout((function(){window.localStorage.setItem(c,!0),n.slideDown()}),1500)}}))}.call(this,n(16))}}); \ No newline at end of file diff --git a/includes/core/assets/js/simpay-admin-page-smtp.min.js b/includes/core/assets/js/simpay-admin-page-smtp.min.js index f80ca557..991464c1 100644 --- a/includes/core/assets/js/simpay-admin-page-smtp.min.js +++ b/includes/core/assets/js/simpay-admin-page-smtp.min.js @@ -1 +1 @@ -!function(t){var e={};function s(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,s),n.l=!0,n.exports}s.m=t,s.c=e,s.d=function(t,e,a){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(t,e){if(1&e&&(t=s(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)s.d(a,n,function(e){return t[e]}.bind(null,n));return a},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=345)}({14:function(t,e){t.exports=jQuery},345:function(t,e,s){"use strict";(function(t){(window.SimPaySMTP||function(t,e,s){var a={},n={init:function(){s(n.ready)},ready:function(){n.initVars(),n.events()},initVars:function(){a={$stepInstall:s("section.step-install"),$stepInstallNum:s("section.step-install .num img"),$stepSetup:s("section.step-setup"),$stepSetupNum:s("section.step-setup .num img")}},events:function(){a.$stepInstall.on("click","button",n.stepInstallClick),a.$stepSetup.on("click","button",n.gotoURL)},stepInstallClick:function(t){t.preventDefault();var i=s(this),r=i.attr("data-action"),l=i.attr("data-plugin"),p=i.text(),u="";if(!i.hasClass("disabled")){switch(r){case"activate":u="simpay_activate_plugin",i.text(simpay_smtp.activating);break;case"install":u="simpay_install_plugin",i.text(simpay_smtp.installing);break;case"goto-url":return void(e.location.href=i.attr("data-url"));default:return}i.addClass("disabled"),n.showSpinner(a.$stepInstallNum);var o={action:u,nonce:simpay_smtp.nonce,plugin:l};s.post(simpay_smtp.ajax_url,o).done((function(t){n.stepInstallDone(t,i,r)})).fail((function(){i.removeClass("disabled"),i.text(p)})).always((function(){n.hideSpinner(a.$stepInstallNum)}))}},stepInstallDone:function(t,e,s){if("install"===s?t.success&&t.data.is_activated:t.success)return a.$stepInstallNum.attr("src",a.$stepInstallNum.attr("src").replace("step-1.","step-complete.")),e.addClass("grey").removeClass("button-primary").text(simpay_smtp.activated),void n.stepInstallPluginStatus();var i="install"===s&&t.success&&!t.data.is_activated||"activate"===s,r=i?simpay_smtp.manual_activate_url:simpay_smtp.manual_install_url,l=i?simpay_smtp.error_could_not_activate:simpay_smtp.error_could_not_install,p=i?simpay_smtp.plugins_page:simpay_smtp.download_now;e.removeClass("grey disabled").text(p).attr("data-action","goto-url").attr("data-url",r),e.after('

'+l+"

")},stepInstallPluginStatus:function(){var t={action:"simpay_smtp_page_check_plugin_status",nonce:simpay_smtp.nonce};s.post(simpay_smtp.ajax_url,t).done(n.stepInstallPluginStatusDone)},stepInstallPluginStatusDone:function(t){if(t.success){if(a.$stepSetup.removeClass("grey"),a.$stepSetupBtn=a.$stepSetup.find("button"),a.$stepSetupBtn.removeClass("grey disabled").addClass("button-primary"),t.data.setup_status>0)return a.$stepSetupNum.attr("src",a.$stepSetupNum.attr("src").replace("step-2.svg","step-complete.svg")),void a.$stepSetupBtn.attr("data-url",simpay_smtp.smtp_settings_url).text(simpay_smtp.smtp_settings);a.$stepSetupBtn.attr("data-url",simpay_smtp.smtp_wizard_url).text(simpay_smtp.smtp_wizard)}},gotoURL:function(){var t=s(this);t.hasClass("disabled")||(e.location.href=t.attr("data-url"))},showSpinner:function(t){t.siblings(".loader").removeClass("hidden")},hideSpinner:function(t){t.siblings(".loader").addClass("hidden")}};return n}(document,window,t)).init()}).call(this,s(14))}}); \ No newline at end of file +!function(t){var e={};function s(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,s),n.l=!0,n.exports}s.m=t,s.c=e,s.d=function(t,e,a){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(t,e){if(1&e&&(t=s(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)s.d(a,n,function(e){return t[e]}.bind(null,n));return a},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=347)}({16:function(t,e){t.exports=jQuery},347:function(t,e,s){"use strict";(function(t){(window.SimPaySMTP||function(t,e,s){var a={},n={init:function(){s(n.ready)},ready:function(){n.initVars(),n.events()},initVars:function(){a={$stepInstall:s("section.step-install"),$stepInstallNum:s("section.step-install .num img"),$stepSetup:s("section.step-setup"),$stepSetupNum:s("section.step-setup .num img")}},events:function(){a.$stepInstall.on("click","button",n.stepInstallClick),a.$stepSetup.on("click","button",n.gotoURL)},stepInstallClick:function(t){t.preventDefault();var i=s(this),r=i.attr("data-action"),l=i.attr("data-plugin"),p=i.text(),u="";if(!i.hasClass("disabled")){switch(r){case"activate":u="simpay_activate_plugin",i.text(simpay_smtp.activating);break;case"install":u="simpay_install_plugin",i.text(simpay_smtp.installing);break;case"goto-url":return void(e.location.href=i.attr("data-url"));default:return}i.addClass("disabled"),n.showSpinner(a.$stepInstallNum);var o={action:u,nonce:simpay_smtp.nonce,plugin:l};s.post(simpay_smtp.ajax_url,o).done((function(t){n.stepInstallDone(t,i,r)})).fail((function(){i.removeClass("disabled"),i.text(p)})).always((function(){n.hideSpinner(a.$stepInstallNum)}))}},stepInstallDone:function(t,e,s){if("install"===s?t.success&&t.data.is_activated:t.success)return a.$stepInstallNum.attr("src",a.$stepInstallNum.attr("src").replace("step-1.","step-complete.")),e.addClass("grey").removeClass("button-primary").text(simpay_smtp.activated),void n.stepInstallPluginStatus();var i="install"===s&&t.success&&!t.data.is_activated||"activate"===s,r=i?simpay_smtp.manual_activate_url:simpay_smtp.manual_install_url,l=i?simpay_smtp.error_could_not_activate:simpay_smtp.error_could_not_install,p=i?simpay_smtp.plugins_page:simpay_smtp.download_now;e.removeClass("grey disabled").text(p).attr("data-action","goto-url").attr("data-url",r),e.after('

'+l+"

")},stepInstallPluginStatus:function(){var t={action:"simpay_smtp_page_check_plugin_status",nonce:simpay_smtp.nonce};s.post(simpay_smtp.ajax_url,t).done(n.stepInstallPluginStatusDone)},stepInstallPluginStatusDone:function(t){if(t.success){if(a.$stepSetup.removeClass("grey"),a.$stepSetupBtn=a.$stepSetup.find("button"),a.$stepSetupBtn.removeClass("grey disabled").addClass("button-primary"),t.data.setup_status>0)return a.$stepSetupNum.attr("src",a.$stepSetupNum.attr("src").replace("step-2.svg","step-complete.svg")),void a.$stepSetupBtn.attr("data-url",simpay_smtp.smtp_settings_url).text(simpay_smtp.smtp_settings);a.$stepSetupBtn.attr("data-url",simpay_smtp.smtp_wizard_url).text(simpay_smtp.smtp_wizard)}},gotoURL:function(){var t=s(this);t.hasClass("disabled")||(e.location.href=t.attr("data-url"))},showSpinner:function(t){t.siblings(".loader").removeClass("hidden")},hideSpinner:function(t){t.siblings(".loader").addClass("hidden")}};return n}(document,window,t)).init()}).call(this,s(16))}}); \ No newline at end of file diff --git a/includes/core/assets/js/simpay-admin.min.js b/includes/core/assets/js/simpay-admin.min.js index eae91959..275bdd43 100644 --- a/includes/core/assets/js/simpay-admin.min.js +++ b/includes/core/assets/js/simpay-admin.min.js @@ -1 +1 @@ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=334)}({108:function(e,t,n){var r=n(65);e.exports=function(e){if(Array.isArray(e))return r(e)},e.exports.__esModule=!0,e.exports.default=e.exports},109:function(e,t){e.exports=function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)},e.exports.__esModule=!0,e.exports.default=e.exports},110:function(e,t,n){var r=n(65);e.exports=function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}},e.exports.__esModule=!0,e.exports.default=e.exports},111:function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},14:function(e,t){e.exports=jQuery},145:function(e,t){Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},Number.isSafeInteger=Number.isSafeInteger||function(e){return Number.isInteger(e)&&Math.abs(e)<=Number.MAX_SAFE_INTEGER},Number.MAX_SAFE_INTEGER||(Number.MAX_SAFE_INTEGER=9007199254740991)},146:function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return c})),n.d(t,"a",(function(){return s})),n.d(t,"c",(function(){return l})),n.d(t,"d",(function(){return u}));var r=n(6),a=n.n(r);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};e(".simpay-upgrade-modal").dialog(i({position:{my:"center",at:"center",of:window},modal:!0,width:600,resizable:!1,draggable:!1,open:function(){var t=e(this);t.parent().find(".ui-dialog-titlebar").css({borderBottom:0}),t.find(".simpay-upgrade-modal__title").html(n),t.find(".simpay-upgrade-modal__description").html(r),t.find(".simpay-upgrade-modal__upgrade-url").attr("href",a),t.find(".simpay-upgrade-modal__upgrade-purchased-url").attr("href",o)}},c))}}).call(this,n(14))},147:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(5);function a(e,t){var n=document.getElementById("simpay-test-mode-toggle-notice");if(n)if(e!==t){var r=document.getElementById("simpay-toggle-notice-status"),a=document.getElementById("simpay-toggle-notice-status-link");n.style.display="block",r&&a&&(r.innerHTML=""+r.dataset[e]+"",a.href=a.dataset[e])}else n.style.display="none"}function o(){var t=document.querySelectorAll(".simpay-disconnect-link");if(t){var n=simpayAdmin.i18n,r=n.disconnectConfirm,a=n.disconnectCancel;t.forEach((function(t){t.addEventListener("click",(function(n){n.preventDefault(),e(".simpay-disconnect-confirm").dialog({resizable:!1,height:"auto",width:400,modal:!0,draggable:!1,open:function(){e(".ui-dialog-buttonset .ui-button").removeClass("ui-button").last().css({marginLeft:"10px"}).focus()},buttons:[{text:a,click:function(){e(this).dialog("close")},class:"button button-secondary"},{text:r,click:function(){window.location.href=t.href},class:"button button-primary"}]})}))}))}}Object(r.a)((function(){var e;(e=document.getElementById("simpay-stripe-account-info"))&&wp.ajax.send("simpay_stripe_connect_account_information",{data:{nonce:e.dataset.nonce},success:function(t){e.querySelector("p").innerHTML=t.message,e.style.display="block","simpay-stripe-activated-account-actions"===t.actions?e.classList.add("notice-info"):e.classList.add("notice-warning");var n=document.getElementById(t.actions);n&&(n.style.display="block"),o()},error:function(t){e.querySelector("p").innerHTML=t.message,e.style.display="block",e.classList.add("notice-error");var n=document.getElementById(t.actions);n&&(n.style.display="block",o())}})}))}).call(this,n(14))},15:function(e,t,n){"use strict";var r=n(145);n.o(r,"maybeBlockButtonWithUpgradeModal")&&n.d(t,"maybeBlockButtonWithUpgradeModal",(function(){return r.maybeBlockButtonWithUpgradeModal})),n.o(r,"maybeBlockCheckboxWithUpgradeModal")&&n.d(t,"maybeBlockCheckboxWithUpgradeModal",(function(){return r.maybeBlockCheckboxWithUpgradeModal})),n.o(r,"maybeBlockSelectWithUpgradeModal")&&n.d(t,"maybeBlockSelectWithUpgradeModal",(function(){return r.maybeBlockSelectWithUpgradeModal})),n.o(r,"upgradeModal")&&n.d(t,"upgradeModal",(function(){return r.upgradeModal})),n(25);var a=n(146);n.d(t,"maybeBlockButtonWithUpgradeModal",(function(){return a.a})),n.d(t,"maybeBlockCheckboxWithUpgradeModal",(function(){return a.b})),n.d(t,"maybeBlockSelectWithUpgradeModal",(function(){return a.c})),n.d(t,"upgradeModal",(function(){return a.d}))},17:function(e,t){function n(t){return e.exports=n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,n(t)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports},20:function(e,t,n){e.exports=n(64)},24:function(e,t,n){"use strict";n.d(t,"a",(function(){return h})),n.d(t,"c",(function(){return v}));var r=function(e){return"string"!=typeof e||""===e?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(e)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)},a=function(e){return"string"!=typeof e||""===e?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(e)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(e)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)},o=function(e){return function(t,n,o){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;if(a(t)&&r(n))if("function"==typeof o)if("number"==typeof i){var c={callback:o,priority:i,namespace:n};if(e[t]){var s,l=e[t].handlers;for(s=l.length;s>0&&!(i>=l[s-1].priority);s--);s===l.length?l[s]=c:l.splice(s,0,c),(e.__current||[]).forEach((function(e){e.name===t&&e.currentIndex>=s&&e.currentIndex++}))}else e[t]={handlers:[c],runs:0};"hookAdded"!==t&&y("hookAdded",t,n,o,i)}else console.error("If specified, the hook priority must be a number.");else console.error("The hook callback must be a function.")}},i=function(e,t){return function(n,o){if(a(n)&&(t||r(o))){if(!e[n])return 0;var i=0;if(t)i=e[n].handlers.length,e[n]={runs:e[n].runs,handlers:[]};else for(var c=e[n].handlers,s=function(t){c[t].namespace===o&&(c.splice(t,1),i++,(e.__current||[]).forEach((function(e){e.name===n&&e.currentIndex>=t&&e.currentIndex--})))},l=c.length-1;l>=0;l--)s(l);return"hookRemoved"!==n&&y("hookRemoved",n,o),i}}},c=function(e){return function(t,n){return void 0!==n?t in e&&e[t].handlers.some((function(e){return e.namespace===n})):t in e}},s=function(e,t){return function(n){e[n]||(e[n]={handlers:[],runs:0}),e[n].runs++;for(var r=e[n].handlers,a=arguments.length,o=new Array(a>1?a-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.state,a=t.__unstableLegacyFormData;return Object(s.a)("v2/customer",y({form_values:p()(t[0],{hash:!0}),form_data:JSON.stringify(y(y({},a),r)),form_id:n},e))}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function v(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.state,a=t.__unstableLegacyFormData;return Object(s.a)("v2/paymentintent/create",v({form_values:p()(t[0],{hash:!0}),form_data:JSON.stringify(v(v({},a),r)),form_id:n},e))}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.state,a=t.__unstableLegacyFormData;return Object(s.a)("v2/checkout-session",_({form_values:p()(t[0],{hash:!0}),form_data:JSON.stringify(_(_({},a),r)),form_id:n},e))}function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function O(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.state;return Object(s.a)("v2/setupintent/create",O({form_values:p()(t[0],{hash:!0}),form_data:JSON.stringify(r),form_id:n},e))}function x(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function E(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.state,a=t.__unstableLegacyFormData;return Object(s.a)("v2/subscription",E({form_values:p()(t[0],{hash:!0}),form_data:JSON.stringify(E(E({},a),r)),form_id:n},e))}function L(e,t,n,r,a){return Object(s.a)("v2/subscription/payment_method/".concat(n,"/").concat(e),{customer_nonce:t,form_values:a,form_id:r})}},334:function(e,t,n){"use strict";n.r(t),function(e){var t=n(24),r=(n(335),n(336),n(337),n(147));n(338),n(356),n(342),n(343),window.wpsp=window.wpsp||{hooks:t.b};var a,o,i,c={};c={init:function(){o=a(document.body),i=o.find("#simpay-form-settings"),this.handleMetaboxTabClick(),window.postboxes&&window.postboxes.handle_click&&i.on("click",".postbox .simpay-hndle, .postbox .simpay-handlediv",window.postboxes.handle_click),["_amount_type","_success_redirect_type","_subscription_type","_subscription_custom_amount","_form_type","_enable_payment_page",".simpay-total-amount-label-recurring",".simpay-total-amount-label-tax",".simpay-shipping-address",".simpay-text-multiline",".simpay-dropdown-type",".simpay-radio-type",".simpay-price-enable-custom",".simpay-price-type input"].forEach((function(e){var t=a(e),n=!1;"."!==e.substring(0,1)?t='[name="'.concat(e,'"]'):(t=e,n=!0),a("#simpay-form-settings").on("change",t,(function(){var t=a("#simpay-form-settings");!0===n&&(t=a(this).closest(".simpay-field-data"));var r=a(this).val();a(this).is(":checkbox")&&(r=a(this).is(":checked")?"yes":"no"),t.find(a('.simpay-show-if[data-if="'.concat(e,'"]'))).each((function(){var e=a(this),t=e.data("is");e.hide(),t.includes(r)&&e.show().css("display","block")}))})),a(t).filter(":checked").trigger("change"),a(t).is("select")&&a(t).trigger("change")})),t.b.addAction("settings.toggleTestMode","wpsp/settings/stripe-connect",r.a),i.on("click.simpayTabLink",".simpay-tab-link",(function(e){e.preventDefault(),c.handleInternalLinkToTabClicks(a(this))})),i.on("click.simpayImagePreview",".simpay-remove-image-preview",(function(e){c.handleRemoveImagePreviewClick(e)})),this.setupChosen(),this.addMediaFields(),this.stripeConnect();var e=a(".simpay-payment-modes");e.length&&e.find("input").each((function(){var t=a(this);e.hasClass("simpay-payment-mode--"+t.val())||t.attr("disabled",!0)})),o.trigger("simpayAdminInit")},handleRemoveImagePreviewClick:function(e){e.preventDefault(),a(e.target).parents("td").find(".simpay-image-preview-wrap").val("").hide(),a(e.target).parents("td").find(".simpay-field-image-url").val(""),a(e.target).parents("td").find(".simpay-remove-image-preview").hide()},addMediaFields:function(){a(".simpay-media-uploader").on("click",(function(e){e.preventDefault();var t=wp.media.frames.file_frame=wp.media({title:spGeneral.i18n.mediaTitle,button:{text:spGeneral.i18n.mediaButtonText},multiple:!1}),n=a(this);t.on("select",(function(){var e=t.state().get("selection").first().toJSON(),r=n.parents("td").find(".simpay-field-image-url"),a="id"===r.data("fvalue")?e.id:e.url;n.parents("td").find(".simpay-image-preview-wrap").show(),n.parents("td").find(".simpay-remove-image-preview").show(),n.parents("td").find(".simpay-image-preview").prop("src",a),r.val(a)})),t.open()}))},setupChosen:function(){var e=a(".simpay-chosen-select, .simpay-chosen-search");e.chosen({disable_search_threshold:20}),e.chosen()},handleMetaboxTabClick:function(){var e=a("ul.simpay-tabs a"),t=a("div.simpay-panel"),n=e.parents("li");e.on("click",(function(e){e.preventDefault();var r=a(this).parent(),o=a(a(this).attr("href")),i=a(this).attr("href");history.pushState(null,null,i),setTimeout((function(){window.scrollTo(0,0)}),1),a('[name="simpay_form_settings_tab"]').val(i),a(".simpay-panels > .spinner").hide(),n.removeClass("active"),r.addClass("active"),t.addClass("simpay-panel-hidden"),o.removeClass("simpay-panel-hidden")}));var r="#form-display-options-settings-panel";location.hash.length&&(r=location.hash);var o=a('ul.simpay-tabs a[href="'+r+'"]');a('[name="simpay_form_settings_tab"]').val(r),o.length&&o.click()},stripeConnect:function(){var e="tr:nth-child(2), tr:nth-child(3), tr:nth-child(4), tr:nth-child(5)";a(".simpay-settings.stripe-account .form-table").find(e).hide(),a("#wpsp-api-keys-row-reveal button").on("click",(function(t){t.preventDefault(),a(".simpay-settings.stripe-account .form-table").find(e).show(),a("#wpsp-api-keys-row-hide").show(),a(this).parent().hide(),a(".wpsp-manual-key-warning").show()})),a("#wpsp-api-keys-row-hide button").on("click",(function(t){t.preventDefault(),a(".simpay-settings.stripe-account .form-table").find(e).hide(),a("#wpsp-api-keys-row-reveal").show(),a(this).parent().hide(),a(".wpsp-manual-key-warning").hide()}))},handleInternalLinkToTabClicks:function(e){var t=e.data("show-tab");o.find("."+t+"-tab a").click()}},(a=e)(document).ready((function(e){c.init()}))}.call(this,n(14))},335:function(e,t,n){"use strict";var r=n(5),a=simpayAdminSettingToggles||[];function o(e){var t=e.id,n=(e.value,e.toggles,document.querySelector(".simpay-settings-".concat(t)));if(!n)return{};var r=n.querySelector("input");r||(r=n.querySelector("select"));var a=r.value;return"checkbox"===r.type&&(a=!0===r.checked?"yes":"no"),{setting:r,currentValue:a}}function i(e){var t=e.id,n=e.value,r=e.toggles,c=o(e),s=(c.setting,c.currentValue);"none"!==document.querySelector(".simpay-settings-".concat(t)).style.display&&(r.map((function(e){return document.querySelector(".simpay-settings-".concat(e))})).forEach((function(e){e&&(e.style.display=s===n?"table-row":"none")})),r.forEach((function(e){var t=_.find(a,{id:e});t&&i(t)})))}Object(r.a)((function(){a.forEach((function(e){i(e),o(e).setting.addEventListener("change",(function(){return i(e)}))}))}))},336:function(e,t,n){"use strict";var r=n(5);Object(r.a)((function(){var e=window.wpsp.hooks,t=document.querySelectorAll('[name="simpay_settings[test_mode]"]');if(0!==t.length){var n="enabled"===document.querySelector('[name="simpay_settings[test_mode]"]:checked').value?"test":"live";e.doAction("settings.toggleTestMode",n,n),_.each(t,(function(t){return t.addEventListener("change",(function(t){var r="enabled"===t.target.value?"test":"live";e.doAction("settings.toggleTestMode",r,n)}))}))}}))},337:function(e,t,n){"use strict";var r=n(5);function a(e){var t=document.getElementById("simpay-connect-license-feedback"),n=document.getElementById("simpay-connect-license-submit");e.message?(t.innerText=e.message,t.classList.remove("simpay-license-message--valid"),t.classList.add("simpay-license-message--invalid"),t.style.display="block"):t.style.display="none",e.reload?setTimeout((function(){window.location.reload()}),2e3):(n.disabled=!1,n.innerText=n.dataset.connect)}function o(e){var t=document.getElementById("simpay-connect-license-feedback");e.message?(t.innerText=e.message,t.classList.remove("simpay-license-message--invalid"),t.classList.add("simpay-license-message--valid"),t.style.display="block"):t.style.display="none",e.reload?setTimeout((function(){window.location.reload()}),2e3):window.location=e.url}function i(){var e=document.getElementById("simpay-connect-license-key"),t=document.getElementById("simpay-connect-license-nonce"),n=document.getElementById("simpay-connect-license-submit");n.disabled=!0,n.innerText=n.dataset.connecting,wp.ajax.send("simpay_get_connect_url",{data:{nonce:t.value,key:e.value},success:o,error:a})}Object(r.a)((function(){var e=document.getElementById("simpay-connect-license-key");if(e){var t=document.getElementById("simpay-connect-license-submit");e.addEventListener("keypress",(function(e){"Enter"===e.key&&(e.preventDefault(),i())})),t.addEventListener("click",(function(e){e.preventDefault(),t.disabled=!0,i()}))}}))},338:function(e,t,n){"use strict";var r=n(5);Object(r.a)((function(){var e=document.querySelector(".simpay-recaptcha-feedback");if(e){var t=simpayGoogleRecaptcha,n=t.siteKey,r=t.i18n;""!==n&&grecaptcha.ready((function(){var e=document.querySelector(".grecaptcha-badge");e&&(e.style.display="none");try{grecaptcha.execute(n,{action:"simple_pay_admin_test"}).then((function(e){wp.ajax.send("simpay_validate_recaptcha_source",{data:{token:e,recaptcha_action:"simple_pay_admin_test"},error:a})})).catch(a)}catch(e){a()}}))}function a(){e.style.display="block",e.classList.add("notice-error"),e.querySelector("p").innerText=r.invalid}}))},339:function(e,t,n){"use strict";(function(e){var t=n(9),r=n.n(t),a=n(5),o=n(15);Object(a.a)((function(){var t,n,a,i=document.querySelector(".post-type-simple-pay #post");if(i){var c=r()(i,{hash:!0});delete c.simpay_form_settings_tab,function(t){function n(e){var n=r()(document.querySelector(".post-type-simple-pay form#post"),{hash:!0});if(delete n.simpay_form_settings_tab,delete n.simpay_save_preview,JSON.stringify(n)!==t)return e.preventDefault(),simpayAdmin.i18n.leavePageConfirm}window.addEventListener("beforeunload",n),window.onbeforeunload=n,e(".post-type-simple-pay form#post").off("submit").on("submit",(function(){window.removeEventListener("beforeunload",n),window.onbeforeunload=null}))}(JSON.stringify(c)),n=document.getElementById("form-type-select"),a=document.getElementById("is-overlay"),n.addEventListener("change",(function(e){var t=e.target,n=t.options[t.selectedIndex],r=n.value;"on-site"===r&&Object(o.maybeBlockSelectWithUpgradeModal)(e),"off-site"===r&&(a.querySelector("input").checked=!1),a.style.display="yes"===n.dataset.available&&"on-site"===r?"block":"none"})),function(){var e=document.querySelector(".simpay-recaptcha-payment-form-feedback");if(e){var t=document.querySelector(".simpay-recaptcha-payment-form-description"),n=simpayGoogleRecaptcha,r=n.siteKey,a=n.i18n;if(t.style.display="none",""===r)return o();grecaptcha.ready((function(){var e=document.querySelector(".grecaptcha-badge");e&&(e.style.display="none");try{grecaptcha.execute(r,{action:"simple_pay_admin_test"}).then((function(e){wp.ajax.send("simpay_validate_recaptcha_source",{data:{token:e,recaptcha_action:"simple_pay_admin_test"},success:i,error:o})})).catch(o)}catch(e){o()}}))}function o(){e.style.color="#b32d2e",e.style.display="inline",e.innerHTML=a.disabled,t.style.display="inline-block"}function i(){e.style.color="green",e.style.display="inline",e.innerHTML=a.enabled,t.style.display="inline-block"}}(),(t=document.querySelector("#_company_name"))&&(t.addEventListener("blur",(function(){0===t.value.length?(t.nextElementSibling.classList.remove("hidden"),t.value=simpayAdmin.siteTitle):t.nextElementSibling.classList.add("hidden")})),t.addEventListener("focus",(function(){0!==t.value.length&&t.nextElementSibling.classList.add("hidden")})))}}))}).call(this,n(14))},340:function(e,t,n){"use strict";(function(e,t){var r=n(37),a=n.n(r),o=n(5),i=n(15);function c(){var e=document.getElementById("simpay-prices");if(e){var t=e.querySelectorAll(".simpay-price").length;document.querySelectorAll(".simpay-price-label-default").forEach((function(e){return e.style.display=t>1?"none":"block"})),document.querySelectorAll(".simpay-price-label-display").forEach((function(e){return e.style.display=t>1?"block":"none"})),document.querySelectorAll(".simpay-price-option-label").forEach((function(e){return e.style.display=t>1?"block":"none"})),document.querySelectorAll(".simpay-price-default-check").forEach((function(e){return e.style.display=t>1?"block":"none"}));var n=document.querySelectorAll(".simpay-panel-field-price-select");if(n.length>0){n.forEach((function(e){return e.style.display=t>1?"table-row":"none"}));var r=document.querySelector(".simpay-panel-field-price-select-notice");r&&(r.style.display=1===t?"table-row":"none")}}}function s(e){var t=e.querySelector(".simpay-price-label-display"),n=e.querySelector(".simpay-price-label"),r=spGeneral.strings,a=r.recurringIntervalDisplay,o=r.customAmountLabel;if(""!==n.value)t.innerHTML=n.value;else{var i,c=e.querySelector(".simpay-price-currency"),s=e.querySelector(".simpay-price-amount"),l=e.querySelector(".simpay-price-amount-type"),u=e.querySelector(".simpay-price-custom-amount input"),d=e.querySelector(".simpay-price-enable-custom-amount"),p=spGeneral.strings,f=p.currencyPosition,y=p.recurringIntervals,m=c.options[c.selectedIndex].dataset.symbol;switch(i=!0===d.checked?u.value:s.value,f){case"left":i="".concat(m).concat(i);break;case"left_space":i="".concat(m," ").concat(i);break;case"right":i="".concat(i).concat(m);break;case"right_space":i="".concat(i," ").concat(m)}if(!0===d.checked&&(i=o.replace("%s",i)),"recurring"===l.value){var h=e.querySelector(".simpay-price-recurring-interval"),v=e.querySelector(".simpay-price-recurring-interval-count"),g=y[h.options[h.selectedIndex].value];i=a.replace("%1$s",i).replace("%2$s",v.value).replace("%3$s","1"===v.value?g[0]:g[1])}t.innerHTML=i}}function l(e,t){e.querySelector(".simpay-price-recurring-settings").style.display=t.checked?"table":"none"}function u(e){var t=e.querySelector(".simpay-price-recurring-interval"),n=e.querySelector(".simpay-price-recurring-interval-count"),r=parseInt(n.value);switch(t.options[t.selectedIndex].value){case"day":r>365&&(n.value=365);break;case"week":r>52&&(n.value=52);break;case"month":r>12&&(n.value=12);break;case"year":r>1&&(n.value=1)}var o=JSON.parse(t.dataset.intervals);a()(t.options).forEach((function(e,r){var a=e.value;t.options[r].text=1===parseInt(n.value)?o[a][0]:o[a][1]}))}function d(){var e=document.querySelectorAll(".simpay-price");_.each(e,(function(e){var t=e.querySelector(".simpay-price-amount-type").value;e.querySelector(".simpay-price-label").addEventListener("keyup",(function(){return s(e)})),s(e),e.querySelector(".simpay-price-currency").addEventListener("change",(function(){!function(e){var t=e.querySelector(".simpay-price-currency"),n=t.options[t.selectedIndex].dataset.symbol,r=e.querySelectorAll(".simpay-price-currency-symbol");_.each(r,(function(e){return e.innerText=n}))}(e),s(e)}));var n=e.querySelectorAll(".simpay-price-amount-type .button");n.length>0&&_.each(n,(function(t){return t.addEventListener("click",(function(t){t.preventDefault();var n=t.target.dataset,r=n.available,a=n.upgradeTitle,o=n.upgradeDescription,c=n.upgradeUrl,l=n.upgradePurchasedUrl;"no"===r?Object(i.upgradeModal)({title:a,description:o,url:c,purchasedUrl:l}):(function(e,t){var n=e.querySelectorAll(".simpay-price-amount-type .button");_.each(n,(function(e){return e.classList.remove("button-primary")}));var r=t.dataset.amountType,a=e.querySelector(".simpay-price-recurring-settings");t.classList.add("button-primary"),a.style.display="recurring"===r?"table":"none";var o=e.querySelector(".simpay-price-recurring-amount-toggle"),i=e.querySelector(".simpay-price-enable-optional-subscription");o.style.display="recurring"===r?"none":"block",i.checked=!1,e.querySelector(".simpay-price-amount-type").value=r}(e,t.target),s(e))}))})),e.querySelector(".simpay-price-amount").addEventListener("keyup",(function(){return s(e)}));var r=e.querySelector(".simpay-price-enable-optional-subscription");r&&(r.addEventListener("click",(function(t){var n=t.target,r=n.dataset,a=r.available,o=r.upgradeTitle,c=r.upgradeDescription,u=r.upgradeUrl,d=r.upgradePurchasedUrl;"no"===a?(n.checked=!1,t.preventDefault(),Object(i.upgradeModal)({title:o,description:c,url:u,purchasedUrl:d})):(l(e,n),s(e))})),"recurring"!==t&&l(e,r)),e.querySelector(".simpay-price-enable-custom-amount").addEventListener("click",(function(){!function(e){var t=e.querySelector(".simpay-price-custom-amount");t.style.display="none"===t.style.display?"block":"none"}(e),s(e)})),e.querySelector(".simpay-price-recurring-interval").addEventListener("change",(function(){s(e),u(e)}));var a=e.querySelector(".simpay-price-recurring-interval-count");u(e),a.addEventListener("keyup",(function(){u(e),s(e)})),a.addEventListener("change",(function(){u(e),s(e)}));var o=e.querySelector(".simpay-price-legacy-setting-toggle");o&&o.addEventListener("click",(function(t){t.preventDefault(),function(e){var t=e.querySelectorAll(".simpay-price-legacy-setting");_.each(t,(function(e){return e.style.display="block"===e.style.display?"none":"block"}))}(e)})),e.querySelector(".simpay-price-default").addEventListener("change",(function(){return function(e){var t=document.querySelectorAll(".simpay-price-default");_.each(t,(function(e){return e.checked=!1})),e.querySelector(".simpay-price-default").checked=!0}(e)})),e.querySelector(".simpay-price-remove").addEventListener("click",(function(t){t.preventDefault(),function(e){e.remove(),p(),c()}(e)}))})),c()}function p(){var e=document.querySelectorAll(".simpay-price");document.querySelector(".simpay-price-default:checked")||(e[0].querySelector(".simpay-price-default").checked=!0)}Object(o.a)((function(){var n,r,a,o,s,l,u;t(".simpay-prices").sortable({items:".simpay-field-metabox",containment:"#simpay-prices",handle:".simpay-hndle",placeholder:"sortable-placeholder",cursor:"move",delay:t(document.body).hasClass("mobile")?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,opacity:.65,helper:function(e,t){return t.clone().find(":input").attr("name",(function(e,t){return"sort_"+parseInt(1e5*Math.random(),10).toString()+"_"+t})).end()}}),d(),n=document.getElementById("simpay-prices-advanced-toggle"),r=document.getElementById("simpay-prices-advanced"),n&&r&&n.addEventListener("click",(function(e){e.preventDefault(),r.style.display="block"==r.style.display?"none":"block"})),(u=document.getElementById("simpay-prices-advanced-add"))&&u.addEventListener("click",(function(t){var n,r,a,o,i,s;t.preventDefault(),a=(r=(n=u).dataset).nonce,o=r.formId,i=document.getElementById("simpay-prices"),s=document.getElementById("simpay-prices-advanced-plan-id"),n.classList.add("disabled"),wp.ajax.send("simpay_add_plan",{data:{_wpnonce:a,form_id:o,plan_id:s.value},success:function(t){e(i).append(t),d(),document.getElementById("simpay-prices-advanced").style.display="none",s.value="",n.classList.remove("disabled"),c()},error:function(e){var t=e.message;alert(t),n.classList.remove("disabled")}})})),function(){var t=document.getElementById("simpay-add-price");t&&t.addEventListener("click",(function(n){var r,a,o,i,s;n.preventDefault(),o=(a=(r=t).dataset).nonce,i=a.formId,s=document.getElementById("simpay-prices"),r.classList.add("disabled"),wp.ajax.send("simpay_add_price",{data:{_wpnonce:o,form_id:i},success:function(t){e(s).append(t),d(),p(),r.classList.remove("disabled"),c()},error:function(e){var t=e.message;alert(t),r.classList.remove("disabled")}})}))}(),(a=document.getElementById("simpay-add-price-lite"))&&a.addEventListener("click",i.maybeBlockButtonWithUpgradeModal),(o=document.getElementById("simpay-amount-type-lite"))&&o.addEventListener("click",i.maybeBlockButtonWithUpgradeModal),(s=document.getElementById("simpay-can-recur-lite"))&&s.addEventListener("click",i.maybeBlockButtonWithUpgradeModal),(l=document.getElementById("simpay-custom-lite"))&&l.addEventListener("click",i.maybeBlockButtonWithUpgradeModal)}))}).call(this,n(14),n(14))},341:function(e,t,n){"use strict";(function(e){var t=n(5),r=n(15);Object(t.a)((function(){var t,n,a;(t=document.querySelector('[name="_enable_payment_page"]'))&&t.addEventListener("change",r.maybeBlockCheckboxWithUpgradeModal),(n=document.querySelector('[name="_payment_page_powered_by"]'))&&n.addEventListener("change",r.maybeBlockCheckboxWithUpgradeModal),function(){if(document.getElementById("payment-page-background-color-custom")){e("#payment-page-background-color-custom").wpColorPicker();var t=document.querySelector(".simpay-payment-page-background-color .wp-color-result"),n=document.querySelectorAll(".simpay-payment-page-background-color");t.addEventListener("click",(function(t){n.forEach((function(e){e.querySelector("input").checked=!1})),t.target.classList.add("is-selected"),e(t.target).parent().find("input").prop("checked",!0)})),n.forEach((function(e){e.querySelector("input").addEventListener("change",(function(){t.classList.remove("is-selected")}))}))}}(),(a=document.querySelector('[name="_payment_page_slug"]'))&&a.addEventListener("keyup",(function(e){var t=document.querySelector(".simpay-payment-page-url");t&&(t.dataset.clipboardText="".concat(window.location.origin,"/").concat(e.target.value))}))}))}).call(this,n(14))},342:function(e,t,n){"use strict";(function(e){var t=n(17),r=n.n(t),a=n(5),o='',i='',c=simpayAdmin,s=c.nonce,l=c.ajaxUrl,u=c.i18n,d=u.addonActivated,p=u.addonActivate,f=u.addonActive,y=u.addonDeactivate,m=u.addonInactive,h=u.addonInstall,v=u.addonError,g=u.pluginError;function b(t){t.preventDefault();var n,a,c,u,b,_,w=e(t.target);if(w.hasClass("status-go-to-url"))window.open(w.attr("data-plugin"),"_blank");else{var k=w.attr("data-type");if(w.prop("disabled",!0).addClass("loading"),w.html(''),w.hasClass("status-active"))n="deactivate",a="status-installed","plugin"===k&&(a+=" button button-secondary"),c=m,u=p,b=y,"addon"===k&&(u=o+u,b=i+b);else if(w.hasClass("status-installed"))n="activate",a="status-active","plugin"===k&&(a+=" button button-secondary disabled"),c=f,u=y,"addon"===k?(u=i+u,b=o+p):"plugin"===k&&(u=d,b=p);else{if(!w.hasClass("status-missing"))return;n="install",a="status-active","plugin"===k&&(a+=" button disabled"),c=f,u=d,b='',"addon"===k&&(u=o+y,b+=h)}var O=w.closest(".simpay-addon");!function(t,n,r,a){var o={activate:"simpay_activate_addon",install:"simpay_install_addon",deactivate:"simpay_deactivate_addon"}[n];if(o){var i={action:o,nonce:s,plugin:t,type:r};e.post(l,i,a).fail((function(e){console.log(e.responseText)}))}}(w.attr("data-plugin"),n,k,(function(e){e.success?("install"===n?(w.attr("data-plugin",e.data.basename),_=e.data.msg,e.data.is_activated||(c=m,u="plugin"===k?p:o+p,a="plugin"===k?"status-installed button button-secondary":"status-installed")):_=e.data,O.find(".simpay-addon__actions").append('
'+_+"
"),O.find("span.status-label").removeClass("status-active status-installed status-missing").addClass(a).removeClass("button button-primary button-secondary disabled").text(c),w.removeClass("status-active status-installed status-missing").removeClass("button button-primary button-secondary disabled").addClass(a).html(u)):("object"===r()(e.data)?"addon"===k?O.find(".simpay-addon__actions").append('
'+v+"
"):O.find(".simpay-addon__actions").append('
'+g+"
"):O.find(".simpay-addon__actions").append('
'+e.data+"
"),"install"===n&&"plugin"===k&&w.addClass("status-go-to-url").removeClass("status-missing"),w.html(b)),w.prop("disabled",!1).removeClass("loading"),setTimeout((function(){O.find(".msg").remove()}),3e3)}))}}Object(a.a)((function(){document.querySelector(".simpay-addons")&&document.querySelectorAll(".simpay-addon").forEach((function(e){e.querySelector("button").addEventListener("click",b)}))}))}).call(this,n(14))},343:function(e,t,n){"use strict";var r=n(5);Object(r.a)((function(){var e=new ClipboardJS(".simpay-copy-button");e.on("success",(function(t){var n=t.trigger,r=n.dataset.copied,a=n.innerHTML;clearTimeout(o),n.innerHTML=r,n.classList.contains("button-secondary")&&(n.style.color="green",n.style.borderColor="green"),t.clearSelection();var o=setTimeout((function(){n.innerHTML=a,n.classList.contains("button-secondary")&&(n.style.color="",n.style.borderColor=""),e.clipboardAction.fakeElem&&e.clipboardAction.removeFake&&e.clipboardAction.removeFake()}),3e3);wp.a11y.speak(r)}))}))},356:function(e,t,n){"use strict";n(339),n(340);var r=n(37),a=n.n(r),o=n(5),i=n(15);function c(e){var t=e.target,n=t.options[t.selectedIndex].value,r=document.querySelectorAll(".simpay-panel-field-payment-method[data-payment-method]");a()(r).forEach((function(e){var t="popular"===JSON.parse(e.dataset.paymentMethod).scope?"block":"none";e.style.display="all"===n?"block":t}))}Object(o.a)((function(){var e=document.querySelectorAll(".simpay-panel-field-payment-method-filter");0!==e.length&&a()(e).forEach((function(e){e.addEventListener("change",c)}));var t=document.querySelectorAll(".simpay-payment-method-lite");t&&t.forEach((function(e){return e.addEventListener("change",i.maybeBlockCheckboxWithUpgradeModal)}))})),Object(o.a)((function(){var e;document.querySelector(".post-type-simple-pay #post")&&(e=document.getElementById("simpay-add-field-lite"))&&e.addEventListener("click",i.maybeBlockButtonWithUpgradeModal)})),Object(o.a)((function(){var e,t;(e=document.getElementById("_enable_tax_id"))&&e.addEventListener("change",i.maybeBlockCheckboxWithUpgradeModal),(t=document.getElementById("_enable_promotion_codes"))&&t.addEventListener("change",i.maybeBlockCheckboxWithUpgradeModal)})),n(341)},36:function(e,t){function n(e,t,n,r,a,o,i){try{var c=e[o](i),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,a)}e.exports=function(e){return function(){var t=this,r=arguments;return new Promise((function(a,o){var i=e.apply(t,r);function c(e){n(i,a,o,c,s,"next",e)}function s(e){n(i,a,o,c,s,"throw",e)}c(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},37:function(e,t,n){var r=n(108),a=n(109),o=n(110),i=n(111);e.exports=function(e){return r(e)||a(e)||o(e)||i()},e.exports.__esModule=!0,e.exports.default=e.exports},5:function(e,t,n){"use strict";function r(e){"complete"!==document.readyState&&"interactive"!==document.readyState?document.addEventListener("DOMContentLoaded",e):e()}n.d(t,"a",(function(){return r}))},6:function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.__esModule=!0,e.exports.default=e.exports},64:function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",i=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof d?t:d,o=Object.create(a.prototype),i=new O(r||[]);return o._invoke=function(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var c=_(i,n);if(c){if(c===u)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=l(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===u)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,i),o}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var u={};function d(){}function p(){}function f(){}var y={};c(y,a,(function(){return this}));var m=Object.getPrototypeOf,h=m&&m(m(S([])));h&&h!==t&&n.call(h,a)&&(y=h);var v=f.prototype=d.prototype=Object.create(y);function g(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(a,o){function i(){return new t((function(r,i){!function r(a,o,i,c){var s=l(e[a],e,o);if("throw"!==s.type){var u=s.arg,d=u.value;return d&&"object"==typeof d&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,i,c)}),(function(e){r("throw",e,i,c)})):t.resolve(d).then((function(e){u.value=e,i(u)}),(function(e){return r("throw",e,i,c)}))}c(s.arg)}(a,o,r,i)}))}return r=r?r.then(i,i):i()}}function _(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=l(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function S(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var c=n.call(o,"catchLoc"),s=n.call(o,"finallyLoc");if(c&&s){if(this.prev=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;k(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:S(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}},e}(e.exports);try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},65:function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1&&void 0!==arguments[1]?arguments[1]:{};e(".simpay-upgrade-modal").dialog(o({position:{my:"center",at:"center",of:window},modal:!0,width:600,resizable:!1,draggable:!1,open:function(){var t=e(this);t.parent().find(".ui-dialog-titlebar").css({borderBottom:0}),t.find(".simpay-upgrade-modal__title").html(n),t.find(".simpay-upgrade-modal__description").html(r),t.find(".simpay-upgrade-modal__upgrade-url").attr("href",a),t.find(".simpay-upgrade-modal__upgrade-purchased-url").attr("href",i)}},c))}}).call(this,n(16))},148:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return a}));var r=n(3);function a(e,t){var n=document.getElementById("simpay-test-mode-toggle-notice");if(n)if(e!==t){var r=document.getElementById("simpay-toggle-notice-status"),a=document.getElementById("simpay-toggle-notice-status-link");n.style.display="block",r&&a&&(r.innerHTML=""+r.dataset[e]+"",a.href=a.dataset[e])}else n.style.display="none"}function i(){var t=document.querySelectorAll(".simpay-disconnect-link");if(t){var n=simpayAdmin.i18n,r=n.disconnectConfirm,a=n.disconnectCancel;t.forEach((function(t){t.addEventListener("click",(function(n){n.preventDefault(),e(".simpay-disconnect-confirm").dialog({resizable:!1,height:"auto",width:400,modal:!0,draggable:!1,open:function(){e(".ui-dialog-buttonset .ui-button").removeClass("ui-button").last().css({marginLeft:"10px"}).focus()},buttons:[{text:a,click:function(){e(this).dialog("close")},class:"button button-secondary"},{text:r,click:function(){window.location.href=t.href},class:"button button-primary"}]})}))}))}}Object(r.a)((function(){var e;(e=document.getElementById("simpay-stripe-account-info"))&&wp.ajax.send("simpay_stripe_connect_account_information",{data:{nonce:e.dataset.nonce},success:function(t){e.querySelector("p").innerHTML=t.message,e.style.display="block","simpay-stripe-activated-account-actions"===t.actions?e.classList.add("notice-info"):e.classList.add("notice-warning");var n=document.getElementById(t.actions);n&&(n.style.display="block"),i()},error:function(t){e.querySelector("p").innerHTML=t.message,e.style.display="block",e.classList.add("notice-error");var n=document.getElementById(t.actions);n&&(n.style.display="block",i())}})}))}).call(this,n(16))},16:function(e,t){e.exports=jQuery},18:function(e,t){function n(e,t,n,r,a,i,o){try{var c=e[i](o),s=c.value}catch(e){return void n(e)}c.done?t(s):Promise.resolve(s).then(r,a)}e.exports=function(e){return function(){var t=this,r=arguments;return new Promise((function(a,i){var o=e.apply(t,r);function c(e){n(o,a,i,c,s,"next",e)}function s(e){n(o,a,i,c,s,"throw",e)}c(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},19:function(e,t){function n(t){return e.exports=n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,n(t)}e.exports=n,e.exports.__esModule=!0,e.exports.default=e.exports},2:function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e},e.exports.__esModule=!0,e.exports.default=e.exports},25:function(e,t,n){"use strict";n.d(t,"a",(function(){return h})),n.d(t,"c",(function(){return v}));var r=function(e){return"string"!=typeof e||""===e?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(e)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)},a=function(e){return"string"!=typeof e||""===e?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(e)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(e)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)},i=function(e){return function(t,n,i){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;if(a(t)&&r(n))if("function"==typeof i)if("number"==typeof o){var c={callback:i,priority:o,namespace:n};if(e[t]){var s,l=e[t].handlers;for(s=l.length;s>0&&!(o>=l[s-1].priority);s--);s===l.length?l[s]=c:l.splice(s,0,c),(e.__current||[]).forEach((function(e){e.name===t&&e.currentIndex>=s&&e.currentIndex++}))}else e[t]={handlers:[c],runs:0};"hookAdded"!==t&&y("hookAdded",t,n,i,o)}else console.error("If specified, the hook priority must be a number.");else console.error("The hook callback must be a function.")}},o=function(e,t){return function(n,i){if(a(n)&&(t||r(i))){if(!e[n])return 0;var o=0;if(t)o=e[n].handlers.length,e[n]={runs:e[n].runs,handlers:[]};else for(var c=e[n].handlers,s=function(t){c[t].namespace===i&&(c.splice(t,1),o++,(e.__current||[]).forEach((function(e){e.name===n&&e.currentIndex>=t&&e.currentIndex--})))},l=c.length-1;l>=0;l--)s(l);return"hookRemoved"!==n&&y("hookRemoved",n,i),o}}},c=function(e){return function(t,n){return void 0!==n?t in e&&e[t].handlers.some((function(e){return e.namespace===n})):t in e}},s=function(e,t){return function(n){e[n]||(e[n]={handlers:[],runs:0}),e[n].runs++;for(var r=e[n].handlers,a=arguments.length,i=new Array(a>1?a-1:0),o=1;o .spinner").hide(),n.removeClass("active"),r.addClass("active"),t.addClass("simpay-panel-hidden"),i.removeClass("simpay-panel-hidden")}));var r="#form-display-options-settings-panel";location.hash.length&&(r=location.hash);var i=a('ul.simpay-tabs a[href="'+r+'"]');a('[name="simpay_form_settings_tab"]').val(r),i.length&&i.click()},stripeConnect:function(){var e="tr:nth-child(2), tr:nth-child(3), tr:nth-child(4), tr:nth-child(5)";a(".simpay-settings.stripe-account .form-table").find(e).hide(),a("#wpsp-api-keys-row-reveal button").on("click",(function(t){t.preventDefault(),a(".simpay-settings.stripe-account .form-table").find(e).show(),a("#wpsp-api-keys-row-hide").show(),a(this).parent().hide(),a(".wpsp-manual-key-warning").show()})),a("#wpsp-api-keys-row-hide button").on("click",(function(t){t.preventDefault(),a(".simpay-settings.stripe-account .form-table").find(e).hide(),a("#wpsp-api-keys-row-reveal").show(),a(this).parent().hide(),a(".wpsp-manual-key-warning").hide()}))},handleInternalLinkToTabClicks:function(e){var t=e.data("show-tab");i.find("."+t+"-tab a").click()}},(a=e)(document).ready((function(e){c.init()}))}.call(this,n(16))},337:function(e,t,n){"use strict";var r=n(3),a=simpayAdminSettingToggles||[];function i(e){var t=e.id,n=(e.value,e.toggles,document.querySelector(".simpay-settings-".concat(t)));if(!n)return{};var r=n.querySelector("input");r||(r=n.querySelector("select"));var a=r.value;return"checkbox"===r.type&&(a=!0===r.checked?"yes":"no"),{setting:r,currentValue:a}}function o(e){var t=e.id,n=e.value,r=e.toggles,c=i(e),s=(c.setting,c.currentValue);"none"!==document.querySelector(".simpay-settings-".concat(t)).style.display&&(r.map((function(e){return document.querySelector(".simpay-settings-".concat(e))})).forEach((function(e){e&&(e.style.display=s===n?"table-row":"none")})),r.forEach((function(e){var t=_.find(a,{id:e});t&&o(t)})))}Object(r.a)((function(){a.forEach((function(e){o(e),i(e).setting.addEventListener("change",(function(){return o(e)}))}))}))},338:function(e,t,n){"use strict";var r=n(3);Object(r.a)((function(){var e=window.wpsp.hooks,t=document.querySelectorAll('[name="simpay_settings[test_mode]"]');if(0!==t.length){var n="enabled"===document.querySelector('[name="simpay_settings[test_mode]"]:checked').value?"test":"live";e.doAction("settings.toggleTestMode",n,n),_.each(t,(function(t){return t.addEventListener("change",(function(t){var r="enabled"===t.target.value?"test":"live";e.doAction("settings.toggleTestMode",r,n)}))}))}}))},339:function(e,t,n){"use strict";var r=n(3);function a(e){var t=document.getElementById("simpay-connect-license-feedback"),n=document.getElementById("simpay-connect-license-submit");e.message?(t.innerText=e.message,t.classList.remove("simpay-license-message--valid"),t.classList.add("simpay-license-message--invalid"),t.style.display="block"):t.style.display="none",e.reload?setTimeout((function(){window.location.reload()}),2e3):(n.disabled=!1,n.innerText=n.dataset.connect)}function i(e){var t=document.getElementById("simpay-connect-license-feedback");e.message?(t.innerText=e.message,t.classList.remove("simpay-license-message--invalid"),t.classList.add("simpay-license-message--valid"),t.style.display="block"):t.style.display="none",e.reload?setTimeout((function(){window.location.reload()}),2e3):window.location=e.url}function o(){var e=document.getElementById("simpay-connect-license-key"),t=document.getElementById("simpay-connect-license-nonce"),n=document.getElementById("simpay-connect-license-submit");n.disabled=!0,n.innerText=n.dataset.connecting,wp.ajax.send("simpay_get_connect_url",{data:{nonce:t.value,key:e.value},success:i,error:a})}Object(r.a)((function(){var e=document.getElementById("simpay-connect-license-key");if(e){var t=document.getElementById("simpay-connect-license-submit");e.addEventListener("keypress",(function(e){"Enter"===e.key&&(e.preventDefault(),o())})),t.addEventListener("click",(function(e){e.preventDefault(),t.disabled=!0,o()}))}}))},340:function(e,t,n){"use strict";var r=n(3);Object(r.a)((function(){var e=document.querySelector(".simpay-recaptcha-feedback");if(e){var t=simpayGoogleRecaptcha,n=t.siteKey,r=t.i18n;""!==n&&grecaptcha.ready((function(){var e=document.querySelector(".grecaptcha-badge");e&&(e.style.display="none");try{grecaptcha.execute(n,{action:"simple_pay_admin_test"}).then((function(e){wp.ajax.send("simpay_validate_recaptcha_source",{data:{token:e,recaptcha_action:"simple_pay_admin_test"},error:a})})).catch(a)}catch(e){a()}}))}function a(){e.style.display="block",e.classList.add("notice-error"),e.querySelector("p").innerText=r.invalid}}))},341:function(e,t,n){"use strict";(function(e){var t=n(9),r=n.n(t),a=n(3),i=n(12);Object(a.a)((function(){var t,n,a,o=document.querySelector(".post-type-simple-pay #post");if(o){var c=r()(o,{hash:!0});delete c.simpay_form_settings_tab,function(t){function n(e){var n=r()(document.querySelector(".post-type-simple-pay form#post"),{hash:!0});if(delete n.simpay_form_settings_tab,delete n.simpay_save_preview,JSON.stringify(n)!==t)return e.preventDefault(),simpayAdmin.i18n.leavePageConfirm}window.addEventListener("beforeunload",n),window.onbeforeunload=n,e(".post-type-simple-pay form#post").off("submit").on("submit",(function(){window.removeEventListener("beforeunload",n),window.onbeforeunload=null}))}(JSON.stringify(c)),n=document.getElementById("form-type-select"),a=document.getElementById("is-overlay"),n.addEventListener("change",(function(e){var t=e.target,n=t.options[t.selectedIndex],r=n.value;"on-site"===r&&Object(i.maybeBlockSelectWithUpgradeModal)(e),"off-site"===r&&(a.querySelector("input").checked=!1),a.style.display="yes"===n.dataset.available&&"on-site"===r?"block":"none"})),function(){var e=document.querySelector(".simpay-recaptcha-payment-form-feedback");if(e){var t=document.querySelector(".simpay-recaptcha-payment-form-description"),n=simpayGoogleRecaptcha,r=n.siteKey,a=n.i18n;if(t.style.display="none",""===r)return i();grecaptcha.ready((function(){var e=document.querySelector(".grecaptcha-badge");e&&(e.style.display="none");try{grecaptcha.execute(r,{action:"simple_pay_admin_test"}).then((function(e){wp.ajax.send("simpay_validate_recaptcha_source",{data:{token:e,recaptcha_action:"simple_pay_admin_test"},success:o,error:i})})).catch(i)}catch(e){i()}}))}function i(){e.style.color="#b32d2e",e.style.display="inline",e.innerHTML=a.disabled,t.style.display="inline-block"}function o(){e.style.color="green",e.style.display="inline",e.innerHTML=a.enabled,t.style.display="inline-block"}}(),(t=document.querySelector("#_company_name"))&&(t.addEventListener("blur",(function(){0===t.value.length?(t.nextElementSibling.classList.remove("hidden"),t.value=simpayAdmin.siteTitle):t.nextElementSibling.classList.add("hidden")})),t.addEventListener("focus",(function(){0!==t.value.length&&t.nextElementSibling.classList.add("hidden")})))}}))}).call(this,n(16))},342:function(e,t,n){"use strict";(function(e,t){var r=n(37),a=n.n(r),i=n(3),o=n(12);function c(){var e=document.getElementById("simpay-prices");if(e){var t=e.querySelectorAll(".simpay-price").length;document.querySelectorAll(".simpay-price-label-default").forEach((function(e){return e.style.display=t>1?"none":"block"})),document.querySelectorAll(".simpay-price-label-display").forEach((function(e){return e.style.display=t>1?"block":"none"})),document.querySelectorAll(".simpay-price-option-label").forEach((function(e){return e.style.display=t>1?"block":"none"})),document.querySelectorAll(".simpay-price-default-check").forEach((function(e){return e.style.display=t>1?"block":"none"}));var n=document.querySelectorAll(".simpay-panel-field-price-select");if(n.length>0){n.forEach((function(e){return e.style.display=t>1?"table-row":"none"}));var r=document.querySelector(".simpay-panel-field-price-select-notice");r&&(r.style.display=1===t?"table-row":"none")}}}function s(e){var t=e.querySelector(".simpay-price-label-display"),n=e.querySelector(".simpay-price-label"),r=spGeneral.strings,a=r.recurringIntervalDisplay,i=r.customAmountLabel;if(""!==n.value)t.innerHTML=n.value;else{var o,c=e.querySelector(".simpay-price-currency"),s=e.querySelector(".simpay-price-amount"),l=e.querySelector(".simpay-price-amount-type"),u=e.querySelector(".simpay-price-custom-amount input"),d=e.querySelector(".simpay-price-enable-custom-amount"),p=spGeneral.strings,f=p.currencyPosition,y=p.recurringIntervals,m=c.options[c.selectedIndex].dataset.symbol;switch(o=!0===d.checked?u.value:s.value,f){case"left":o="".concat(m).concat(o);break;case"left_space":o="".concat(m," ").concat(o);break;case"right":o="".concat(o).concat(m);break;case"right_space":o="".concat(o," ").concat(m)}if(!0===d.checked&&(o=i.replace("%s",o)),"recurring"===l.value){var h=e.querySelector(".simpay-price-recurring-interval"),v=e.querySelector(".simpay-price-recurring-interval-count"),g=y[h.options[h.selectedIndex].value];o=a.replace("%1$s",o).replace("%2$s",v.value).replace("%3$s","1"===v.value?g[0]:g[1])}t.innerHTML=o}}function l(e,t){e.querySelector(".simpay-price-recurring-settings").style.display=t.checked?"table":"none"}function u(e){var t=e.querySelector(".simpay-price-recurring-interval"),n=e.querySelector(".simpay-price-recurring-interval-count"),r=parseInt(n.value);switch(t.options[t.selectedIndex].value){case"day":r>365&&(n.value=365);break;case"week":r>52&&(n.value=52);break;case"month":r>12&&(n.value=12);break;case"year":r>1&&(n.value=1)}var i=JSON.parse(t.dataset.intervals);a()(t.options).forEach((function(e,r){var a=e.value;t.options[r].text=1===parseInt(n.value)?i[a][0]:i[a][1]}))}function d(){var e=document.querySelectorAll(".simpay-price");_.each(e,(function(e){var t=e.querySelector(".simpay-price-amount-type").value;e.querySelector(".simpay-price-label").addEventListener("keyup",(function(){return s(e)})),s(e),e.querySelector(".simpay-price-currency").addEventListener("change",(function(){!function(e){var t=e.querySelector(".simpay-price-currency"),n=t.options[t.selectedIndex].dataset.symbol,r=e.querySelectorAll(".simpay-price-currency-symbol");_.each(r,(function(e){return e.innerText=n}))}(e),s(e)}));var n=e.querySelectorAll(".simpay-price-amount-type .button");n.length>0&&_.each(n,(function(t){return t.addEventListener("click",(function(t){t.preventDefault();var n=t.target.dataset,r=n.available,a=n.upgradeTitle,i=n.upgradeDescription,c=n.upgradeUrl,l=n.upgradePurchasedUrl;"no"===r?Object(o.upgradeModal)({title:a,description:i,url:c,purchasedUrl:l}):(function(e,t){var n=e.querySelectorAll(".simpay-price-amount-type .button");_.each(n,(function(e){return e.classList.remove("button-primary")}));var r=t.dataset.amountType,a=e.querySelector(".simpay-price-recurring-settings");t.classList.add("button-primary"),a.style.display="recurring"===r?"table":"none";var i=e.querySelector(".simpay-price-recurring-amount-toggle"),o=e.querySelector(".simpay-price-enable-optional-subscription");i.style.display="recurring"===r?"none":"block",o.checked=!1,e.querySelector(".simpay-price-amount-type").value=r}(e,t.target),s(e))}))})),e.querySelector(".simpay-price-amount").addEventListener("keyup",(function(){return s(e)}));var r=e.querySelector(".simpay-price-enable-optional-subscription");r&&(r.addEventListener("click",(function(t){var n=t.target,r=n.dataset,a=r.available,i=r.upgradeTitle,c=r.upgradeDescription,u=r.upgradeUrl,d=r.upgradePurchasedUrl;"no"===a?(n.checked=!1,t.preventDefault(),Object(o.upgradeModal)({title:i,description:c,url:u,purchasedUrl:d})):(l(e,n),s(e))})),"recurring"!==t&&l(e,r)),e.querySelector(".simpay-price-enable-custom-amount").addEventListener("click",(function(){!function(e){var t=e.querySelector(".simpay-price-custom-amount");t.style.display="none"===t.style.display?"block":"none"}(e),s(e)})),e.querySelector(".simpay-price-recurring-interval").addEventListener("change",(function(){s(e),u(e)}));var a=e.querySelector(".simpay-price-recurring-interval-count");u(e),a.addEventListener("keyup",(function(){u(e),s(e)})),a.addEventListener("change",(function(){u(e),s(e)}));var i=e.querySelector(".simpay-price-legacy-setting-toggle");i&&i.addEventListener("click",(function(t){t.preventDefault(),function(e){var t=e.querySelectorAll(".simpay-price-legacy-setting");_.each(t,(function(e){return e.style.display="block"===e.style.display?"none":"block"}))}(e)})),e.querySelector(".simpay-price-default").addEventListener("change",(function(){return function(e){var t=document.querySelectorAll(".simpay-price-default");_.each(t,(function(e){return e.checked=!1})),e.querySelector(".simpay-price-default").checked=!0}(e)})),e.querySelector(".simpay-price-remove").addEventListener("click",(function(t){t.preventDefault(),function(e){e.remove(),p(),c()}(e)}))})),c()}function p(){var e=document.querySelectorAll(".simpay-price");document.querySelector(".simpay-price-default:checked")||(e[0].querySelector(".simpay-price-default").checked=!0)}Object(i.a)((function(){var n,r,a,i,s,l,u;t(".simpay-prices").sortable({items:".simpay-field-metabox",containment:"#simpay-prices",handle:".simpay-hndle",placeholder:"sortable-placeholder",cursor:"move",delay:t(document.body).hasClass("mobile")?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,opacity:.65,helper:function(e,t){return t.clone().find(":input").attr("name",(function(e,t){return"sort_"+parseInt(1e5*Math.random(),10).toString()+"_"+t})).end()}}),d(),n=document.getElementById("simpay-prices-advanced-toggle"),r=document.getElementById("simpay-prices-advanced"),n&&r&&n.addEventListener("click",(function(e){e.preventDefault(),r.style.display="block"==r.style.display?"none":"block"})),(u=document.getElementById("simpay-prices-advanced-add"))&&u.addEventListener("click",(function(t){var n,r,a,i,o,s;t.preventDefault(),a=(r=(n=u).dataset).nonce,i=r.formId,o=document.getElementById("simpay-prices"),s=document.getElementById("simpay-prices-advanced-plan-id"),n.classList.add("disabled"),wp.ajax.send("simpay_add_plan",{data:{_wpnonce:a,form_id:i,plan_id:s.value},success:function(t){e(o).append(t),d(),document.getElementById("simpay-prices-advanced").style.display="none",s.value="",n.classList.remove("disabled"),c()},error:function(e){var t=e.message;alert(t),n.classList.remove("disabled")}})})),function(){var t=document.getElementById("simpay-add-price");t&&t.addEventListener("click",(function(n){var r,a,i,o,s;n.preventDefault(),i=(a=(r=t).dataset).nonce,o=a.formId,s=document.getElementById("simpay-prices"),r.classList.add("disabled"),wp.ajax.send("simpay_add_price",{data:{_wpnonce:i,form_id:o},success:function(t){e(s).append(t),d(),p(),r.classList.remove("disabled"),c()},error:function(e){var t=e.message;alert(t),r.classList.remove("disabled")}})}))}(),(a=document.getElementById("simpay-add-price-lite"))&&a.addEventListener("click",o.maybeBlockButtonWithUpgradeModal),(i=document.getElementById("simpay-amount-type-lite"))&&i.addEventListener("click",o.maybeBlockButtonWithUpgradeModal),(s=document.getElementById("simpay-can-recur-lite"))&&s.addEventListener("click",o.maybeBlockButtonWithUpgradeModal),(l=document.getElementById("simpay-custom-lite"))&&l.addEventListener("click",o.maybeBlockButtonWithUpgradeModal)}))}).call(this,n(16),n(16))},343:function(e,t,n){"use strict";(function(e){var t=n(3),r=n(12);Object(t.a)((function(){var t,n,a;(t=document.querySelector('[name="_enable_payment_page"]'))&&t.addEventListener("change",r.maybeBlockCheckboxWithUpgradeModal),(n=document.querySelector('[name="_payment_page_powered_by"]'))&&n.addEventListener("change",r.maybeBlockCheckboxWithUpgradeModal),function(){if(document.getElementById("payment-page-background-color-custom")){e("#payment-page-background-color-custom").wpColorPicker();var t=document.querySelector(".simpay-payment-page-background-color .wp-color-result"),n=document.querySelectorAll(".simpay-payment-page-background-color");t.addEventListener("click",(function(t){n.forEach((function(e){e.querySelector("input").checked=!1})),t.target.classList.add("is-selected"),e(t.target).parent().find("input").prop("checked",!0)})),n.forEach((function(e){e.querySelector("input").addEventListener("change",(function(){t.classList.remove("is-selected")}))}))}}(),(a=document.querySelector('[name="_payment_page_slug"]'))&&a.addEventListener("keyup",(function(e){var t=document.querySelector(".simpay-payment-page-url");t&&(t.dataset.clipboardText="".concat(window.location.origin,"/").concat(e.target.value))}))}))}).call(this,n(16))},344:function(e,t,n){"use strict";(function(e){var t=n(19),r=n.n(t),a=n(3),i='',o='',c=simpayAdmin,s=c.nonce,l=c.ajaxUrl,u=c.i18n,d=u.addonActivated,p=u.addonActivate,f=u.addonActive,y=u.addonDeactivate,m=u.addonInactive,h=u.addonInstall,v=u.addonError,g=u.pluginError;function b(t){t.preventDefault();var n,a,c,u,b,_,k=e(t.target);if(k.hasClass("status-go-to-url"))window.open(k.attr("data-plugin"),"_blank");else{var w=k.attr("data-type");if(k.prop("disabled",!0).addClass("loading"),k.html(''),k.hasClass("status-active"))n="deactivate",a="status-installed","plugin"===w&&(a+=" button button-secondary"),c=m,u=p,b=y,"addon"===w&&(u=i+u,b=o+b);else if(k.hasClass("status-installed"))n="activate",a="status-active","plugin"===w&&(a+=" button button-secondary disabled"),c=f,u=y,"addon"===w?(u=o+u,b=i+p):"plugin"===w&&(u=d,b=p);else{if(!k.hasClass("status-missing"))return;n="install",a="status-active","plugin"===w&&(a+=" button disabled"),c=f,u=d,b='',"addon"===w&&(u=i+y,b+=h)}var x=k.closest(".simpay-addon");!function(t,n,r,a){var i={activate:"simpay_activate_addon",install:"simpay_install_addon",deactivate:"simpay_deactivate_addon"}[n];if(i){var o={action:i,nonce:s,plugin:t,type:r};e.post(l,o,a).fail((function(e){console.log(e.responseText)}))}}(k.attr("data-plugin"),n,w,(function(e){e.success?("install"===n?(k.attr("data-plugin",e.data.basename),_=e.data.msg,e.data.is_activated||(c=m,u="plugin"===w?p:i+p,a="plugin"===w?"status-installed button button-secondary":"status-installed")):_=e.data,x.find(".simpay-addon__actions").append('
'+_+"
"),x.find("span.status-label").removeClass("status-active status-installed status-missing").addClass(a).removeClass("button button-primary button-secondary disabled").text(c),k.removeClass("status-active status-installed status-missing").removeClass("button button-primary button-secondary disabled").addClass(a).html(u)):("object"===r()(e.data)?"addon"===w?x.find(".simpay-addon__actions").append('
'+v+"
"):x.find(".simpay-addon__actions").append('
'+g+"
"):x.find(".simpay-addon__actions").append('
'+e.data+"
"),"install"===n&&"plugin"===w&&k.addClass("status-go-to-url").removeClass("status-missing"),k.html(b)),k.prop("disabled",!1).removeClass("loading"),setTimeout((function(){x.find(".msg").remove()}),3e3)}))}}Object(a.a)((function(){document.querySelector(".simpay-addons")&&document.querySelectorAll(".simpay-addon").forEach((function(e){e.querySelector("button").addEventListener("click",b)}))}))}).call(this,n(16))},345:function(e,t,n){"use strict";var r=n(3);Object(r.a)((function(){var e=new ClipboardJS(".simpay-copy-button");e.on("success",(function(t){var n=t.trigger,r=n.dataset.copied,a=n.innerHTML;clearTimeout(i),n.innerHTML=r,n.classList.contains("button-secondary")&&(n.style.color="green",n.style.borderColor="green"),t.clearSelection();var i=setTimeout((function(){n.innerHTML=a,n.classList.contains("button-secondary")&&(n.style.color="",n.style.borderColor=""),e.clipboardAction.fakeElem&&e.clipboardAction.removeFake&&e.clipboardAction.removeFake()}),3e3);wp.a11y.speak(r)}))}))},359:function(e,t,n){"use strict";n(341),n(342);var r=n(37),a=n.n(r),i=n(3),o=n(12);function c(e){var t=e.target,n=t.options[t.selectedIndex].value,r=document.querySelectorAll(".simpay-panel-field-payment-method[data-payment-method]");a()(r).forEach((function(e){var t="popular"===JSON.parse(e.dataset.paymentMethod).scope?"block":"none";e.style.display="all"===n?"block":t}))}Object(i.a)((function(){var e=document.querySelectorAll(".simpay-panel-field-payment-method-filter");0!==e.length&&a()(e).forEach((function(e){e.addEventListener("change",c)}));var t=document.querySelectorAll(".simpay-payment-method-lite");t&&t.forEach((function(e){return e.addEventListener("change",o.maybeBlockCheckboxWithUpgradeModal)}))})),Object(i.a)((function(){var e=document.getElementById("_tax_status_lite");e&&e.addEventListener("change",o.maybeBlockSelectWithUpgradeModal)})),Object(i.a)((function(){var e;document.querySelector(".post-type-simple-pay #post")&&(e=document.getElementById("simpay-add-field-lite"))&&e.addEventListener("click",o.maybeBlockButtonWithUpgradeModal)})),Object(i.a)((function(){var e,t;(e=document.getElementById("_enable_tax_id"))&&e.addEventListener("change",o.maybeBlockCheckboxWithUpgradeModal),(t=document.getElementById("_enable_promotion_codes"))&&t.addEventListener("change",o.maybeBlockCheckboxWithUpgradeModal)})),n(343)},37:function(e,t,n){var r=n(109),a=n(110),i=n(111),o=n(112);e.exports=function(e){return r(e)||a(e)||i(e)||o()},e.exports.__esModule=!0,e.exports.default=e.exports},59:function(e,t,n){"use strict";n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return a}));var r={};n.r(r),n.d(r,"create",(function(){return p}));var a={};n.r(a),n.d(a,"create",(function(){return m}));var i=n(1),o=n(2),c=n.n(o),s=n(9),l=n.n(s);function u(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function d(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.getFormData;return Object(i.a)("v2/customer",d({form_values:l()(t[0],{hash:!0}),form_data:r(),form_id:n},e))}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function y(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=t.id,r=t.getFormData;return Object(i.a)("v2/checkout-session",y({form_values:l()(t[0],{hash:!0}),form_data:r(),form_id:n},e))}n(18),n(10),n(33)},65:function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var a=t&&t.prototype instanceof d?t:d,i=Object.create(a.prototype),o=new x(r||[]);return i._invoke=function(e,t,n){var r="suspendedStart";return function(a,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw i;return{value:void 0,done:!0}}for(n.method=a,n.arg=i;;){var o=n.delegate;if(o){var c=_(o,n);if(c){if(c===u)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=l(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===u)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,o),i}function l(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var u={};function d(){}function p(){}function f(){}var y={};c(y,a,(function(){return this}));var m=Object.getPrototypeOf,h=m&&m(m(E([])));h&&h!==t&&n.call(h,a)&&(y=h);var v=f.prototype=d.prototype=Object.create(y);function g(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(a,i){function o(){return new t((function(r,o){!function r(a,i,o,c){var s=l(e[a],e,i);if("throw"!==s.type){var u=s.arg,d=u.value;return d&&"object"==typeof d&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,o,c)}),(function(e){r("throw",e,o,c)})):t.resolve(d).then((function(e){u.value=e,o(u)}),(function(e){return r("throw",e,o,c)}))}c(s.arg)}(a,i,r,o)}))}return r=r?r.then(o,o):o()}}function _(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,_(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=l(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function E(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;w(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}},e}(e.exports);try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}},66:function(e,t){e.exports=function(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * @typedef {() => void} Callback\n *\n * TODO: Remove this typedef and inline `() => void` type.\n *\n * This typedef is used so that a descriptive type is provided in our\n * automatically generated documentation.\n *\n * An in-line type `() => void` would be preferable, but the generated\n * documentation is `null` in that case.\n *\n * @see https://github.com/WordPress/gutenberg/issues/18045\n */\n\n/**\n * Specify a function to execute when the DOM is fully loaded.\n *\n * @param {Callback} callback A function to execute after the DOM is ready.\n *\n * @example\n * ```js\n * import domReady from '@wordpress/dom-ready';\n *\n * domReady( function() {\n * \t//do something after DOM loads.\n * } );\n * ```\n *\n * @return {void}\n */\nexport default function domReady(callback) {\n if (document.readyState === 'complete' || // DOMContentLoaded + Images/Styles/etc loaded, so we call directly.\n document.readyState === 'interactive' // DOMContentLoaded fires at this point, so we call directly.\n ) {\n return void callback();\n } // DOMContentLoaded has not fired yet, delay callback until then.\n\n\n document.addEventListener('DOMContentLoaded', callback);\n}\n//# sourceMappingURL=index.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that adds a new hook.\n */\n\nfunction createAddHook(hooks) {\n /**\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {Function} callback Function to call when the hook is run\n * @param {?number} priority Priority of this hook (default=10)\n */\n return function addHook(hookName, namespace, callback) {\n var priority = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!validateNamespace(namespace)) {\n return;\n }\n\n if ('function' !== typeof callback) {\n // eslint-disable-next-line no-console\n console.error('The hook callback must be a function.');\n return;\n } // Validate numeric priority\n\n\n if ('number' !== typeof priority) {\n // eslint-disable-next-line no-console\n console.error('If specified, the hook priority must be a number.');\n return;\n }\n\n var handler = {\n callback: callback,\n priority: priority,\n namespace: namespace\n };\n\n if (hooks[hookName]) {\n // Find the correct insert index of the new hook.\n var handlers = hooks[hookName].handlers;\n var i;\n\n for (i = handlers.length; i > 0; i--) {\n if (priority >= handlers[i - 1].priority) {\n break;\n }\n }\n\n if (i === handlers.length) {\n // If append, operate via direct assignment.\n handlers[i] = handler;\n } else {\n // Otherwise, insert before index via splice.\n handlers.splice(i, 0, handler);\n } // We may also be currently executing this hook. If the callback\n // we're adding would come after the current callback, there's no\n // problem; otherwise we need to increase the execution index of\n // any other runs by 1 to account for the added element.\n\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex++;\n }\n });\n } else {\n // This is the first hook of its type.\n hooks[hookName] = {\n handlers: [handler],\n runs: 0\n };\n }\n\n if (hookName !== 'hookAdded') {\n doAction('hookAdded', hookName, namespace, callback, priority);\n }\n };\n}\n\nexport default createAddHook;\n//# sourceMappingURL=createAddHook.js.map","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns the current hook.\n */\nfunction createCurrentHook(hooks) {\n /**\n * Returns the name of the currently running hook, or `null` if no hook of\n * the given type is currently running.\n *\n * @return {?string} The name of the currently running hook, or\n * `null` if no hook is currently running.\n */\n return function currentHook() {\n if (!hooks.__current || !hooks.__current.length) {\n return null;\n }\n\n return hooks.__current[hooks.__current.length - 1].name;\n };\n}\n\nexport default createCurrentHook;\n//# sourceMappingURL=createCurrentHook.js.map","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns a hook's call count.\n */\n\nfunction createDidHook(hooks) {\n /**\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number} The number of times the hook has run.\n */\n return function didHook(hookName) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n return hooks[hookName] && hooks[hookName].runs ? hooks[hookName].runs : 0;\n };\n}\n\nexport default createDidHook;\n//# sourceMappingURL=createDidHook.js.map","/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook(hooks) {\n /**\n * Returns whether a hook is currently being executed.\n *\n * @param {?string} hookName The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n return function doingHook(hookName) {\n // If the hookName was not passed, check for any current hook.\n if ('undefined' === typeof hookName) {\n return 'undefined' !== typeof hooks.__current[0];\n } // Return the __current hook.\n\n\n return hooks.__current[0] ? hookName === hooks.__current[0].name : false;\n };\n}\n\nexport default createDoingHook;\n//# sourceMappingURL=createDoingHook.js.map","/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook(hooks) {\n /**\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {?string} namespace Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n return function hasHook(hookName, namespace) {\n // Use the namespace if provided.\n if ('undefined' !== typeof namespace) {\n return hookName in hooks && hooks[hookName].handlers.some(function (hook) {\n return hook.namespace === namespace;\n });\n }\n\n return hookName in hooks;\n };\n}\n\nexport default createHasHook;\n//# sourceMappingURL=createHasHook.js.map","/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Object} Object that contains all hooks.\n */\n\nfunction createHooks() {\n var actions = Object.create(null);\n var filters = Object.create(null);\n actions.__current = [];\n filters.__current = [];\n return {\n addAction: createAddHook(actions),\n addFilter: createAddHook(filters),\n removeAction: createRemoveHook(actions),\n removeFilter: createRemoveHook(filters),\n hasAction: createHasHook(actions),\n hasFilter: createHasHook(filters),\n removeAllActions: createRemoveHook(actions, true),\n removeAllFilters: createRemoveHook(filters, true),\n doAction: createRunHook(actions),\n applyFilters: createRunHook(filters, true),\n currentAction: createCurrentHook(actions),\n currentFilter: createCurrentHook(filters),\n doingAction: createDoingHook(actions),\n doingFilter: createDoingHook(filters),\n didAction: createDidHook(actions),\n didFilter: createDidHook(filters),\n actions: actions,\n filters: filters\n };\n}\n\nexport default createHooks;\n//# sourceMappingURL=createHooks.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {boolean} removeAll Whether to remove all callbacks for a hookName, without regard to namespace. Used to create `removeAll*` functions.\n *\n * @return {Function} Function that removes hooks.\n */\n\nfunction createRemoveHook(hooks, removeAll) {\n /**\n * Removes the specified callback (or all callbacks) from the hook with a\n * given hookName and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n *\n * @return {number} The number of callbacks removed.\n */\n return function removeHook(hookName, namespace) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!removeAll && !validateNamespace(namespace)) {\n return;\n } // Bail if no hooks exist by this name\n\n\n if (!hooks[hookName]) {\n return 0;\n }\n\n var handlersRemoved = 0;\n\n if (removeAll) {\n handlersRemoved = hooks[hookName].handlers.length;\n hooks[hookName] = {\n runs: hooks[hookName].runs,\n handlers: []\n };\n } else {\n // Try to find the specified callback to remove.\n var handlers = hooks[hookName].handlers;\n\n var _loop = function _loop(i) {\n if (handlers[i].namespace === namespace) {\n handlers.splice(i, 1);\n handlersRemoved++; // This callback may also be part of a hook that is\n // currently executing. If the callback we're removing\n // comes after the current callback, there's no problem;\n // otherwise we need to decrease the execution index of any\n // other runs by 1 to account for the removed element.\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex--;\n }\n });\n }\n };\n\n for (var i = handlers.length - 1; i >= 0; i--) {\n _loop(i);\n }\n }\n\n if (hookName !== 'hookRemoved') {\n doAction('hookRemoved', hookName, namespace);\n }\n\n return handlersRemoved;\n };\n}\n\nexport default createRemoveHook;\n//# sourceMappingURL=createRemoveHook.js.map","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n\n/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {?boolean} returnFirstArg Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {Function} Function that runs hook callbacks.\n */\nfunction createRunHook(hooks, returnFirstArg) {\n /**\n * Runs all callbacks for the specified hook.\n *\n * @param {string} hookName The name of the hook to run.\n * @param {...*} args Arguments to pass to the hook callbacks.\n *\n * @return {*} Return value of runner, if applicable.\n */\n return function runHooks(hookName) {\n if (!hooks[hookName]) {\n hooks[hookName] = {\n handlers: [],\n runs: 0\n };\n }\n\n hooks[hookName].runs++;\n var handlers = hooks[hookName].handlers; // The following code is stripped from production builds.\n\n if ('production' !== process.env.NODE_ENV) {\n // Handle any 'all' hooks registered.\n if ('hookAdded' !== hookName && hooks.all) {\n handlers.push.apply(handlers, _toConsumableArray(hooks.all.handlers));\n }\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (!handlers || !handlers.length) {\n return returnFirstArg ? args[0] : undefined;\n }\n\n var hookInfo = {\n name: hookName,\n currentIndex: 0\n };\n\n hooks.__current.push(hookInfo);\n\n while (hookInfo.currentIndex < handlers.length) {\n var handler = handlers[hookInfo.currentIndex];\n var result = handler.callback.apply(null, args);\n\n if (returnFirstArg) {\n args[0] = result;\n }\n\n hookInfo.currentIndex++;\n }\n\n hooks.__current.pop();\n\n if (returnFirstArg) {\n return args[0];\n }\n };\n}\n\nexport default createRunHook;\n//# sourceMappingURL=createRunHook.js.map","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n\nvar _createHooks = createHooks(),\n addAction = _createHooks.addAction,\n addFilter = _createHooks.addFilter,\n removeAction = _createHooks.removeAction,\n removeFilter = _createHooks.removeFilter,\n hasAction = _createHooks.hasAction,\n hasFilter = _createHooks.hasFilter,\n removeAllActions = _createHooks.removeAllActions,\n removeAllFilters = _createHooks.removeAllFilters,\n doAction = _createHooks.doAction,\n applyFilters = _createHooks.applyFilters,\n currentAction = _createHooks.currentAction,\n currentFilter = _createHooks.currentFilter,\n doingAction = _createHooks.doingAction,\n doingFilter = _createHooks.doingFilter,\n didAction = _createHooks.didAction,\n didFilter = _createHooks.didFilter,\n actions = _createHooks.actions,\n filters = _createHooks.filters;\n\nexport { createHooks, addAction, addFilter, removeAction, removeFilter, hasAction, hasFilter, removeAllActions, removeAllFilters, doAction, applyFilters, currentAction, currentFilter, doingAction, doingFilter, didAction, didFilter, actions, filters };\n//# sourceMappingURL=index.js.map","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName(hookName) {\n if ('string' !== typeof hookName || '' === hookName) {\n // eslint-disable-next-line no-console\n console.error('The hook name must be a non-empty string.');\n return false;\n }\n\n if (/^__/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name cannot begin with `__`.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name can only contain numbers, letters, dashes, periods and underscores.');\n return false;\n }\n\n return true;\n}\n\nexport default validateHookName;\n//# sourceMappingURL=validateHookName.js.map","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace(namespace) {\n if ('string' !== typeof namespace || '' === namespace) {\n // eslint-disable-next-line no-console\n console.error('The namespace must be a non-empty string.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test(namespace)) {\n // eslint-disable-next-line no-console\n console.error('The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.');\n return false;\n }\n\n return true;\n}\n\nexport default validateNamespace;\n//# sourceMappingURL=validateNamespace.js.map","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i',\n\ticonDeactivate: '',\n\ticonInstall: '',\n\ticonSpinner: '',\n\tmediaFrame: false,\n};\n\nconst { nonce, ajaxUrl, i18n } = simpayAdmin;\n\nconst {\n\taddonActivated,\n\taddonActivate,\n\taddonActive,\n\taddonDeactivate,\n\taddonInactive,\n\taddonInstall,\n\taddonError,\n\tpluginError,\n} = i18n;\n\n/**\n * Change plugin/addon state.\n *\n * @since 1.6.3\n *\n * @param {string} plugin Plugin slug or URL for download.\n * @param {string} state State status activate|deactivate|install.\n * @param {string} pluginType Plugin type addon or plugin.\n * @param {Function} callback Callback for get result from AJAX.\n */\nfunction setAddonState( plugin, state, pluginType, callback ) {\n\tconst actions = {\n\t\t\tactivate: 'simpay_activate_addon',\n\t\t\tinstall: 'simpay_install_addon',\n\t\t\tdeactivate: 'simpay_deactivate_addon',\n\t\t},\n\t\taction = actions[ state ];\n\n\tif ( ! action ) {\n\t\treturn;\n\t}\n\n\tconst data = {\n\t\taction,\n\t\tnonce,\n\t\tplugin,\n\t\ttype: pluginType,\n\t};\n\n\t$.post( ajaxUrl, data, callback ).fail( function ( xhr ) {\n\t\tconsole.log( xhr.responseText );\n\t} );\n}\n\n/**\n * Toggles addon state.\n *\n * @param {PointerEvent} e Click event.\n */\nfunction addonToggle( e ) {\n\te.preventDefault();\n\n\tconst $btn = $( e.target );\n\tlet state, cssClass, stateText, buttonText, errorText, successText;\n\n\tif ( $btn.hasClass( 'status-go-to-url' ) ) {\n\t\t// Open url in new tab.\n\t\twindow.open( $btn.attr( 'data-plugin' ), '_blank' );\n\t\treturn;\n\t}\n\n\tconst pluginType = $btn.attr( 'data-type' );\n\n\t$btn.prop( 'disabled', true ).addClass( 'loading' );\n\t$btn.html( s.iconSpinner );\n\n\tif ( $btn.hasClass( 'status-active' ) ) {\n\t\t// Deactivate.\n\t\tstate = 'deactivate';\n\t\tcssClass = 'status-installed';\n\n\t\tif ( pluginType === 'plugin' ) {\n\t\t\tcssClass += ' button button-secondary';\n\t\t}\n\n\t\tstateText = addonInactive;\n\t\tbuttonText = addonActivate;\n\t\terrorText = addonDeactivate;\n\n\t\tif ( pluginType === 'addon' ) {\n\t\t\tbuttonText = s.iconActivate + buttonText;\n\t\t\terrorText = s.iconDeactivate + errorText;\n\t\t}\n\t} else if ( $btn.hasClass( 'status-installed' ) ) {\n\t\t// Activate.\n\t\tstate = 'activate';\n\t\tcssClass = 'status-active';\n\n\t\tif ( pluginType === 'plugin' ) {\n\t\t\tcssClass += ' button button-secondary disabled';\n\t\t}\n\n\t\tstateText = addonActive;\n\t\tbuttonText = addonDeactivate;\n\n\t\tif ( pluginType === 'addon' ) {\n\t\t\tbuttonText = s.iconDeactivate + buttonText;\n\t\t\terrorText = s.iconActivate + addonActivate;\n\t\t} else if ( pluginType === 'plugin' ) {\n\t\t\tbuttonText = addonActivated;\n\t\t\terrorText = addonActivate;\n\t\t}\n\t} else if ( $btn.hasClass( 'status-missing' ) ) {\n\t\t// Install & Activate.\n\t\tstate = 'install';\n\t\tcssClass = 'status-active';\n\n\t\tif ( pluginType === 'plugin' ) {\n\t\t\tcssClass += ' button disabled';\n\t\t}\n\n\t\tstateText = addonActive;\n\t\tbuttonText = addonActivated;\n\t\terrorText = s.iconInstall;\n\n\t\tif ( pluginType === 'addon' ) {\n\t\t\tbuttonText = s.iconActivate + addonDeactivate;\n\t\t\terrorText += addonInstall;\n\t\t}\n\t} else {\n\t\treturn;\n\t}\n\n\tconst $addon = $btn.closest( '.simpay-addon' ),\n\t\tplugin = $btn.attr( 'data-plugin' );\n\n\tsetAddonState( plugin, state, pluginType, function ( res ) {\n\t\tif ( res.success ) {\n\t\t\tif ( 'install' === state ) {\n\t\t\t\t$btn.attr( 'data-plugin', res.data.basename );\n\n\t\t\t\tsuccessText = res.data.msg;\n\n\t\t\t\tif ( ! res.data.is_activated ) {\n\t\t\t\t\tstateText = addonInactive;\n\t\t\t\t\tbuttonText =\n\t\t\t\t\t\t'plugin' === pluginType\n\t\t\t\t\t\t\t? addonActivate\n\t\t\t\t\t\t\t: s.iconActivate + addonActivate;\n\t\t\t\t\tcssClass =\n\t\t\t\t\t\t'plugin' === pluginType\n\t\t\t\t\t\t\t? 'status-installed button button-secondary'\n\t\t\t\t\t\t\t: 'status-installed';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsuccessText = res.data;\n\t\t\t}\n\n\t\t\t$addon\n\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t.append( '
' + successText + '
' );\n\t\t\t$addon\n\t\t\t\t.find( 'span.status-label' )\n\t\t\t\t.removeClass( 'status-active status-installed status-missing' )\n\t\t\t\t.addClass( cssClass )\n\t\t\t\t.removeClass(\n\t\t\t\t\t'button button-primary button-secondary disabled'\n\t\t\t\t)\n\t\t\t\t.text( stateText );\n\t\t\t$btn.removeClass( 'status-active status-installed status-missing' )\n\t\t\t\t.removeClass(\n\t\t\t\t\t'button button-primary button-secondary disabled'\n\t\t\t\t)\n\t\t\t\t.addClass( cssClass )\n\t\t\t\t.html( buttonText );\n\t\t} else {\n\t\t\tif ( 'object' === typeof res.data ) {\n\t\t\t\tif ( pluginType === 'addon' ) {\n\t\t\t\t\t$addon\n\t\t\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t'
' + addonError + '
'\n\t\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$addon\n\t\t\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t'
' + pluginError + '
'\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$addon\n\t\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t\t.append( '
' + res.data + '
' );\n\t\t\t}\n\n\t\t\tif ( 'install' === state && 'plugin' === pluginType ) {\n\t\t\t\t$btn.addClass( 'status-go-to-url' ).removeClass(\n\t\t\t\t\t'status-missing'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t$btn.html( errorText );\n\t\t}\n\n\t\t$btn.prop( 'disabled', false ).removeClass( 'loading' );\n\n\t\t// Automatically clear addon messages after 3 seconds.\n\t\tsetTimeout( function () {\n\t\t\t$addon.find( '.msg' ).remove();\n\t\t}, 3000 );\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tif ( ! document.querySelector( '.simpay-addons' ) ) {\n\t\treturn;\n\t}\n\n\tconst addOns = document.querySelectorAll( '.simpay-addon' );\n\n\taddOns.forEach( ( addOn ) => {\n\t\taddOn\n\t\t\t.querySelector( 'button' )\n\t\t\t.addEventListener( 'click', addonToggle );\n\t} );\n} );\n","/* global spGeneral, jQuery */\n\n/**\n * Internal dependencies.\n */\nimport hooks from '@wpsimplepay/hooks';\nimport './settings/toggles.js';\nimport './settings/test-mode.js';\nimport { toggleStripeConnectNotice } from './settings/stripe-connect.js';\nimport './settings/recaptcha.js';\nimport './payment-form';\nimport './addons.js';\nimport './utils.js';\n\n/**\n * Globallly accessible object of WP Simple Pay-related (admin) functionality.\n */\nwindow.wpsp = window.wpsp || {\n\thooks,\n};\n\nlet spAdmin = {};\n\n( function ( $ ) {\n\t'use strict';\n\n\tlet body, spFormSettings;\n\n\tspAdmin = {\n\t\tinit() {\n\t\t\t// Set main vars on init.\n\t\t\tbody = $( document.body );\n\t\t\tspFormSettings = body.find( '#simpay-form-settings' );\n\n\t\t\t// Init admin metabox tab clicks.\n\t\t\tthis.handleMetaboxTabClick();\n\n\t\t\t//\n\t\t\t// Handle toggles.\n\t\t\t//\n\n\t\t\t// Sortable metabox implementation.\n\t\t\t// Must attach to wrapper to handle live DOM additions.\n\t\t\tif ( window.postboxes && window.postboxes.handle_click ) {\n\t\t\t\tspFormSettings.on(\n\t\t\t\t\t'click',\n\t\t\t\t\t'.postbox .simpay-hndle, .postbox .simpay-handlediv',\n\t\t\t\t\twindow.postboxes.handle_click\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Radios settings.\n\t\t\t[\n\t\t\t\t'_amount_type',\n\t\t\t\t'_success_redirect_type',\n\t\t\t\t'_subscription_type',\n\t\t\t\t'_subscription_custom_amount',\n\t\t\t\t'_form_display_type',\n\t\t\t\t'.simpay-total-amount-label-recurring',\n\t\t\t\t'.simpay-total-amount-label-tax',\n\t\t\t\t'.simpay-shipping-address',\n\t\t\t\t'.simpay-text-multiline',\n\t\t\t\t'.simpay-dropdown-type',\n\t\t\t\t'.simpay-radio-type',\n\t\t\t\t'.simpay-price-enable-custom',\n\t\t\t\t'.simpay-price-type input',\n\t\t\t].forEach( ( input ) => {\n\t\t\t\t// Allow classes to be passed, but prefer an input name.\n\t\t\t\tlet inputEl = $( input );\n\t\t\t\tlet isCustomFieldToggle = false;\n\n\t\t\t\tif ( '.' !== input.substring( 0, 1 ) ) {\n\t\t\t\t\tinputEl = `input[name=\"${ input }\"]`;\n\t\t\t\t} else {\n\t\t\t\t\tinputEl = input;\n\t\t\t\t\tisCustomFieldToggle = true;\n\t\t\t\t}\n\n\t\t\t\t// Find each setting.\n\t\t\t\t$( '#simpay-form-settings' )\n\t\t\t\t\t/**\n\t\t\t\t\t * Toggles content based on an input's current value.\n\t\t\t\t\t *\n\t\t\t\t\t * @since 3.8.0\n\t\t\t\t\t */\n\t\t\t\t\t.on( 'change', inputEl, function () {\n\t\t\t\t\t\tlet parent = $( '#simpay-form-settings' );\n\n\t\t\t\t\t\tif ( true === isCustomFieldToggle ) {\n\t\t\t\t\t\t\tparent = $( this ).closest( '.simpay-field-data' );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get the toggled setting value.\n\t\t\t\t\t\tlet current = $( this ).val();\n\n\t\t\t\t\t\t// Alter the current \"value\" if using a checkbox, which always has\n\t\t\t\t\t\t// a property value of `yes`.\n\t\t\t\t\t\tif ( $( this ).is( ':checkbox' ) ) {\n\t\t\t\t\t\t\tcurrent = $( this ).is( ':checked' ) ? 'yes' : 'no';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Find all linked content via `[data-toggle=\"\"]` where the matching\n\t\t\t\t\t\t// values will be shown and others hidden.\n\t\t\t\t\t\tparent\n\t\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\t\t$( `.simpay-show-if[data-if=\"${ input }\"]` )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.each( function () {\n\t\t\t\t\t\t\t\tconst content = $( this );\n\t\t\t\t\t\t\t\tconst showIf = content.data( 'is' );\n\n\t\t\t\t\t\t\t\t// All all initially.\n\t\t\t\t\t\t\t\tcontent.hide();\n\n\t\t\t\t\t\t\t\t// Show items where `[data-if=\"\"]` contains the toggle input value.\n\t\t\t\t\t\t\t\tif ( showIf.includes( current ) ) {\n\t\t\t\t\t\t\t\t\tcontent.show().css( 'display', 'block' );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t// Trigger initial state.\n\t\t\t\t$( inputEl ).filter( ':checked' ).trigger( 'change' );\n\t\t\t} );\n\n\t\t\t// Stripe Connect toggle notice.\n\t\t\thooks.addAction(\n\t\t\t\t'settings.toggleTestMode',\n\t\t\t\t'wpsp/settings/stripe-connect',\n\t\t\t\ttoggleStripeConnectNotice\n\t\t\t);\n\n\t\t\t// Init internal link to tab clicks.\n\t\t\tspFormSettings.on(\n\t\t\t\t'click.simpayTabLink',\n\t\t\t\t'.simpay-tab-link',\n\t\t\t\tfunction ( e ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tspAdmin.handleInternalLinkToTabClicks( $( this ) );\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Remove image preview click.\n\t\t\tspFormSettings.on(\n\t\t\t\t'click.simpayImagePreview',\n\t\t\t\t'.simpay-remove-image-preview',\n\t\t\t\tfunction ( e ) {\n\t\t\t\t\tspAdmin.handleRemoveImagePreviewClick( e );\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Use chosen for select fields\n\t\t\tthis.setupChosen();\n\n\t\t\t// Media Uploader\n\t\t\tthis.addMediaFields();\n\n\t\t\tthis.stripeConnect();\n\n\t\t\t// Payment Mode.\n\t\t\t//\n\t\t\t// Disable modes that are not globally available.\n\t\t\tconst paymentModeSelector = $( '.simpay-payment-modes' );\n\n\t\t\tif ( paymentModeSelector.length ) {\n\t\t\t\tconst paymentModes = paymentModeSelector.find( 'input' );\n\n\t\t\t\tpaymentModes.each( function () {\n\t\t\t\t\tconst mode = $( this );\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! paymentModeSelector.hasClass(\n\t\t\t\t\t\t\t'simpay-payment-mode--' + mode.val()\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tmode.attr( 'disabled', true );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tbody.trigger( 'simpayAdminInit' );\n\t\t},\n\n\t\thandleRemoveImagePreviewClick( e ) {\n\t\t\te.preventDefault();\n\n\t\t\tspFormSettings.find( '.simpay-image-preview-wrap' ).hide();\n\n\t\t\tspFormSettings.find( '#_image_url' ).val( '' );\n\t\t},\n\n\t\taddMediaFields() {\n\t\t\tlet simpayMediaUploader;\n\n\t\t\t$( '.simpay-media-uploader' ).on( 'click', function ( e ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// This is our button\n\t\t\t\twindow.simpayMediaUploaderInputField = $( this );\n\n\t\t\t\t// If the uploader object has already been created, reopen the dialog\n\t\t\t\tif ( simpayMediaUploader ) {\n\t\t\t\t\tsimpayMediaUploader.open();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Extend the wp.media object\n\t\t\t\tsimpayMediaUploader = wp.media.frames.file_frame = wp.media( {\n\t\t\t\t\ttitle: spGeneral.i18n.mediaTitle,\n\t\t\t\t\tbutton: {\n\t\t\t\t\t\ttext: spGeneral.i18n.mediaButtonText,\n\t\t\t\t\t},\n\t\t\t\t\tmultiple: false,\n\t\t\t\t} );\n\n\t\t\t\t// When a file is selected, grab the URL and set it as the text field's value\n\t\t\t\tsimpayMediaUploader.on( 'select', function () {\n\t\t\t\t\tconst attachment = simpayMediaUploader\n\t\t\t\t\t\t\t.state()\n\t\t\t\t\t\t\t.get( 'selection' )\n\t\t\t\t\t\t\t.first()\n\t\t\t\t\t\t\t.toJSON(),\n\t\t\t\t\t\tinputField = $( '#_image_url' ), // Get the field previous to our button, aka our input field.\n\t\t\t\t\t\timage =\n\t\t\t\t\t\t\t'id' === inputField.data( 'fvalue' )\n\t\t\t\t\t\t\t\t? attachment.id\n\t\t\t\t\t\t\t\t: attachment.url;\n\n\t\t\t\t\t// Update our image preview\n\t\t\t\t\t$( '.simpay-image-preview-wrap' ).show();\n\t\t\t\t\t$( '.simpay-image-preview' ).prop( 'src', image );\n\n\t\t\t\t\tinputField.val( image );\n\t\t\t\t} );\n\n\t\t\t\t// Open the uploader dialog\n\t\t\t\tsimpayMediaUploader.open();\n\t\t\t} );\n\t\t},\n\n\t\tsetupChosen() {\n\t\t\tconst chosenSelect = $(\n\t\t\t\t'.simpay-chosen-select, .simpay-chosen-search'\n\t\t\t);\n\n\t\t\tchosenSelect.chosen( { disable_search_threshold: 20 } );\n\t\t\tchosenSelect.chosen();\n\t\t},\n\n\t\t// Tabbed Panels in Settings Meta Box.\n\t\t// All nav list items are inactive (no \"active\" class) except first by default.\n\t\t// All tab panel content containers are hidden (\"simpay-panel-hidden\" class) except first by default.\n\t\t// Can make specific panel active on initial page load via url hash.\n\n\t\thandleMetaboxTabClick() {\n\t\t\tconst tabLinks = $( 'ul.simpay-tabs a' );\n\t\t\tconst panels = $( 'div.simpay-panel' );\n\t\t\tconst allTabLinkParents = tabLinks.parents( 'li' );\n\n\t\t\t// When a tab link is clicked.\n\t\t\ttabLinks.on( 'click', function ( e ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst currentTabLinkParent = $( this ).parent();\n\n\t\t\t\t// Assign current tab element to var from link href attribute.\n\t\t\t\tconst currentTabEl = $( $( this ).attr( 'href' ) );\n\n\t\t\t\t// Set the hash in the URL so after saving we get the same tab\n\t\t\t\tconst hash = $( this ).attr( 'href' );\n\t\t\t\thistory.pushState( null, null, hash );\n\n\t\t\t\t// Avoid jumping to ID after setting anchor.\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\twindow.scrollTo( 0, 0 );\n\t\t\t\t}, 1 );\n\n\t\t\t\t$( '[name=\"simpay_form_settings_tab\"]' ).val( hash );\n\n\t\t\t\t$( '.simpay-panels > .spinner' ).hide();\n\n\t\t\t\t// Remove active class from all tabs.\n\t\t\t\tallTabLinkParents.removeClass( 'active' );\n\n\t\t\t\t// Add active class back to current tab.\n\t\t\t\tcurrentTabLinkParent.addClass( 'active' );\n\n\t\t\t\t// Hide content with all tab panels.\n\t\t\t\tpanels.addClass( 'simpay-panel-hidden' );\n\n\t\t\t\t// Show current tab's content.\n\t\t\t\tcurrentTabEl.removeClass( 'simpay-panel-hidden' );\n\t\t\t} );\n\n\t\t\tlet activeTab = '#form-display-options-settings-panel';\n\n\t\t\t// Auto open tab if in url hash.\n\t\t\tif ( location.hash.length ) {\n\t\t\t\tactiveTab = location.hash;\n\t\t\t}\n\n\t\t\tconst activeTabLink = $(\n\t\t\t\t'ul.simpay-tabs a[href=\"' + activeTab + '\"]'\n\t\t\t);\n\n\t\t\t$( '[name=\"simpay_form_settings_tab\"]' ).val( activeTab );\n\n\t\t\tif ( activeTabLink.length ) {\n\t\t\t\tactiveTabLink.click();\n\t\t\t}\n\t\t},\n\n\t\tstripeConnect() {\n\t\t\tconst rows =\n\t\t\t\t'tr:nth-child(2), tr:nth-child(3), tr:nth-child(4), tr:nth-child(5)';\n\n\t\t\t$( '.simpay-settings.stripe-account .form-table' )\n\t\t\t\t.find( rows )\n\t\t\t\t.hide();\n\n\t\t\t$( '#wpsp-api-keys-row-reveal button' ).on(\n\t\t\t\t'click',\n\t\t\t\tfunction ( e ) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t$( '.simpay-settings.stripe-account .form-table' )\n\t\t\t\t\t\t.find( rows )\n\t\t\t\t\t\t.show();\n\n\t\t\t\t\t$( '#wpsp-api-keys-row-hide' ).show();\n\t\t\t\t\t$( this ).parent().hide();\n\t\t\t\t\t$( '.wpsp-manual-key-warning' ).show();\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t$( '#wpsp-api-keys-row-hide button' ).on( 'click', function ( e ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t$( '.simpay-settings.stripe-account .form-table' )\n\t\t\t\t\t.find( rows )\n\t\t\t\t\t.hide();\n\n\t\t\t\t$( '#wpsp-api-keys-row-reveal' ).show();\n\t\t\t\t$( this ).parent().hide();\n\t\t\t\t$( '.wpsp-manual-key-warning' ).hide();\n\t\t\t} );\n\t\t},\n\n\t\t// Handle links within tab content to other tabs.\n\t\t// When one is clicked, trigger the corresponding tab link click.\n\t\thandleInternalLinkToTabClicks( el ) {\n\t\t\tconst tabToShowId = el.data( 'show-tab' ),\n\t\t\t\ttabToShowLinkEl = body.find( '.' + tabToShowId + '-tab a' );\n\n\t\t\ttabToShowLinkEl.click();\n\t\t},\n\t};\n\n\t$( document ).ready( function ( $ ) {\n\t\tspAdmin.init();\n\t} );\n} )( jQuery );\n","/* global simpayAdmin, grecaptcha, simpayGoogleRecaptcha, jQuery */\n\n/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Alerts the user when they are about to leave unsaved changes.\n *\n * @since 4.4.1\n *\n * @param {string} initialValues Serialized form initial values.\n */\nfunction onLeavePage( initialValues ) {\n\t/**\n\t * Alerts the user when they are about to leave unsaved changes.\n\t *\n\t * @since 4.4.1\n\t *\n\t * @param {Event} event beforeunload event.\n\t * @return {string} Message to display in the browser's confirmation dialog (when supported).\n\t */\n\tfunction confirmLeave( event ) {\n\t\tconst newFormValues = serialize(\n\t\t\tdocument.querySelector( '.post-type-simple-pay form#post' ),\n\t\t\t{ hash: true }\n\t\t);\n\t\tdelete newFormValues.simpay_form_settings_tab;\n\n\t\tif ( JSON.stringify( newFormValues ) !== initialValues ) {\n\t\t\tevent.preventDefault();\n\n\t\t\t// The return string is needed for browser compat.\n\t\t\t// See https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event.\n\t\t\treturn simpayAdmin.i18n.leavePageConfirm;\n\t\t}\n\t}\n\n\t// eslint-disable-next-line @wordpress/no-global-event-listener\n\twindow.addEventListener( 'beforeunload', confirmLeave );\n\twindow.onbeforeunload = confirmLeave;\n\n\t// Use jQuery to match WordPress core.\n\tjQuery( '.post-type-simple-pay form#post' )\n\t\t.off( 'submit' )\n\t\t.on( 'submit', function () {\n\t\t\t// eslint-disable-next-line @wordpress/no-global-event-listener\n\t\t\twindow.removeEventListener( 'beforeunload', confirmLeave );\n\t\t\twindow.onbeforeunload = null;\n\t\t} );\n}\n\n/**\n * Provides feedback to reCAPTCHA configuration.\n */\nfunction reCaptchaFeedback() {\n\tconst feedbackNoticeEl = document.querySelector(\n\t\t'.simpay-recaptcha-payment-form-feedback'\n\t);\n\n\tif ( ! feedbackNoticeEl ) {\n\t\treturn;\n\t}\n\n\tconst feedbackNoticeElDesc = document.querySelector(\n\t\t'.simpay-recaptcha-payment-form-description'\n\t);\n\tconst { siteKey, i18n } = simpayGoogleRecaptcha;\n\n\tfeedbackNoticeElDesc.style.display = 'none';\n\n\tfunction onError() {\n\t\tfeedbackNoticeEl.style.color = '#b32d2e';\n\t\tfeedbackNoticeEl.style.display = 'inline';\n\t\tfeedbackNoticeEl.innerHTML = i18n.disabled;\n\n\t\tfeedbackNoticeElDesc.style.display = 'inline-block';\n\t}\n\n\tfunction onSuccess() {\n\t\tfeedbackNoticeEl.style.color = 'green';\n\t\tfeedbackNoticeEl.style.display = 'inline';\n\t\tfeedbackNoticeEl.innerHTML = i18n.enabled;\n\n\t\tfeedbackNoticeElDesc.style.display = 'inline-block';\n\t}\n\n\tif ( '' === siteKey ) {\n\t\treturn onError();\n\t}\n\n\tgrecaptcha.ready( () => {\n\t\tconst badge = document.querySelector( '.grecaptcha-badge' );\n\n\t\tif ( badge ) {\n\t\t\tbadge.style.display = 'none';\n\t\t}\n\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction: `simple_pay_admin_test`,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => {\n\t\t\t\t\twp.ajax.send( 'simpay_validate_recaptcha_source', {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\trecaptcha_action: 'simple_pay_admin_test',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: onSuccess,\n\t\t\t\t\t\terror: onError,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( onError );\n\t\t} catch ( error ) {\n\t\t\tonError();\n\t\t}\n\t} );\n}\n\n/**\n * Provides feebdack to Title requirement.\n */\nfunction requireFormTitle() {\n\tconst formTitleInput = document.querySelector( '#_company_name' );\n\n\tif ( ! formTitleInput ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Appends an error message if the input is empty and refills with the site title.\n\t */\n\tformTitleInput.addEventListener( 'blur', function () {\n\t\tif ( formTitleInput.value.length === 0 ) {\n\t\t\tformTitleInput.nextElementSibling.classList.remove( 'hidden' );\n\t\t\tformTitleInput.value = simpayAdmin.siteTitle;\n\t\t} else {\n\t\t\tformTitleInput.nextElementSibling.classList.add( 'hidden' );\n\t\t}\n\t} );\n\n\tformTitleInput.addEventListener( 'focus', function () {\n\t\tif ( formTitleInput.value.length !== 0 ) {\n\t\t\tformTitleInput.nextElementSibling.classList.add( 'hidden' );\n\t\t}\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tconst formSettings = document.querySelector(\n\t\t'.post-type-simple-pay #post'\n\t);\n\n\tif ( formSettings ) {\n\t\tconst formValues = serialize( formSettings, { hash: true } );\n\t\tdelete formValues.simpay_form_settings_tab;\n\t\tonLeavePage( JSON.stringify( formValues ) );\n\n\t\treCaptchaFeedback();\n\t\trequireFormTitle();\n\t}\n} );\n","import './general.js';\nimport './prices.js';\n","/* global wp, _, jQuery, spGeneral */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Updates the display label as settings change.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onChangeLabel( priceEl ) {\n\tconst labelDisplay = priceEl.querySelector( '.simpay-price-label-display' );\n\tconst labelInput = priceEl.querySelector( '.simpay-price-label' );\n\n\tconst {\n\t\tstrings: { recurringIntervalDisplay, customAmountLabel },\n\t} = spGeneral;\n\n\tif ( '' !== labelInput.value ) {\n\t\tlabelDisplay.innerHTML = labelInput.value;\n\t} else {\n\t\tlet label;\n\t\tconst currencyInput = priceEl.querySelector( '.simpay-price-currency' );\n\t\tconst amountInput = priceEl.querySelector( '.simpay-price-amount' );\n\t\tconst amountTypeInput = priceEl.querySelector(\n\t\t\t'.simpay-price-amount-type'\n\t\t);\n\n\t\tconst customAmountInput = priceEl.querySelector(\n\t\t\t'.simpay-price-custom-amount input'\n\t\t);\n\t\tconst customAmountToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-enable-custom-amount'\n\t\t);\n\n\t\tconst {\n\t\t\tstrings: { currencyPosition, recurringIntervals },\n\t\t} = spGeneral;\n\t\tconst currencySymbol =\n\t\t\tcurrencyInput.options[ currencyInput.selectedIndex ].dataset.symbol;\n\n\t\tif ( true === customAmountToggle.checked ) {\n\t\t\tlabel = customAmountInput.value;\n\t\t} else {\n\t\t\tlabel = amountInput.value;\n\t\t}\n\n\t\tswitch ( currencyPosition ) {\n\t\t\tcase 'left':\n\t\t\t\tlabel = `${ currencySymbol }${ label }`;\n\t\t\t\tbreak;\n\t\t\tcase 'left_space':\n\t\t\t\tlabel = `${ currencySymbol } ${ label }`;\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\tlabel = `${ label }${ currencySymbol }`;\n\t\t\t\tbreak;\n\t\t\tcase 'right_space':\n\t\t\t\tlabel = `${ label } ${ currencySymbol }`;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( true === customAmountToggle.checked ) {\n\t\t\tlabel = customAmountLabel.replace( '%s', label );\n\t\t}\n\n\t\tif ( 'recurring' === amountTypeInput.value ) {\n\t\t\tconst recurringInterval = priceEl.querySelector(\n\t\t\t\t'.simpay-price-recurring-interval'\n\t\t\t);\n\n\t\t\tconst recurringIntervalCount = priceEl.querySelector(\n\t\t\t\t'.simpay-price-recurring-interval-count'\n\t\t\t);\n\n\t\t\tconst recurringIntervalDisplayNouns =\n\t\t\t\trecurringIntervals[\n\t\t\t\t\trecurringInterval.options[ recurringInterval.selectedIndex ]\n\t\t\t\t\t\t.value\n\t\t\t\t];\n\n\t\t\tlet recurringIntervalDisplayReplaced = recurringIntervalDisplay;\n\n\t\t\trecurringIntervalDisplayReplaced = recurringIntervalDisplayReplaced.replace(\n\t\t\t\t'%1$s',\n\t\t\t\tlabel\n\t\t\t);\n\n\t\t\trecurringIntervalDisplayReplaced = recurringIntervalDisplayReplaced.replace(\n\t\t\t\t'%2$s',\n\t\t\t\trecurringIntervalCount.value\n\t\t\t);\n\n\t\t\trecurringIntervalDisplayReplaced = recurringIntervalDisplayReplaced.replace(\n\t\t\t\t'%3$s',\n\t\t\t\trecurringIntervalCount.value === '1'\n\t\t\t\t\t? recurringIntervalDisplayNouns[ 0 ]\n\t\t\t\t\t: recurringIntervalDisplayNouns[ 1 ]\n\t\t\t);\n\n\t\t\tlabel = recurringIntervalDisplayReplaced;\n\t\t}\n\n\t\tlabelDisplay.innerHTML = label;\n\t}\n}\n\n/**\n * Handles changing the current price option's currency.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onChangeCurrency( priceEl ) {\n\tconst { options, selectedIndex } = priceEl.querySelector(\n\t\t'.simpay-price-currency'\n\t);\n\tconst { symbol } = options[ selectedIndex ].dataset;\n\n\tconst currenySymbolEls = priceEl.querySelectorAll(\n\t\t'.simpay-price-currency-symbol'\n\t);\n\n\t_.each(\n\t\tcurrenySymbolEls,\n\t\t( currencySymbolEl ) => ( currencySymbolEl.innerText = symbol )\n\t);\n}\n\n/**\n * Handles displaying the current price's relevant settings when a Price's\n * \"Amount Type\" changes.\n *\n * @param {HTMLElement} priceEl Price container element.\n * @param {HTMLElement} toggle Price type toggle element.\n */\nfunction onToggleAmountType( priceEl, toggle ) {\n\t// Disable current toggles.\n\tconst toggles = priceEl.querySelectorAll(\n\t\t'.simpay-price-amount-type .button'\n\t);\n\n\t_.each( toggles, ( toggle ) =>\n\t\ttoggle.classList.remove( 'button-primary' )\n\t);\n\n\t// Update current toggle and show relevant settings.\n\tconst { amountType } = toggle.dataset;\n\n\tconst recurringSettings = priceEl.querySelector(\n\t\t'.simpay-price-recurring-settings'\n\t);\n\n\ttoggle.classList.add( 'button-primary' );\n\trecurringSettings.style.display =\n\t\t'recurring' === amountType ? 'block' : 'none';\n\n\t// Hide \"optional recur\" setting.\n\tconst canRecurSetting = priceEl.querySelector(\n\t\t'.simpay-price-recurring-amount-toggle'\n\t);\n\n\tconst canRecurToggle = priceEl.querySelector(\n\t\t'.simpay-price-enable-optional-subscription'\n\t);\n\n\tcanRecurSetting.style.display =\n\t\t'recurring' === amountType ? 'none' : 'block';\n\tcanRecurToggle.checked = false;\n\n\t// Update the hidden field to track the amount type.\n\tpriceEl.querySelector( '.simpay-price-amount-type' ).value = amountType;\n}\n\n/**\n * Handles displaying the current price's recurring settings\n * if the \"Can optionally be purchased as a subscription\" setting is checked.\n *\n * @param {HTMLElement} priceEl Price container element.\n * @param {HTMLElement} checkbox Recurring toggle element.\n */\nfunction onToggleCanRecur( priceEl, checkbox ) {\n\tconst recurringSettings = priceEl.querySelector(\n\t\t'.simpay-price-recurring-settings'\n\t);\n\n\trecurringSettings.style.display = checkbox.checked ? 'block' : 'none';\n}\n\n/**\n * Handles displaying the current price's custom amount settings.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onToggleCustomAmount( priceEl ) {\n\tconst customAmountSettings = priceEl.querySelector(\n\t\t'.simpay-price-custom-amount'\n\t);\n\n\tcustomAmountSettings.style.display =\n\t\t'none' === customAmountSettings.style.display ? 'block' : 'none';\n}\n\n/**\n * Handles validating the recurring interval. Can not be over one year.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onChangeRecurring( priceEl ) {\n\tconst recurringInterval = priceEl.querySelector(\n\t\t'.simpay-price-recurring-interval'\n\t);\n\n\tconst recurringIntervalCount = priceEl.querySelector(\n\t\t'.simpay-price-recurring-interval-count'\n\t);\n\n\tconst recurringIntervalCountValue = parseInt(\n\t\trecurringIntervalCount.value\n\t);\n\n\tconst recurringIntervalValue =\n\t\trecurringInterval.options[ recurringInterval.selectedIndex ].value;\n\n\t// Update the recurring interval pluralization based on the count value.\n\tconst pluralizations = JSON.parse( recurringInterval.dataset.intervals );\n\n\t[ ...recurringInterval.options ].forEach( ( { value }, i ) => {\n\t\trecurringInterval.options[ i ].text =\n\t\t\trecurringIntervalCountValue === 1\n\t\t\t\t? pluralizations[ value ][ 0 ]\n\t\t\t\t: pluralizations[ value ][ 1 ];\n\t} );\n\n\t// Limit each interval to maximum 5 years (imposed by Stripe).\n\tswitch ( recurringIntervalValue ) {\n\t\tcase 'day':\n\t\t\tif ( recurringIntervalCountValue > 1825 ) {\n\t\t\t\trecurringIntervalCount.value = 1825;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'week':\n\t\t\tif ( recurringIntervalCountValue > 260 ) {\n\t\t\t\trecurringIntervalCount.value = 260;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'month':\n\t\t\tif ( recurringIntervalCountValue > 60 ) {\n\t\t\t\trecurringIntervalCount.value = 60;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'year':\n\t\t\tif ( recurringIntervalCountValue > 5 ) {\n\t\t\t\trecurringIntervalCount.value = 5;\n\t\t\t}\n\t\t\tbreak;\n\t}\n}\n\n/**\n * Handles displaying the current price's legacy settings.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onToggleLegacySettings( priceEl ) {\n\tconst legacySettingEls = priceEl.querySelectorAll(\n\t\t'.simpay-price-legacy-setting'\n\t);\n\n\t_.each(\n\t\tlegacySettingEls,\n\t\t( legacySettingEl ) =>\n\t\t\t( legacySettingEl.style.display =\n\t\t\t\t'block' === legacySettingEl.style.display ? 'none' : 'block' )\n\t);\n}\n\n/**\n * Handles toggling the current price option as the default selection.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onToggleDefault( priceEl ) {\n\tconst allDefaults = document.querySelectorAll( '.simpay-price-default' );\n\n\t_.each( allDefaults, ( defaultEl ) => ( defaultEl.checked = false ) );\n\n\tpriceEl.querySelector( '.simpay-price-default' ).checked = true;\n}\n\n/**\n * Handles remove a price.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onRemove( priceEl ) {\n\tpriceEl.remove();\n\tensureDefaultPrice();\n}\n\n/**\n * Handles adding a new price option.\n *\n * @param {HTMLElement} buttonEl \"Add Price\" button.\n */\nfunction onAddPrice( buttonEl ) {\n\tconst { nonce, formId } = buttonEl.dataset;\n\tconst priceListEl = document.getElementById( 'simpay-prices' );\n\n\t// Disable button.\n\tbuttonEl.classList.add( 'disabled' );\n\n\twp.ajax.send( 'simpay_add_price', {\n\t\tdata: {\n\t\t\t_wpnonce: nonce,\n\t\t\tform_id: formId,\n\t\t},\n\t\tsuccess: ( response ) => {\n\t\t\tjQuery( priceListEl ).append( response );\n\n\t\t\t// Rebind events when added.\n\t\t\tbindPriceOptions();\n\t\t\tensureDefaultPrice();\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\t\t},\n\t\terror: ( { message } ) => {\n\t\t\talert( message );\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\t\t},\n\t} );\n}\n\n/**\n * Handles adding an existing (legacy) Stripe Plan.\n *\n * @param {HTMLElement} buttonEl \"Add Plan\" button.\n */\nfunction onAddPlan( buttonEl ) {\n\tconst { nonce, formId } = buttonEl.dataset;\n\tconst priceListEl = document.getElementById( 'simpay-prices' );\n\tconst planIdEl = document.getElementById(\n\t\t'simpay-prices-advanced-plan-id'\n\t);\n\n\tbuttonEl.classList.add( 'disabled' );\n\n\twp.ajax.send( 'simpay_add_plan', {\n\t\tdata: {\n\t\t\t_wpnonce: nonce,\n\t\t\tform_id: formId,\n\t\t\tplan_id: planIdEl.value,\n\t\t},\n\t\tsuccess: ( response ) => {\n\t\t\tjQuery( priceListEl ).append( response );\n\n\t\t\t// Rebind events when added.\n\t\t\tbindPriceOptions();\n\n\t\t\t// Hide advanced settings and clear input.\n\t\t\tdocument.getElementById( 'simpay-prices-advanced' ).style.display =\n\t\t\t\t'none';\n\t\t\tplanIdEl.value = '';\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\t\t},\n\t\terror: ( { message } ) => {\n\t\t\talert( message );\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\t\t},\n\t} );\n}\n\n/**\n * Binds jQuery sortable to price options.\n */\nfunction bindSortablePriceOptions() {\n\t$( '.simpay-prices' ).sortable( {\n\t\titems: '.simpay-field-metabox',\n\t\tcontainment: '#simpay-prices',\n\t\thandle: '.simpay-hndle',\n\t\tplaceholder: 'sortable-placeholder',\n\t\tcursor: 'move',\n\t\tdelay: $( document.body ).hasClass( 'mobile' ) ? 200 : 0,\n\t\tdistance: 2,\n\t\ttolerance: 'pointer',\n\t\tforcePlaceholderSize: true,\n\t\topacity: 0.65,\n\n\t\t// @link https://core.trac.wordpress.org/changeset/35809\n\t\thelper( event, element ) {\n\t\t\t/* `helper: 'clone'` is equivalent to `return element.clone();`\n\t\t\t * Cloning a checked radio and then inserting that clone next to the original\n\t\t\t * radio unchecks the original radio (since only one of the two can be checked).\n\t\t\t * We get around this by renaming the helper's inputs' name attributes so that,\n\t\t\t * when the helper is inserted into the DOM for the sortable, no radios are\n\t\t\t * duplicated, and no original radio gets unchecked.\n\t\t\t */\n\t\t\treturn element\n\t\t\t\t.clone()\n\t\t\t\t.find( ':input' )\n\t\t\t\t.attr( 'name', function ( i, currentName ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t'sort_' +\n\t\t\t\t\t\tparseInt( Math.random() * 100000, 10 ).toString() +\n\t\t\t\t\t\t'_' +\n\t\t\t\t\t\tcurrentName\n\t\t\t\t\t);\n\t\t\t\t} )\n\t\t\t\t.end();\n\t\t},\n\t} );\n}\n\n/**\n * Binds events to various elements on each price option.\n */\nfunction bindPriceOptions() {\n\tconst pricesEls = document.querySelectorAll( '.simpay-price' );\n\n\t_.each( pricesEls, ( priceEl ) => {\n\t\tconst amountType = priceEl.querySelector( '.simpay-price-amount-type' )\n\t\t\t.value;\n\n\t\t// Label.\n\t\tconst labelInput = priceEl.querySelector( '.simpay-price-label' );\n\n\t\tlabelInput.addEventListener( 'keyup', () => onChangeLabel( priceEl ) );\n\t\tonChangeLabel( priceEl );\n\n\t\t// Currency symbol.\n\t\tconst currencyToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-currency'\n\t\t);\n\n\t\tcurrencyToggle.addEventListener( 'change', () => {\n\t\t\tonChangeCurrency( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\t// Amount type toggle.\n\t\tconst amountTypeToggles = priceEl.querySelectorAll(\n\t\t\t'.simpay-price-amount-type .button'\n\t\t);\n\n\t\tif ( amountTypeToggles.length > 0 ) {\n\t\t\t_.each( amountTypeToggles, ( amountTypeToggle ) =>\n\t\t\t\tamountTypeToggle.addEventListener( 'click', ( e ) => {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tonToggleAmountType( priceEl, e.target );\n\t\t\t\t\tonChangeLabel( priceEl );\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\t// Amount.\n\t\tconst amountInput = priceEl.querySelector( '.simpay-price-amount' );\n\n\t\tamountInput.addEventListener( 'keyup', () => onChangeLabel( priceEl ) );\n\n\t\t// Optional recurring toggle.\n\t\tconst canRecurToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-enable-optional-subscription'\n\t\t);\n\n\t\tif ( canRecurToggle ) {\n\t\t\tcanRecurToggle.addEventListener( 'click', ( { target } ) => {\n\t\t\t\tonToggleCanRecur( priceEl, target );\n\t\t\t\tonChangeLabel( priceEl );\n\t\t\t} );\n\n\t\t\tif ( 'recurring' !== amountType ) {\n\t\t\t\tonToggleCanRecur( priceEl, canRecurToggle );\n\t\t\t}\n\t\t}\n\n\t\t// Custom amount toggle.\n\t\tconst customAmountToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-enable-custom-amount'\n\t\t);\n\n\t\tcustomAmountToggle.addEventListener( 'click', () => {\n\t\t\tonToggleCustomAmount( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\t// Recurring interval.\n\t\tconst recurringInterval = priceEl.querySelector(\n\t\t\t'.simpay-price-recurring-interval'\n\t\t);\n\n\t\trecurringInterval.addEventListener( 'change', () => {\n\t\t\tonChangeLabel( priceEl );\n\t\t\tonChangeRecurring( priceEl );\n\t\t} );\n\n\t\t// Recurring interval count.\n\t\tconst recurringIntervalCount = priceEl.querySelector(\n\t\t\t'.simpay-price-recurring-interval-count'\n\t\t);\n\n\t\trecurringIntervalCount.addEventListener( 'keyup', () => {\n\t\t\tonChangeRecurring( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\t\trecurringIntervalCount.addEventListener( 'change', () => {\n\t\t\tonChangeRecurring( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\t// Legacy settings toggle.\n\t\tconst legacySettingsToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-legacy-setting-toggle'\n\t\t);\n\n\t\tif ( legacySettingsToggle ) {\n\t\t\tlegacySettingsToggle.addEventListener( 'click', ( e ) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tonToggleLegacySettings( priceEl );\n\t\t\t} );\n\t\t}\n\n\t\t// Default checkbox.\n\t\tconst defaultToggle = priceEl.querySelector( '.simpay-price-default' );\n\n\t\tdefaultToggle.addEventListener( 'change', () =>\n\t\t\tonToggleDefault( priceEl )\n\t\t);\n\n\t\t// Remove.\n\t\tconst removeToggle = priceEl.querySelector( '.simpay-price-remove' );\n\n\t\tremoveToggle.addEventListener( 'click', ( e ) => {\n\t\t\te.preventDefault();\n\t\t\tonRemove( priceEl );\n\t\t} );\n\t} );\n}\n\n/**\n * Binds events to \"Advanced\" options.\n */\nfunction bindAdvancedOptions() {\n\tconst toggleAdvancedEl = document.getElementById(\n\t\t'simpay-prices-advanced-toggle'\n\t);\n\n\tconst advancedEl = document.getElementById( 'simpay-prices-advanced' );\n\n\tif ( ! toggleAdvancedEl || ! advancedEl ) {\n\t\treturn;\n\t}\n\n\ttoggleAdvancedEl.addEventListener( 'click', function ( e ) {\n\t\te.preventDefault();\n\n\t\tadvancedEl.style.display =\n\t\t\t'block' == advancedEl.style.display ? 'none' : 'block';\n\t} );\n}\n\n/**\n * Binds events for adding a new Price.\n */\nfunction addPrice() {\n\tconst addButtonEl = document.getElementById( 'simpay-add-price' );\n\n\tif ( ! addButtonEl ) {\n\t\treturn;\n\t}\n\n\taddButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\tonAddPrice( addButtonEl );\n\t} );\n}\n\n/**\n * Binds events for adding an existing (legacy) Stripe Plan.\n */\nfunction addPlan() {\n\tconst addButtonEl = document.getElementById( 'simpay-prices-advanced-add' );\n\n\tif ( ! addButtonEl ) {\n\t\treturn;\n\t}\n\n\taddButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\tonAddPlan( addButtonEl );\n\t} );\n}\n\n/**\n * Shows or hides \"Remove\" toggles based on the current amount of prices.\n */\nfunction ensureDefaultPrice() {\n\tconst prices = document.querySelectorAll( '.simpay-price' );\n\n\tif ( ! document.querySelector( '.simpay-price-default:checked' ) ) {\n\t\tprices[ 0 ].querySelector( '.simpay-price-default' ).checked = true;\n\t}\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tbindSortablePriceOptions();\n\tbindPriceOptions();\n\tbindAdvancedOptions();\n\taddPlan();\n\taddPrice();\n} );\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tconst feedbackNoticeEl = document.querySelector(\n\t\t'.simpay-recaptcha-feedback'\n\t);\n\n\tif ( ! feedbackNoticeEl ) {\n\t\treturn;\n\t}\n\n\tconst { siteKey, i18n } = simpayGoogleRecaptcha;\n\n\tif ( '' === siteKey ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Show the error notice.\n\t */\n\tfunction onError() {\n\t\tfeedbackNoticeEl.style.display = 'block';\n\t\tfeedbackNoticeEl.classList.add( 'notice-error' );\n\t\tfeedbackNoticeEl.querySelector( 'p' ).innerText = i18n.invalid;\n\t}\n\n\tgrecaptcha.ready( () => {\n\t\tconst badge = document.querySelector( '.grecaptcha-badge' );\n\n\t\tif ( badge ) {\n\t\t\tbadge.style.display = 'none';\n\t\t}\n\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction: `simple_pay_admin_test`,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => {\n\t\t\t\t\twp.ajax.send( 'simpay_validate_recaptcha_source', {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\trecaptcha_action: 'simple_pay_admin_test',\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: onError,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( onError );\n\t\t} catch ( error ) {\n\t\t\tonError();\n\t\t}\n\t} );\n} );\n","/* global jQuery, simpayAdmin */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Toggle fields based on current mode.\n *\n * @param {string} newMode The new mode.\n * @param {string} initialMode The initial mode.\n */\nexport function toggleStripeConnectNotice( newMode, initialMode ) {\n\tconst notice = document.getElementById( 'simpay-test-mode-toggle-notice' );\n\n\t// Only show a notice when the mode changes.\n\tif ( newMode === initialMode ) {\n\t\tnotice.style.display = 'none';\n\t\treturn;\n\t}\n\n\tconst statusText = document.getElementById( 'simpay-toggle-notice-status' );\n\tconst statusLink = document.getElementById(\n\t\t'simpay-toggle-notice-status-link'\n\t);\n\n\tnotice.style.display = 'block';\n\n\tif ( ! statusText || ! statusLink ) {\n\t\treturn;\n\t}\n\n\tstatusText.innerHTML =\n\t\t'' + statusText.dataset[ newMode ] + '';\n\tstatusLink.href = statusLink.dataset[ newMode ];\n}\n\n/**\n * Outputs connected Stripe account information.\n */\nfunction accountInfo() {\n\tconst containerEl = document.getElementById( 'simpay-stripe-account-info' );\n\n\tif ( ! containerEl ) {\n\t\treturn;\n\t}\n\n\twp.ajax.send( 'simpay_stripe_connect_account_information', {\n\t\tdata: {\n\t\t\tnonce: containerEl.dataset.nonce,\n\t\t\taccount_id: containerEl.dataset.accountId,\n\t\t},\n\t\tsuccess: ( response ) => {\n\t\t\tcontainerEl.querySelector( 'p' ).innerHTML = response.message;\n\t\t\tcontainerEl.style.display = 'block';\n\n\t\t\tif (\n\t\t\t\t'simpay-stripe-activated-account-actions' === response.actions\n\t\t\t) {\n\t\t\t\tcontainerEl.classList.add( 'notice-info' );\n\t\t\t} else {\n\t\t\t\tcontainerEl.classList.add( 'notice-warning' );\n\t\t\t}\n\n\t\t\tconst actionsEl = document.getElementById( response.actions );\n\n\t\t\tif ( actionsEl ) {\n\t\t\t\tactionsEl.style.display = 'block';\n\t\t\t}\n\n\t\t\tdisconnectLink();\n\t\t},\n\t\terror: ( response ) => {\n\t\t\tcontainerEl.querySelector( 'p' ).innerHTML = response.message;\n\t\t\tcontainerEl.style.display = 'block';\n\t\t\tcontainerEl.classList.add( 'notice-error' );\n\n\t\t\tconst actionsEl = document.getElementById( response.actions );\n\n\t\t\tif ( actionsEl ) {\n\t\t\t\tactionsEl.style.display = 'block';\n\t\t\t\tdisconnectLink();\n\t\t\t}\n\t\t},\n\t} );\n}\n\n/**\n * Handles the Stripe Disconnect link and confirmation.\n */\nfunction disconnectLink() {\n\tconst disconnectLinkEls = document.querySelectorAll(\n\t\t'.simpay-disconnect-link'\n\t);\n\n\tif ( ! disconnectLinkEls ) {\n\t\treturn;\n\t}\n\n\tconst { i18n } = simpayAdmin;\n\tconst { disconnectConfirm, disconnectCancel } = i18n;\n\n\tdisconnectLinkEls.forEach( function ( el ) {\n\t\tel.addEventListener( 'click', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tjQuery( '.simpay-disconnect-confirm' ).dialog( {\n\t\t\t\tresizable: false,\n\t\t\t\theight: 'auto',\n\t\t\t\twidth: 400,\n\t\t\t\tmodal: true,\n\t\t\t\tdraggable: false,\n\t\t\t\topen() {\n\t\t\t\t\tjQuery( '.ui-dialog-buttonset .ui-button' )\n\t\t\t\t\t\t.removeClass( 'ui-button' )\n\t\t\t\t\t\t.last()\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\tmarginLeft: '10px',\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.focus();\n\t\t\t\t},\n\t\t\t\tbuttons: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: disconnectCancel,\n\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\tjQuery( this ).dialog( 'close' );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclass: 'button button-secondary',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: disconnectConfirm,\n\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\twindow.location.href = el.href;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclass: 'button button-primary',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t} );\n\t\t} );\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\taccountInfo();\n} );\n","/* global _ */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n// Need to wait for the DOM because the script is not enqueued at the end of the page.\n// @todo Investigate enqueing admin.js in the footer.\ndomReady( () => {\n\tconst { hooks } = window.wpsp;\n\tconst radioEls = document.querySelectorAll(\n\t\t'[name=\"simpay_settings[test_mode]\"]'\n\t);\n\n\tif ( 0 === radioEls.length ) {\n\t\treturn;\n\t}\n\n\tconst selectedRadioEl = document.querySelector(\n\t\t'[name=\"simpay_settings[test_mode]\"]:checked'\n\t);\n\n\tconst currentMode = 'enabled' === selectedRadioEl.value ? 'test' : 'live';\n\n\thooks.doAction( 'settings.toggleTestMode', currentMode, currentMode );\n\n\t// Update when the input changes.\n\t_.each( radioEls, ( radio ) =>\n\t\tradio.addEventListener( 'change', ( e ) => {\n\t\t\tconst newMode = 'enabled' === e.target.value ? 'test' : 'live';\n\n\t\t\thooks.doAction( 'settings.toggleTestMode', newMode, currentMode );\n\t\t} )\n\t);\n} );\n","/* global simpayAdminSettingToggles */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * @typedef {Object} Setting\n *\n * @property {Object} settingObj Setting object.\n * @property {string} settingObj.id Setting ID.\n * @property {mixed} settingObj.value Value the setting should equal to trigger the\n * toggles.\n * @property {string[]} settingObj.toggles Setting IDs to toggle.\n */\n\n/**\n * Typedef {Object} SettingInput\n *\n * @param {string} currentValue Current value.\n * @param {HTMLElement} setting Setting input.\n */\n\nconst SETTING_TOGGLES = simpayAdminSettingToggles || [];\n\n/**\n * Retrieves the setting input (or select) and the currnet value.\n *\n * @param {Setting} settingObj Setting object.\n * @return {SettingInput}\n */\nfunction getSetting( settingObj ) {\n\tconst { id: settingId, value: settingValue, toggles } = settingObj;\n\n\t// Settting row .\n\tconst settingRowEl = document.querySelector(\n\t\t`.simpay-settings-${ settingId }`\n\t);\n\n\tif ( ! settingRowEl ) {\n\t\treturn {};\n\t}\n\n\t// Setting input.\n\tlet setting = settingRowEl.querySelector( 'input' );\n\n\tif ( ! setting ) {\n\t\tsetting = settingRowEl.querySelector( 'select' );\n\t}\n\n\t// Setting current value.\n\tlet currentValue = setting.value;\n\n\tif ( 'checkbox' === setting.type ) {\n\t\tcurrentValue = true === setting.checked ? 'yes' : 'no';\n\t}\n\n\treturn {\n\t\tsetting,\n\t\tcurrentValue,\n\t};\n}\n\n/**\n * Toggle setting row visibility based on the setting input's current value.\n *\n * @param {Setting} settingObj Setting object.\n */\nfunction toggleSettings( settingObj ) {\n\tconst { id, value: settingValue, toggles } = settingObj;\n\tconst { setting, currentValue } = getSetting( settingObj );\n\n\t// Don't adjust dependent settings if this one is already hidden.\n\tconst currentRow = document.querySelector( `.simpay-settings-${ id }` );\n\n\tif ( 'none' === currentRow.style.display ) {\n\t\treturn;\n\t}\n\n\t// Toggle setting row visibility.\n\tconst toToggleRowEls = toggles.map( ( setting ) => {\n\t\treturn document.querySelector( `.simpay-settings-${ setting }` );\n\t} );\n\n\ttoToggleRowEls.forEach( ( el ) => {\n\t\tif ( ! el ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Show row if the current value of the setting matches expectations.\n\t\tel.style.display = currentValue === settingValue ? 'table-row' : 'none';\n\t} );\n\n\t// Run through again with the dependent settings to ensure the current value\n\t// is used to set the visibility.\n\ttoggles.forEach( ( settingId ) => {\n\t\tconst currentSettingObj = _.find( SETTING_TOGGLES, {\n\t\t\tid: settingId,\n\t\t} );\n\n\t\tif ( currentSettingObj ) {\n\t\t\ttoggleSettings( currentSettingObj );\n\t\t}\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\t// Setup toggles.\n\tSETTING_TOGGLES.forEach( ( settingObj ) => {\n\t\t// Toggle on page load.\n\t\ttoggleSettings( settingObj );\n\n\t\t// Bind to setting input changes.\n\t\tconst { setting } = getSetting( settingObj );\n\t\tsetting.addEventListener( 'change', () =>\n\t\t\ttoggleSettings( settingObj )\n\t\t);\n\t} );\n} );\n","/* global ClipboardJS */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Uses the ClipboardJS library to copy the shortcode to the clipboard.\n */\nfunction copyToClipboard() {\n\tconst clipboard = new ClipboardJS( '.simpay-copy-button' );\n\n\tclipboard.on( 'success', function ( e ) {\n\t\tconst buttonEl = e.trigger;\n\t\tconst { copied: copiedText } = buttonEl.dataset;\n\t\tconst originalText = buttonEl.innerHTML;\n\n\t\t// Show success visual feedback.\n\t\tclearTimeout( successTimeout );\n\t\tbuttonEl.innerHTML = copiedText;\n\n\t\tif ( buttonEl.classList.contains( 'button-secondary' ) ) {\n\t\t\tbuttonEl.style.color = 'green';\n\t\t\tbuttonEl.style.borderColor = 'green';\n\t\t}\n\n\t\te.clearSelection();\n\n\t\t// Hide success visual feedback after 3 seconds since last success.\n\t\tconst successTimeout = setTimeout( function () {\n\t\t\tbuttonEl.innerHTML = originalText;\n\n\t\t\tif ( buttonEl.classList.contains( 'button-secondary' ) ) {\n\t\t\t\tbuttonEl.style.color = '';\n\t\t\t\tbuttonEl.style.borderColor = '';\n\t\t\t}\n\n\t\t\t// Remove the visually hidden textarea so that it isn't perceived by assistive technologies.\n\t\t\tif (\n\t\t\t\tclipboard.clipboardAction.fakeElem &&\n\t\t\t\tclipboard.clipboardAction.removeFake\n\t\t\t) {\n\t\t\t\tclipboard.clipboardAction.removeFake();\n\t\t\t}\n\t\t}, 3000 );\n\n\t\t// Handle success audible feedback.\n\t\twp.a11y.speak( copiedText );\n\t} );\n}\n\ndomReady( copyToClipboard );\n","/**\n * WordPress dependencies\n */\nimport { createHooks } from '@wordpress/hooks';\n\nconst defaultHooks = createHooks();\nconst { addAction, addFilter, doAction, applyFilters } = defaultHooks;\n\nexport { addAction, addFilter, doAction, applyFilters };\nexport default defaultHooks;\n","module.exports = jQuery;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/typeof.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/regenerator/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/dom-ready/build-module/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createAddHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createCurrentHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createDidHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createDoingHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createHasHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createHooks.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createRemoveHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createRunHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/validateHookName.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/validateNamespace.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/form-serialize/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/regenerator-runtime/runtime.js","webpack:///./js/admin/addons.js","webpack:///./js/admin/index.js","webpack:///./js/admin/payment-form/custom-fields.js","webpack:///./js/admin/payment-form/general.js","webpack:///./js/admin/payment-form/index.js","webpack:///./js/admin/payment-form/payment-methods.js","webpack:///./js/admin/payment-form/payment-page.js","webpack:///./js/admin/payment-form/prices.js","webpack:///./js/admin/payment-form/stripe-checkout.js","webpack:///./js/admin/payment-form/taxes.js","webpack:///./js/admin/settings/license.js","webpack:///./js/admin/settings/recaptcha.js","webpack:///./js/admin/settings/stripe-connect.js","webpack:///./js/admin/settings/test-mode.js","webpack:///./js/admin/settings/toggles.js","webpack:///./js/admin/utils.js","webpack:///./js/frontend/utils/recaptcha.js","webpack:///./js/packages/api/src/api-request.js","webpack:///./js/packages/api/src/customers.js","webpack:///./js/packages/api/src/index.js","webpack:///./js/packages/api/src/orders.js","webpack:///./js/packages/api/src/paymentintents.js","webpack:///./js/packages/api/src/sessions.js","webpack:///./js/packages/api/src/setupintents.js","webpack:///./js/packages/api/src/subscriptions.js","webpack:///./js/packages/hooks/src/index.js","webpack:///./js/packages/utils/src/index.js","webpack:///./js/packages/utils/src/number.js","webpack:///./js/packages/utils/src/upgrade-modal.js","webpack:///external \"jQuery\""],"names":["s","iconActivate","iconDeactivate","iconInstall","iconSpinner","mediaFrame","simpayAdmin","nonce","ajaxUrl","i18n","addonActivated","addonActivate","addonActive","addonDeactivate","addonInactive","addonInstall","addonError","pluginError","setAddonState","plugin","state","pluginType","callback","actions","activate","install","deactivate","action","data","type","$","post","fail","xhr","console","log","responseText","addonToggle","e","preventDefault","$btn","target","cssClass","stateText","buttonText","errorText","successText","hasClass","window","open","attr","prop","addClass","html","$addon","closest","res","success","basename","msg","is_activated","find","append","removeClass","text","setTimeout","remove","domReady","document","querySelector","addOns","querySelectorAll","forEach","addOn","addEventListener","wpsp","hooks","spAdmin","body","spFormSettings","init","handleMetaboxTabClick","postboxes","handle_click","on","input","inputEl","isCustomFieldToggle","substring","parent","current","val","is","each","content","showIf","hide","includes","show","css","filter","trigger","addAction","toggleStripeConnectNotice","handleInternalLinkToTabClicks","handleRemoveImagePreviewClick","setupChosen","addMediaFields","stripeConnect","paymentModeSelector","length","paymentModes","mode","parents","simpayMediaUploader","wp","media","frames","file_frame","title","spGeneral","mediaTitle","button","mediaButtonText","multiple","$that","attachment","get","first","toJSON","inputField","image","id","url","chosenSelect","chosen","disable_search_threshold","tabLinks","panels","allTabLinkParents","currentTabLinkParent","currentTabEl","hash","history","pushState","scrollTo","activeTab","location","activeTabLink","click","rows","el","tabToShowId","tabToShowLinkEl","ready","jQuery","customFields","getElementById","maybeBlockButtonWithUpgradeModal","formSettings","onLeavePage","initialValues","confirmLeave","event","newFormValues","serialize","simpay_form_settings_tab","simpay_save_preview","JSON","stringify","leavePageConfirm","onbeforeunload","off","removeEventListener","reCaptchaFeedback","feedbackNoticeEl","feedbackNoticeElDesc","simpayGoogleRecaptcha","siteKey","style","display","onError","color","innerHTML","disabled","onSuccess","enabled","grecaptcha","badge","execute","then","token","ajax","send","recaptcha_action","error","catch","requireFormTitle","formTitleInput","value","nextElementSibling","classList","siteTitle","add","formType","selector","overlay","options","selectedIndex","option","maybeBlockSelectWithUpgradeModal","checked","dataset","available","formValues","onFilter","paymentMethods","paymentMethod","parse","scope","maybeShow","filters","maybeBlockCheckboxWithUpgradeModal","bindEnable","enableEl","bindHideBranding","hideEl","bindColorPicker","customColorEl","wpColorPicker","customButtonEl","colorButtonEls","bindSlug","slugEl","urlEl","clipboardText","origin","togglePriceOptionSingle","priceListEl","priceListCount","labelEl","priceSelectFieldEls","priceSelectFieldEl","priceSelectFieldNoticeEl","onChangeLabel","priceEl","labelDisplay","labelInput","strings","recurringIntervalDisplay","customAmountLabel","label","currencyInput","amountInput","amountTypeInput","customAmountInput","customAmountToggle","currencyPosition","recurringIntervals","currencySymbol","symbol","replace","recurringInterval","recurringIntervalCount","recurringIntervalDisplayNouns","recurringIntervalDisplayReplaced","onChangeCurrency","currenySymbolEls","_","currencySymbolEl","innerText","onToggleAmountType","toggle","toggles","amountType","recurringSettings","canRecurSetting","canRecurToggle","onToggleCanRecur","checkbox","onToggleCustomAmount","customAmountSettings","onChangeRecurring","recurringIntervalCountValue","parseInt","recurringIntervalValue","pluralizations","intervals","i","onToggleLegacySettings","legacySettingEls","legacySettingEl","onToggleDefault","allDefaults","defaultEl","onRemove","ensureDefaultPrice","onAddPrice","buttonEl","formId","_wpnonce","form_id","response","bindPriceOptions","message","alert","onAddPlan","planIdEl","plan_id","bindSortablePriceOptions","sortable","items","containment","handle","placeholder","cursor","delay","distance","tolerance","forcePlaceholderSize","opacity","helper","element","clone","currentName","Math","random","toString","end","pricesEls","currencyToggle","amountTypeToggles","amountTypeToggle","upgradeTitle","upgradeDescription","upgradeUrl","upgradePurchasedUrl","upgradeModal","description","purchasedUrl","legacySettingsToggle","defaultToggle","removeToggle","bindAdvancedOptions","toggleAdvancedEl","advancedEl","addPrice","addButtonEl","addPriceLite","addPriceEl","amountTypeLite","amountTypeEl","canRecurLite","canRecurEl","customLite","customEl","addPlan","prices","collectTaxId","collectTaxIdEl","allowCoupons","enableCoupons","onConnectError","feedbackEl","submitButtonEl","reload","connect","onConnectSuccess","onConnect","licenseKeyEl","nonceEl","connecting","key","invalid","newMode","initialMode","notice","statusText","statusLink","href","accountInfo","containerEl","actionsEl","disconnectLink","disconnectLinkEls","disconnectConfirm","disconnectCancel","dialog","resizable","height","width","modal","draggable","last","marginLeft","focus","buttons","class","radioEls","selectedRadioEl","currentMode","doAction","radio","SETTING_TOGGLES","simpayAdminSettingToggles","getSetting","settingObj","settingId","settingValue","settingRowEl","setting","currentValue","toggleSettings","currentRow","toToggleRowEls","map","currentSettingObj","copyToClipboard","clipboard","ClipboardJS","copiedText","copied","originalText","clearTimeout","successTimeout","contains","borderColor","clearSelection","clipboardAction","fakeElem","removeFake","a11y","speak","createToken","Promise","resolve","reject","apiRequest","route","method","wpApiSettings","root","beforeSend","setRequestHeader","responseJSON","create","paymentForm","getFormData","form_values","form_data","preview","recaptcha","captcha","submit","updatePaymentMethod","customerId","customerNonce","subscriptionId","args","customer_nonce","defaultHooks","createHooks","addFilter","applyFilters","Number","isInteger","isFinite","floor","isSafeInteger","abs","MAX_SAFE_INTEGER","prevValue","opts","position","my","at","of","m","borderBottom"],"mappings":"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;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,iBAAiB;AACjB;;;AAGA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,kDAAQ;AACd;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AChGA;AAAA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,gFAAiB,EAAC;AACjC,6C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AACA;AACA;AACqD;AACrD;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA;AACA,SAAS,oEAAgB;AACzB;AACA;;AAEA;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AC/BA;AAAA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEe,8EAAe,EAAC;AAC/B,2C;;;;;;;;;;;;AC9BA;AAAA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAC4C;AACM;AACN;AACA;AACQ;AACJ;AACJ;AAC5C;AACA;AACA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAa;AAC5B,eAAe,8DAAa;AAC5B,kBAAkB,iEAAgB;AAClC,kBAAkB,iEAAgB;AAClC,eAAe,8DAAa;AAC5B,eAAe,8DAAa;AAC5B,sBAAsB,iEAAgB;AACtC,sBAAsB,iEAAgB;AACtC,cAAc,8DAAa;AAC3B,kBAAkB,8DAAa;AAC/B,mBAAmB,kEAAiB;AACpC,mBAAmB,kEAAiB;AACpC,iBAAiB,gEAAe;AAChC,iBAAiB,gEAAe;AAChC,eAAe,8DAAa;AAC5B,eAAe,8DAAa;AAC5B;AACA;AACA;AACA;;AAEe,0EAAW,EAAC;AAC3B,uC;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACuD;AACF;AACvB;AAC9B;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,cAAc,OAAO;AACrB;AACA;AACA,SAAS,oEAAgB;AACzB;AACA;;AAEA,uBAAuB,qEAAiB;AACxC;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA;AACA,MAAM,kDAAQ;AACd;;AAEA;AACA;AACA;;AAEe,+EAAgB,EAAC;AAChC,4C;;;;;;;;;;;;ACnFA;AAAA;AAA8E;;AAE9E;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,KAAK;AACnB;AACA,cAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C,QAAQ,IAAqC;AAC7C;AACA;AACA,sCAAsC,4FAAkB;AACxD;AACA;;AAEA,0FAA0F,aAAa;AACvG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACwC;;AAExC,mBAAmB,4DAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2P;AAC3P,iC;;;;;;;;;;;;AC1BA;AAAA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,+EAAgB,EAAC;AAChC,4C;;;;;;;;;;;;AChCA;AAAA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,gFAAiB,EAAC;AACjC,6C;;;;;;;;;;;ACzBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;;AAEA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,yBAAyB;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA;AACA;AACA,EAAE,KAA0B,oBAAoB,SAAE;AAClD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;;;;;;ACjvBA;;AAEA;AACA;AACA;AACA;AAEA,IAAMA,CAAC,GAAG;AACTC,cAAY,EACX,uEAFQ;AAGTC,gBAAc,EAAE,oDAHP;AAITC,aAAW,EAAE,yDAJJ;AAKTC,aAAW,EAAE,0DALJ;AAMTC,YAAU,EAAE;AANH,CAAV;AASA,mBAAiCC,WAAjC;AAAA,IAAQC,KAAR,gBAAQA,KAAR;AAAA,IAAeC,OAAf,gBAAeA,OAAf;AAAA,IAAwBC,IAAxB,gBAAwBA,IAAxB;AAEA,IACCC,cADD,GASID,IATJ,CACCC,cADD;AAAA,IAECC,aAFD,GASIF,IATJ,CAECE,aAFD;AAAA,IAGCC,WAHD,GASIH,IATJ,CAGCG,WAHD;AAAA,IAICC,eAJD,GASIJ,IATJ,CAICI,eAJD;AAAA,IAKCC,aALD,GASIL,IATJ,CAKCK,aALD;AAAA,IAMCC,YAND,GASIN,IATJ,CAMCM,YAND;AAAA,IAOCC,UAPD,GASIP,IATJ,CAOCO,UAPD;AAAA,IAQCC,WARD,GASIR,IATJ,CAQCQ,WARD;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,aAAT,CAAwBC,MAAxB,EAAgCC,KAAhC,EAAuCC,UAAvC,EAAmDC,QAAnD,EAA8D;AAC7D,MAAMC,OAAO,GAAG;AACdC,YAAQ,EAAE,uBADI;AAEdC,WAAO,EAAE,sBAFK;AAGdC,cAAU,EAAE;AAHE,GAAhB;AAAA,MAKCC,MAAM,GAAGJ,OAAO,CAAEH,KAAF,CALjB;;AAOA,MAAK,CAAEO,MAAP,EAAgB;AACf;AACA;;AAED,MAAMC,IAAI,GAAG;AACZD,UAAM,EAANA,MADY;AAEZpB,SAAK,EAALA,KAFY;AAGZY,UAAM,EAANA,MAHY;AAIZU,QAAI,EAAER;AAJM,GAAb;AAOAS,GAAC,CAACC,IAAF,CAAQvB,OAAR,EAAiBoB,IAAjB,EAAuBN,QAAvB,EAAkCU,IAAlC,CAAwC,UAAWC,GAAX,EAAiB;AACxDC,WAAO,CAACC,GAAR,CAAaF,GAAG,CAACG,YAAjB;AACA,GAFD;AAGA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASC,WAAT,CAAsBC,CAAtB,EAA0B;AACzBA,GAAC,CAACC,cAAF;AAEA,MAAMC,IAAI,GAAGV,CAAC,CAAEQ,CAAC,CAACG,MAAJ,CAAd;AACA,MAAIrB,KAAJ,EAAWsB,QAAX,EAAqBC,SAArB,EAAgCC,UAAhC,EAA4CC,SAA5C,EAAuDC,WAAvD;;AAEA,MAAKN,IAAI,CAACO,QAAL,CAAe,kBAAf,CAAL,EAA2C;AAC1C;AACAC,UAAM,CAACC,IAAP,CAAaT,IAAI,CAACU,IAAL,CAAW,aAAX,CAAb,EAAyC,QAAzC;AACA;AACA;;AAED,MAAM7B,UAAU,GAAGmB,IAAI,CAACU,IAAL,CAAW,WAAX,CAAnB;AAEAV,MAAI,CAACW,IAAL,CAAW,UAAX,EAAuB,IAAvB,EAA8BC,QAA9B,CAAwC,SAAxC;AACAZ,MAAI,CAACa,IAAL,CAAWrD,CAAC,CAACI,WAAb;;AAEA,MAAKoC,IAAI,CAACO,QAAL,CAAe,eAAf,CAAL,EAAwC;AACvC;AACA3B,SAAK,GAAG,YAAR;AACAsB,YAAQ,GAAG,kBAAX;;AAEA,QAAKrB,UAAU,KAAK,QAApB,EAA+B;AAC9BqB,cAAQ,IAAI,0BAAZ;AACA;;AAEDC,aAAS,GAAG7B,aAAZ;AACA8B,cAAU,GAAGjC,aAAb;AACAkC,aAAS,GAAGhC,eAAZ;;AAEA,QAAKQ,UAAU,KAAK,OAApB,EAA8B;AAC7BuB,gBAAU,GAAG5C,CAAC,CAACC,YAAF,GAAiB2C,UAA9B;AACAC,eAAS,GAAG7C,CAAC,CAACE,cAAF,GAAmB2C,SAA/B;AACA;AACD,GAjBD,MAiBO,IAAKL,IAAI,CAACO,QAAL,CAAe,kBAAf,CAAL,EAA2C;AACjD;AACA3B,SAAK,GAAG,UAAR;AACAsB,YAAQ,GAAG,eAAX;;AAEA,QAAKrB,UAAU,KAAK,QAApB,EAA+B;AAC9BqB,cAAQ,IAAI,mCAAZ;AACA;;AAEDC,aAAS,GAAG/B,WAAZ;AACAgC,cAAU,GAAG/B,eAAb;;AAEA,QAAKQ,UAAU,KAAK,OAApB,EAA8B;AAC7BuB,gBAAU,GAAG5C,CAAC,CAACE,cAAF,GAAmB0C,UAAhC;AACAC,eAAS,GAAG7C,CAAC,CAACC,YAAF,GAAiBU,aAA7B;AACA,KAHD,MAGO,IAAKU,UAAU,KAAK,QAApB,EAA+B;AACrCuB,gBAAU,GAAGlC,cAAb;AACAmC,eAAS,GAAGlC,aAAZ;AACA;AACD,GAnBM,MAmBA,IAAK6B,IAAI,CAACO,QAAL,CAAe,gBAAf,CAAL,EAAyC;AAC/C;AACA3B,SAAK,GAAG,SAAR;AACAsB,YAAQ,GAAG,eAAX;;AAEA,QAAKrB,UAAU,KAAK,QAApB,EAA+B;AAC9BqB,cAAQ,IAAI,kBAAZ;AACA;;AAEDC,aAAS,GAAG/B,WAAZ;AACAgC,cAAU,GAAGlC,cAAb;AACAmC,aAAS,GAAG7C,CAAC,CAACG,WAAd;;AAEA,QAAKkB,UAAU,KAAK,OAApB,EAA8B;AAC7BuB,gBAAU,GAAG5C,CAAC,CAACC,YAAF,GAAiBY,eAA9B;AACAgC,eAAS,IAAI9B,YAAb;AACA;AACD,GAjBM,MAiBA;AACN;AACA;;AAED,MAAMuC,MAAM,GAAGd,IAAI,CAACe,OAAL,CAAc,eAAd,CAAf;AAAA,MACCpC,MAAM,GAAGqB,IAAI,CAACU,IAAL,CAAW,aAAX,CADV;AAGAhC,eAAa,CAAEC,MAAF,EAAUC,KAAV,EAAiBC,UAAjB,EAA6B,UAAWmC,GAAX,EAAiB;AAC1D,QAAKA,GAAG,CAACC,OAAT,EAAmB;AAClB,UAAK,cAAcrC,KAAnB,EAA2B;AAC1BoB,YAAI,CAACU,IAAL,CAAW,aAAX,EAA0BM,GAAG,CAAC5B,IAAJ,CAAS8B,QAAnC;AAEAZ,mBAAW,GAAGU,GAAG,CAAC5B,IAAJ,CAAS+B,GAAvB;;AAEA,YAAK,CAAEH,GAAG,CAAC5B,IAAJ,CAASgC,YAAhB,EAA+B;AAC9BjB,mBAAS,GAAG7B,aAAZ;AACA8B,oBAAU,GACT,aAAavB,UAAb,GACGV,aADH,GAEGX,CAAC,CAACC,YAAF,GAAiBU,aAHrB;AAIA+B,kBAAQ,GACP,aAAarB,UAAb,GACG,0CADH,GAEG,kBAHJ;AAIA;AACD,OAhBD,MAgBO;AACNyB,mBAAW,GAAGU,GAAG,CAAC5B,IAAlB;AACA;;AAED0B,YAAM,CACJO,IADF,CACQ,wBADR,EAEEC,MAFF,CAEU,8BAA8BhB,WAA9B,GAA4C,QAFtD;AAGAQ,YAAM,CACJO,IADF,CACQ,mBADR,EAEEE,WAFF,CAEe,+CAFf,EAGEX,QAHF,CAGYV,QAHZ,EAIEqB,WAJF,CAKE,iDALF,EAOEC,IAPF,CAOQrB,SAPR;AAQAH,UAAI,CAACuB,WAAL,CAAkB,+CAAlB,EACEA,WADF,CAEE,iDAFF,EAIEX,QAJF,CAIYV,QAJZ,EAKEW,IALF,CAKQT,UALR;AAMA,KAtCD,MAsCO;AACN,UAAK,aAAa,qEAAOY,GAAG,CAAC5B,IAAxB,CAAL,EAAoC;AACnC,YAAKP,UAAU,KAAK,OAApB,EAA8B;AAC7BiC,gBAAM,CACJO,IADF,CACQ,wBADR,EAEEC,MAFF,CAGE,4BAA4B9C,UAA5B,GAAyC,QAH3C;AAKA,SAND,MAMO;AACNsC,gBAAM,CACJO,IADF,CACQ,wBADR,EAEEC,MAFF,CAGE,4BAA4B7C,WAA5B,GAA0C,QAH5C;AAKA;AACD,OAdD,MAcO;AACNqC,cAAM,CACJO,IADF,CACQ,wBADR,EAEEC,MAFF,CAEU,4BAA4BN,GAAG,CAAC5B,IAAhC,GAAuC,QAFjD;AAGA;;AAED,UAAK,cAAcR,KAAd,IAAuB,aAAaC,UAAzC,EAAsD;AACrDmB,YAAI,CAACY,QAAL,CAAe,kBAAf,EAAoCW,WAApC,CACC,gBADD;AAGA;;AAEDvB,UAAI,CAACa,IAAL,CAAWR,SAAX;AACA;;AAEDL,QAAI,CAACW,IAAL,CAAW,UAAX,EAAuB,KAAvB,EAA+BY,WAA/B,CAA4C,SAA5C,EArE0D,CAuE1D;;AACAE,cAAU,CAAE,YAAY;AACvBX,YAAM,CAACO,IAAP,CAAa,MAAb,EAAsBK,MAAtB;AACA,KAFS,EAEP,IAFO,CAAV;AAGA,GA3EY,CAAb;AA4EA;AAED;AACA;AACA;;;AACAC,oEAAQ,CAAE,YAAM;AACf,MAAK,CAAEC,QAAQ,CAACC,aAAT,CAAwB,gBAAxB,CAAP,EAAoD;AACnD;AACA;;AAED,MAAMC,MAAM,GAAGF,QAAQ,CAACG,gBAAT,CAA2B,eAA3B,CAAf;AAEAD,QAAM,CAACE,OAAP,CAAgB,UAAEC,KAAF,EAAa;AAC5BA,SAAK,CACHJ,aADF,CACiB,QADjB,EAEEK,gBAFF,CAEoB,OAFpB,EAE6BrC,WAF7B;AAGA,GAJD;AAKA,CAZO,CAAR,C;;;;;;;;;;;;;AClOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACAW,MAAM,CAAC2B,IAAP,GAAc3B,MAAM,CAAC2B,IAAP,IAAe;AAC5BC,OAAK,EAALA,0DAAKA;AADuB,CAA7B;AAIA,IAAIC,OAAO,GAAG,EAAd;;AAEA,CAAE,UAAW/C,CAAX,EAAe;AAChB;;AAEA,MAAIgD,IAAJ,EAAUC,cAAV;AAEAF,SAAO,GAAG;AACTG,QADS,kBACF;AACN;AACAF,UAAI,GAAGhD,CAAC,CAAEsC,QAAQ,CAACU,IAAX,CAAR;AACAC,oBAAc,GAAGD,IAAI,CAACjB,IAAL,CAAW,uBAAX,CAAjB,CAHM,CAKN;;AACA,WAAKoB,qBAAL,GANM,CAQN;AACA;AACA;AAEA;AACA;;AACA,UAAKjC,MAAM,CAACkC,SAAP,IAAoBlC,MAAM,CAACkC,SAAP,CAAiBC,YAA1C,EAAyD;AACxDJ,sBAAc,CAACK,EAAf,CACC,OADD,EAEC,oDAFD,EAGCpC,MAAM,CAACkC,SAAP,CAAiBC,YAHlB;AAKA,OApBK,CAsBN;;;AACA,OACC,cADD,EAEC,wBAFD,EAGC,oBAHD,EAIC,6BAJD,EAKC,YALD,EAMC,aAND,EAOC,sBAPD,EAQC,sCARD,EASC,gCATD,EAUC,0BAVD,EAWC,wBAXD,EAYC,uBAZD,EAaC,oBAbD,EAcC,6BAdD,EAeC,0BAfD,EAgBEX,OAhBF,CAgBW,UAAEa,KAAF,EAAa;AACvB;AACA,YAAIC,OAAO,GAAGxD,CAAC,CAAEuD,KAAF,CAAf;AACA,YAAIE,mBAAmB,GAAG,KAA1B;;AAEA,YAAK,QAAQF,KAAK,CAACG,SAAN,CAAiB,CAAjB,EAAoB,CAApB,CAAb,EAAuC;AACtCF,iBAAO,qBAAcD,KAAd,QAAP;AACA,SAFD,MAEO;AACNC,iBAAO,GAAGD,KAAV;AACAE,6BAAmB,GAAG,IAAtB;AACA,SAVsB,CAYvB;;;AACAzD,SAAC,CAAE,uBAAF;AACA;AACL;AACA;AACA;AACA;AALI,SAMEsD,EANF,CAMM,QANN,EAMgBE,OANhB,EAMyB,YAAY;AACnC,cAAIG,MAAM,GAAG3D,CAAC,CAAE,uBAAF,CAAd;;AAEA,cAAK,SAASyD,mBAAd,EAAoC;AACnCE,kBAAM,GAAG3D,CAAC,CAAE,IAAF,CAAD,CAAUyB,OAAV,CAAmB,oBAAnB,CAAT;AACA,WALkC,CAOnC;;;AACA,cAAImC,OAAO,GAAG5D,CAAC,CAAE,IAAF,CAAD,CAAU6D,GAAV,EAAd,CARmC,CAUnC;AACA;;AACA,cAAK7D,CAAC,CAAE,IAAF,CAAD,CAAU8D,EAAV,CAAc,WAAd,CAAL,EAAmC;AAClCF,mBAAO,GAAG5D,CAAC,CAAE,IAAF,CAAD,CAAU8D,EAAV,CAAc,UAAd,IAA6B,KAA7B,GAAqC,IAA/C;AACA,WAdkC,CAgBnC;AACA;;;AACAH,gBAAM,CACJ5B,IADF,CAEE/B,CAAC,qCAA+BuD,KAA/B,SAFH,EAIEQ,IAJF,CAIQ,YAAY;AAClB,gBAAMC,OAAO,GAAGhE,CAAC,CAAE,IAAF,CAAjB;AACA,gBAAMiE,MAAM,GAAGD,OAAO,CAAClE,IAAR,CAAc,IAAd,CAAf,CAFkB,CAIlB;;AACAkE,mBAAO,CAACE,IAAR,GALkB,CAOlB;;AACA,gBAAKD,MAAM,CAACE,QAAP,CAAiBP,OAAjB,CAAL,EAAkC;AACjCI,qBAAO,CAACI,IAAR,GAAeC,GAAf,CAAoB,SAApB,EAA+B,OAA/B;AACA;AACD,WAfF;AAgBA,SAxCF,EAbuB,CAuDvB;;AACArE,SAAC,CAAEwD,OAAF,CAAD,CAAac,MAAb,CAAqB,UAArB,EAAkCC,OAAlC,CAA2C,QAA3C;;AAEA,YAAKvE,CAAC,CAAEwD,OAAF,CAAD,CAAaM,EAAb,CAAiB,QAAjB,CAAL,EAAmC;AAClC9D,WAAC,CAAEwD,OAAF,CAAD,CAAae,OAAb,CAAsB,QAAtB;AACA;AACD,OA7ED,EAvBM,CAsGN;;AACAzB,gEAAK,CAAC0B,SAAN,CACC,yBADD,EAEC,8BAFD,EAGCC,qFAHD,EAvGM,CA6GN;;AACAxB,oBAAc,CAACK,EAAf,CACC,qBADD,EAEC,kBAFD,EAGC,UAAW9C,CAAX,EAAe;AACdA,SAAC,CAACC,cAAF;AACAsC,eAAO,CAAC2B,6BAAR,CAAuC1E,CAAC,CAAE,IAAF,CAAxC;AACA,OANF,EA9GM,CAuHN;;AACAiD,oBAAc,CAACK,EAAf,CACC,0BADD,EAEC,8BAFD,EAGC,UAAW9C,CAAX,EAAe;AACduC,eAAO,CAAC4B,6BAAR,CAAuCnE,CAAvC;AACA,OALF,EAxHM,CAgIN;;AACA,WAAKoE,WAAL,GAjIM,CAmIN;;AACA,WAAKC,cAAL;AAEA,WAAKC,aAAL,GAtIM,CAwIN;AACA;AACA;;AACA,UAAMC,mBAAmB,GAAG/E,CAAC,CAAE,uBAAF,CAA7B;;AAEA,UAAK+E,mBAAmB,CAACC,MAAzB,EAAkC;AACjC,YAAMC,YAAY,GAAGF,mBAAmB,CAAChD,IAApB,CAA0B,OAA1B,CAArB;AAEAkD,oBAAY,CAAClB,IAAb,CAAmB,YAAY;AAC9B,cAAMmB,IAAI,GAAGlF,CAAC,CAAE,IAAF,CAAd;;AAEA,cACC,CAAE+E,mBAAmB,CAAC9D,QAApB,CACD,0BAA0BiE,IAAI,CAACrB,GAAL,EADzB,CADH,EAIE;AACDqB,gBAAI,CAAC9D,IAAL,CAAW,UAAX,EAAuB,IAAvB;AACA;AACD,SAVD;AAWA;;AAED4B,UAAI,CAACuB,OAAL,CAAc,iBAAd;AACA,KA/JQ;AAiKTI,iCAjKS,yCAiKsBnE,CAjKtB,EAiK0B;AAClCA,OAAC,CAACC,cAAF;AAEAT,OAAC,CAAEQ,CAAC,CAACG,MAAJ,CAAD,CACEwE,OADF,CACW,IADX,EAEEpD,IAFF,CAEQ,4BAFR,EAGE8B,GAHF,CAGO,EAHP,EAIEK,IAJF;AAMAlE,OAAC,CAAEQ,CAAC,CAACG,MAAJ,CAAD,CACEwE,OADF,CACW,IADX,EAEEpD,IAFF,CAEQ,yBAFR,EAGE8B,GAHF,CAGO,EAHP;AAKA7D,OAAC,CAAEQ,CAAC,CAACG,MAAJ,CAAD,CACEwE,OADF,CACW,IADX,EAEEpD,IAFF,CAEQ,8BAFR,EAGEmC,IAHF;AAIA,KAnLQ;AAqLTW,kBArLS,4BAqLQ;AAChB7E,OAAC,CAAE,wBAAF,CAAD,CAA8BsD,EAA9B,CAAkC,OAAlC,EAA2C,UAAW9C,CAAX,EAAe;AACzDA,SAAC,CAACC,cAAF,GADyD,CAGzD;;AACA,YAAM2E,mBAAmB,GAAKC,EAAE,CAACC,KAAH,CAASC,MAAT,CAAgBC,UAAhB,GAA6BH,EAAE,CAACC,KAAH,CAC1D;AACCG,eAAK,EAAEC,SAAS,CAAC/G,IAAV,CAAegH,UADvB;AAECC,gBAAM,EAAE;AACP1D,gBAAI,EAAEwD,SAAS,CAAC/G,IAAV,CAAekH;AADd,WAFT;AAKCC,kBAAQ,EAAE;AALX,SAD0D,CAA3D;AAUA,YAAMC,KAAK,GAAG/F,CAAC,CAAE,IAAF,CAAf,CAdyD,CAgBzD;;AACAoF,2BAAmB,CAAC9B,EAApB,CAAwB,QAAxB,EAAkC,YAAY;AAC7C,cAAM0C,UAAU,GAAGZ,mBAAmB,CACnC9F,KADgB,GAEhB2G,GAFgB,CAEX,WAFW,EAGhBC,KAHgB,GAIhBC,MAJgB,EAAnB;AAAA,cAKCC,UAAU,GAAGL,KAAK,CAChBZ,OADW,CACF,IADE,EAEXpD,IAFW,CAEL,yBAFK,CALd;AAAA,cAOsC;AACrCsE,eAAK,GACJ,SAASD,UAAU,CAACtG,IAAX,CAAiB,QAAjB,CAAT,GACGkG,UAAU,CAACM,EADd,GAEGN,UAAU,CAACO,GAXhB,CAD6C,CAc7C;;AACAR,eAAK,CACHZ,OADF,CACW,IADX,EAEEpD,IAFF,CAEQ,4BAFR,EAGEqC,IAHF;AAKA2B,eAAK,CACHZ,OADF,CACW,IADX,EAEEpD,IAFF,CAEQ,8BAFR,EAGEqC,IAHF;AAKA2B,eAAK,CACHZ,OADF,CACW,IADX,EAEEpD,IAFF,CAEQ,uBAFR,EAGEV,IAHF,CAGQ,KAHR,EAGegF,KAHf;AAKAD,oBAAU,CAACvC,GAAX,CAAgBwC,KAAhB;AACA,SA/BD,EAjByD,CAkDzD;;AACAjB,2BAAmB,CAACjE,IAApB;AACA,OApDD;AAqDA,KA3OQ;AA6OTyD,eA7OS,yBA6OK;AACb,UAAM4B,YAAY,GAAGxG,CAAC,CACrB,8CADqB,CAAtB;AAIAwG,kBAAY,CAACC,MAAb,CAAqB;AAAEC,gCAAwB,EAAE;AAA5B,OAArB;AACAF,kBAAY,CAACC,MAAb;AACA,KApPQ;AAsPT;AACA;AACA;AACA;AAEAtD,yBA3PS,mCA2Pe;AACvB,UAAMwD,QAAQ,GAAG3G,CAAC,CAAE,kBAAF,CAAlB;AACA,UAAM4G,MAAM,GAAG5G,CAAC,CAAE,kBAAF,CAAhB;AACA,UAAM6G,iBAAiB,GAAGF,QAAQ,CAACxB,OAAT,CAAkB,IAAlB,CAA1B,CAHuB,CAKvB;;AACAwB,cAAQ,CAACrD,EAAT,CAAa,OAAb,EAAsB,UAAW9C,CAAX,EAAe;AACpCA,SAAC,CAACC,cAAF;AAEA,YAAMqG,oBAAoB,GAAG9G,CAAC,CAAE,IAAF,CAAD,CAAU2D,MAAV,EAA7B,CAHoC,CAKpC;;AACA,YAAMoD,YAAY,GAAG/G,CAAC,CAAEA,CAAC,CAAE,IAAF,CAAD,CAAUoB,IAAV,CAAgB,MAAhB,CAAF,CAAtB,CANoC,CAQpC;;AACA,YAAM4F,IAAI,GAAGhH,CAAC,CAAE,IAAF,CAAD,CAAUoB,IAAV,CAAgB,MAAhB,CAAb;AACA6F,eAAO,CAACC,SAAR,CAAmB,IAAnB,EAAyB,IAAzB,EAA+BF,IAA/B,EAVoC,CAYpC;;AACA7E,kBAAU,CAAE,YAAY;AACvBjB,gBAAM,CAACiG,QAAP,CAAiB,CAAjB,EAAoB,CAApB;AACA,SAFS,EAEP,CAFO,CAAV;AAIAnH,SAAC,CAAE,mCAAF,CAAD,CAAyC6D,GAAzC,CAA8CmD,IAA9C;AAEAhH,SAAC,CAAE,2BAAF,CAAD,CAAiCkE,IAAjC,GAnBoC,CAqBpC;;AACA2C,yBAAiB,CAAC5E,WAAlB,CAA+B,QAA/B,EAtBoC,CAwBpC;;AACA6E,4BAAoB,CAACxF,QAArB,CAA+B,QAA/B,EAzBoC,CA2BpC;;AACAsF,cAAM,CAACtF,QAAP,CAAiB,qBAAjB,EA5BoC,CA8BpC;;AACAyF,oBAAY,CAAC9E,WAAb,CAA0B,qBAA1B;AACA,OAhCD;AAkCA,UAAImF,SAAS,GAAG,sCAAhB,CAxCuB,CA0CvB;;AACA,UAAKC,QAAQ,CAACL,IAAT,CAAchC,MAAnB,EAA4B;AAC3BoC,iBAAS,GAAGC,QAAQ,CAACL,IAArB;AACA;;AAED,UAAMM,aAAa,GAAGtH,CAAC,CACtB,4BAA4BoH,SAA5B,GAAwC,IADlB,CAAvB;AAIApH,OAAC,CAAE,mCAAF,CAAD,CAAyC6D,GAAzC,CAA8CuD,SAA9C;;AAEA,UAAKE,aAAa,CAACtC,MAAnB,EAA4B;AAC3BsC,qBAAa,CAACC,KAAd;AACA;AACD,KAnTQ;AAqTTzC,iBArTS,2BAqTO;AACf,UAAM0C,IAAI,GACT,oEADD;AAGAxH,OAAC,CAAE,6CAAF,CAAD,CACE+B,IADF,CACQyF,IADR,EAEEtD,IAFF;AAIAlE,OAAC,CAAE,kCAAF,CAAD,CAAwCsD,EAAxC,CACC,OADD,EAEC,UAAW9C,CAAX,EAAe;AACdA,SAAC,CAACC,cAAF;AAEAT,SAAC,CAAE,6CAAF,CAAD,CACE+B,IADF,CACQyF,IADR,EAEEpD,IAFF;AAIApE,SAAC,CAAE,yBAAF,CAAD,CAA+BoE,IAA/B;AACApE,SAAC,CAAE,IAAF,CAAD,CAAU2D,MAAV,GAAmBO,IAAnB;AACAlE,SAAC,CAAE,0BAAF,CAAD,CAAgCoE,IAAhC;AACA,OAZF;AAeApE,OAAC,CAAE,gCAAF,CAAD,CAAsCsD,EAAtC,CAA0C,OAA1C,EAAmD,UAAW9C,CAAX,EAAe;AACjEA,SAAC,CAACC,cAAF;AAEAT,SAAC,CAAE,6CAAF,CAAD,CACE+B,IADF,CACQyF,IADR,EAEEtD,IAFF;AAIAlE,SAAC,CAAE,2BAAF,CAAD,CAAiCoE,IAAjC;AACApE,SAAC,CAAE,IAAF,CAAD,CAAU2D,MAAV,GAAmBO,IAAnB;AACAlE,SAAC,CAAE,0BAAF,CAAD,CAAgCkE,IAAhC;AACA,OAVD;AAWA,KAvVQ;AAyVT;AACA;AACAQ,iCA3VS,yCA2VsB+C,EA3VtB,EA2V2B;AACnC,UAAMC,WAAW,GAAGD,EAAE,CAAC3H,IAAH,CAAS,UAAT,CAApB;AAAA,UACC6H,eAAe,GAAG3E,IAAI,CAACjB,IAAL,CAAW,MAAM2F,WAAN,GAAoB,QAA/B,CADnB;AAGAC,qBAAe,CAACJ,KAAhB;AACA;AAhWQ,GAAV;AAmWAvH,GAAC,CAAEsC,QAAF,CAAD,CAAcsF,KAAd,CAAqB,UAAW5H,CAAX,EAAe;AACnC+C,WAAO,CAACG,IAAR;AACA,GAFD;AAGA,CA3WD,EA2WK2E,MA3WL,E;;;;;;;;;;;;;ACxBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASC,YAAT,GAAwB;AACvB,MAAMlC,MAAM,GAAGtD,QAAQ,CAACyF,cAAT,CAAyB,uBAAzB,CAAf;;AAEA,MAAK,CAAEnC,MAAP,EAAgB;AACf;AACA;;AAEDA,QAAM,CAAChD,gBAAP,CAAyB,OAAzB,EAAkCoF,mFAAlC;AACA;AAED;AACA;AACA;;;AACA3F,oEAAQ,CAAE,YAAM;AACf,MAAM4F,YAAY,GAAG3F,QAAQ,CAACC,aAAT,CACpB,6BADoB,CAArB;;AAIA,MAAK0F,YAAL,EAAoB;AACnBH,gBAAY;AACZ;AACD,CARO,CAAR,C;;;;;;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASI,WAAT,CAAsBC,aAAtB,EAAsC;AACrC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACC,WAASC,YAAT,CAAuBC,KAAvB,EAA+B;AAC9B,QAAMC,aAAa,GAAGC,qDAAS,CAC9BjG,QAAQ,CAACC,aAAT,CAAwB,iCAAxB,CAD8B,EAE9B;AAAEyE,UAAI,EAAE;AAAR,KAF8B,CAA/B;AAIA,WAAOsB,aAAa,CAACE,wBAArB;AACA,WAAOF,aAAa,CAACG,mBAArB;;AAEA,QAAKC,IAAI,CAACC,SAAL,CAAgBL,aAAhB,MAAoCH,aAAzC,EAAyD;AACxDE,WAAK,CAAC5H,cAAN,GADwD,CAGxD;AACA;;AACA,aAAOjC,WAAW,CAACG,IAAZ,CAAiBiK,gBAAxB;AACA;AACD,GAxBoC,CA0BrC;;;AACA1H,QAAM,CAAC0B,gBAAP,CAAyB,cAAzB,EAAyCwF,YAAzC;AACAlH,QAAM,CAAC2H,cAAP,GAAwBT,YAAxB,CA5BqC,CA8BrC;;AACAP,QAAM,CAAE,iCAAF,CAAN,CACEiB,GADF,CACO,QADP,EAEExF,EAFF,CAEM,QAFN,EAEgB,YAAY;AAC1B;AACApC,UAAM,CAAC6H,mBAAP,CAA4B,cAA5B,EAA4CX,YAA5C;AACAlH,UAAM,CAAC2H,cAAP,GAAwB,IAAxB;AACA,GANF;AAOA;AAED;AACA;AACA;;;AACA,SAASG,iBAAT,GAA6B;AAC5B,MAAMC,gBAAgB,GAAG3G,QAAQ,CAACC,aAAT,CACxB,yCADwB,CAAzB;;AAIA,MAAK,CAAE0G,gBAAP,EAA0B;AACzB;AACA;;AAED,MAAMC,oBAAoB,GAAG5G,QAAQ,CAACC,aAAT,CAC5B,4CAD4B,CAA7B;AAGA,8BAA0B4G,qBAA1B;AAAA,MAAQC,OAAR,yBAAQA,OAAR;AAAA,MAAiBzK,IAAjB,yBAAiBA,IAAjB;AAEAuK,sBAAoB,CAACG,KAArB,CAA2BC,OAA3B,GAAqC,MAArC;;AAEA,WAASC,OAAT,GAAmB;AAClBN,oBAAgB,CAACI,KAAjB,CAAuBG,KAAvB,GAA+B,SAA/B;AACAP,oBAAgB,CAACI,KAAjB,CAAuBC,OAAvB,GAAiC,QAAjC;AACAL,oBAAgB,CAACQ,SAAjB,GAA6B9K,IAAI,CAAC+K,QAAlC;AAEAR,wBAAoB,CAACG,KAArB,CAA2BC,OAA3B,GAAqC,cAArC;AACA;;AAED,WAASK,SAAT,GAAqB;AACpBV,oBAAgB,CAACI,KAAjB,CAAuBG,KAAvB,GAA+B,OAA/B;AACAP,oBAAgB,CAACI,KAAjB,CAAuBC,OAAvB,GAAiC,QAAjC;AACAL,oBAAgB,CAACQ,SAAjB,GAA6B9K,IAAI,CAACiL,OAAlC;AAEAV,wBAAoB,CAACG,KAArB,CAA2BC,OAA3B,GAAqC,cAArC;AACA;;AAED,MAAK,OAAOF,OAAZ,EAAsB;AACrB,WAAOG,OAAO,EAAd;AACA;;AAEDM,YAAU,CAACjC,KAAX,CAAkB,YAAM;AACvB,QAAMkC,KAAK,GAAGxH,QAAQ,CAACC,aAAT,CAAwB,mBAAxB,CAAd;;AAEA,QAAKuH,KAAL,EAAa;AACZA,WAAK,CAACT,KAAN,CAAYC,OAAZ,GAAsB,MAAtB;AACA;;AAED,QAAI;AACHO,gBAAU,CACRE,OADF,CACWX,OADX,EACoB;AAClBvJ,cAAM;AADY,OADpB,EAIEmK,IAJF,CAIQ,UAAEC,KAAF,EAAa;AACnB5E,UAAE,CAAC6E,IAAH,CAAQC,IAAR,CAAc,kCAAd,EAAkD;AACjDrK,cAAI,EAAE;AACLmK,iBAAK,EAALA,KADK;AAELG,4BAAgB,EAAE;AAFb,WAD2C;AAKjDzI,iBAAO,EAAEgI,SALwC;AAMjDU,eAAK,EAAEd;AAN0C,SAAlD;AAQA,OAbF,EAcEe,KAdF,CAcSf,OAdT;AAeA,KAhBD,CAgBE,OAAQc,KAAR,EAAgB;AACjBd,aAAO;AACP;AACD,GA1BD;AA2BA;AAED;AACA;AACA;;;AACA,SAASgB,gBAAT,GAA4B;AAC3B,MAAMC,cAAc,GAAGlI,QAAQ,CAACC,aAAT,CAAwB,gBAAxB,CAAvB;;AAEA,MAAK,CAAEiI,cAAP,EAAwB;AACvB;AACA;AAED;AACD;AACA;;;AACCA,gBAAc,CAAC5H,gBAAf,CAAiC,MAAjC,EAAyC,YAAY;AACpD,QAAK4H,cAAc,CAACC,KAAf,CAAqBzF,MAArB,KAAgC,CAArC,EAAyC;AACxCwF,oBAAc,CAACE,kBAAf,CAAkCC,SAAlC,CAA4CvI,MAA5C,CAAoD,QAApD;AACAoI,oBAAc,CAACC,KAAf,GAAuBjM,WAAW,CAACoM,SAAnC;AACA,KAHD,MAGO;AACNJ,oBAAc,CAACE,kBAAf,CAAkCC,SAAlC,CAA4CE,GAA5C,CAAiD,QAAjD;AACA;AACD,GAPD;AASAL,gBAAc,CAAC5H,gBAAf,CAAiC,OAAjC,EAA0C,YAAY;AACrD,QAAK4H,cAAc,CAACC,KAAf,CAAqBzF,MAArB,KAAgC,CAArC,EAAyC;AACxCwF,oBAAc,CAACE,kBAAf,CAAkCC,SAAlC,CAA4CE,GAA5C,CAAiD,QAAjD;AACA;AACD,GAJD;AAKA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASC,QAAT,GAAoB;AACnB,MAAMC,QAAQ,GAAGzI,QAAQ,CAACyF,cAAT,CAAyB,kBAAzB,CAAjB;AACA,MAAMiD,OAAO,GAAG1I,QAAQ,CAACyF,cAAT,CAAyB,YAAzB,CAAhB;AAEAgD,UAAQ,CAACnI,gBAAT,CAA2B,QAA3B,EAAqC,UAAWpC,CAAX,EAAe;AACnD,oBAEIA,CAFJ,CACCG,MADD;AAAA,QACWsK,OADX,aACWA,OADX;AAAA,QACoBC,aADpB,aACoBA,aADpB;AAGA,QAAMC,MAAM,GAAGF,OAAO,CAAEC,aAAF,CAAtB;AACA,QAAMnL,IAAI,GAAGoL,MAAM,CAACV,KAApB;;AAEA,QAAK,cAAc1K,IAAnB,EAA0B;AACzBqL,iGAAgC,CAAE5K,CAAF,CAAhC;AACA;;AAED,QAAK,eAAeT,IAApB,EAA2B;AAC1BiL,aAAO,CAACzI,aAAR,CAAuB,OAAvB,EAAiC8I,OAAjC,GAA2C,KAA3C;AACA;;AAEDL,WAAO,CAAC3B,KAAR,CAAcC,OAAd,GACC,UAAU6B,MAAM,CAACG,OAAP,CAAeC,SAAzB,IAAsC,cAAcxL,IAApD,GACG,OADH,GAEG,MAHJ;AAIA,GAnBD;AAoBA;AAED;AACA;AACA;;;AACAsC,oEAAQ,CAAE,YAAM;AACf,MAAM4F,YAAY,GAAG3F,QAAQ,CAACC,aAAT,CACpB,6BADoB,CAArB;;AAIA,MAAK0F,YAAL,EAAoB;AACnB,QAAMuD,UAAU,GAAGjD,qDAAS,CAAEN,YAAF,EAAgB;AAAEjB,UAAI,EAAE;AAAR,KAAhB,CAA5B;AACA,WAAOwE,UAAU,CAAChD,wBAAlB;AACAN,eAAW,CAAEQ,IAAI,CAACC,SAAL,CAAgB6C,UAAhB,CAAF,CAAX;AAEAV,YAAQ;AACR9B,qBAAiB;AACjBuB,oBAAgB;AAChB;AACD,CAdO,CAAR,C;;;;;;;;;;;;;ACnMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASkB,QAAT,OAAgC;AAAA,MAAX9K,MAAW,QAAXA,MAAW;AAC/B,MAAM2D,MAAM,GAAG3D,MAAM,CAACsK,OAAP,CAAgBtK,MAAM,CAACuK,aAAvB,EAAuCT,KAAtD;AAEA,MAAMiB,cAAc,GAAGpJ,QAAQ,CAACG,gBAAT,CACtB,yDADsB,CAAvB;;AAIA,kFAAKiJ,cAAL,EAAsBhJ,OAAtB,CAA+B,UAAEiJ,aAAF,EAAqB;AACnD,sBAAkBjD,IAAI,CAACkD,KAAL,CAAYD,aAAa,CAACL,OAAd,CAAsBK,aAAlC,CAAlB;AAAA,QAAQE,KAAR,eAAQA,KAAR;;AACA,QAAMC,SAAS,GAAG,cAAcD,KAAd,GAAsB,OAAtB,GAAgC,MAAlD;AAEAF,iBAAa,CAACtC,KAAd,CAAoBC,OAApB,GAA8B,UAAUhF,MAAV,GAAmB,OAAnB,GAA6BwH,SAA3D;AACA,GALD;AAMA;;AAEDzJ,oEAAQ,CAAE,YAAM;AACf;AACA,MAAM0J,OAAO,GAAGzJ,QAAQ,CAACG,gBAAT,CACf,2CADe,CAAhB;;AAIA,MAAK,MAAMsJ,OAAO,CAAC/G,MAAnB,EAA4B;AAC3B,oFAAK+G,OAAL,EAAerJ,OAAf,CAAwB,UAAE4B,MAAF,EAAc;AACrCA,YAAM,CAAC1B,gBAAP,CAAyB,QAAzB,EAAmC6I,QAAnC;AACA,KAFD;AAGA,GAVc,CAYf;;;AACA,MAAMC,cAAc,GAAGpJ,QAAQ,CAACG,gBAAT,CACtB,6BADsB,CAAvB;;AAIA,MAAKiJ,cAAL,EAAsB;AACrBA,kBAAc,CAAChJ,OAAf,CAAwB,UAAEiJ,aAAF;AAAA,aACvBA,aAAa,CAAC/I,gBAAd,CACC,QADD,EAECoJ,qFAFD,CADuB;AAAA,KAAxB;AAMA;AACD,CAzBO,CAAR,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASC,UAAT,GAAsB;AACrB,MAAMC,QAAQ,GAAG5J,QAAQ,CAACC,aAAT,CAAwB,+BAAxB,CAAjB;;AAEA,MAAK,CAAE2J,QAAP,EAAkB;AACjB;AACA;;AAEDA,UAAQ,CAACtJ,gBAAT,CAA2B,QAA3B,EAAqCoJ,qFAArC;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASG,gBAAT,GAA4B;AAC3B,MAAMC,MAAM,GAAG9J,QAAQ,CAACC,aAAT,CACd,mCADc,CAAf;;AAIA,MAAK,CAAE6J,MAAP,EAAgB;AACf;AACA;;AAEDA,QAAM,CAACxJ,gBAAP,CAAyB,QAAzB,EAAmCoJ,qFAAnC;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASK,eAAT,GAA2B;AAC1B,MAAMC,aAAa,GAAGhK,QAAQ,CAACyF,cAAT,CACrB,sCADqB,CAAtB;;AAIA,MAAK,CAAEuE,aAAP,EAAuB;AACtB;AACA;;AAEDtM,GAAC,CAAE,uCAAF,CAAD,CAA6CuM,aAA7C;AAEA,MAAMC,cAAc,GAAGlK,QAAQ,CAACC,aAAT,CACtB,wDADsB,CAAvB;AAIA,MAAMkK,cAAc,GAAGnK,QAAQ,CAACG,gBAAT,CACtB,uCADsB,CAAvB;AAIA+J,gBAAc,CAAC5J,gBAAf,CAAiC,OAAjC,EAA0C,UAAEpC,CAAF,EAAS;AAClDiM,kBAAc,CAAC/J,OAAf,CAAwB,UAAE+E,EAAF,EAAU;AACjCA,QAAE,CAAClF,aAAH,CAAkB,OAAlB,EAA4B8I,OAA5B,GAAsC,KAAtC;AACA,KAFD;AAIA7K,KAAC,CAACG,MAAF,CAASgK,SAAT,CAAmBE,GAAnB,CAAwB,aAAxB;AACA7K,KAAC,CAAEQ,CAAC,CAACG,MAAJ,CAAD,CAAcgD,MAAd,GAAuB5B,IAAvB,CAA6B,OAA7B,EAAuCV,IAAvC,CAA6C,SAA7C,EAAwD,IAAxD;AACA,GAPD;AASAoL,gBAAc,CAAC/J,OAAf,CAAwB,UAAE+E,EAAF,EAAU;AACjCA,MAAE,CAAClF,aAAH,CAAkB,OAAlB,EAA4BK,gBAA5B,CAA8C,QAA9C,EAAwD,YAAM;AAC7D4J,oBAAc,CAAC7B,SAAf,CAAyBvI,MAAzB,CAAiC,aAAjC;AACA,KAFD;AAGA,GAJD;AAKA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASsK,QAAT,GAAoB;AACnB,MAAMC,MAAM,GAAGrK,QAAQ,CAACC,aAAT,CAAwB,6BAAxB,CAAf;;AAEA,MAAK,CAAEoK,MAAP,EAAgB;AACf;AACA;;AAEDA,QAAM,CAAC/J,gBAAP,CAAyB,OAAzB,EAAkC,UAAEpC,CAAF,EAAS;AAC1C,QAAMoM,KAAK,GAAGtK,QAAQ,CAACC,aAAT,CAAwB,0BAAxB,CAAd;;AAEA,QAAK,CAAEqK,KAAP,EAAe;AACd;AACA;;AAEDA,SAAK,CAACtB,OAAN,CAAcuB,aAAd,aAAkC3L,MAAM,CAACmG,QAAP,CAAgByF,MAAlD,cAA8DtM,CAAC,CAACG,MAAF,CAAS8J,KAAvE;AACA,GARD;AASA;;AAEDpI,oEAAQ,CAAE,YAAM;AACf4J,YAAU;AACVE,kBAAgB;AAChBE,iBAAe;AACfK,UAAQ;AACR,CALO,CAAR,C;;;;;;;;;;;;;;;;;;;;ACvGA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAKA;AACA;AACA;AACA;AACA;;AACA,SAASK,uBAAT,GAAmC;AAClC,MAAMC,WAAW,GAAG1K,QAAQ,CAACyF,cAAT,CAAyB,eAAzB,CAApB;;AAEA,MAAK,CAAEiF,WAAP,EAAqB;AACpB;AACA;;AAED,MAAMC,cAAc,GAAGD,WAAW,CAACvK,gBAAZ,CAA8B,eAA9B,EACrBuC,MADF,CAPkC,CAUlC;;AACA1C,UAAQ,CACNG,gBADF,CACoB,6BADpB,EAEEC,OAFF,CAGE,UAAEwK,OAAF;AAAA,WACGA,OAAO,CAAC7D,KAAR,CAAcC,OAAd,GACD2D,cAAc,GAAG,CAAjB,GAAqB,MAArB,GAA8B,OAFhC;AAAA,GAHF;AAQA3K,UAAQ,CACNG,gBADF,CACoB,6BADpB,EAEEC,OAFF,CAGE,UAAEwK,OAAF;AAAA,WACGA,OAAO,CAAC7D,KAAR,CAAcC,OAAd,GACD2D,cAAc,GAAG,CAAjB,GAAqB,OAArB,GAA+B,MAFjC;AAAA,GAHF,EAnBkC,CA2BlC;;AACA3K,UAAQ,CACNG,gBADF,CACoB,4BADpB,EAEEC,OAFF,CAGE,UAAEwK,OAAF;AAAA,WACGA,OAAO,CAAC7D,KAAR,CAAcC,OAAd,GACD2D,cAAc,GAAG,CAAjB,GAAqB,OAArB,GAA+B,MAFjC;AAAA,GAHF,EA5BkC,CAoClC;;AACA3K,UAAQ,CACNG,gBADF,CACoB,6BADpB,EAEEC,OAFF,CAGE,UAAEwK,OAAF;AAAA,WACGA,OAAO,CAAC7D,KAAR,CAAcC,OAAd,GACD2D,cAAc,GAAG,CAAjB,GAAqB,OAArB,GAA+B,MAFjC;AAAA,GAHF,EArCkC,CA6ClC;;AACA,MAAME,mBAAmB,GAAG7K,QAAQ,CAACG,gBAAT,CAC3B,kCAD2B,CAA5B;;AAIA,MAAK0K,mBAAmB,CAACnI,MAApB,GAA6B,CAAlC,EAAsC;AACrCmI,uBAAmB,CAACzK,OAApB,CACC,UAAE0K,kBAAF;AAAA,aACGA,kBAAkB,CAAC/D,KAAnB,CAAyBC,OAAzB,GACD2D,cAAc,GAAG,CAAjB,GAAqB,WAArB,GAAmC,MAFrC;AAAA,KADD;AAMA,QAAMI,wBAAwB,GAAG/K,QAAQ,CAACC,aAAT,CAChC,yCADgC,CAAjC;;AAIA,QAAK8K,wBAAL,EAAgC;AAC/BA,8BAAwB,CAAChE,KAAzB,CAA+BC,OAA/B,GACC2D,cAAc,KAAK,CAAnB,GAAuB,WAAvB,GAAqC,MADtC;AAEA;AACD;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASK,aAAT,CAAwBC,OAAxB,EAAkC;AACjC,MAAMC,YAAY,GAAGD,OAAO,CAAChL,aAAR,CAAuB,6BAAvB,CAArB;AACA,MAAMkL,UAAU,GAAGF,OAAO,CAAChL,aAAR,CAAuB,qBAAvB,CAAnB;AAEA,mBAEImD,SAFJ;AAAA,sCACCgI,OADD;AAAA,MACYC,wBADZ,sBACYA,wBADZ;AAAA,MACsCC,iBADtC,sBACsCA,iBADtC;;AAIA,MAAK,OAAOH,UAAU,CAAChD,KAAvB,EAA+B;AAC9B+C,gBAAY,CAAC/D,SAAb,GAAyBgE,UAAU,CAAChD,KAApC;AACA,GAFD,MAEO;AACN,QAAIoD,KAAJ;AACA,QAAMC,aAAa,GAAGP,OAAO,CAAChL,aAAR,CAAuB,wBAAvB,CAAtB;AACA,QAAMwL,WAAW,GAAGR,OAAO,CAAChL,aAAR,CAAuB,sBAAvB,CAApB;AACA,QAAMyL,eAAe,GAAGT,OAAO,CAAChL,aAAR,CACvB,2BADuB,CAAxB;AAIA,QAAM0L,iBAAiB,GAAGV,OAAO,CAAChL,aAAR,CACzB,mCADyB,CAA1B;AAGA,QAAM2L,kBAAkB,GAAGX,OAAO,CAAChL,aAAR,CAC1B,oCAD0B,CAA3B;AAIA,sBAEImD,SAFJ;AAAA,0CACCgI,OADD;AAAA,QACYS,gBADZ,uBACYA,gBADZ;AAAA,QAC8BC,kBAD9B,uBAC8BA,kBAD9B;AAGA,QAAMC,cAAc,GACnBP,aAAa,CAAC7C,OAAd,CAAuB6C,aAAa,CAAC5C,aAArC,EAAqDI,OAArD,CAA6DgD,MAD9D;;AAGA,QAAK,SAASJ,kBAAkB,CAAC7C,OAAjC,EAA2C;AAC1CwC,WAAK,GAAGI,iBAAiB,CAACxD,KAA1B;AACA,KAFD,MAEO;AACNoD,WAAK,GAAGE,WAAW,CAACtD,KAApB;AACA;;AAED,YAAS0D,gBAAT;AACC,WAAK,MAAL;AACCN,aAAK,aAAOQ,cAAP,SAA0BR,KAA1B,CAAL;AACA;;AACD,WAAK,YAAL;AACCA,aAAK,aAAOQ,cAAP,cAA2BR,KAA3B,CAAL;AACA;;AACD,WAAK,OAAL;AACCA,aAAK,aAAOA,KAAP,SAAiBQ,cAAjB,CAAL;AACA;;AACD,WAAK,aAAL;AACCR,aAAK,aAAOA,KAAP,cAAkBQ,cAAlB,CAAL;AACA;AAZF;;AAeA,QAAK,SAASH,kBAAkB,CAAC7C,OAAjC,EAA2C;AAC1CwC,WAAK,GAAGD,iBAAiB,CAACW,OAAlB,CAA2B,IAA3B,EAAiCV,KAAjC,CAAR;AACA;;AAED,QAAK,gBAAgBG,eAAe,CAACvD,KAArC,EAA6C;AAC5C,UAAM+D,iBAAiB,GAAGjB,OAAO,CAAChL,aAAR,CACzB,kCADyB,CAA1B;AAIA,UAAMkM,sBAAsB,GAAGlB,OAAO,CAAChL,aAAR,CAC9B,wCAD8B,CAA/B;AAIA,UAAMmM,6BAA6B,GAClCN,kBAAkB,CACjBI,iBAAiB,CAACvD,OAAlB,CAA2BuD,iBAAiB,CAACtD,aAA7C,EACET,KAFe,CADnB;AAMA,UAAIkE,gCAAgC,GAAGhB,wBAAvC;AAEAgB,sCAAgC,GAAGA,gCAAgC,CAACJ,OAAjC,CAClC,MADkC,EAElCV,KAFkC,CAAnC;AAKAc,sCAAgC,GAAGA,gCAAgC,CAACJ,OAAjC,CAClC,MADkC,EAElCE,sBAAsB,CAAChE,KAFW,CAAnC;AAKAkE,sCAAgC,GAAGA,gCAAgC,CAACJ,OAAjC,CAClC,MADkC,EAElCE,sBAAsB,CAAChE,KAAvB,KAAiC,GAAjC,GACGiE,6BAA6B,CAAE,CAAF,CADhC,GAEGA,6BAA6B,CAAE,CAAF,CAJE,CAAnC;AAOAb,WAAK,GAAGc,gCAAR;AACA;;AAEDnB,gBAAY,CAAC/D,SAAb,GAAyBoE,KAAzB;AACA;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASe,gBAAT,CAA2BrB,OAA3B,EAAqC;AACpC,8BAAmCA,OAAO,CAAChL,aAAR,CAClC,wBADkC,CAAnC;AAAA,MAAQ0I,OAAR,yBAAQA,OAAR;AAAA,MAAiBC,aAAjB,yBAAiBA,aAAjB;;AAGA,MAAQoD,MAAR,GAAmBrD,OAAO,CAAEC,aAAF,CAAP,CAAyBI,OAA5C,CAAQgD,MAAR;AAEA,MAAMO,gBAAgB,GAAGtB,OAAO,CAAC9K,gBAAR,CACxB,+BADwB,CAAzB;;AAIAqM,GAAC,CAAC/K,IAAF,CACC8K,gBADD,EAEC,UAAEE,gBAAF;AAAA,WAA0BA,gBAAgB,CAACC,SAAjB,GAA6BV,MAAvD;AAAA,GAFD;AAIA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASW,kBAAT,CAA6B1B,OAA7B,EAAsC2B,MAAtC,EAA+C;AAC9C;AACA,MAAMC,OAAO,GAAG5B,OAAO,CAAC9K,gBAAR,CACf,mCADe,CAAhB;;AAIAqM,GAAC,CAAC/K,IAAF,CAAQoL,OAAR,EAAiB,UAAED,MAAF;AAAA,WAChBA,MAAM,CAACvE,SAAP,CAAiBvI,MAAjB,CAAyB,gBAAzB,CADgB;AAAA,GAAjB,EAN8C,CAU9C;;;AACA,MAAQgN,UAAR,GAAuBF,MAAM,CAAC5D,OAA9B,CAAQ8D,UAAR;AAEA,MAAMC,iBAAiB,GAAG9B,OAAO,CAAChL,aAAR,CACzB,kCADyB,CAA1B;AAIA2M,QAAM,CAACvE,SAAP,CAAiBE,GAAjB,CAAsB,gBAAtB;AACAwE,mBAAiB,CAAChG,KAAlB,CAAwBC,OAAxB,GACC,gBAAgB8F,UAAhB,GAA6B,OAA7B,GAAuC,MADxC,CAlB8C,CAqB9C;;AACA,MAAME,eAAe,GAAG/B,OAAO,CAAChL,aAAR,CACvB,uCADuB,CAAxB;AAIA,MAAMgN,cAAc,GAAGhC,OAAO,CAAChL,aAAR,CACtB,4CADsB,CAAvB;AAIA+M,iBAAe,CAACjG,KAAhB,CAAsBC,OAAtB,GACC,gBAAgB8F,UAAhB,GAA6B,MAA7B,GAAsC,OADvC;AAEAG,gBAAc,CAAClE,OAAf,GAAyB,KAAzB,CAhC8C,CAkC9C;;AACAkC,SAAO,CAAChL,aAAR,CAAuB,2BAAvB,EAAqDkI,KAArD,GAA6D2E,UAA7D;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASI,gBAAT,CAA2BjC,OAA3B,EAAoCkC,QAApC,EAA+C;AAC9C,MAAMJ,iBAAiB,GAAG9B,OAAO,CAAChL,aAAR,CACzB,kCADyB,CAA1B;AAIA8M,mBAAiB,CAAChG,KAAlB,CAAwBC,OAAxB,GAAkCmG,QAAQ,CAACpE,OAAT,GAAmB,OAAnB,GAA6B,MAA/D;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASqE,oBAAT,CAA+BnC,OAA/B,EAAyC;AACxC,MAAMoC,oBAAoB,GAAGpC,OAAO,CAAChL,aAAR,CAC5B,6BAD4B,CAA7B;AAIAoN,sBAAoB,CAACtG,KAArB,CAA2BC,OAA3B,GACC,WAAWqG,oBAAoB,CAACtG,KAArB,CAA2BC,OAAtC,GAAgD,OAAhD,GAA0D,MAD3D;AAEA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASsG,iBAAT,CAA4BrC,OAA5B,EAAsC;AACrC,MAAMiB,iBAAiB,GAAGjB,OAAO,CAAChL,aAAR,CACzB,kCADyB,CAA1B;AAIA,MAAMkM,sBAAsB,GAAGlB,OAAO,CAAChL,aAAR,CAC9B,wCAD8B,CAA/B;AAIA,MAAMsN,2BAA2B,GAAGC,QAAQ,CAC3CrB,sBAAsB,CAAChE,KADoB,CAA5C;AAIA,MAAMsF,sBAAsB,GAC3BvB,iBAAiB,CAACvD,OAAlB,CAA2BuD,iBAAiB,CAACtD,aAA7C,EAA6DT,KAD9D,CAbqC,CAgBrC;;AACA,UAASsF,sBAAT;AACC,SAAK,KAAL;AACC,UAAKF,2BAA2B,GAAG,GAAnC,EAAyC;AACxCpB,8BAAsB,CAAChE,KAAvB,GAA+B,GAA/B;AACA;;AACD;;AACD,SAAK,MAAL;AACC,UAAKoF,2BAA2B,GAAG,EAAnC,EAAwC;AACvCpB,8BAAsB,CAAChE,KAAvB,GAA+B,EAA/B;AACA;;AACD;;AACD,SAAK,OAAL;AACC,UAAKoF,2BAA2B,GAAG,EAAnC,EAAwC;AACvCpB,8BAAsB,CAAChE,KAAvB,GAA+B,EAA/B;AACA;;AACD;;AACD,SAAK,MAAL;AACC,UAAKoF,2BAA2B,GAAG,CAAnC,EAAuC;AACtCpB,8BAAsB,CAAChE,KAAvB,GAA+B,CAA/B;AACA;;AACD;AApBF,GAjBqC,CAwCrC;;;AACA,MAAMuF,cAAc,GAAGtH,IAAI,CAACkD,KAAL,CAAY4C,iBAAiB,CAAClD,OAAlB,CAA0B2E,SAAtC,CAAvB;;AAEA,kFAAKzB,iBAAiB,CAACvD,OAAvB,EAAiCvI,OAAjC,CAA0C,gBAAawN,CAAb,EAAoB;AAAA,QAAhBzF,KAAgB,QAAhBA,KAAgB;AAC7D+D,qBAAiB,CAACvD,OAAlB,CAA2BiF,CAA3B,EAA+BhO,IAA/B,GACC4N,QAAQ,CAAErB,sBAAsB,CAAChE,KAAzB,CAAR,KAA6C,CAA7C,GACGuF,cAAc,CAAEvF,KAAF,CAAd,CAAyB,CAAzB,CADH,GAEGuF,cAAc,CAAEvF,KAAF,CAAd,CAAyB,CAAzB,CAHJ;AAIA,GALD;AAMA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS0F,sBAAT,CAAiC5C,OAAjC,EAA2C;AAC1C,MAAM6C,gBAAgB,GAAG7C,OAAO,CAAC9K,gBAAR,CACxB,8BADwB,CAAzB;;AAIAqM,GAAC,CAAC/K,IAAF,CACCqM,gBADD,EAEC,UAAEC,eAAF;AAAA,WACGA,eAAe,CAAChH,KAAhB,CAAsBC,OAAtB,GACD,YAAY+G,eAAe,CAAChH,KAAhB,CAAsBC,OAAlC,GAA4C,MAA5C,GAAqD,OAFvD;AAAA,GAFD;AAMA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASgH,eAAT,CAA0B/C,OAA1B,EAAoC;AACnC,MAAMgD,WAAW,GAAGjO,QAAQ,CAACG,gBAAT,CAA2B,uBAA3B,CAApB;;AAEAqM,GAAC,CAAC/K,IAAF,CAAQwM,WAAR,EAAqB,UAAEC,SAAF;AAAA,WAAmBA,SAAS,CAACnF,OAAV,GAAoB,KAAvC;AAAA,GAArB;;AAEAkC,SAAO,CAAChL,aAAR,CAAuB,uBAAvB,EAAiD8I,OAAjD,GAA2D,IAA3D;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASoF,QAAT,CAAmBlD,OAAnB,EAA6B;AAC5BA,SAAO,CAACnL,MAAR;AACAsO,oBAAkB,GAFU,CAI5B;;AACA3D,yBAAuB;AACvB;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS4D,UAAT,CAAqBC,QAArB,EAAgC;AAC/B,0BAA0BA,QAAQ,CAACtF,OAAnC;AAAA,MAAQ7M,KAAR,qBAAQA,KAAR;AAAA,MAAeoS,MAAf,qBAAeA,MAAf;AACA,MAAM7D,WAAW,GAAG1K,QAAQ,CAACyF,cAAT,CAAyB,eAAzB,CAApB,CAF+B,CAI/B;;AACA6I,UAAQ,CAACjG,SAAT,CAAmBE,GAAnB,CAAwB,UAAxB;AAEAxF,IAAE,CAAC6E,IAAH,CAAQC,IAAR,CAAc,kBAAd,EAAkC;AACjCrK,QAAI,EAAE;AACLgR,cAAQ,EAAErS,KADL;AAELsS,aAAO,EAAEF;AAFJ,KAD2B;AAKjClP,WAAO,EAAE,iBAAEqP,QAAF,EAAgB;AACxBnJ,YAAM,CAAEmF,WAAF,CAAN,CAAsBhL,MAAtB,CAA8BgP,QAA9B,EADwB,CAGxB;;AACAC,sBAAgB;AAChBP,wBAAkB,GALM,CAOxB;;AACAE,cAAQ,CAACjG,SAAT,CAAmBvI,MAAnB,CAA2B,UAA3B,EARwB,CAUxB;;AACA2K,6BAAuB;AACvB,KAjBgC;AAkBjC1C,SAAK,EAAE,sBAAmB;AAAA,UAAf6G,OAAe,SAAfA,OAAe;AACzBC,WAAK,CAAED,OAAF,CAAL,CADyB,CAGzB;;AACAN,cAAQ,CAACjG,SAAT,CAAmBvI,MAAnB,CAA2B,UAA3B;AACA;AAvBgC,GAAlC;AAyBA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASgP,SAAT,CAAoBR,QAApB,EAA+B;AAC9B,2BAA0BA,QAAQ,CAACtF,OAAnC;AAAA,MAAQ7M,KAAR,sBAAQA,KAAR;AAAA,MAAeoS,MAAf,sBAAeA,MAAf;AACA,MAAM7D,WAAW,GAAG1K,QAAQ,CAACyF,cAAT,CAAyB,eAAzB,CAApB;AACA,MAAMsJ,QAAQ,GAAG/O,QAAQ,CAACyF,cAAT,CAChB,gCADgB,CAAjB;AAIA6I,UAAQ,CAACjG,SAAT,CAAmBE,GAAnB,CAAwB,UAAxB;AAEAxF,IAAE,CAAC6E,IAAH,CAAQC,IAAR,CAAc,iBAAd,EAAiC;AAChCrK,QAAI,EAAE;AACLgR,cAAQ,EAAErS,KADL;AAELsS,aAAO,EAAEF,MAFJ;AAGLS,aAAO,EAAED,QAAQ,CAAC5G;AAHb,KAD0B;AAMhC9I,WAAO,EAAE,iBAAEqP,QAAF,EAAgB;AACxBnJ,YAAM,CAAEmF,WAAF,CAAN,CAAsBhL,MAAtB,CAA8BgP,QAA9B,EADwB,CAGxB;;AACAC,sBAAgB,GAJQ,CAMxB;;AACA3O,cAAQ,CAACyF,cAAT,CAAyB,wBAAzB,EAAoDsB,KAApD,CAA0DC,OAA1D,GACC,MADD;AAEA+H,cAAQ,CAAC5G,KAAT,GAAiB,EAAjB,CATwB,CAWxB;;AACAmG,cAAQ,CAACjG,SAAT,CAAmBvI,MAAnB,CAA2B,UAA3B,EAZwB,CAcxB;;AACA2K,6BAAuB;AACvB,KAtB+B;AAuBhC1C,SAAK,EAAE,sBAAmB;AAAA,UAAf6G,OAAe,SAAfA,OAAe;AACzBC,WAAK,CAAED,OAAF,CAAL,CADyB,CAGzB;;AACAN,cAAQ,CAACjG,SAAT,CAAmBvI,MAAnB,CAA2B,UAA3B;AACA;AA5B+B,GAAjC;AA8BA;AAED;AACA;AACA;;;AACA,SAASmP,wBAAT,GAAoC;AACnCvR,GAAC,CAAE,gBAAF,CAAD,CAAsBwR,QAAtB,CAAgC;AAC/BC,SAAK,EAAE,uBADwB;AAE/BC,eAAW,EAAE,gBAFkB;AAG/BC,UAAM,EAAE,eAHuB;AAI/BC,eAAW,EAAE,sBAJkB;AAK/BC,UAAM,EAAE,MALuB;AAM/BC,SAAK,EAAE9R,CAAC,CAAEsC,QAAQ,CAACU,IAAX,CAAD,CAAmB/B,QAAnB,CAA6B,QAA7B,IAA0C,GAA1C,GAAgD,CANxB;AAO/B8Q,YAAQ,EAAE,CAPqB;AAQ/BC,aAAS,EAAE,SARoB;AAS/BC,wBAAoB,EAAE,IATS;AAU/BC,WAAO,EAAE,IAVsB;AAY/B;AACAC,UAb+B,kBAavB9J,KAbuB,EAahB+J,OAbgB,EAaN;AACxB;AACH;AACA;AACA;AACA;AACA;AACA;AACG,aAAOA,OAAO,CACZC,KADK,GAELtQ,IAFK,CAEC,QAFD,EAGLX,IAHK,CAGC,MAHD,EAGS,UAAW8O,CAAX,EAAcoC,WAAd,EAA4B;AAC1C,eACC,UACAxC,QAAQ,CAAEyC,IAAI,CAACC,MAAL,KAAgB,MAAlB,EAA0B,EAA1B,CAAR,CAAuCC,QAAvC,EADA,GAEA,GAFA,GAGAH,WAJD;AAMA,OAVK,EAWLI,GAXK,EAAP;AAYA;AAjC8B,GAAhC;AAmCA;AAED;AACA;AACA;;;AACA,SAASzB,gBAAT,GAA4B;AAC3B,MAAM0B,SAAS,GAAGrQ,QAAQ,CAACG,gBAAT,CAA2B,eAA3B,CAAlB;;AAEAqM,GAAC,CAAC/K,IAAF,CAAQ4O,SAAR,EAAmB,UAAEpF,OAAF,EAAe;AACjC,QAAM6B,UAAU,GAAG7B,OAAO,CAAChL,aAAR,CAAuB,2BAAvB,EACjBkI,KADF,CADiC,CAIjC;;AACA,QAAMgD,UAAU,GAAGF,OAAO,CAAChL,aAAR,CAAuB,qBAAvB,CAAnB;AAEAkL,cAAU,CAAC7K,gBAAX,CAA6B,OAA7B,EAAsC;AAAA,aAAM0K,aAAa,CAAEC,OAAF,CAAnB;AAAA,KAAtC;AACAD,iBAAa,CAAEC,OAAF,CAAb,CARiC,CAUjC;;AACA,QAAMqF,cAAc,GAAGrF,OAAO,CAAChL,aAAR,CACtB,wBADsB,CAAvB;AAIAqQ,kBAAc,CAAChQ,gBAAf,CAAiC,QAAjC,EAA2C,YAAM;AAChDgM,sBAAgB,CAAErB,OAAF,CAAhB;AACAD,mBAAa,CAAEC,OAAF,CAAb;AACA,KAHD,EAfiC,CAoBjC;;AACA,QAAMsF,iBAAiB,GAAGtF,OAAO,CAAC9K,gBAAR,CACzB,mCADyB,CAA1B;;AAIA,QAAKoQ,iBAAiB,CAAC7N,MAAlB,GAA2B,CAAhC,EAAoC;AACnC8J,OAAC,CAAC/K,IAAF,CAAQ8O,iBAAR,EAA2B,UAAEC,gBAAF;AAAA,eAC1BA,gBAAgB,CAAClQ,gBAAjB,CAAmC,OAAnC,EAA4C,UAAEpC,CAAF,EAAS;AACpDA,WAAC,CAACC,cAAF;AAEA,kCAMID,CAAC,CAACG,MAAF,CAAS2K,OANb;AAAA,cACCC,SADD,qBACCA,SADD;AAAA,cAECwH,YAFD,qBAECA,YAFD;AAAA,cAGCC,kBAHD,qBAGCA,kBAHD;AAAA,cAICC,UAJD,qBAICA,UAJD;AAAA,cAKCC,mBALD,qBAKCA,mBALD;;AAQA,cAAK,SAAS3H,SAAd,EAA0B;AACzB4H,mFAAY,CAAE;AACb1N,mBAAK,EAAEsN,YADM;AAEbK,yBAAW,EAAEJ,kBAFA;AAGbzM,iBAAG,EAAE0M,UAHQ;AAIbI,0BAAY,EAAEH;AAJD,aAAF,CAAZ;AAMA,WAPD,MAOO;AACNjE,8BAAkB,CAAE1B,OAAF,EAAW/M,CAAC,CAACG,MAAb,CAAlB;AACA2M,yBAAa,CAAEC,OAAF,CAAb;AACA;AACD,SAtBD,CAD0B;AAAA,OAA3B;AAyBA,KAnDgC,CAqDjC;;;AACA,QAAMQ,WAAW,GAAGR,OAAO,CAAChL,aAAR,CAAuB,sBAAvB,CAApB;AAEAwL,eAAW,CAACnL,gBAAZ,CAA8B,OAA9B,EAAuC;AAAA,aAAM0K,aAAa,CAAEC,OAAF,CAAnB;AAAA,KAAvC,EAxDiC,CA0DjC;;AACA,QAAMgC,cAAc,GAAGhC,OAAO,CAAChL,aAAR,CACtB,4CADsB,CAAvB;;AAIA,QAAKgN,cAAL,EAAsB;AACrBA,oBAAc,CAAC3M,gBAAf,CAAiC,OAAjC,EAA0C,UAAEpC,CAAF,EAAS;AAClD,YAAQG,MAAR,GAAmBH,CAAnB,CAAQG,MAAR;AACA,8BAMIA,MAAM,CAAC2K,OANX;AAAA,YACCC,SADD,mBACCA,SADD;AAAA,YAECwH,YAFD,mBAECA,YAFD;AAAA,YAGCC,kBAHD,mBAGCA,kBAHD;AAAA,YAICC,UAJD,mBAICA,UAJD;AAAA,YAKCC,mBALD,mBAKCA,mBALD;;AAQA,YAAK,SAAS3H,SAAd,EAA0B;AACzB5K,gBAAM,CAAC0K,OAAP,GAAiB,KAAjB;AACA7K,WAAC,CAACC,cAAF;AAEA0S,iFAAY,CAAE;AACb1N,iBAAK,EAAEsN,YADM;AAEbK,uBAAW,EAAEJ,kBAFA;AAGbzM,eAAG,EAAE0M,UAHQ;AAIbI,wBAAY,EAAEH;AAJD,WAAF,CAAZ;AAMA,SAVD,MAUO;AACN1D,0BAAgB,CAAEjC,OAAF,EAAW5M,MAAX,CAAhB;AACA2M,uBAAa,CAAEC,OAAF,CAAb;AACA;AACD,OAxBD;;AA0BA,UAAK,gBAAgB6B,UAArB,EAAkC;AACjCI,wBAAgB,CAAEjC,OAAF,EAAWgC,cAAX,CAAhB;AACA;AACD,KA7FgC,CA+FjC;;;AACA,QAAMrB,kBAAkB,GAAGX,OAAO,CAAChL,aAAR,CAC1B,oCAD0B,CAA3B;AAIA2L,sBAAkB,CAACtL,gBAAnB,CAAqC,OAArC,EAA8C,YAAM;AACnD8M,0BAAoB,CAAEnC,OAAF,CAApB;AACAD,mBAAa,CAAEC,OAAF,CAAb;AACA,KAHD,EApGiC,CAyGjC;;AACA,QAAMiB,iBAAiB,GAAGjB,OAAO,CAAChL,aAAR,CACzB,kCADyB,CAA1B;AAIAiM,qBAAiB,CAAC5L,gBAAlB,CAAoC,QAApC,EAA8C,YAAM;AACnD0K,mBAAa,CAAEC,OAAF,CAAb;AACAqC,uBAAiB,CAAErC,OAAF,CAAjB;AACA,KAHD,EA9GiC,CAmHjC;;AACA,QAAMkB,sBAAsB,GAAGlB,OAAO,CAAChL,aAAR,CAC9B,wCAD8B,CAA/B;AAIAqN,qBAAiB,CAAErC,OAAF,CAAjB;AAEAkB,0BAAsB,CAAC7L,gBAAvB,CAAyC,OAAzC,EAAkD,YAAM;AACvDgN,uBAAiB,CAAErC,OAAF,CAAjB;AACAD,mBAAa,CAAEC,OAAF,CAAb;AACA,KAHD;AAKAkB,0BAAsB,CAAC7L,gBAAvB,CAAyC,QAAzC,EAAmD,YAAM;AACxDgN,uBAAiB,CAAErC,OAAF,CAAjB;AACAD,mBAAa,CAAEC,OAAF,CAAb;AACA,KAHD,EA/HiC,CAoIjC;;AACA,QAAM+F,oBAAoB,GAAG/F,OAAO,CAAChL,aAAR,CAC5B,qCAD4B,CAA7B;;AAIA,QAAK+Q,oBAAL,EAA4B;AAC3BA,0BAAoB,CAAC1Q,gBAArB,CAAuC,OAAvC,EAAgD,UAAEpC,CAAF,EAAS;AACxDA,SAAC,CAACC,cAAF;AACA0P,8BAAsB,CAAE5C,OAAF,CAAtB;AACA,OAHD;AAIA,KA9IgC,CAgJjC;;;AACA,QAAMgG,aAAa,GAAGhG,OAAO,CAAChL,aAAR,CAAuB,uBAAvB,CAAtB;AAEAgR,iBAAa,CAAC3Q,gBAAd,CAAgC,QAAhC,EAA0C;AAAA,aACzC0N,eAAe,CAAE/C,OAAF,CAD0B;AAAA,KAA1C,EAnJiC,CAuJjC;;AACA,QAAMiG,YAAY,GAAGjG,OAAO,CAAChL,aAAR,CAAuB,sBAAvB,CAArB;AAEAiR,gBAAY,CAAC5Q,gBAAb,CAA+B,OAA/B,EAAwC,UAAEpC,CAAF,EAAS;AAChDA,OAAC,CAACC,cAAF;AACAgQ,cAAQ,CAAElD,OAAF,CAAR;AACA,KAHD;AAIA,GA9JD,EAH2B,CAmK3B;;;AACAR,yBAAuB;AACvB;AAED;AACA;AACA;;;AACA,SAAS0G,mBAAT,GAA+B;AAC9B,MAAMC,gBAAgB,GAAGpR,QAAQ,CAACyF,cAAT,CACxB,+BADwB,CAAzB;AAIA,MAAM4L,UAAU,GAAGrR,QAAQ,CAACyF,cAAT,CAAyB,wBAAzB,CAAnB;;AAEA,MAAK,CAAE2L,gBAAF,IAAsB,CAAEC,UAA7B,EAA0C;AACzC;AACA;;AAEDD,kBAAgB,CAAC9Q,gBAAjB,CAAmC,OAAnC,EAA4C,UAAWpC,CAAX,EAAe;AAC1DA,KAAC,CAACC,cAAF;AAEAkT,cAAU,CAACtK,KAAX,CAAiBC,OAAjB,GACC,WAAWqK,UAAU,CAACtK,KAAX,CAAiBC,OAA5B,GAAsC,MAAtC,GAA+C,OADhD;AAEA,GALD;AAMA;AAED;AACA;AACA;;;AACA,SAASsK,QAAT,GAAoB;AACnB,MAAMC,WAAW,GAAGvR,QAAQ,CAACyF,cAAT,CAAyB,kBAAzB,CAApB;;AAEA,MAAK,CAAE8L,WAAP,EAAqB;AACpB;AACA;;AAEDA,aAAW,CAACjR,gBAAZ,CAA8B,OAA9B,EAAuC,UAAEpC,CAAF,EAAS;AAC/CA,KAAC,CAACC,cAAF;AACAkQ,cAAU,CAAEkD,WAAF,CAAV;AACA,GAHD;AAIA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASC,YAAT,GAAwB;AACvB,MAAMC,UAAU,GAAGzR,QAAQ,CAACyF,cAAT,CAAyB,uBAAzB,CAAnB;;AAEA,MAAK,CAAEgM,UAAP,EAAoB;AACnB;AACA;;AAEDA,YAAU,CAACnR,gBAAX,CAA6B,OAA7B,EAAsCoF,mFAAtC;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASgM,cAAT,GAA0B;AACzB,MAAMC,YAAY,GAAG3R,QAAQ,CAACyF,cAAT,CAAyB,yBAAzB,CAArB;;AAEA,MAAK,CAAEkM,YAAP,EAAsB;AACrB;AACA;;AAEDA,cAAY,CAACrR,gBAAb,CAA+B,OAA/B,EAAwCoF,mFAAxC;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASkM,YAAT,GAAwB;AACvB,MAAMC,UAAU,GAAG7R,QAAQ,CAACyF,cAAT,CAAyB,uBAAzB,CAAnB;;AAEA,MAAK,CAAEoM,UAAP,EAAoB;AACnB;AACA;;AAEDA,YAAU,CAACvR,gBAAX,CAA6B,OAA7B,EAAsCoF,mFAAtC;AACA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASoM,UAAT,GAAsB;AACrB,MAAMC,QAAQ,GAAG/R,QAAQ,CAACyF,cAAT,CAAyB,oBAAzB,CAAjB;;AAEA,MAAK,CAAEsM,QAAP,EAAkB;AACjB;AACA;;AAEDA,UAAQ,CAACzR,gBAAT,CAA2B,OAA3B,EAAoCoF,mFAApC;AACA;AAED;AACA;AACA;;;AACA,SAASsM,OAAT,GAAmB;AAClB,MAAMT,WAAW,GAAGvR,QAAQ,CAACyF,cAAT,CAAyB,4BAAzB,CAApB;;AAEA,MAAK,CAAE8L,WAAP,EAAqB;AACpB;AACA;;AAEDA,aAAW,CAACjR,gBAAZ,CAA8B,OAA9B,EAAuC,UAAEpC,CAAF,EAAS;AAC/CA,KAAC,CAACC,cAAF;AACA2Q,aAAS,CAAEyC,WAAF,CAAT;AACA,GAHD;AAIA;AAED;AACA;AACA;;;AACA,SAASnD,kBAAT,GAA8B;AAC7B,MAAM6D,MAAM,GAAGjS,QAAQ,CAACG,gBAAT,CAA2B,eAA3B,CAAf;;AAEA,MAAK,CAAEH,QAAQ,CAACC,aAAT,CAAwB,+BAAxB,CAAP,EAAmE;AAClEgS,UAAM,CAAE,CAAF,CAAN,CAAYhS,aAAZ,CAA2B,uBAA3B,EAAqD8I,OAArD,GAA+D,IAA/D;AACA;AACD;AAED;AACA;AACA;;;AACAhJ,oEAAQ,CAAE,YAAM;AACfkP,0BAAwB;AACxBN,kBAAgB;AAChBwC,qBAAmB;AACnBa,SAAO;AACPV,UAAQ;AACRE,cAAY;AACZE,gBAAc;AACdE,cAAY;AACZE,YAAU;AACV,CAVO,CAAR,C;;;;;;;;;;;;;ACzyBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASI,YAAT,GAAwB;AACvB,MAAMC,cAAc,GAAGnS,QAAQ,CAACyF,cAAT,CAAyB,gBAAzB,CAAvB;;AAEA,MAAK,CAAE0M,cAAP,EAAwB;AACvB;AACA;;AAEDA,gBAAc,CAAC7R,gBAAf,CACC,QADD,EAECoJ,qFAFD;AAIA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAAS0I,YAAT,GAAwB;AACvB,MAAMC,aAAa,GAAGrS,QAAQ,CAACyF,cAAT,CAAyB,yBAAzB,CAAtB;;AAEA,MAAK,CAAE4M,aAAP,EAAuB;AACtB;AACA;;AAEDA,eAAa,CAAC/R,gBAAd,CACC,QADD,EAECoJ,qFAFD;AAIA;AAED;AACA;AACA;;;AACA3J,oEAAQ,CAAE,YAAM;AACfmS,cAAY;AACZE,cAAY;AACZ,CAHO,CAAR,C;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;AACA;AACA;;AACArS,oEAAQ,CAAE,YAAM;AACf,MAAM0I,QAAQ,GAAGzI,QAAQ,CAACyF,cAAT,CAAyB,kBAAzB,CAAjB;;AAEA,MAAKgD,QAAL,EAAgB;AACfA,YAAQ,CAACnI,gBAAT,CAA2B,QAA3B,EAAqCwI,mFAArC;AACA;AACD,CANO,CAAR,C;;;;;;;;;;;;ACbA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASwJ,cAAT,CAAyB5D,QAAzB,EAAoC;AACnC,MAAM6D,UAAU,GAAGvS,QAAQ,CAACyF,cAAT,CAClB,iCADkB,CAAnB;AAIA,MAAM+M,cAAc,GAAGxS,QAAQ,CAACyF,cAAT,CACtB,+BADsB,CAAvB,CALmC,CASnC;;AACA,MAAKiJ,QAAQ,CAACE,OAAd,EAAwB;AACvB2D,cAAU,CAAC7F,SAAX,GAAuBgC,QAAQ,CAACE,OAAhC;AACA2D,cAAU,CAAClK,SAAX,CAAqBvI,MAArB,CAA6B,+BAA7B;AACAyS,cAAU,CAAClK,SAAX,CAAqBE,GAArB,CAA0B,iCAA1B;AACAgK,cAAU,CAACxL,KAAX,CAAiBC,OAAjB,GAA2B,OAA3B;AACA,GALD,MAKO;AACNuL,cAAU,CAACxL,KAAX,CAAiBC,OAAjB,GAA2B,MAA3B;AACA,GAjBkC,CAmBnC;;;AACA,MAAK,CAAE0H,QAAQ,CAAC+D,MAAhB,EAAyB;AACxBD,kBAAc,CAACpL,QAAf,GAA0B,KAA1B;AACAoL,kBAAc,CAAC9F,SAAf,GAA2B8F,cAAc,CAACxJ,OAAf,CAAuB0J,OAAlD;AACA,GAHD,MAGO;AACN7S,cAAU,CAAE,YAAY;AACvBjB,YAAM,CAACmG,QAAP,CAAgB0N,MAAhB;AACA,KAFS,EAEP,IAFO,CAAV;AAGA;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,gBAAT,CAA2BjE,QAA3B,EAAsC;AACrC,MAAM6D,UAAU,GAAGvS,QAAQ,CAACyF,cAAT,CAClB,iCADkB,CAAnB,CADqC,CAKrC;;AACA,MAAKiJ,QAAQ,CAACE,OAAd,EAAwB;AACvB2D,cAAU,CAAC7F,SAAX,GAAuBgC,QAAQ,CAACE,OAAhC;AACA2D,cAAU,CAAClK,SAAX,CAAqBvI,MAArB,CAA6B,iCAA7B;AACAyS,cAAU,CAAClK,SAAX,CAAqBE,GAArB,CAA0B,+BAA1B;AACAgK,cAAU,CAACxL,KAAX,CAAiBC,OAAjB,GAA2B,OAA3B;AACA,GALD,MAKO;AACNuL,cAAU,CAACxL,KAAX,CAAiBC,OAAjB,GAA2B,MAA3B;AACA,GAboC,CAerC;;;AACA,MAAK,CAAE0H,QAAQ,CAAC+D,MAAhB,EAAyB;AACxB7T,UAAM,CAACmG,QAAP,GAAkB2J,QAAQ,CAACzK,GAA3B;AACA,GAFD,MAEO;AACNpE,cAAU,CAAE,YAAY;AACvBjB,YAAM,CAACmG,QAAP,CAAgB0N,MAAhB;AACA,KAFS,EAEP,IAFO,CAAV;AAGA;AACD;AAED;AACA;AACA;;;AACA,SAASG,SAAT,GAAqB;AACpB,MAAMC,YAAY,GAAG7S,QAAQ,CAACyF,cAAT,CACpB,4BADoB,CAArB;AAIA,MAAMqN,OAAO,GAAG9S,QAAQ,CAACyF,cAAT,CAAyB,8BAAzB,CAAhB;AAEA,MAAM+M,cAAc,GAAGxS,QAAQ,CAACyF,cAAT,CACtB,+BADsB,CAAvB,CAPoB,CAWpB;;AACA+M,gBAAc,CAACpL,QAAf,GAA0B,IAA1B;AACAoL,gBAAc,CAAC9F,SAAf,GAA2B8F,cAAc,CAACxJ,OAAf,CAAuB+J,UAAlD,CAboB,CAepB;;AACAhQ,IAAE,CAAC6E,IAAH,CAAQC,IAAR,CAAc,wBAAd,EAAwC;AACvCrK,QAAI,EAAE;AACLrB,WAAK,EAAE2W,OAAO,CAAC3K,KADV;AAEL6K,SAAG,EAAEH,YAAY,CAAC1K;AAFb,KADiC;AAKvC;AACA9I,WAAO,EAAEsT,gBAN8B;AAQvC;AACA5K,SAAK,EAAEuK;AATgC,GAAxC;AAWA;AAED;AACA;AACA;;;AACAvS,oEAAQ,CAAE,YAAM;AACf,MAAM8S,YAAY,GAAG7S,QAAQ,CAACyF,cAAT,CACpB,4BADoB,CAArB;;AAIA,MAAK,CAAEoN,YAAP,EAAsB;AACrB;AACA;;AAED,MAAML,cAAc,GAAGxS,QAAQ,CAACyF,cAAT,CACtB,+BADsB,CAAvB,CATe,CAaf;;AACAoN,cAAY,CAACvS,gBAAb,CAA+B,UAA/B,EAA2C,UAAEpC,CAAF,EAAS;AACnD,QAAKA,CAAC,CAAC8U,GAAF,KAAU,OAAf,EAAyB;AACxB;AACA;;AAED9U,KAAC,CAACC,cAAF;AACAyU,aAAS;AACT,GAPD,EAde,CAuBf;;AACAJ,gBAAc,CAAClS,gBAAf,CAAiC,OAAjC,EAA0C,UAAEpC,CAAF,EAAS;AAClDA,KAAC,CAACC,cAAF;AACAqU,kBAAc,CAACpL,QAAf,GAA0B,IAA1B;AACAwL,aAAS;AACT,GAJD;AAKA,CA7BO,CAAR,C;;;;;;;;;;;;AC9GA;AAAA;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA7S,oEAAQ,CAAE,YAAM;AACf,MAAM4G,gBAAgB,GAAG3G,QAAQ,CAACC,aAAT,CACxB,4BADwB,CAAzB;;AAIA,MAAK,CAAE0G,gBAAP,EAA0B;AACzB;AACA;;AAED,8BAA0BE,qBAA1B;AAAA,MAAQC,OAAR,yBAAQA,OAAR;AAAA,MAAiBzK,IAAjB,yBAAiBA,IAAjB;;AAEA,MAAK,OAAOyK,OAAZ,EAAsB;AACrB;AACA;AAED;AACD;AACA;;;AACC,WAASG,OAAT,GAAmB;AAClBN,oBAAgB,CAACI,KAAjB,CAAuBC,OAAvB,GAAiC,OAAjC;AACAL,oBAAgB,CAAC0B,SAAjB,CAA2BE,GAA3B,CAAgC,cAAhC;AACA5B,oBAAgB,CAAC1G,aAAjB,CAAgC,GAAhC,EAAsCyM,SAAtC,GAAkDrQ,IAAI,CAAC4W,OAAvD;AACA;;AAED1L,YAAU,CAACjC,KAAX,CAAkB,YAAM;AACvB,QAAMkC,KAAK,GAAGxH,QAAQ,CAACC,aAAT,CAAwB,mBAAxB,CAAd;;AAEA,QAAKuH,KAAL,EAAa;AACZA,WAAK,CAACT,KAAN,CAAYC,OAAZ,GAAsB,MAAtB;AACA;;AAED,QAAI;AACHO,gBAAU,CACRE,OADF,CACWX,OADX,EACoB;AAClBvJ,cAAM;AADY,OADpB,EAIEmK,IAJF,CAIQ,UAAEC,KAAF,EAAa;AACnB5E,UAAE,CAAC6E,IAAH,CAAQC,IAAR,CAAc,kCAAd,EAAkD;AACjDrK,cAAI,EAAE;AACLmK,iBAAK,EAALA,KADK;AAELG,4BAAgB,EAAE;AAFb,WAD2C;AAKjDC,eAAK,EAAEd;AAL0C,SAAlD;AAOA,OAZF,EAaEe,KAbF,CAaSf,OAbT;AAcA,KAfD,CAeE,OAAQc,KAAR,EAAgB;AACjBd,aAAO;AACP;AACD,GAzBD;AA0BA,CAlDO,CAAR,C;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;AACO,SAAS9E,yBAAT,CAAoC+Q,OAApC,EAA6CC,WAA7C,EAA2D;AACjE,MAAMC,MAAM,GAAGpT,QAAQ,CAACyF,cAAT,CAAyB,gCAAzB,CAAf;;AAEA,MAAK,CAAE2N,MAAP,EAAgB;AACf;AACA,GALgE,CAOjE;;;AACA,MAAKF,OAAO,KAAKC,WAAjB,EAA+B;AAC9BC,UAAM,CAACrM,KAAP,CAAaC,OAAb,GAAuB,MAAvB;AACA;AACA;;AAED,MAAMqM,UAAU,GAAGrT,QAAQ,CAACyF,cAAT,CAAyB,6BAAzB,CAAnB;AACA,MAAM6N,UAAU,GAAGtT,QAAQ,CAACyF,cAAT,CAClB,kCADkB,CAAnB;AAIA2N,QAAM,CAACrM,KAAP,CAAaC,OAAb,GAAuB,OAAvB;;AAEA,MAAK,CAAEqM,UAAF,IAAgB,CAAEC,UAAvB,EAAoC;AACnC;AACA;;AAEDD,YAAU,CAAClM,SAAX,GACC,aAAakM,UAAU,CAACrK,OAAX,CAAoBkK,OAApB,CAAb,GAA6C,WAD9C;AAEAI,YAAU,CAACC,IAAX,GAAkBD,UAAU,CAACtK,OAAX,CAAoBkK,OAApB,CAAlB;AACA;AAED;AACA;AACA;;AACA,SAASM,WAAT,GAAuB;AACtB,MAAMC,WAAW,GAAGzT,QAAQ,CAACyF,cAAT,CAAyB,4BAAzB,CAApB;;AAEA,MAAK,CAAEgO,WAAP,EAAqB;AACpB;AACA;;AAED1Q,IAAE,CAAC6E,IAAH,CAAQC,IAAR,CAAc,2CAAd,EAA2D;AAC1DrK,QAAI,EAAE;AACLrB,WAAK,EAAEsX,WAAW,CAACzK,OAAZ,CAAoB7M;AADtB,KADoD;AAI1DkD,WAAO,EAAE,iBAAEqP,QAAF,EAAgB;AACxB+E,iBAAW,CAACxT,aAAZ,CAA2B,GAA3B,EAAiCkH,SAAjC,GAA6CuH,QAAQ,CAACE,OAAtD;AACA6E,iBAAW,CAAC1M,KAAZ,CAAkBC,OAAlB,GAA4B,OAA5B;;AAEA,UACC,8CAA8C0H,QAAQ,CAACvR,OADxD,EAEE;AACDsW,mBAAW,CAACpL,SAAZ,CAAsBE,GAAtB,CAA2B,aAA3B;AACA,OAJD,MAIO;AACNkL,mBAAW,CAACpL,SAAZ,CAAsBE,GAAtB,CAA2B,gBAA3B;AACA;;AAED,UAAMmL,SAAS,GAAG1T,QAAQ,CAACyF,cAAT,CAAyBiJ,QAAQ,CAACvR,OAAlC,CAAlB;;AAEA,UAAKuW,SAAL,EAAiB;AAChBA,iBAAS,CAAC3M,KAAV,CAAgBC,OAAhB,GAA0B,OAA1B;AACA;;AAED2M,oBAAc;AACd,KAvByD;AAwB1D5L,SAAK,EAAE,eAAE2G,QAAF,EAAgB;AACtB+E,iBAAW,CAACxT,aAAZ,CAA2B,GAA3B,EAAiCkH,SAAjC,GAA6CuH,QAAQ,CAACE,OAAtD;AACA6E,iBAAW,CAAC1M,KAAZ,CAAkBC,OAAlB,GAA4B,OAA5B;AACAyM,iBAAW,CAACpL,SAAZ,CAAsBE,GAAtB,CAA2B,cAA3B;AAEA,UAAMmL,SAAS,GAAG1T,QAAQ,CAACyF,cAAT,CAAyBiJ,QAAQ,CAACvR,OAAlC,CAAlB;;AAEA,UAAKuW,SAAL,EAAiB;AAChBA,iBAAS,CAAC3M,KAAV,CAAgBC,OAAhB,GAA0B,OAA1B;AACA2M,sBAAc;AACd;AACD;AAnCyD,GAA3D;AAqCA;AAED;AACA;AACA;;;AACA,SAASA,cAAT,GAA0B;AACzB,MAAMC,iBAAiB,GAAG5T,QAAQ,CAACG,gBAAT,CACzB,yBADyB,CAA1B;;AAIA,MAAK,CAAEyT,iBAAP,EAA2B;AAC1B;AACA;;AAED,qBAAiB1X,WAAjB;AAAA,MAAQG,IAAR,gBAAQA,IAAR;AACA,MAAQwX,iBAAR,GAAgDxX,IAAhD,CAAQwX,iBAAR;AAAA,MAA2BC,gBAA3B,GAAgDzX,IAAhD,CAA2ByX,gBAA3B;AAEAF,mBAAiB,CAACxT,OAAlB,CAA2B,UAAW+E,EAAX,EAAgB;AAC1CA,MAAE,CAAC7E,gBAAH,CAAqB,OAArB,EAA8B,UAAEyF,KAAF,EAAa;AAC1CA,WAAK,CAAC5H,cAAN;AAEAoH,YAAM,CAAE,4BAAF,CAAN,CAAuCwO,MAAvC,CAA+C;AAC9CC,iBAAS,EAAE,KADmC;AAE9CC,cAAM,EAAE,MAFsC;AAG9CC,aAAK,EAAE,GAHuC;AAI9CC,aAAK,EAAE,IAJuC;AAK9CC,iBAAS,EAAE,KALmC;AAM9CvV,YAN8C,kBAMvC;AACN0G,gBAAM,CAAE,iCAAF,CAAN,CACE5F,WADF,CACe,WADf,EAEE0U,IAFF,GAGEtS,GAHF,CAGO;AACLuS,sBAAU,EAAE;AADP,WAHP,EAMEC,KANF;AAOA,SAd6C;AAe9CC,eAAO,EAAE,CACR;AACC5U,cAAI,EAAEkU,gBADP;AAEC7O,eAFD,mBAES;AACPM,kBAAM,CAAE,IAAF,CAAN,CAAewO,MAAf,CAAuB,OAAvB;AACA,WAJF;AAKCU,eAAK,EAAE;AALR,SADQ,EAQR;AACC7U,cAAI,EAAEiU,iBADP;AAEC5O,eAFD,mBAES;AACPrG,kBAAM,CAACmG,QAAP,CAAgBwO,IAAhB,GAAuBpO,EAAE,CAACoO,IAA1B;AACA,WAJF;AAKCkB,eAAK,EAAE;AALR,SARQ;AAfqC,OAA/C;AAgCA,KAnCD;AAoCA,GArCD;AAsCA;AAED;AACA;AACA;;;AACA1U,oEAAQ,CAAE,YAAM;AACfyT,aAAW;AACX,CAFO,CAAR,C;;;;;;;;;;;;;ACrJA;AAAA;AAAA;;AAEA;AACA;AACA;CAGA;AACA;;AACAzT,oEAAQ,CAAE,YAAM;AACf,MAAQS,KAAR,GAAkB5B,MAAM,CAAC2B,IAAzB,CAAQC,KAAR;AACA,MAAMkU,QAAQ,GAAG1U,QAAQ,CAACG,gBAAT,CAChB,qCADgB,CAAjB;;AAIA,MAAK,MAAMuU,QAAQ,CAAChS,MAApB,EAA6B;AAC5B;AACA;;AAED,MAAMiS,eAAe,GAAG3U,QAAQ,CAACC,aAAT,CACvB,6CADuB,CAAxB;AAIA,MAAM2U,WAAW,GAAG,cAAcD,eAAe,CAACxM,KAA9B,GAAsC,MAAtC,GAA+C,MAAnE;AAEA3H,OAAK,CAACqU,QAAN,CAAgB,yBAAhB,EAA2CD,WAA3C,EAAwDA,WAAxD,EAhBe,CAkBf;;AACApI,GAAC,CAAC/K,IAAF,CAAQiT,QAAR,EAAkB,UAAEI,KAAF;AAAA,WACjBA,KAAK,CAACxU,gBAAN,CAAwB,QAAxB,EAAkC,UAAEpC,CAAF,EAAS;AAC1C,UAAMgV,OAAO,GAAG,cAAchV,CAAC,CAACG,MAAF,CAAS8J,KAAvB,GAA+B,MAA/B,GAAwC,MAAxD;AAEA3H,WAAK,CAACqU,QAAN,CAAgB,yBAAhB,EAA2C3B,OAA3C,EAAoD0B,WAApD;AACA,KAJD,CADiB;AAAA,GAAlB;AAOA,CA1BO,CAAR,C;;;;;;;;;;;;ACTA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMG,eAAe,GAAGC,yBAAyB,IAAI,EAArD;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,UAAT,CAAqBC,UAArB,EAAkC;AACjC,MAAYC,SAAZ,GAAwDD,UAAxD,CAAQlR,EAAR;AAAA,MAA8BoR,YAA9B,GAAwDF,UAAxD,CAAuB/M,KAAvB;AAAA,MAA4C0E,OAA5C,GAAwDqI,UAAxD,CAA4CrI,OAA5C,CADiC,CAGjC;;AACA,MAAMwI,YAAY,GAAGrV,QAAQ,CAACC,aAAT,4BACCkV,SADD,EAArB;;AAIA,MAAK,CAAEE,YAAP,EAAsB;AACrB,WAAO,EAAP;AACA,GAVgC,CAYjC;;;AACA,MAAIC,OAAO,GAAGD,YAAY,CAACpV,aAAb,CAA4B,OAA5B,CAAd;;AAEA,MAAK,CAAEqV,OAAP,EAAiB;AAChBA,WAAO,GAAGD,YAAY,CAACpV,aAAb,CAA4B,QAA5B,CAAV;AACA,GAjBgC,CAmBjC;;;AACA,MAAIsV,YAAY,GAAGD,OAAO,CAACnN,KAA3B;;AAEA,MAAK,eAAemN,OAAO,CAAC7X,IAA5B,EAAmC;AAClC8X,gBAAY,GAAG,SAASD,OAAO,CAACvM,OAAjB,GAA2B,KAA3B,GAAmC,IAAlD;AACA;;AAED,SAAO;AACNuM,WAAO,EAAPA,OADM;AAENC,gBAAY,EAAZA;AAFM,GAAP;AAIA;AAED;AACA;AACA;AACA;AACA;;;AACA,SAASC,cAAT,CAAyBN,UAAzB,EAAsC;AACrC,MAAQlR,EAAR,GAA6CkR,UAA7C,CAAQlR,EAAR;AAAA,MAAmBoR,YAAnB,GAA6CF,UAA7C,CAAY/M,KAAZ;AAAA,MAAiC0E,OAAjC,GAA6CqI,UAA7C,CAAiCrI,OAAjC;;AACA,oBAAkCoI,UAAU,CAAEC,UAAF,CAA5C;AAAA,MAAQI,OAAR,eAAQA,OAAR;AAAA,MAAiBC,YAAjB,eAAiBA,YAAjB,CAFqC,CAIrC;;;AACA,MAAME,UAAU,GAAGzV,QAAQ,CAACC,aAAT,4BAA6C+D,EAA7C,EAAnB;;AAEA,MAAK,WAAWyR,UAAU,CAAC1O,KAAX,CAAiBC,OAAjC,EAA2C;AAC1C;AACA,GAToC,CAWrC;;;AACA,MAAM0O,cAAc,GAAG7I,OAAO,CAAC8I,GAAR,CAAa,UAAEL,OAAF,EAAe;AAClD,WAAOtV,QAAQ,CAACC,aAAT,4BAA6CqV,OAA7C,EAAP;AACA,GAFsB,CAAvB;AAIAI,gBAAc,CAACtV,OAAf,CAAwB,UAAE+E,EAAF,EAAU;AACjC,QAAK,CAAEA,EAAP,EAAY;AACX;AACA,KAHgC,CAKjC;;;AACAA,MAAE,CAAC4B,KAAH,CAASC,OAAT,GAAmBuO,YAAY,KAAKH,YAAjB,GAAgC,WAAhC,GAA8C,MAAjE;AACA,GAPD,EAhBqC,CAyBrC;AACA;;AACAvI,SAAO,CAACzM,OAAR,CAAiB,UAAE+U,SAAF,EAAiB;AACjC,QAAMS,iBAAiB,GAAGpJ,CAAC,CAAC/M,IAAF,CAAQsV,eAAR,EAAyB;AAClD/Q,QAAE,EAAEmR;AAD8C,KAAzB,CAA1B;;AAIA,QAAKS,iBAAL,EAAyB;AACxBJ,oBAAc,CAAEI,iBAAF,CAAd;AACA;AACD,GARD;AASA;AAED;AACA;AACA;;;AACA7V,oEAAQ,CAAE,YAAM;AACf;AACAgV,iBAAe,CAAC3U,OAAhB,CAAyB,UAAE8U,UAAF,EAAkB;AAC1C;AACAM,kBAAc,CAAEN,UAAF,CAAd,CAF0C,CAI1C;;AACA,uBAAoBD,UAAU,CAAEC,UAAF,CAA9B;AAAA,QAAQI,OAAR,gBAAQA,OAAR;;AACAA,WAAO,CAAChV,gBAAR,CAA0B,QAA1B,EAAoC;AAAA,aACnCkV,cAAc,CAAEN,UAAF,CADqB;AAAA,KAApC;AAGA,GATD;AAUA,CAZO,CAAR,C;;;;;;;;;;;;AC9GA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA,SAASW,eAAT,GAA2B;AAC1B,MAAMC,SAAS,GAAG,IAAIC,WAAJ,CAAiB,qBAAjB,CAAlB;AAEAD,WAAS,CAAC9U,EAAV,CAAc,SAAd,EAAyB,UAAW9C,CAAX,EAAe;AACvC,QAAMoQ,QAAQ,GAAGpQ,CAAC,CAAC+D,OAAnB;AACA,QAAgB+T,UAAhB,GAA+B1H,QAAQ,CAACtF,OAAxC,CAAQiN,MAAR;AACA,QAAMC,YAAY,GAAG5H,QAAQ,CAACnH,SAA9B,CAHuC,CAKvC;;AACAgP,gBAAY,CAAEC,cAAF,CAAZ;AACA9H,YAAQ,CAACnH,SAAT,GAAqB6O,UAArB;;AAEA,QAAK1H,QAAQ,CAACjG,SAAT,CAAmBgO,QAAnB,CAA6B,kBAA7B,CAAL,EAAyD;AACxD/H,cAAQ,CAACvH,KAAT,CAAeG,KAAf,GAAuB,OAAvB;AACAoH,cAAQ,CAACvH,KAAT,CAAeuP,WAAf,GAA6B,OAA7B;AACA;;AAEDpY,KAAC,CAACqY,cAAF,GAduC,CAgBvC;;AACA,QAAMH,cAAc,GAAGvW,UAAU,CAAE,YAAY;AAC9CyO,cAAQ,CAACnH,SAAT,GAAqB+O,YAArB;;AAEA,UAAK5H,QAAQ,CAACjG,SAAT,CAAmBgO,QAAnB,CAA6B,kBAA7B,CAAL,EAAyD;AACxD/H,gBAAQ,CAACvH,KAAT,CAAeG,KAAf,GAAuB,EAAvB;AACAoH,gBAAQ,CAACvH,KAAT,CAAeuP,WAAf,GAA6B,EAA7B;AACA,OAN6C,CAQ9C;;;AACA,UACCR,SAAS,CAACU,eAAV,CAA0BC,QAA1B,IACAX,SAAS,CAACU,eAAV,CAA0BE,UAF3B,EAGE;AACDZ,iBAAS,CAACU,eAAV,CAA0BE,UAA1B;AACA;AACD,KAfgC,EAe9B,IAf8B,CAAjC,CAjBuC,CAkCvC;;AACA3T,MAAE,CAAC4T,IAAH,CAAQC,KAAR,CAAeZ,UAAf;AACA,GApCD;AAqCA;;AAEDjW,oEAAQ,CAAE8V,eAAF,CAAR,C;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAEO,SAASgB,WAAT,CAAsBtZ,MAAtB,EAA+B;AACrC,MAAK,CAAEqB,MAAM,CAACiI,qBAAd,EAAsC;AACrC,WAAOiQ,OAAO,CAACC,OAAR,CAAiB,EAAjB,CAAP;AACA;;AAED,8BAA0BnY,MAAM,CAACiI,qBAAjC;AAAA,MAAQC,OAAR,yBAAQA,OAAR;AAAA,MAAiBzK,IAAjB,yBAAiBA,IAAjB;AAEA,SAAO,IAAIya,OAAJ,CAAa,UAAEC,OAAF,EAAWC,MAAX,EAAuB;AAC1C,QAAI;AACHzP,gBAAU,CACRE,OADF,CACWX,OADX,EACoB;AAClBvJ,cAAM,EAANA;AADkB,OADpB,EAIEmK,IAJF,CAIQ,UAAEC,KAAF;AAAA,eAAaoP,OAAO,CAAEpP,KAAF,CAApB;AAAA,OAJR;AAKA,KAND,CAME,OAAQI,KAAR,EAAgB;AACjBiP,YAAM,CAAE3a,IAAI,CAAC4W,OAAP,CAAN;AACA;AACD,GAVM,CAAP;AAWA,C;;;;;;;;;;;;;;;;;;;;;ACpBD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAegE,UAAtB;AAAA;AAAA;;;oLAAO,iBAA2BC,KAA3B,EAAkC1Z,IAAlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAEQ+H,MAAM,CAACqC,IAAP,CAAa;AACzBpK,kBAAI,EAAJA,IADyB;AAEzB2Z,oBAAM,EAAE,MAFiB;AAGzBlT,iBAAG,YAAMmT,aAAa,CAACC,IAApB,kBAAkCH,KAAlC,CAHsB;AAIzBI,wBAAU,EAAE,oBAAEzZ,GAAF,EAAW;AACtBA,mBAAG,CAAC0Z,gBAAJ,CAAsB,YAAtB,EAAoCH,aAAa,CAACjb,KAAlD;AACA;AANwB,aAAb,CAFR;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAUMqb,wBAVN,eAUMA,YAVN;AAAA,kBAWCA,YAXD;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTP;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,MAAT,GAA0C;AAAA,MAAzBja,IAAyB,uEAAlB,EAAkB;AAAA,MAAdka,WAAc;AAChD,MAAQ1T,EAAR,GAA4B0T,WAA5B,CAAQ1T,EAAR;AAAA,MAAY2T,WAAZ,GAA4BD,WAA5B,CAAYC,WAAZ;AAEA,SAAOV,kEAAU,CAAE,aAAF;AAChBW,eAAW,EAAE3R,qDAAS,CAAEyR,WAAW,CAAE,CAAF,CAAb,EAAoB;AAAEhT,UAAI,EAAE;AAAR,KAApB,CADN;AAEhBmT,aAAS,EAAEF,WAAW,EAFN;AAGhBlJ,WAAO,EAAEzK;AAHO,KAIbxG,IAJa,EAAjB;AAMA,C;;;;;;;;;;;;AC9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAAesa,OAAtB;AAAA;AAAA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;iLArBO,iBAAwBta,IAAxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAEkBqZ,gFAAW,2BACdrZ,IAAI,CAACiR,OADS,oBAF7B;;AAAA;AAEAsJ,qBAFA;AAAA,6CAMCd,kEAAU,CAAE,kBAAF,kCACbzZ,IADa;AAEhBwa,qBAAO,EAAE;AACRD,yBAAS,EAATA;AADQ;AAFO,eANX;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;AAsBA,SAAeE,MAAtB;AAAA;AAAA;;;gLAAO,kBAAuBza,IAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAEkBqZ,gFAAW,2BACdrZ,IAAI,CAACiR,OADS,mBAF7B;;AAAA;AAEAsJ,qBAFA;AAAA,8CAMCd,kEAAU,CAAE,iBAAF,kCACbzZ,IADa;AAEhBwa,qBAAO,EAAE;AACRD,yBAAS,EAATA;AADQ;AAFO,eANX;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1CP;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASN,MAAT,GAA0C;AAAA,MAAzBja,IAAyB,uEAAlB,EAAkB;AAAA,MAAdka,WAAc;AAChD,MAAQ1T,EAAR,GAA4B0T,WAA5B,CAAQ1T,EAAR;AAAA,MAAY2T,WAAZ,GAA4BD,WAA5B,CAAYC,WAAZ;AAEA,SAAOV,kEAAU,CAAE,yBAAF;AAChBW,eAAW,EAAE3R,qDAAS,CAAEyR,WAAW,CAAE,CAAF,CAAb,EAAoB;AAAEhT,UAAI,EAAE;AAAR,KAApB,CADN;AAEhBmT,aAAS,EAAEF,WAAW,EAFN;AAGhBlJ,WAAO,EAAEzK;AAHO,KAIbxG,IAJa,EAAjB;AAMA,C;;;;;;;;;;;;;;;;;;;;;;;;;AC9BD;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASia,MAAT,GAA0C;AAAA,MAAzBja,IAAyB,uEAAlB,EAAkB;AAAA,MAAdka,WAAc;AAChD,MAAQ1T,EAAR,GAA4B0T,WAA5B,CAAQ1T,EAAR;AAAA,MAAY2T,WAAZ,GAA4BD,WAA5B,CAAYC,WAAZ;AAEA,SAAOV,kEAAU,CAAE,qBAAF;AAChBW,eAAW,EAAE3R,qDAAS,CAAEyR,WAAW,CAAE,CAAF,CAAb,EAAoB;AAAEhT,UAAI,EAAE;AAAR,KAApB,CADN;AAEhBmT,aAAS,EAAEF,WAAW,EAFN;AAGhBlJ,WAAO,EAAEzK;AAHO,KAIbxG,IAJa,EAAjB;AAMA,C;;;;;;;;;;;;;;;;;;;;;;;;;AC9BD;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASia,MAAT,GAA0C;AAAA,MAAzBja,IAAyB,uEAAlB,EAAkB;AAAA,MAAdka,WAAc;AAChD,MAAQ1T,EAAR,GAA4B0T,WAA5B,CAAQ1T,EAAR;AAAA,MAAY2T,WAAZ,GAA4BD,WAA5B,CAAYC,WAAZ;AAEA,SAAOV,kEAAU,CAAE,uBAAF;AAChBW,eAAW,EAAE3R,qDAAS,CAAEyR,WAAW,CAAE,CAAF,CAAb,EAAoB;AAAEhT,UAAI,EAAE;AAAR,KAApB,CADN;AAEhBmT,aAAS,EAAEF,WAAW,EAFN;AAGhBlJ,WAAO,EAAEzK;AAHO,KAIbxG,IAJa,EAAjB;AAMA,C;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BD;AACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASia,MAAT,GAA0C;AAAA,MAAzBja,IAAyB,uEAAlB,EAAkB;AAAA,MAAdka,WAAc;AAChD,MAAQ1T,EAAR,GAA4B0T,WAA5B,CAAQ1T,EAAR;AAAA,MAAY2T,WAAZ,GAA4BD,WAA5B,CAAYC,WAAZ;AAEA,SAAOV,kEAAU,CAAE,iBAAF;AAChBW,eAAW,EAAE3R,qDAAS,CAAEyR,WAAW,CAAE,CAAF,CAAb,EAAoB;AAAEhT,UAAI,EAAE;AAAR,KAApB,CADN;AAEhBmT,aAAS,EAAEF,WAAW,EAFN;AAGhBlJ,WAAO,EAAEzK;AAHO,KAIbxG,IAJa,EAAjB;AAMA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAAS0a,mBAAT,CACNC,UADM,EAENC,aAFM,EAGNC,cAHM,EAIN9J,MAJM,EAKN+J,IALM,EAML;AACD,SAAOrB,kEAAU,0CACmBoB,cADnB,cACuCF,UADvC,GAEhB;AACCI,kBAAc,EAAEH,aADjB;AAECR,eAAW,EAAEU,IAFd;AAGC7J,WAAO,EAAEF;AAHV,GAFgB,CAAjB;AAQA,C;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AAEA,IAAMiK,YAAY,GAAGC,oEAAW,EAAhC;AACA,IAAQvW,SAAR,GAAyDsW,YAAzD,CAAQtW,SAAR;AAAA,IAAmBwW,SAAnB,GAAyDF,YAAzD,CAAmBE,SAAnB;AAAA,IAA8B7D,QAA9B,GAAyD2D,YAAzD,CAA8B3D,QAA9B;AAAA,IAAwC8D,YAAxC,GAAyDH,YAAzD,CAAwCG,YAAxC;AAEA;AACeH,2EAAf,E;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;ACDA;AACAI,MAAM,CAACC,SAAP,GACCD,MAAM,CAACC,SAAP,IACA,UAAW1Q,KAAX,EAAmB;AAClB,SACC,OAAOA,KAAP,KAAiB,QAAjB,IACA2Q,QAAQ,CAAE3Q,KAAF,CADR,IAEA8H,IAAI,CAAC8I,KAAL,CAAY5Q,KAAZ,MAAwBA,KAHzB;AAKA,CARF,C,CAUA;;;AACAyQ,MAAM,CAACI,aAAP,GACCJ,MAAM,CAACI,aAAP,IACA,UAAW7Q,KAAX,EAAmB;AAClB,SACCyQ,MAAM,CAACC,SAAP,CAAkB1Q,KAAlB,KACA8H,IAAI,CAACgJ,GAAL,CAAU9Q,KAAV,KAAqByQ,MAAM,CAACM,gBAF7B;AAIA,CAPF,C,CASA;;;AACA,IAAK,CAAEN,MAAM,CAACM,gBAAd,EAAiC;AAChCN,QAAM,CAACM,gBAAP,GAA0B,gBAA1B,CADgC,CACY;AAC5C,C;;;;;;;;;;;;;;;;;;;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASxP,kCAAT,CAA6CxL,CAA7C,EAAiD;AACvD,MAAQG,MAAR,GAAmBH,CAAnB,CAAQG,MAAR;AACA,wBAMIA,MAAM,CAAC2K,OANX;AAAA,MACCC,SADD,mBACCA,SADD;AAAA,MAECwH,YAFD,mBAECA,YAFD;AAAA,MAGCC,kBAHD,mBAGCA,kBAHD;AAAA,MAICC,UAJD,mBAICA,UAJD;AAAA,MAKCC,mBALD,mBAKCA,mBALD;;AAQA,MAAK,CAAE3H,SAAF,IAAe,UAAUA,SAA9B,EAA0C;AACzC;AACA;;AAED/K,GAAC,CAACC,cAAF;AAEA0S,cAAY,CAAE;AACb1N,SAAK,EAAEsN,YADM;AAEbK,eAAW,EAAEJ,kBAFA;AAGbzM,OAAG,EAAE0M,UAHQ;AAIbI,gBAAY,EAAEH;AAJD,GAAF,CAAZ;AAOAvS,QAAM,CAAC0K,OAAP,GAAiB,KAAjB;AAEA,SAAO,KAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASrD,gCAAT,CAA2CxH,CAA3C,EAA+C;AACrD,MAAQG,MAAR,GAAmBH,CAAnB,CAAQG,MAAR;AACA,yBAMIA,MAAM,CAAC2K,OANX;AAAA,MACCC,SADD,oBACCA,SADD;AAAA,MAECwH,YAFD,oBAECA,YAFD;AAAA,MAGCC,kBAHD,oBAGCA,kBAHD;AAAA,MAICC,UAJD,oBAICA,UAJD;AAAA,MAKCC,mBALD,oBAKCA,mBALD;;AAQA,MAAK,CAAE3H,SAAF,IAAe,UAAUA,SAA9B,EAA0C;AACzC;AACA;;AAED/K,GAAC,CAACC,cAAF;AAEA0S,cAAY,CAAE;AACb1N,SAAK,EAAEsN,YADM;AAEbK,eAAW,EAAEJ,kBAFA;AAGbzM,OAAG,EAAE0M,UAHQ;AAIbI,gBAAY,EAAEH;AAJD,GAAF,CAAZ;AAMA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAAS9H,gCAAT,CAA2C5K,CAA3C,EAA+C;AACrD,MAAQG,MAAR,GAAmBH,CAAnB,CAAQG,MAAR;AACA,8BAOIA,MAAM,CAACsK,OAAP,CAAgBtK,MAAM,CAACuK,aAAvB,EAAuCI,OAP3C;AAAA,MACCC,SADD,yBACCA,SADD;AAAA,MAECwH,YAFD,yBAECA,YAFD;AAAA,MAGCC,kBAHD,yBAGCA,kBAHD;AAAA,MAICC,UAJD,yBAICA,UAJD;AAAA,MAKCC,mBALD,yBAKCA,mBALD;AAAA,MAMCuI,SAND,yBAMCA,SAND;;AASA,MAAK,CAAElQ,SAAF,IAAe,UAAUA,SAA9B,EAA0C;AACzC;AACA;;AAED/K,GAAC,CAACC,cAAF;AAEA0S,cAAY,CAAE;AACb1N,SAAK,EAAEsN,YADM;AAEbK,eAAW,EAAEJ,kBAFA;AAGbzM,OAAG,EAAE0M,UAHQ;AAIbI,gBAAY,EAAEH;AAJD,GAAF,CAAZ;AAOAvS,QAAM,CAAC8J,KAAP,GAAegR,SAAf;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAAStI,YAAT,OAGL;AAAA,MAFC1N,KAED,QAFCA,KAED;AAAA,MAFQ2N,WAER,QAFQA,WAER;AAAA,MAFqB7M,GAErB,QAFqBA,GAErB;AAAA,MAF0B8M,YAE1B,QAF0BA,YAE1B;AAAA,MADDqI,IACC,uEADM,EACN;AACD7T,QAAM,CAAE,uBAAF,CAAN,CAAkCwO,MAAlC;AACCsF,YAAQ,EAAE;AACTC,QAAE,EAAE,QADK;AAETC,QAAE,EAAE,QAFK;AAGTC,QAAE,EAAE5a;AAHK,KADX;AAMCuV,SAAK,EAAE,IANR;AAOCD,SAAK,EAAE,GAPR;AAQCF,aAAS,EAAE,KARZ;AASCI,aAAS,EAAE,KATZ;AAUCvV,QAVD,kBAUQ;AACN,UAAM4a,CAAC,GAAGlU,MAAM,CAAE,IAAF,CAAhB;AAEAkU,OAAC,CAACpY,MAAF,GAAW5B,IAAX,CAAiB,qBAAjB,EAAyCsC,GAAzC,CAA8C;AAC7C2X,oBAAY,EAAE;AAD+B,OAA9C;AAIAD,OAAC,CAACha,IAAF,CAAQ,8BAAR,EAAyCR,IAAzC,CAA+CkE,KAA/C;AACAsW,OAAC,CAACha,IAAF,CAAQ,oCAAR,EAA+CR,IAA/C,CAAqD6R,WAArD;AACA2I,OAAC,CAACha,IAAF,CAAQ,oCAAR,EAA+CX,IAA/C,CAAqD,MAArD,EAA6DmF,GAA7D;AACAwV,OAAC,CAACha,IAAF,CAAQ,8CAAR,EAAyDX,IAAzD,CACC,MADD,EAECiS,YAFD;AAIA;AAxBF,KAyBIqI,IAzBJ;AA2BA,C;;;;;;;;;;;;ACtJD,wB","file":"simpay-admin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/admin/index.js\");\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"regenerator-runtime\");\n","/**\n * @typedef {() => void} Callback\n *\n * TODO: Remove this typedef and inline `() => void` type.\n *\n * This typedef is used so that a descriptive type is provided in our\n * automatically generated documentation.\n *\n * An in-line type `() => void` would be preferable, but the generated\n * documentation is `null` in that case.\n *\n * @see https://github.com/WordPress/gutenberg/issues/18045\n */\n\n/**\n * Specify a function to execute when the DOM is fully loaded.\n *\n * @param {Callback} callback A function to execute after the DOM is ready.\n *\n * @example\n * ```js\n * import domReady from '@wordpress/dom-ready';\n *\n * domReady( function() {\n * \t//do something after DOM loads.\n * } );\n * ```\n *\n * @return {void}\n */\nexport default function domReady(callback) {\n if (document.readyState === 'complete' || // DOMContentLoaded + Images/Styles/etc loaded, so we call directly.\n document.readyState === 'interactive' // DOMContentLoaded fires at this point, so we call directly.\n ) {\n return void callback();\n } // DOMContentLoaded has not fired yet, delay callback until then.\n\n\n document.addEventListener('DOMContentLoaded', callback);\n}\n//# sourceMappingURL=index.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that adds a new hook.\n */\n\nfunction createAddHook(hooks) {\n /**\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {Function} callback Function to call when the hook is run\n * @param {?number} priority Priority of this hook (default=10)\n */\n return function addHook(hookName, namespace, callback) {\n var priority = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!validateNamespace(namespace)) {\n return;\n }\n\n if ('function' !== typeof callback) {\n // eslint-disable-next-line no-console\n console.error('The hook callback must be a function.');\n return;\n } // Validate numeric priority\n\n\n if ('number' !== typeof priority) {\n // eslint-disable-next-line no-console\n console.error('If specified, the hook priority must be a number.');\n return;\n }\n\n var handler = {\n callback: callback,\n priority: priority,\n namespace: namespace\n };\n\n if (hooks[hookName]) {\n // Find the correct insert index of the new hook.\n var handlers = hooks[hookName].handlers;\n var i;\n\n for (i = handlers.length; i > 0; i--) {\n if (priority >= handlers[i - 1].priority) {\n break;\n }\n }\n\n if (i === handlers.length) {\n // If append, operate via direct assignment.\n handlers[i] = handler;\n } else {\n // Otherwise, insert before index via splice.\n handlers.splice(i, 0, handler);\n } // We may also be currently executing this hook. If the callback\n // we're adding would come after the current callback, there's no\n // problem; otherwise we need to increase the execution index of\n // any other runs by 1 to account for the added element.\n\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex++;\n }\n });\n } else {\n // This is the first hook of its type.\n hooks[hookName] = {\n handlers: [handler],\n runs: 0\n };\n }\n\n if (hookName !== 'hookAdded') {\n doAction('hookAdded', hookName, namespace, callback, priority);\n }\n };\n}\n\nexport default createAddHook;\n//# sourceMappingURL=createAddHook.js.map","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns the current hook.\n */\nfunction createCurrentHook(hooks) {\n /**\n * Returns the name of the currently running hook, or `null` if no hook of\n * the given type is currently running.\n *\n * @return {?string} The name of the currently running hook, or\n * `null` if no hook is currently running.\n */\n return function currentHook() {\n if (!hooks.__current || !hooks.__current.length) {\n return null;\n }\n\n return hooks.__current[hooks.__current.length - 1].name;\n };\n}\n\nexport default createCurrentHook;\n//# sourceMappingURL=createCurrentHook.js.map","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns a hook's call count.\n */\n\nfunction createDidHook(hooks) {\n /**\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number} The number of times the hook has run.\n */\n return function didHook(hookName) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n return hooks[hookName] && hooks[hookName].runs ? hooks[hookName].runs : 0;\n };\n}\n\nexport default createDidHook;\n//# sourceMappingURL=createDidHook.js.map","/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook(hooks) {\n /**\n * Returns whether a hook is currently being executed.\n *\n * @param {?string} hookName The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n return function doingHook(hookName) {\n // If the hookName was not passed, check for any current hook.\n if ('undefined' === typeof hookName) {\n return 'undefined' !== typeof hooks.__current[0];\n } // Return the __current hook.\n\n\n return hooks.__current[0] ? hookName === hooks.__current[0].name : false;\n };\n}\n\nexport default createDoingHook;\n//# sourceMappingURL=createDoingHook.js.map","/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook(hooks) {\n /**\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {?string} namespace Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n return function hasHook(hookName, namespace) {\n // Use the namespace if provided.\n if ('undefined' !== typeof namespace) {\n return hookName in hooks && hooks[hookName].handlers.some(function (hook) {\n return hook.namespace === namespace;\n });\n }\n\n return hookName in hooks;\n };\n}\n\nexport default createHasHook;\n//# sourceMappingURL=createHasHook.js.map","/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Object} Object that contains all hooks.\n */\n\nfunction createHooks() {\n var actions = Object.create(null);\n var filters = Object.create(null);\n actions.__current = [];\n filters.__current = [];\n return {\n addAction: createAddHook(actions),\n addFilter: createAddHook(filters),\n removeAction: createRemoveHook(actions),\n removeFilter: createRemoveHook(filters),\n hasAction: createHasHook(actions),\n hasFilter: createHasHook(filters),\n removeAllActions: createRemoveHook(actions, true),\n removeAllFilters: createRemoveHook(filters, true),\n doAction: createRunHook(actions),\n applyFilters: createRunHook(filters, true),\n currentAction: createCurrentHook(actions),\n currentFilter: createCurrentHook(filters),\n doingAction: createDoingHook(actions),\n doingFilter: createDoingHook(filters),\n didAction: createDidHook(actions),\n didFilter: createDidHook(filters),\n actions: actions,\n filters: filters\n };\n}\n\nexport default createHooks;\n//# sourceMappingURL=createHooks.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {boolean} removeAll Whether to remove all callbacks for a hookName, without regard to namespace. Used to create `removeAll*` functions.\n *\n * @return {Function} Function that removes hooks.\n */\n\nfunction createRemoveHook(hooks, removeAll) {\n /**\n * Removes the specified callback (or all callbacks) from the hook with a\n * given hookName and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n *\n * @return {number} The number of callbacks removed.\n */\n return function removeHook(hookName, namespace) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!removeAll && !validateNamespace(namespace)) {\n return;\n } // Bail if no hooks exist by this name\n\n\n if (!hooks[hookName]) {\n return 0;\n }\n\n var handlersRemoved = 0;\n\n if (removeAll) {\n handlersRemoved = hooks[hookName].handlers.length;\n hooks[hookName] = {\n runs: hooks[hookName].runs,\n handlers: []\n };\n } else {\n // Try to find the specified callback to remove.\n var handlers = hooks[hookName].handlers;\n\n var _loop = function _loop(i) {\n if (handlers[i].namespace === namespace) {\n handlers.splice(i, 1);\n handlersRemoved++; // This callback may also be part of a hook that is\n // currently executing. If the callback we're removing\n // comes after the current callback, there's no problem;\n // otherwise we need to decrease the execution index of any\n // other runs by 1 to account for the removed element.\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex--;\n }\n });\n }\n };\n\n for (var i = handlers.length - 1; i >= 0; i--) {\n _loop(i);\n }\n }\n\n if (hookName !== 'hookRemoved') {\n doAction('hookRemoved', hookName, namespace);\n }\n\n return handlersRemoved;\n };\n}\n\nexport default createRemoveHook;\n//# sourceMappingURL=createRemoveHook.js.map","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n\n/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {?boolean} returnFirstArg Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {Function} Function that runs hook callbacks.\n */\nfunction createRunHook(hooks, returnFirstArg) {\n /**\n * Runs all callbacks for the specified hook.\n *\n * @param {string} hookName The name of the hook to run.\n * @param {...*} args Arguments to pass to the hook callbacks.\n *\n * @return {*} Return value of runner, if applicable.\n */\n return function runHooks(hookName) {\n if (!hooks[hookName]) {\n hooks[hookName] = {\n handlers: [],\n runs: 0\n };\n }\n\n hooks[hookName].runs++;\n var handlers = hooks[hookName].handlers; // The following code is stripped from production builds.\n\n if ('production' !== process.env.NODE_ENV) {\n // Handle any 'all' hooks registered.\n if ('hookAdded' !== hookName && hooks.all) {\n handlers.push.apply(handlers, _toConsumableArray(hooks.all.handlers));\n }\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (!handlers || !handlers.length) {\n return returnFirstArg ? args[0] : undefined;\n }\n\n var hookInfo = {\n name: hookName,\n currentIndex: 0\n };\n\n hooks.__current.push(hookInfo);\n\n while (hookInfo.currentIndex < handlers.length) {\n var handler = handlers[hookInfo.currentIndex];\n var result = handler.callback.apply(null, args);\n\n if (returnFirstArg) {\n args[0] = result;\n }\n\n hookInfo.currentIndex++;\n }\n\n hooks.__current.pop();\n\n if (returnFirstArg) {\n return args[0];\n }\n };\n}\n\nexport default createRunHook;\n//# sourceMappingURL=createRunHook.js.map","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n\nvar _createHooks = createHooks(),\n addAction = _createHooks.addAction,\n addFilter = _createHooks.addFilter,\n removeAction = _createHooks.removeAction,\n removeFilter = _createHooks.removeFilter,\n hasAction = _createHooks.hasAction,\n hasFilter = _createHooks.hasFilter,\n removeAllActions = _createHooks.removeAllActions,\n removeAllFilters = _createHooks.removeAllFilters,\n doAction = _createHooks.doAction,\n applyFilters = _createHooks.applyFilters,\n currentAction = _createHooks.currentAction,\n currentFilter = _createHooks.currentFilter,\n doingAction = _createHooks.doingAction,\n doingFilter = _createHooks.doingFilter,\n didAction = _createHooks.didAction,\n didFilter = _createHooks.didFilter,\n actions = _createHooks.actions,\n filters = _createHooks.filters;\n\nexport { createHooks, addAction, addFilter, removeAction, removeFilter, hasAction, hasFilter, removeAllActions, removeAllFilters, doAction, applyFilters, currentAction, currentFilter, doingAction, doingFilter, didAction, didFilter, actions, filters };\n//# sourceMappingURL=index.js.map","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName(hookName) {\n if ('string' !== typeof hookName || '' === hookName) {\n // eslint-disable-next-line no-console\n console.error('The hook name must be a non-empty string.');\n return false;\n }\n\n if (/^__/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name cannot begin with `__`.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name can only contain numbers, letters, dashes, periods and underscores.');\n return false;\n }\n\n return true;\n}\n\nexport default validateHookName;\n//# sourceMappingURL=validateHookName.js.map","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace(namespace) {\n if ('string' !== typeof namespace || '' === namespace) {\n // eslint-disable-next-line no-console\n console.error('The namespace must be a non-empty string.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test(namespace)) {\n // eslint-disable-next-line no-console\n console.error('The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.');\n return false;\n }\n\n return true;\n}\n\nexport default validateNamespace;\n//# sourceMappingURL=validateNamespace.js.map","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/* global $, simpayAdmin */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\nconst s = {\n\ticonActivate:\n\t\t'',\n\ticonDeactivate: '',\n\ticonInstall: '',\n\ticonSpinner: '',\n\tmediaFrame: false,\n};\n\nconst { nonce, ajaxUrl, i18n } = simpayAdmin;\n\nconst {\n\taddonActivated,\n\taddonActivate,\n\taddonActive,\n\taddonDeactivate,\n\taddonInactive,\n\taddonInstall,\n\taddonError,\n\tpluginError,\n} = i18n;\n\n/**\n * Change plugin/addon state.\n *\n * @since 1.6.3\n *\n * @param {string} plugin Plugin slug or URL for download.\n * @param {string} state State status activate|deactivate|install.\n * @param {string} pluginType Plugin type addon or plugin.\n * @param {Function} callback Callback for get result from AJAX.\n */\nfunction setAddonState( plugin, state, pluginType, callback ) {\n\tconst actions = {\n\t\t\tactivate: 'simpay_activate_addon',\n\t\t\tinstall: 'simpay_install_addon',\n\t\t\tdeactivate: 'simpay_deactivate_addon',\n\t\t},\n\t\taction = actions[ state ];\n\n\tif ( ! action ) {\n\t\treturn;\n\t}\n\n\tconst data = {\n\t\taction,\n\t\tnonce,\n\t\tplugin,\n\t\ttype: pluginType,\n\t};\n\n\t$.post( ajaxUrl, data, callback ).fail( function ( xhr ) {\n\t\tconsole.log( xhr.responseText );\n\t} );\n}\n\n/**\n * Toggles addon state.\n *\n * @param {PointerEvent} e Click event.\n */\nfunction addonToggle( e ) {\n\te.preventDefault();\n\n\tconst $btn = $( e.target );\n\tlet state, cssClass, stateText, buttonText, errorText, successText;\n\n\tif ( $btn.hasClass( 'status-go-to-url' ) ) {\n\t\t// Open url in new tab.\n\t\twindow.open( $btn.attr( 'data-plugin' ), '_blank' );\n\t\treturn;\n\t}\n\n\tconst pluginType = $btn.attr( 'data-type' );\n\n\t$btn.prop( 'disabled', true ).addClass( 'loading' );\n\t$btn.html( s.iconSpinner );\n\n\tif ( $btn.hasClass( 'status-active' ) ) {\n\t\t// Deactivate.\n\t\tstate = 'deactivate';\n\t\tcssClass = 'status-installed';\n\n\t\tif ( pluginType === 'plugin' ) {\n\t\t\tcssClass += ' button button-secondary';\n\t\t}\n\n\t\tstateText = addonInactive;\n\t\tbuttonText = addonActivate;\n\t\terrorText = addonDeactivate;\n\n\t\tif ( pluginType === 'addon' ) {\n\t\t\tbuttonText = s.iconActivate + buttonText;\n\t\t\terrorText = s.iconDeactivate + errorText;\n\t\t}\n\t} else if ( $btn.hasClass( 'status-installed' ) ) {\n\t\t// Activate.\n\t\tstate = 'activate';\n\t\tcssClass = 'status-active';\n\n\t\tif ( pluginType === 'plugin' ) {\n\t\t\tcssClass += ' button button-secondary disabled';\n\t\t}\n\n\t\tstateText = addonActive;\n\t\tbuttonText = addonDeactivate;\n\n\t\tif ( pluginType === 'addon' ) {\n\t\t\tbuttonText = s.iconDeactivate + buttonText;\n\t\t\terrorText = s.iconActivate + addonActivate;\n\t\t} else if ( pluginType === 'plugin' ) {\n\t\t\tbuttonText = addonActivated;\n\t\t\terrorText = addonActivate;\n\t\t}\n\t} else if ( $btn.hasClass( 'status-missing' ) ) {\n\t\t// Install & Activate.\n\t\tstate = 'install';\n\t\tcssClass = 'status-active';\n\n\t\tif ( pluginType === 'plugin' ) {\n\t\t\tcssClass += ' button disabled';\n\t\t}\n\n\t\tstateText = addonActive;\n\t\tbuttonText = addonActivated;\n\t\terrorText = s.iconInstall;\n\n\t\tif ( pluginType === 'addon' ) {\n\t\t\tbuttonText = s.iconActivate + addonDeactivate;\n\t\t\terrorText += addonInstall;\n\t\t}\n\t} else {\n\t\treturn;\n\t}\n\n\tconst $addon = $btn.closest( '.simpay-addon' ),\n\t\tplugin = $btn.attr( 'data-plugin' );\n\n\tsetAddonState( plugin, state, pluginType, function ( res ) {\n\t\tif ( res.success ) {\n\t\t\tif ( 'install' === state ) {\n\t\t\t\t$btn.attr( 'data-plugin', res.data.basename );\n\n\t\t\t\tsuccessText = res.data.msg;\n\n\t\t\t\tif ( ! res.data.is_activated ) {\n\t\t\t\t\tstateText = addonInactive;\n\t\t\t\t\tbuttonText =\n\t\t\t\t\t\t'plugin' === pluginType\n\t\t\t\t\t\t\t? addonActivate\n\t\t\t\t\t\t\t: s.iconActivate + addonActivate;\n\t\t\t\t\tcssClass =\n\t\t\t\t\t\t'plugin' === pluginType\n\t\t\t\t\t\t\t? 'status-installed button button-secondary'\n\t\t\t\t\t\t\t: 'status-installed';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsuccessText = res.data;\n\t\t\t}\n\n\t\t\t$addon\n\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t.append( '
' + successText + '
' );\n\t\t\t$addon\n\t\t\t\t.find( 'span.status-label' )\n\t\t\t\t.removeClass( 'status-active status-installed status-missing' )\n\t\t\t\t.addClass( cssClass )\n\t\t\t\t.removeClass(\n\t\t\t\t\t'button button-primary button-secondary disabled'\n\t\t\t\t)\n\t\t\t\t.text( stateText );\n\t\t\t$btn.removeClass( 'status-active status-installed status-missing' )\n\t\t\t\t.removeClass(\n\t\t\t\t\t'button button-primary button-secondary disabled'\n\t\t\t\t)\n\t\t\t\t.addClass( cssClass )\n\t\t\t\t.html( buttonText );\n\t\t} else {\n\t\t\tif ( 'object' === typeof res.data ) {\n\t\t\t\tif ( pluginType === 'addon' ) {\n\t\t\t\t\t$addon\n\t\t\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t'
' + addonError + '
'\n\t\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$addon\n\t\t\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t'
' + pluginError + '
'\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$addon\n\t\t\t\t\t.find( '.simpay-addon__actions' )\n\t\t\t\t\t.append( '
' + res.data + '
' );\n\t\t\t}\n\n\t\t\tif ( 'install' === state && 'plugin' === pluginType ) {\n\t\t\t\t$btn.addClass( 'status-go-to-url' ).removeClass(\n\t\t\t\t\t'status-missing'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t$btn.html( errorText );\n\t\t}\n\n\t\t$btn.prop( 'disabled', false ).removeClass( 'loading' );\n\n\t\t// Automatically clear addon messages after 3 seconds.\n\t\tsetTimeout( function () {\n\t\t\t$addon.find( '.msg' ).remove();\n\t\t}, 3000 );\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tif ( ! document.querySelector( '.simpay-addons' ) ) {\n\t\treturn;\n\t}\n\n\tconst addOns = document.querySelectorAll( '.simpay-addon' );\n\n\taddOns.forEach( ( addOn ) => {\n\t\taddOn\n\t\t\t.querySelector( 'button' )\n\t\t\t.addEventListener( 'click', addonToggle );\n\t} );\n} );\n","/* global spGeneral, jQuery */\n\n/**\n * Internal dependencies.\n */\nimport hooks from '@wpsimplepay/hooks';\nimport './settings/toggles.js';\nimport './settings/test-mode.js';\nimport './settings/license.js';\nimport { toggleStripeConnectNotice } from './settings/stripe-connect.js';\nimport './settings/recaptcha.js';\nimport './payment-form';\nimport './addons.js';\nimport './utils.js';\n\n/**\n * Globallly accessible object of WP Simple Pay-related (admin) functionality.\n */\nwindow.wpsp = window.wpsp || {\n\thooks,\n};\n\nlet spAdmin = {};\n\n( function ( $ ) {\n\t'use strict';\n\n\tlet body, spFormSettings;\n\n\tspAdmin = {\n\t\tinit() {\n\t\t\t// Set main vars on init.\n\t\t\tbody = $( document.body );\n\t\t\tspFormSettings = body.find( '#simpay-form-settings' );\n\n\t\t\t// Init admin metabox tab clicks.\n\t\t\tthis.handleMetaboxTabClick();\n\n\t\t\t//\n\t\t\t// Handle toggles.\n\t\t\t//\n\n\t\t\t// Sortable metabox implementation.\n\t\t\t// Must attach to wrapper to handle live DOM additions.\n\t\t\tif ( window.postboxes && window.postboxes.handle_click ) {\n\t\t\t\tspFormSettings.on(\n\t\t\t\t\t'click',\n\t\t\t\t\t'.postbox .simpay-hndle, .postbox .simpay-handlediv',\n\t\t\t\t\twindow.postboxes.handle_click\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Radios settings.\n\t\t\t[\n\t\t\t\t'_amount_type',\n\t\t\t\t'_success_redirect_type',\n\t\t\t\t'_subscription_type',\n\t\t\t\t'_subscription_custom_amount',\n\t\t\t\t'_form_type',\n\t\t\t\t'_tax_status',\n\t\t\t\t'_enable_payment_page',\n\t\t\t\t'.simpay-total-amount-label-recurring',\n\t\t\t\t'.simpay-total-amount-label-tax',\n\t\t\t\t'.simpay-shipping-address',\n\t\t\t\t'.simpay-text-multiline',\n\t\t\t\t'.simpay-dropdown-type',\n\t\t\t\t'.simpay-radio-type',\n\t\t\t\t'.simpay-price-enable-custom',\n\t\t\t\t'.simpay-price-type input',\n\t\t\t].forEach( ( input ) => {\n\t\t\t\t// Allow classes to be passed, but prefer an input name.\n\t\t\t\tlet inputEl = $( input );\n\t\t\t\tlet isCustomFieldToggle = false;\n\n\t\t\t\tif ( '.' !== input.substring( 0, 1 ) ) {\n\t\t\t\t\tinputEl = `[name=\"${ input }\"]`;\n\t\t\t\t} else {\n\t\t\t\t\tinputEl = input;\n\t\t\t\t\tisCustomFieldToggle = true;\n\t\t\t\t}\n\n\t\t\t\t// Find each setting.\n\t\t\t\t$( '#simpay-form-settings' )\n\t\t\t\t\t/**\n\t\t\t\t\t * Toggles content based on an input's current value.\n\t\t\t\t\t *\n\t\t\t\t\t * @since 3.8.0\n\t\t\t\t\t */\n\t\t\t\t\t.on( 'change', inputEl, function () {\n\t\t\t\t\t\tlet parent = $( '#simpay-form-settings' );\n\n\t\t\t\t\t\tif ( true === isCustomFieldToggle ) {\n\t\t\t\t\t\t\tparent = $( this ).closest( '.simpay-field-data' );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get the toggled setting value.\n\t\t\t\t\t\tlet current = $( this ).val();\n\n\t\t\t\t\t\t// Alter the current \"value\" if using a checkbox, which always has\n\t\t\t\t\t\t// a property value of `yes`.\n\t\t\t\t\t\tif ( $( this ).is( ':checkbox' ) ) {\n\t\t\t\t\t\t\tcurrent = $( this ).is( ':checked' ) ? 'yes' : 'no';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Find all linked content via `[data-toggle=\"\"]` where the matching\n\t\t\t\t\t\t// values will be shown and others hidden.\n\t\t\t\t\t\tparent\n\t\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\t\t$( `.simpay-show-if[data-if=\"${ input }\"]` )\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.each( function () {\n\t\t\t\t\t\t\t\tconst content = $( this );\n\t\t\t\t\t\t\t\tconst showIf = content.data( 'is' );\n\n\t\t\t\t\t\t\t\t// All all initially.\n\t\t\t\t\t\t\t\tcontent.hide();\n\n\t\t\t\t\t\t\t\t// Show items where `[data-if=\"\"]` contains the toggle input value.\n\t\t\t\t\t\t\t\tif ( showIf.includes( current ) ) {\n\t\t\t\t\t\t\t\t\tcontent.show().css( 'display', 'block' );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\n\t\t\t\t// Trigger initial state.\n\t\t\t\t$( inputEl ).filter( ':checked' ).trigger( 'change' );\n\n\t\t\t\tif ( $( inputEl ).is( 'select' ) ) {\n\t\t\t\t\t$( inputEl ).trigger( 'change' );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Stripe Connect toggle notice.\n\t\t\thooks.addAction(\n\t\t\t\t'settings.toggleTestMode',\n\t\t\t\t'wpsp/settings/stripe-connect',\n\t\t\t\ttoggleStripeConnectNotice\n\t\t\t);\n\n\t\t\t// Init internal link to tab clicks.\n\t\t\tspFormSettings.on(\n\t\t\t\t'click.simpayTabLink',\n\t\t\t\t'.simpay-tab-link',\n\t\t\t\tfunction ( e ) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tspAdmin.handleInternalLinkToTabClicks( $( this ) );\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Remove image preview click.\n\t\t\tspFormSettings.on(\n\t\t\t\t'click.simpayImagePreview',\n\t\t\t\t'.simpay-remove-image-preview',\n\t\t\t\tfunction ( e ) {\n\t\t\t\t\tspAdmin.handleRemoveImagePreviewClick( e );\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// Use chosen for select fields\n\t\t\tthis.setupChosen();\n\n\t\t\t// Media Uploader\n\t\t\tthis.addMediaFields();\n\n\t\t\tthis.stripeConnect();\n\n\t\t\t// Payment Mode.\n\t\t\t//\n\t\t\t// Disable modes that are not globally available.\n\t\t\tconst paymentModeSelector = $( '.simpay-payment-modes' );\n\n\t\t\tif ( paymentModeSelector.length ) {\n\t\t\t\tconst paymentModes = paymentModeSelector.find( 'input' );\n\n\t\t\t\tpaymentModes.each( function () {\n\t\t\t\t\tconst mode = $( this );\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t! paymentModeSelector.hasClass(\n\t\t\t\t\t\t\t'simpay-payment-mode--' + mode.val()\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tmode.attr( 'disabled', true );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tbody.trigger( 'simpayAdminInit' );\n\t\t},\n\n\t\thandleRemoveImagePreviewClick( e ) {\n\t\t\te.preventDefault();\n\n\t\t\t$( e.target )\n\t\t\t\t.parents( 'td' )\n\t\t\t\t.find( '.simpay-image-preview-wrap' )\n\t\t\t\t.val( '' )\n\t\t\t\t.hide();\n\n\t\t\t$( e.target )\n\t\t\t\t.parents( 'td' )\n\t\t\t\t.find( '.simpay-field-image-url' )\n\t\t\t\t.val( '' );\n\n\t\t\t$( e.target )\n\t\t\t\t.parents( 'td' )\n\t\t\t\t.find( '.simpay-remove-image-preview' )\n\t\t\t\t.hide();\n\t\t},\n\n\t\taddMediaFields() {\n\t\t\t$( '.simpay-media-uploader' ).on( 'click', function ( e ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t// Extend the wp.media object\n\t\t\t\tconst simpayMediaUploader = ( wp.media.frames.file_frame = wp.media(\n\t\t\t\t\t{\n\t\t\t\t\t\ttitle: spGeneral.i18n.mediaTitle,\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\ttext: spGeneral.i18n.mediaButtonText,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmultiple: false,\n\t\t\t\t\t}\n\t\t\t\t) );\n\n\t\t\t\tconst $that = $( this );\n\n\t\t\t\t// When a file is selected, grab the URL and set it as the text field's value\n\t\t\t\tsimpayMediaUploader.on( 'select', function () {\n\t\t\t\t\tconst attachment = simpayMediaUploader\n\t\t\t\t\t\t\t.state()\n\t\t\t\t\t\t\t.get( 'selection' )\n\t\t\t\t\t\t\t.first()\n\t\t\t\t\t\t\t.toJSON(),\n\t\t\t\t\t\tinputField = $that\n\t\t\t\t\t\t\t.parents( 'td' )\n\t\t\t\t\t\t\t.find( '.simpay-field-image-url' ), // Get the field previous to our button, aka our input field.\n\t\t\t\t\t\timage =\n\t\t\t\t\t\t\t'id' === inputField.data( 'fvalue' )\n\t\t\t\t\t\t\t\t? attachment.id\n\t\t\t\t\t\t\t\t: attachment.url;\n\n\t\t\t\t\t// Update our image preview\n\t\t\t\t\t$that\n\t\t\t\t\t\t.parents( 'td' )\n\t\t\t\t\t\t.find( '.simpay-image-preview-wrap' )\n\t\t\t\t\t\t.show();\n\n\t\t\t\t\t$that\n\t\t\t\t\t\t.parents( 'td' )\n\t\t\t\t\t\t.find( '.simpay-remove-image-preview' )\n\t\t\t\t\t\t.show();\n\n\t\t\t\t\t$that\n\t\t\t\t\t\t.parents( 'td' )\n\t\t\t\t\t\t.find( '.simpay-image-preview' )\n\t\t\t\t\t\t.prop( 'src', image );\n\n\t\t\t\t\tinputField.val( image );\n\t\t\t\t} );\n\n\t\t\t\t// Open the uploader dialog\n\t\t\t\tsimpayMediaUploader.open();\n\t\t\t} );\n\t\t},\n\n\t\tsetupChosen() {\n\t\t\tconst chosenSelect = $(\n\t\t\t\t'.simpay-chosen-select, .simpay-chosen-search'\n\t\t\t);\n\n\t\t\tchosenSelect.chosen( { disable_search_threshold: 20 } );\n\t\t\tchosenSelect.chosen();\n\t\t},\n\n\t\t// Tabbed Panels in Settings Meta Box.\n\t\t// All nav list items are inactive (no \"active\" class) except first by default.\n\t\t// All tab panel content containers are hidden (\"simpay-panel-hidden\" class) except first by default.\n\t\t// Can make specific panel active on initial page load via url hash.\n\n\t\thandleMetaboxTabClick() {\n\t\t\tconst tabLinks = $( 'ul.simpay-tabs a' );\n\t\t\tconst panels = $( 'div.simpay-panel' );\n\t\t\tconst allTabLinkParents = tabLinks.parents( 'li' );\n\n\t\t\t// When a tab link is clicked.\n\t\t\ttabLinks.on( 'click', function ( e ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\tconst currentTabLinkParent = $( this ).parent();\n\n\t\t\t\t// Assign current tab element to var from link href attribute.\n\t\t\t\tconst currentTabEl = $( $( this ).attr( 'href' ) );\n\n\t\t\t\t// Set the hash in the URL so after saving we get the same tab\n\t\t\t\tconst hash = $( this ).attr( 'href' );\n\t\t\t\thistory.pushState( null, null, hash );\n\n\t\t\t\t// Avoid jumping to ID after setting anchor.\n\t\t\t\tsetTimeout( function () {\n\t\t\t\t\twindow.scrollTo( 0, 0 );\n\t\t\t\t}, 1 );\n\n\t\t\t\t$( '[name=\"simpay_form_settings_tab\"]' ).val( hash );\n\n\t\t\t\t$( '.simpay-panels > .spinner' ).hide();\n\n\t\t\t\t// Remove active class from all tabs.\n\t\t\t\tallTabLinkParents.removeClass( 'active' );\n\n\t\t\t\t// Add active class back to current tab.\n\t\t\t\tcurrentTabLinkParent.addClass( 'active' );\n\n\t\t\t\t// Hide content with all tab panels.\n\t\t\t\tpanels.addClass( 'simpay-panel-hidden' );\n\n\t\t\t\t// Show current tab's content.\n\t\t\t\tcurrentTabEl.removeClass( 'simpay-panel-hidden' );\n\t\t\t} );\n\n\t\t\tlet activeTab = '#form-display-options-settings-panel';\n\n\t\t\t// Auto open tab if in url hash.\n\t\t\tif ( location.hash.length ) {\n\t\t\t\tactiveTab = location.hash;\n\t\t\t}\n\n\t\t\tconst activeTabLink = $(\n\t\t\t\t'ul.simpay-tabs a[href=\"' + activeTab + '\"]'\n\t\t\t);\n\n\t\t\t$( '[name=\"simpay_form_settings_tab\"]' ).val( activeTab );\n\n\t\t\tif ( activeTabLink.length ) {\n\t\t\t\tactiveTabLink.click();\n\t\t\t}\n\t\t},\n\n\t\tstripeConnect() {\n\t\t\tconst rows =\n\t\t\t\t'tr:nth-child(2), tr:nth-child(3), tr:nth-child(4), tr:nth-child(5)';\n\n\t\t\t$( '.simpay-settings.stripe-account .form-table' )\n\t\t\t\t.find( rows )\n\t\t\t\t.hide();\n\n\t\t\t$( '#wpsp-api-keys-row-reveal button' ).on(\n\t\t\t\t'click',\n\t\t\t\tfunction ( e ) {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\t$( '.simpay-settings.stripe-account .form-table' )\n\t\t\t\t\t\t.find( rows )\n\t\t\t\t\t\t.show();\n\n\t\t\t\t\t$( '#wpsp-api-keys-row-hide' ).show();\n\t\t\t\t\t$( this ).parent().hide();\n\t\t\t\t\t$( '.wpsp-manual-key-warning' ).show();\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t$( '#wpsp-api-keys-row-hide button' ).on( 'click', function ( e ) {\n\t\t\t\te.preventDefault();\n\n\t\t\t\t$( '.simpay-settings.stripe-account .form-table' )\n\t\t\t\t\t.find( rows )\n\t\t\t\t\t.hide();\n\n\t\t\t\t$( '#wpsp-api-keys-row-reveal' ).show();\n\t\t\t\t$( this ).parent().hide();\n\t\t\t\t$( '.wpsp-manual-key-warning' ).hide();\n\t\t\t} );\n\t\t},\n\n\t\t// Handle links within tab content to other tabs.\n\t\t// When one is clicked, trigger the corresponding tab link click.\n\t\thandleInternalLinkToTabClicks( el ) {\n\t\t\tconst tabToShowId = el.data( 'show-tab' ),\n\t\t\t\ttabToShowLinkEl = body.find( '.' + tabToShowId + '-tab a' );\n\n\t\t\ttabToShowLinkEl.click();\n\t\t},\n\t};\n\n\t$( document ).ready( function ( $ ) {\n\t\tspAdmin.init();\n\t} );\n} )( jQuery );\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Internal dependencies\n */\nimport { maybeBlockButtonWithUpgradeModal } from '@wpsimplepay/utils';\n\n/**\n * Handles product education when attempting to add a custom field in Lite.\n *\n * @since 4.4.7\n */\nfunction customFields() {\n\tconst button = document.getElementById( 'simpay-add-field-lite' );\n\n\tif ( ! button ) {\n\t\treturn;\n\t}\n\n\tbutton.addEventListener( 'click', maybeBlockButtonWithUpgradeModal );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tconst formSettings = document.querySelector(\n\t\t'.post-type-simple-pay #post'\n\t);\n\n\tif ( formSettings ) {\n\t\tcustomFields();\n\t}\n} );\n","/* global simpayAdmin, grecaptcha, simpayGoogleRecaptcha, jQuery */\n\n/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Internal dependencies\n */\nimport { maybeBlockSelectWithUpgradeModal } from '@wpsimplepay/utils';\n\n/**\n * Alerts the user when they are about to leave unsaved changes.\n *\n * @since 4.4.1\n *\n * @param {string} initialValues Serialized form initial values.\n */\nfunction onLeavePage( initialValues ) {\n\t/**\n\t * Alerts the user when they are about to leave unsaved changes.\n\t *\n\t * @since 4.4.1\n\t *\n\t * @param {Event} event beforeunload event.\n\t * @return {string} Message to display in the browser's confirmation dialog (when supported).\n\t */\n\tfunction confirmLeave( event ) {\n\t\tconst newFormValues = serialize(\n\t\t\tdocument.querySelector( '.post-type-simple-pay form#post' ),\n\t\t\t{ hash: true }\n\t\t);\n\t\tdelete newFormValues.simpay_form_settings_tab;\n\t\tdelete newFormValues.simpay_save_preview;\n\n\t\tif ( JSON.stringify( newFormValues ) !== initialValues ) {\n\t\t\tevent.preventDefault();\n\n\t\t\t// The return string is needed for browser compat.\n\t\t\t// See https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event.\n\t\t\treturn simpayAdmin.i18n.leavePageConfirm;\n\t\t}\n\t}\n\n\t// eslint-disable-next-line @wordpress/no-global-event-listener\n\twindow.addEventListener( 'beforeunload', confirmLeave );\n\twindow.onbeforeunload = confirmLeave;\n\n\t// Use jQuery to match WordPress core.\n\tjQuery( '.post-type-simple-pay form#post' )\n\t\t.off( 'submit' )\n\t\t.on( 'submit', function () {\n\t\t\t// eslint-disable-next-line @wordpress/no-global-event-listener\n\t\t\twindow.removeEventListener( 'beforeunload', confirmLeave );\n\t\t\twindow.onbeforeunload = null;\n\t\t} );\n}\n\n/**\n * Provides feedback to reCAPTCHA configuration.\n */\nfunction reCaptchaFeedback() {\n\tconst feedbackNoticeEl = document.querySelector(\n\t\t'.simpay-recaptcha-payment-form-feedback'\n\t);\n\n\tif ( ! feedbackNoticeEl ) {\n\t\treturn;\n\t}\n\n\tconst feedbackNoticeElDesc = document.querySelector(\n\t\t'.simpay-recaptcha-payment-form-description'\n\t);\n\tconst { siteKey, i18n } = simpayGoogleRecaptcha;\n\n\tfeedbackNoticeElDesc.style.display = 'none';\n\n\tfunction onError() {\n\t\tfeedbackNoticeEl.style.color = '#b32d2e';\n\t\tfeedbackNoticeEl.style.display = 'inline';\n\t\tfeedbackNoticeEl.innerHTML = i18n.disabled;\n\n\t\tfeedbackNoticeElDesc.style.display = 'inline-block';\n\t}\n\n\tfunction onSuccess() {\n\t\tfeedbackNoticeEl.style.color = 'green';\n\t\tfeedbackNoticeEl.style.display = 'inline';\n\t\tfeedbackNoticeEl.innerHTML = i18n.enabled;\n\n\t\tfeedbackNoticeElDesc.style.display = 'inline-block';\n\t}\n\n\tif ( '' === siteKey ) {\n\t\treturn onError();\n\t}\n\n\tgrecaptcha.ready( () => {\n\t\tconst badge = document.querySelector( '.grecaptcha-badge' );\n\n\t\tif ( badge ) {\n\t\t\tbadge.style.display = 'none';\n\t\t}\n\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction: `simple_pay_admin_test`,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => {\n\t\t\t\t\twp.ajax.send( 'simpay_validate_recaptcha_source', {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\trecaptcha_action: 'simple_pay_admin_test',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsuccess: onSuccess,\n\t\t\t\t\t\terror: onError,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( onError );\n\t\t} catch ( error ) {\n\t\t\tonError();\n\t\t}\n\t} );\n}\n\n/**\n * Provides feebdack to Title requirement.\n */\nfunction requireFormTitle() {\n\tconst formTitleInput = document.querySelector( '#_company_name' );\n\n\tif ( ! formTitleInput ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Appends an error message if the input is empty and refills with the site title.\n\t */\n\tformTitleInput.addEventListener( 'blur', function () {\n\t\tif ( formTitleInput.value.length === 0 ) {\n\t\t\tformTitleInput.nextElementSibling.classList.remove( 'hidden' );\n\t\t\tformTitleInput.value = simpayAdmin.siteTitle;\n\t\t} else {\n\t\t\tformTitleInput.nextElementSibling.classList.add( 'hidden' );\n\t\t}\n\t} );\n\n\tformTitleInput.addEventListener( 'focus', function () {\n\t\tif ( formTitleInput.value.length !== 0 ) {\n\t\t\tformTitleInput.nextElementSibling.classList.add( 'hidden' );\n\t\t}\n\t} );\n}\n\n/**\n * Handles product education when attempting configuring a form type in Lite.\n *\n * @since 4.4.7\n */\nfunction formType() {\n\tconst selector = document.getElementById( 'form-type-select' );\n\tconst overlay = document.getElementById( 'is-overlay' );\n\n\tselector.addEventListener( 'change', function ( e ) {\n\t\tconst {\n\t\t\ttarget: { options, selectedIndex },\n\t\t} = e;\n\t\tconst option = options[ selectedIndex ];\n\t\tconst type = option.value;\n\n\t\tif ( 'on-site' === type ) {\n\t\t\tmaybeBlockSelectWithUpgradeModal( e );\n\t\t}\n\n\t\tif ( 'off-site' === type ) {\n\t\t\toverlay.querySelector( 'input' ).checked = false;\n\t\t}\n\n\t\toverlay.style.display =\n\t\t\t'yes' === option.dataset.available && 'on-site' === type\n\t\t\t\t? 'block'\n\t\t\t\t: 'none';\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tconst formSettings = document.querySelector(\n\t\t'.post-type-simple-pay #post'\n\t);\n\n\tif ( formSettings ) {\n\t\tconst formValues = serialize( formSettings, { hash: true } );\n\t\tdelete formValues.simpay_form_settings_tab;\n\t\tonLeavePage( JSON.stringify( formValues ) );\n\n\t\tformType();\n\t\treCaptchaFeedback();\n\t\trequireFormTitle();\n\t}\n} );\n","import './general.js';\nimport './prices.js';\nimport './payment-methods.js';\nimport './taxes.js';\nimport './custom-fields.js';\nimport './stripe-checkout.js';\nimport './payment-page.js';\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\nimport { maybeBlockCheckboxWithUpgradeModal } from '@wpsimplepay/utils';\n\n/**\n * Toggles Payment Method visibility when filtering Payment Methods.\n *\n * @since 4.4.7\n *\n * @param {Object} e Change event.\n * @param {HTMLElement} e.target Payment Method filter toggle.\n */\nfunction onFilter( { target } ) {\n\tconst filter = target.options[ target.selectedIndex ].value;\n\n\tconst paymentMethods = document.querySelectorAll(\n\t\t'.simpay-panel-field-payment-method[data-payment-method]'\n\t);\n\n\t[ ...paymentMethods ].forEach( ( paymentMethod ) => {\n\t\tconst { scope } = JSON.parse( paymentMethod.dataset.paymentMethod );\n\t\tconst maybeShow = 'popular' === scope ? 'block' : 'none';\n\n\t\tpaymentMethod.style.display = 'all' === filter ? 'block' : maybeShow;\n\t} );\n}\n\ndomReady( () => {\n\t// Filter.\n\tconst filters = document.querySelectorAll(\n\t\t'.simpay-panel-field-payment-method-filter'\n\t);\n\n\tif ( 0 !== filters.length ) {\n\t\t[ ...filters ].forEach( ( filter ) => {\n\t\t\tfilter.addEventListener( 'change', onFilter );\n\t\t} );\n\t}\n\n\t// Education.\n\tconst paymentMethods = document.querySelectorAll(\n\t\t'.simpay-payment-method-lite'\n\t);\n\n\tif ( paymentMethods ) {\n\t\tpaymentMethods.forEach( ( paymentMethod ) =>\n\t\t\tpaymentMethod.addEventListener(\n\t\t\t\t'change',\n\t\t\t\tmaybeBlockCheckboxWithUpgradeModal\n\t\t\t)\n\t\t);\n\t}\n} );\n","/* global $ */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\nimport { maybeBlockCheckboxWithUpgradeModal } from '@wpsimplepay/utils';\n\n/**\n * Promopts for upgrade if enabling Payment Pages with an incorrect license.\n *\n * @since 4.5.0\n */\nfunction bindEnable() {\n\tconst enableEl = document.querySelector( '[name=\"_enable_payment_page\"]' );\n\n\tif ( ! enableEl ) {\n\t\treturn;\n\t}\n\n\tenableEl.addEventListener( 'change', maybeBlockCheckboxWithUpgradeModal );\n}\n\n/**\n * Promopts for upgrade if disabling with an incorrect license.\n *\n * @since 4.5.0\n */\nfunction bindHideBranding() {\n\tconst hideEl = document.querySelector(\n\t\t'[name=\"_payment_page_powered_by\"]'\n\t);\n\n\tif ( ! hideEl ) {\n\t\treturn;\n\t}\n\n\thideEl.addEventListener( 'change', maybeBlockCheckboxWithUpgradeModal );\n}\n\n/**\n * Bind color picker.\n *\n * @since 4.5.0\n */\nfunction bindColorPicker() {\n\tconst customColorEl = document.getElementById(\n\t\t'payment-page-background-color-custom'\n\t);\n\n\tif ( ! customColorEl ) {\n\t\treturn;\n\t}\n\n\t$( '#payment-page-background-color-custom' ).wpColorPicker();\n\n\tconst customButtonEl = document.querySelector(\n\t\t'.simpay-payment-page-background-color .wp-color-result'\n\t);\n\n\tconst colorButtonEls = document.querySelectorAll(\n\t\t'.simpay-payment-page-background-color'\n\t);\n\n\tcustomButtonEl.addEventListener( 'click', ( e ) => {\n\t\tcolorButtonEls.forEach( ( el ) => {\n\t\t\tel.querySelector( 'input' ).checked = false;\n\t\t} );\n\n\t\te.target.classList.add( 'is-selected' );\n\t\t$( e.target ).parent().find( 'input' ).prop( 'checked', true );\n\t} );\n\n\tcolorButtonEls.forEach( ( el ) => {\n\t\tel.querySelector( 'input' ).addEventListener( 'change', () => {\n\t\t\tcustomButtonEl.classList.remove( 'is-selected' );\n\t\t} );\n\t} );\n}\n\n/**\n * Updates the .simpay-payment-page-url clipboard text with the new value of the slug.\n *\n * @since 4.5.0\n */\nfunction bindSlug() {\n\tconst slugEl = document.querySelector( '[name=\"_payment_page_slug\"]' );\n\n\tif ( ! slugEl ) {\n\t\treturn;\n\t}\n\n\tslugEl.addEventListener( 'keyup', ( e ) => {\n\t\tconst urlEl = document.querySelector( '.simpay-payment-page-url' );\n\n\t\tif ( ! urlEl ) {\n\t\t\treturn;\n\t\t}\n\n\t\turlEl.dataset.clipboardText = `${ window.location.origin }/${ e.target.value }`;\n\t} );\n}\n\ndomReady( () => {\n\tbindEnable();\n\tbindHideBranding();\n\tbindColorPicker();\n\tbindSlug();\n} );\n","/* global wp, _, jQuery, spGeneral */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Internal dependencies\n */\nimport {\n\tmaybeBlockButtonWithUpgradeModal,\n\tupgradeModal,\n} from '@wpsimplepay/utils';\n\n/**\n * Toggles price option label display if there is more than one price option.\n *\n * @since 4.4.7\n */\nfunction togglePriceOptionSingle() {\n\tconst priceListEl = document.getElementById( 'simpay-prices' );\n\n\tif ( ! priceListEl ) {\n\t\treturn;\n\t}\n\n\tconst priceListCount = priceListEl.querySelectorAll( '.simpay-price' )\n\t\t.length;\n\n\t// Label.\n\tdocument\n\t\t.querySelectorAll( '.simpay-price-label-default' )\n\t\t.forEach(\n\t\t\t( labelEl ) =>\n\t\t\t\t( labelEl.style.display =\n\t\t\t\t\tpriceListCount > 1 ? 'none' : 'block' )\n\t\t);\n\n\tdocument\n\t\t.querySelectorAll( '.simpay-price-label-display' )\n\t\t.forEach(\n\t\t\t( labelEl ) =>\n\t\t\t\t( labelEl.style.display =\n\t\t\t\t\tpriceListCount > 1 ? 'block' : 'none' )\n\t\t);\n\n\t// Label field.\n\tdocument\n\t\t.querySelectorAll( '.simpay-price-option-label' )\n\t\t.forEach(\n\t\t\t( labelEl ) =>\n\t\t\t\t( labelEl.style.display =\n\t\t\t\t\tpriceListCount > 1 ? 'block' : 'none' )\n\t\t);\n\n\t// Actions.\n\tdocument\n\t\t.querySelectorAll( '.simpay-price-default-check' )\n\t\t.forEach(\n\t\t\t( labelEl ) =>\n\t\t\t\t( labelEl.style.display =\n\t\t\t\t\tpriceListCount > 1 ? 'block' : 'none' )\n\t\t);\n\n\t// Price Select custom field.\n\tconst priceSelectFieldEls = document.querySelectorAll(\n\t\t'.simpay-panel-field-price-select'\n\t);\n\n\tif ( priceSelectFieldEls.length > 0 ) {\n\t\tpriceSelectFieldEls.forEach(\n\t\t\t( priceSelectFieldEl ) =>\n\t\t\t\t( priceSelectFieldEl.style.display =\n\t\t\t\t\tpriceListCount > 1 ? 'table-row' : 'none' )\n\t\t);\n\n\t\tconst priceSelectFieldNoticeEl = document.querySelector(\n\t\t\t'.simpay-panel-field-price-select-notice'\n\t\t);\n\n\t\tif ( priceSelectFieldNoticeEl ) {\n\t\t\tpriceSelectFieldNoticeEl.style.display =\n\t\t\t\tpriceListCount === 1 ? 'table-row' : 'none';\n\t\t}\n\t}\n}\n\n/**\n * Updates the display label as settings change.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onChangeLabel( priceEl ) {\n\tconst labelDisplay = priceEl.querySelector( '.simpay-price-label-display' );\n\tconst labelInput = priceEl.querySelector( '.simpay-price-label' );\n\n\tconst {\n\t\tstrings: { recurringIntervalDisplay, customAmountLabel },\n\t} = spGeneral;\n\n\tif ( '' !== labelInput.value ) {\n\t\tlabelDisplay.innerHTML = labelInput.value;\n\t} else {\n\t\tlet label;\n\t\tconst currencyInput = priceEl.querySelector( '.simpay-price-currency' );\n\t\tconst amountInput = priceEl.querySelector( '.simpay-price-amount' );\n\t\tconst amountTypeInput = priceEl.querySelector(\n\t\t\t'.simpay-price-amount-type'\n\t\t);\n\n\t\tconst customAmountInput = priceEl.querySelector(\n\t\t\t'.simpay-price-custom-amount input'\n\t\t);\n\t\tconst customAmountToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-enable-custom-amount'\n\t\t);\n\n\t\tconst {\n\t\t\tstrings: { currencyPosition, recurringIntervals },\n\t\t} = spGeneral;\n\t\tconst currencySymbol =\n\t\t\tcurrencyInput.options[ currencyInput.selectedIndex ].dataset.symbol;\n\n\t\tif ( true === customAmountToggle.checked ) {\n\t\t\tlabel = customAmountInput.value;\n\t\t} else {\n\t\t\tlabel = amountInput.value;\n\t\t}\n\n\t\tswitch ( currencyPosition ) {\n\t\t\tcase 'left':\n\t\t\t\tlabel = `${ currencySymbol }${ label }`;\n\t\t\t\tbreak;\n\t\t\tcase 'left_space':\n\t\t\t\tlabel = `${ currencySymbol } ${ label }`;\n\t\t\t\tbreak;\n\t\t\tcase 'right':\n\t\t\t\tlabel = `${ label }${ currencySymbol }`;\n\t\t\t\tbreak;\n\t\t\tcase 'right_space':\n\t\t\t\tlabel = `${ label } ${ currencySymbol }`;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( true === customAmountToggle.checked ) {\n\t\t\tlabel = customAmountLabel.replace( '%s', label );\n\t\t}\n\n\t\tif ( 'recurring' === amountTypeInput.value ) {\n\t\t\tconst recurringInterval = priceEl.querySelector(\n\t\t\t\t'.simpay-price-recurring-interval'\n\t\t\t);\n\n\t\t\tconst recurringIntervalCount = priceEl.querySelector(\n\t\t\t\t'.simpay-price-recurring-interval-count'\n\t\t\t);\n\n\t\t\tconst recurringIntervalDisplayNouns =\n\t\t\t\trecurringIntervals[\n\t\t\t\t\trecurringInterval.options[ recurringInterval.selectedIndex ]\n\t\t\t\t\t\t.value\n\t\t\t\t];\n\n\t\t\tlet recurringIntervalDisplayReplaced = recurringIntervalDisplay;\n\n\t\t\trecurringIntervalDisplayReplaced = recurringIntervalDisplayReplaced.replace(\n\t\t\t\t'%1$s',\n\t\t\t\tlabel\n\t\t\t);\n\n\t\t\trecurringIntervalDisplayReplaced = recurringIntervalDisplayReplaced.replace(\n\t\t\t\t'%2$s',\n\t\t\t\trecurringIntervalCount.value\n\t\t\t);\n\n\t\t\trecurringIntervalDisplayReplaced = recurringIntervalDisplayReplaced.replace(\n\t\t\t\t'%3$s',\n\t\t\t\trecurringIntervalCount.value === '1'\n\t\t\t\t\t? recurringIntervalDisplayNouns[ 0 ]\n\t\t\t\t\t: recurringIntervalDisplayNouns[ 1 ]\n\t\t\t);\n\n\t\t\tlabel = recurringIntervalDisplayReplaced;\n\t\t}\n\n\t\tlabelDisplay.innerHTML = label;\n\t}\n}\n\n/**\n * Handles changing the current price option's currency.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onChangeCurrency( priceEl ) {\n\tconst { options, selectedIndex } = priceEl.querySelector(\n\t\t'.simpay-price-currency'\n\t);\n\tconst { symbol } = options[ selectedIndex ].dataset;\n\n\tconst currenySymbolEls = priceEl.querySelectorAll(\n\t\t'.simpay-price-currency-symbol'\n\t);\n\n\t_.each(\n\t\tcurrenySymbolEls,\n\t\t( currencySymbolEl ) => ( currencySymbolEl.innerText = symbol )\n\t);\n}\n\n/**\n * Handles displaying the current price's relevant settings when a Price's\n * \"Amount Type\" changes.\n *\n * @param {HTMLElement} priceEl Price container element.\n * @param {HTMLElement} toggle Price type toggle element.\n */\nfunction onToggleAmountType( priceEl, toggle ) {\n\t// Disable current toggles.\n\tconst toggles = priceEl.querySelectorAll(\n\t\t'.simpay-price-amount-type .button'\n\t);\n\n\t_.each( toggles, ( toggle ) =>\n\t\ttoggle.classList.remove( 'button-primary' )\n\t);\n\n\t// Update current toggle and show relevant settings.\n\tconst { amountType } = toggle.dataset;\n\n\tconst recurringSettings = priceEl.querySelector(\n\t\t'.simpay-price-recurring-settings'\n\t);\n\n\ttoggle.classList.add( 'button-primary' );\n\trecurringSettings.style.display =\n\t\t'recurring' === amountType ? 'table' : 'none';\n\n\t// Hide \"optional recur\" setting.\n\tconst canRecurSetting = priceEl.querySelector(\n\t\t'.simpay-price-recurring-amount-toggle'\n\t);\n\n\tconst canRecurToggle = priceEl.querySelector(\n\t\t'.simpay-price-enable-optional-subscription'\n\t);\n\n\tcanRecurSetting.style.display =\n\t\t'recurring' === amountType ? 'none' : 'block';\n\tcanRecurToggle.checked = false;\n\n\t// Update the hidden field to track the amount type.\n\tpriceEl.querySelector( '.simpay-price-amount-type' ).value = amountType;\n}\n\n/**\n * Handles displaying the current price's recurring settings\n * if the \"Can optionally be purchased as a subscription\" setting is checked.\n *\n * @param {HTMLElement} priceEl Price container element.\n * @param {HTMLElement} checkbox Recurring toggle element.\n */\nfunction onToggleCanRecur( priceEl, checkbox ) {\n\tconst recurringSettings = priceEl.querySelector(\n\t\t'.simpay-price-recurring-settings'\n\t);\n\n\trecurringSettings.style.display = checkbox.checked ? 'table' : 'none';\n}\n\n/**\n * Handles displaying the current price's custom amount settings.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onToggleCustomAmount( priceEl ) {\n\tconst customAmountSettings = priceEl.querySelector(\n\t\t'.simpay-price-custom-amount'\n\t);\n\n\tcustomAmountSettings.style.display =\n\t\t'none' === customAmountSettings.style.display ? 'block' : 'none';\n}\n\n/**\n * Handles validating the recurring interval. Can not be over one year.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onChangeRecurring( priceEl ) {\n\tconst recurringInterval = priceEl.querySelector(\n\t\t'.simpay-price-recurring-interval'\n\t);\n\n\tconst recurringIntervalCount = priceEl.querySelector(\n\t\t'.simpay-price-recurring-interval-count'\n\t);\n\n\tconst recurringIntervalCountValue = parseInt(\n\t\trecurringIntervalCount.value\n\t);\n\n\tconst recurringIntervalValue =\n\t\trecurringInterval.options[ recurringInterval.selectedIndex ].value;\n\n\t// Limit each interval to maximum 1 year (imposed by Stripe).\n\tswitch ( recurringIntervalValue ) {\n\t\tcase 'day':\n\t\t\tif ( recurringIntervalCountValue > 365 ) {\n\t\t\t\trecurringIntervalCount.value = 365;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'week':\n\t\t\tif ( recurringIntervalCountValue > 52 ) {\n\t\t\t\trecurringIntervalCount.value = 52;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'month':\n\t\t\tif ( recurringIntervalCountValue > 12 ) {\n\t\t\t\trecurringIntervalCount.value = 12;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'year':\n\t\t\tif ( recurringIntervalCountValue > 1 ) {\n\t\t\t\trecurringIntervalCount.value = 1;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\t// Update the recurring interval pluralization based on the count value.\n\tconst pluralizations = JSON.parse( recurringInterval.dataset.intervals );\n\n\t[ ...recurringInterval.options ].forEach( ( { value }, i ) => {\n\t\trecurringInterval.options[ i ].text =\n\t\t\tparseInt( recurringIntervalCount.value ) === 1\n\t\t\t\t? pluralizations[ value ][ 0 ]\n\t\t\t\t: pluralizations[ value ][ 1 ];\n\t} );\n}\n\n/**\n * Handles displaying the current price's legacy settings.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onToggleLegacySettings( priceEl ) {\n\tconst legacySettingEls = priceEl.querySelectorAll(\n\t\t'.simpay-price-legacy-setting'\n\t);\n\n\t_.each(\n\t\tlegacySettingEls,\n\t\t( legacySettingEl ) =>\n\t\t\t( legacySettingEl.style.display =\n\t\t\t\t'block' === legacySettingEl.style.display ? 'none' : 'block' )\n\t);\n}\n\n/**\n * Handles toggling the current price option as the default selection.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onToggleDefault( priceEl ) {\n\tconst allDefaults = document.querySelectorAll( '.simpay-price-default' );\n\n\t_.each( allDefaults, ( defaultEl ) => ( defaultEl.checked = false ) );\n\n\tpriceEl.querySelector( '.simpay-price-default' ).checked = true;\n}\n\n/**\n * Handles remove a price.\n *\n * @param {HTMLElement} priceEl Price container element.\n */\nfunction onRemove( priceEl ) {\n\tpriceEl.remove();\n\tensureDefaultPrice();\n\n\t// Toggle label fields.\n\ttogglePriceOptionSingle();\n}\n\n/**\n * Handles adding a new price option.\n *\n * @param {HTMLElement} buttonEl \"Add Price\" button.\n */\nfunction onAddPrice( buttonEl ) {\n\tconst { nonce, formId } = buttonEl.dataset;\n\tconst priceListEl = document.getElementById( 'simpay-prices' );\n\n\t// Disable button.\n\tbuttonEl.classList.add( 'disabled' );\n\n\twp.ajax.send( 'simpay_add_price', {\n\t\tdata: {\n\t\t\t_wpnonce: nonce,\n\t\t\tform_id: formId,\n\t\t},\n\t\tsuccess: ( response ) => {\n\t\t\tjQuery( priceListEl ).append( response );\n\n\t\t\t// Rebind events when added.\n\t\t\tbindPriceOptions();\n\t\t\tensureDefaultPrice();\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\n\t\t\t// Toggle label fields.\n\t\t\ttogglePriceOptionSingle();\n\t\t},\n\t\terror: ( { message } ) => {\n\t\t\talert( message );\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\t\t},\n\t} );\n}\n\n/**\n * Handles adding an existing (legacy) Stripe Plan.\n *\n * @param {HTMLElement} buttonEl \"Add Plan\" button.\n */\nfunction onAddPlan( buttonEl ) {\n\tconst { nonce, formId } = buttonEl.dataset;\n\tconst priceListEl = document.getElementById( 'simpay-prices' );\n\tconst planIdEl = document.getElementById(\n\t\t'simpay-prices-advanced-plan-id'\n\t);\n\n\tbuttonEl.classList.add( 'disabled' );\n\n\twp.ajax.send( 'simpay_add_plan', {\n\t\tdata: {\n\t\t\t_wpnonce: nonce,\n\t\t\tform_id: formId,\n\t\t\tplan_id: planIdEl.value,\n\t\t},\n\t\tsuccess: ( response ) => {\n\t\t\tjQuery( priceListEl ).append( response );\n\n\t\t\t// Rebind events when added.\n\t\t\tbindPriceOptions();\n\n\t\t\t// Hide advanced settings and clear input.\n\t\t\tdocument.getElementById( 'simpay-prices-advanced' ).style.display =\n\t\t\t\t'none';\n\t\t\tplanIdEl.value = '';\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\n\t\t\t// Toggle label fields.\n\t\t\ttogglePriceOptionSingle();\n\t\t},\n\t\terror: ( { message } ) => {\n\t\t\talert( message );\n\n\t\t\t// Reenable button.\n\t\t\tbuttonEl.classList.remove( 'disabled' );\n\t\t},\n\t} );\n}\n\n/**\n * Binds jQuery sortable to price options.\n */\nfunction bindSortablePriceOptions() {\n\t$( '.simpay-prices' ).sortable( {\n\t\titems: '.simpay-field-metabox',\n\t\tcontainment: '#simpay-prices',\n\t\thandle: '.simpay-hndle',\n\t\tplaceholder: 'sortable-placeholder',\n\t\tcursor: 'move',\n\t\tdelay: $( document.body ).hasClass( 'mobile' ) ? 200 : 0,\n\t\tdistance: 2,\n\t\ttolerance: 'pointer',\n\t\tforcePlaceholderSize: true,\n\t\topacity: 0.65,\n\n\t\t// @link https://core.trac.wordpress.org/changeset/35809\n\t\thelper( event, element ) {\n\t\t\t/* `helper: 'clone'` is equivalent to `return element.clone();`\n\t\t\t * Cloning a checked radio and then inserting that clone next to the original\n\t\t\t * radio unchecks the original radio (since only one of the two can be checked).\n\t\t\t * We get around this by renaming the helper's inputs' name attributes so that,\n\t\t\t * when the helper is inserted into the DOM for the sortable, no radios are\n\t\t\t * duplicated, and no original radio gets unchecked.\n\t\t\t */\n\t\t\treturn element\n\t\t\t\t.clone()\n\t\t\t\t.find( ':input' )\n\t\t\t\t.attr( 'name', function ( i, currentName ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t'sort_' +\n\t\t\t\t\t\tparseInt( Math.random() * 100000, 10 ).toString() +\n\t\t\t\t\t\t'_' +\n\t\t\t\t\t\tcurrentName\n\t\t\t\t\t);\n\t\t\t\t} )\n\t\t\t\t.end();\n\t\t},\n\t} );\n}\n\n/**\n * Binds events to various elements on each price option.\n */\nfunction bindPriceOptions() {\n\tconst pricesEls = document.querySelectorAll( '.simpay-price' );\n\n\t_.each( pricesEls, ( priceEl ) => {\n\t\tconst amountType = priceEl.querySelector( '.simpay-price-amount-type' )\n\t\t\t.value;\n\n\t\t// Label.\n\t\tconst labelInput = priceEl.querySelector( '.simpay-price-label' );\n\n\t\tlabelInput.addEventListener( 'keyup', () => onChangeLabel( priceEl ) );\n\t\tonChangeLabel( priceEl );\n\n\t\t// Currency symbol.\n\t\tconst currencyToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-currency'\n\t\t);\n\n\t\tcurrencyToggle.addEventListener( 'change', () => {\n\t\t\tonChangeCurrency( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\t// Amount type toggle.\n\t\tconst amountTypeToggles = priceEl.querySelectorAll(\n\t\t\t'.simpay-price-amount-type .button'\n\t\t);\n\n\t\tif ( amountTypeToggles.length > 0 ) {\n\t\t\t_.each( amountTypeToggles, ( amountTypeToggle ) =>\n\t\t\t\tamountTypeToggle.addEventListener( 'click', ( e ) => {\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tconst {\n\t\t\t\t\t\tavailable,\n\t\t\t\t\t\tupgradeTitle,\n\t\t\t\t\t\tupgradeDescription,\n\t\t\t\t\t\tupgradeUrl,\n\t\t\t\t\t\tupgradePurchasedUrl,\n\t\t\t\t\t} = e.target.dataset;\n\n\t\t\t\t\tif ( 'no' === available ) {\n\t\t\t\t\t\tupgradeModal( {\n\t\t\t\t\t\t\ttitle: upgradeTitle,\n\t\t\t\t\t\t\tdescription: upgradeDescription,\n\t\t\t\t\t\t\turl: upgradeUrl,\n\t\t\t\t\t\t\tpurchasedUrl: upgradePurchasedUrl,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonToggleAmountType( priceEl, e.target );\n\t\t\t\t\t\tonChangeLabel( priceEl );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\t// Amount.\n\t\tconst amountInput = priceEl.querySelector( '.simpay-price-amount' );\n\n\t\tamountInput.addEventListener( 'keyup', () => onChangeLabel( priceEl ) );\n\n\t\t// Optional recurring toggle.\n\t\tconst canRecurToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-enable-optional-subscription'\n\t\t);\n\n\t\tif ( canRecurToggle ) {\n\t\t\tcanRecurToggle.addEventListener( 'click', ( e ) => {\n\t\t\t\tconst { target } = e;\n\t\t\t\tconst {\n\t\t\t\t\tavailable,\n\t\t\t\t\tupgradeTitle,\n\t\t\t\t\tupgradeDescription,\n\t\t\t\t\tupgradeUrl,\n\t\t\t\t\tupgradePurchasedUrl,\n\t\t\t\t} = target.dataset;\n\n\t\t\t\tif ( 'no' === available ) {\n\t\t\t\t\ttarget.checked = false;\n\t\t\t\t\te.preventDefault();\n\n\t\t\t\t\tupgradeModal( {\n\t\t\t\t\t\ttitle: upgradeTitle,\n\t\t\t\t\t\tdescription: upgradeDescription,\n\t\t\t\t\t\turl: upgradeUrl,\n\t\t\t\t\t\tpurchasedUrl: upgradePurchasedUrl,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tonToggleCanRecur( priceEl, target );\n\t\t\t\t\tonChangeLabel( priceEl );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( 'recurring' !== amountType ) {\n\t\t\t\tonToggleCanRecur( priceEl, canRecurToggle );\n\t\t\t}\n\t\t}\n\n\t\t// Custom amount toggle.\n\t\tconst customAmountToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-enable-custom-amount'\n\t\t);\n\n\t\tcustomAmountToggle.addEventListener( 'click', () => {\n\t\t\tonToggleCustomAmount( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\t// Recurring interval.\n\t\tconst recurringInterval = priceEl.querySelector(\n\t\t\t'.simpay-price-recurring-interval'\n\t\t);\n\n\t\trecurringInterval.addEventListener( 'change', () => {\n\t\t\tonChangeLabel( priceEl );\n\t\t\tonChangeRecurring( priceEl );\n\t\t} );\n\n\t\t// Recurring interval count.\n\t\tconst recurringIntervalCount = priceEl.querySelector(\n\t\t\t'.simpay-price-recurring-interval-count'\n\t\t);\n\n\t\tonChangeRecurring( priceEl );\n\n\t\trecurringIntervalCount.addEventListener( 'keyup', () => {\n\t\t\tonChangeRecurring( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\trecurringIntervalCount.addEventListener( 'change', () => {\n\t\t\tonChangeRecurring( priceEl );\n\t\t\tonChangeLabel( priceEl );\n\t\t} );\n\n\t\t// Legacy settings toggle.\n\t\tconst legacySettingsToggle = priceEl.querySelector(\n\t\t\t'.simpay-price-legacy-setting-toggle'\n\t\t);\n\n\t\tif ( legacySettingsToggle ) {\n\t\t\tlegacySettingsToggle.addEventListener( 'click', ( e ) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tonToggleLegacySettings( priceEl );\n\t\t\t} );\n\t\t}\n\n\t\t// Default checkbox.\n\t\tconst defaultToggle = priceEl.querySelector( '.simpay-price-default' );\n\n\t\tdefaultToggle.addEventListener( 'change', () =>\n\t\t\tonToggleDefault( priceEl )\n\t\t);\n\n\t\t// Remove.\n\t\tconst removeToggle = priceEl.querySelector( '.simpay-price-remove' );\n\n\t\tremoveToggle.addEventListener( 'click', ( e ) => {\n\t\t\te.preventDefault();\n\t\t\tonRemove( priceEl );\n\t\t} );\n\t} );\n\n\t// Toggle label fields.\n\ttogglePriceOptionSingle();\n}\n\n/**\n * Binds events to \"Advanced\" options.\n */\nfunction bindAdvancedOptions() {\n\tconst toggleAdvancedEl = document.getElementById(\n\t\t'simpay-prices-advanced-toggle'\n\t);\n\n\tconst advancedEl = document.getElementById( 'simpay-prices-advanced' );\n\n\tif ( ! toggleAdvancedEl || ! advancedEl ) {\n\t\treturn;\n\t}\n\n\ttoggleAdvancedEl.addEventListener( 'click', function ( e ) {\n\t\te.preventDefault();\n\n\t\tadvancedEl.style.display =\n\t\t\t'block' == advancedEl.style.display ? 'none' : 'block';\n\t} );\n}\n\n/**\n * Binds events for adding a new Price.\n */\nfunction addPrice() {\n\tconst addButtonEl = document.getElementById( 'simpay-add-price' );\n\n\tif ( ! addButtonEl ) {\n\t\treturn;\n\t}\n\n\taddButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\tonAddPrice( addButtonEl );\n\t} );\n}\n\n/**\n * Shows an upgrade modal when a Lite user presses \"Add Price\".\n *\n * @since 4.4.7\n */\nfunction addPriceLite() {\n\tconst addPriceEl = document.getElementById( 'simpay-add-price-lite' );\n\n\tif ( ! addPriceEl ) {\n\t\treturn;\n\t}\n\n\taddPriceEl.addEventListener( 'click', maybeBlockButtonWithUpgradeModal );\n}\n\n/**\n * Shows an upgrade modal when a Lite user presses \"Subscription\".\n *\n * @since 4.4.7\n */\nfunction amountTypeLite() {\n\tconst amountTypeEl = document.getElementById( 'simpay-amount-type-lite' );\n\n\tif ( ! amountTypeEl ) {\n\t\treturn;\n\t}\n\n\tamountTypeEl.addEventListener( 'click', maybeBlockButtonWithUpgradeModal );\n}\n\n/**\n * Shows an upgrade modal when a Lite user checks option recurring.\n *\n * @since 4.4.7\n */\nfunction canRecurLite() {\n\tconst canRecurEl = document.getElementById( 'simpay-can-recur-lite' );\n\n\tif ( ! canRecurEl ) {\n\t\treturn;\n\t}\n\n\tcanRecurEl.addEventListener( 'click', maybeBlockButtonWithUpgradeModal );\n}\n\n/**\n * Shows an upgrade modal when a Lite user checks custom amount.\n *\n * @since 4.4.7\n */\nfunction customLite() {\n\tconst customEl = document.getElementById( 'simpay-custom-lite' );\n\n\tif ( ! customEl ) {\n\t\treturn;\n\t}\n\n\tcustomEl.addEventListener( 'click', maybeBlockButtonWithUpgradeModal );\n}\n\n/**\n * Binds events for adding an existing (legacy) Stripe Plan.\n */\nfunction addPlan() {\n\tconst addButtonEl = document.getElementById( 'simpay-prices-advanced-add' );\n\n\tif ( ! addButtonEl ) {\n\t\treturn;\n\t}\n\n\taddButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\tonAddPlan( addButtonEl );\n\t} );\n}\n\n/**\n * Shows or hides \"Remove\" toggles based on the current amount of prices.\n */\nfunction ensureDefaultPrice() {\n\tconst prices = document.querySelectorAll( '.simpay-price' );\n\n\tif ( ! document.querySelector( '.simpay-price-default:checked' ) ) {\n\t\tprices[ 0 ].querySelector( '.simpay-price-default' ).checked = true;\n\t}\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tbindSortablePriceOptions();\n\tbindPriceOptions();\n\tbindAdvancedOptions();\n\taddPlan();\n\taddPrice();\n\taddPriceLite();\n\tamountTypeLite();\n\tcanRecurLite();\n\tcustomLite();\n} );\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Internal dependencies\n */\nimport { maybeBlockCheckboxWithUpgradeModal } from '@wpsimplepay/utils';\n\n/**\n * Binds toggling of \"Collect Tax ID\" setting.\n *\n * @since 4.4.7\n */\nfunction collectTaxId() {\n\tconst collectTaxIdEl = document.getElementById( '_enable_tax_id' );\n\n\tif ( ! collectTaxIdEl ) {\n\t\treturn;\n\t}\n\n\tcollectTaxIdEl.addEventListener(\n\t\t'change',\n\t\tmaybeBlockCheckboxWithUpgradeModal\n\t);\n}\n\n/**\n * Binds toggling of \"Allow Coupons\" setting.\n *\n * @since 4.4.7\n */\nfunction allowCoupons() {\n\tconst enableCoupons = document.getElementById( '_enable_promotion_codes' );\n\n\tif ( ! enableCoupons ) {\n\t\treturn;\n\t}\n\n\tenableCoupons.addEventListener(\n\t\t'change',\n\t\tmaybeBlockCheckboxWithUpgradeModal\n\t);\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tcollectTaxId();\n\tallowCoupons();\n} );\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Internal dependencies\n */\nimport { maybeBlockSelectWithUpgradeModal } from '@wpsimplepay/utils';\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tconst selector = document.getElementById( '_tax_status_lite' );\n\n\tif ( selector ) {\n\t\tselector.addEventListener( 'change', maybeBlockSelectWithUpgradeModal );\n\t}\n} );\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Displays Connect error message and/or reloads the page if needed.\n *\n * @param {Object} response JSON response data.\n * @param {string} response.message Error message.\n * @param {boolean} response.reload Whether to reload the page.\n */\nfunction onConnectError( response ) {\n\tconst feedbackEl = document.getElementById(\n\t\t'simpay-connect-license-feedback'\n\t);\n\n\tconst submitButtonEl = document.getElementById(\n\t\t'simpay-connect-license-submit'\n\t);\n\n\t// Toggle feedback.\n\tif ( response.message ) {\n\t\tfeedbackEl.innerText = response.message;\n\t\tfeedbackEl.classList.remove( 'simpay-license-message--valid' );\n\t\tfeedbackEl.classList.add( 'simpay-license-message--invalid' );\n\t\tfeedbackEl.style.display = 'block';\n\t} else {\n\t\tfeedbackEl.style.display = 'none';\n\t}\n\n\t// Enable submit button again if the page is not reloading.\n\tif ( ! response.reload ) {\n\t\tsubmitButtonEl.disabled = false;\n\t\tsubmitButtonEl.innerText = submitButtonEl.dataset.connect;\n\t} else {\n\t\tsetTimeout( function () {\n\t\t\twindow.location.reload();\n\t\t}, 2000 );\n\t}\n}\n\n/**\n * Displays Connect error message and/or reloads or redirects the page if needed.\n *\n * @param {Object} response JSON response data.\n * @param {string} response.message Error message.\n * @param {boolean} response.reload Whether to reload the page.\n * @param {string} response.url URL to redirect to.\n */\nfunction onConnectSuccess( response ) {\n\tconst feedbackEl = document.getElementById(\n\t\t'simpay-connect-license-feedback'\n\t);\n\n\t// Toggle feedback.\n\tif ( response.message ) {\n\t\tfeedbackEl.innerText = response.message;\n\t\tfeedbackEl.classList.remove( 'simpay-license-message--invalid' );\n\t\tfeedbackEl.classList.add( 'simpay-license-message--valid' );\n\t\tfeedbackEl.style.display = 'block';\n\t} else {\n\t\tfeedbackEl.style.display = 'none';\n\t}\n\n\t// Redirect if the current page is not being reloaded.\n\tif ( ! response.reload ) {\n\t\twindow.location = response.url;\n\t} else {\n\t\tsetTimeout( function () {\n\t\t\twindow.location.reload();\n\t\t}, 2000 );\n\t}\n}\n\n/**\n * Submits the Lite Connect data.\n */\nfunction onConnect() {\n\tconst licenseKeyEl = document.getElementById(\n\t\t'simpay-connect-license-key'\n\t);\n\n\tconst nonceEl = document.getElementById( 'simpay-connect-license-nonce' );\n\n\tconst submitButtonEl = document.getElementById(\n\t\t'simpay-connect-license-submit'\n\t);\n\n\t// Disable submit.\n\tsubmitButtonEl.disabled = true;\n\tsubmitButtonEl.innerText = submitButtonEl.dataset.connecting;\n\n\t// Get the URL.\n\twp.ajax.send( 'simpay_get_connect_url', {\n\t\tdata: {\n\t\t\tnonce: nonceEl.value,\n\t\t\tkey: licenseKeyEl.value,\n\t\t},\n\t\t// Handle success (redirect).\n\t\tsuccess: onConnectSuccess,\n\n\t\t// Handle error (show error).\n\t\terror: onConnectError,\n\t} );\n}\n\n/**\n * Binds the Lite Connect form events.\n */\ndomReady( () => {\n\tconst licenseKeyEl = document.getElementById(\n\t\t'simpay-connect-license-key'\n\t);\n\n\tif ( ! licenseKeyEl ) {\n\t\treturn;\n\t}\n\n\tconst submitButtonEl = document.getElementById(\n\t\t'simpay-connect-license-submit'\n\t);\n\n\t// Start the process if the \"Enter\" key is pressed while the license input is focused.\n\tlicenseKeyEl.addEventListener( 'keypress', ( e ) => {\n\t\tif ( e.key !== 'Enter' ) {\n\t\t\treturn;\n\t\t}\n\n\t\te.preventDefault();\n\t\tonConnect();\n\t} );\n\n\t// Start the process if the submit button is clicked.\n\tsubmitButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\t\tsubmitButtonEl.disabled = true;\n\t\tonConnect();\n\t} );\n} );\n","/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\tconst feedbackNoticeEl = document.querySelector(\n\t\t'.simpay-recaptcha-feedback'\n\t);\n\n\tif ( ! feedbackNoticeEl ) {\n\t\treturn;\n\t}\n\n\tconst { siteKey, i18n } = simpayGoogleRecaptcha;\n\n\tif ( '' === siteKey ) {\n\t\treturn;\n\t}\n\n\t/**\n\t * Show the error notice.\n\t */\n\tfunction onError() {\n\t\tfeedbackNoticeEl.style.display = 'block';\n\t\tfeedbackNoticeEl.classList.add( 'notice-error' );\n\t\tfeedbackNoticeEl.querySelector( 'p' ).innerText = i18n.invalid;\n\t}\n\n\tgrecaptcha.ready( () => {\n\t\tconst badge = document.querySelector( '.grecaptcha-badge' );\n\n\t\tif ( badge ) {\n\t\t\tbadge.style.display = 'none';\n\t\t}\n\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction: `simple_pay_admin_test`,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => {\n\t\t\t\t\twp.ajax.send( 'simpay_validate_recaptcha_source', {\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\ttoken,\n\t\t\t\t\t\t\trecaptcha_action: 'simple_pay_admin_test',\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror: onError,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.catch( onError );\n\t\t} catch ( error ) {\n\t\t\tonError();\n\t\t}\n\t} );\n} );\n","/* global jQuery, simpayAdmin */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Toggle fields based on current mode.\n *\n * @param {string} newMode The new mode.\n * @param {string} initialMode The initial mode.\n */\nexport function toggleStripeConnectNotice( newMode, initialMode ) {\n\tconst notice = document.getElementById( 'simpay-test-mode-toggle-notice' );\n\n\tif ( ! notice ) {\n\t\treturn;\n\t}\n\n\t// Only show a notice when the mode changes.\n\tif ( newMode === initialMode ) {\n\t\tnotice.style.display = 'none';\n\t\treturn;\n\t}\n\n\tconst statusText = document.getElementById( 'simpay-toggle-notice-status' );\n\tconst statusLink = document.getElementById(\n\t\t'simpay-toggle-notice-status-link'\n\t);\n\n\tnotice.style.display = 'block';\n\n\tif ( ! statusText || ! statusLink ) {\n\t\treturn;\n\t}\n\n\tstatusText.innerHTML =\n\t\t'' + statusText.dataset[ newMode ] + '';\n\tstatusLink.href = statusLink.dataset[ newMode ];\n}\n\n/**\n * Outputs connected Stripe account information.\n */\nfunction accountInfo() {\n\tconst containerEl = document.getElementById( 'simpay-stripe-account-info' );\n\n\tif ( ! containerEl ) {\n\t\treturn;\n\t}\n\n\twp.ajax.send( 'simpay_stripe_connect_account_information', {\n\t\tdata: {\n\t\t\tnonce: containerEl.dataset.nonce,\n\t\t},\n\t\tsuccess: ( response ) => {\n\t\t\tcontainerEl.querySelector( 'p' ).innerHTML = response.message;\n\t\t\tcontainerEl.style.display = 'block';\n\n\t\t\tif (\n\t\t\t\t'simpay-stripe-activated-account-actions' === response.actions\n\t\t\t) {\n\t\t\t\tcontainerEl.classList.add( 'notice-info' );\n\t\t\t} else {\n\t\t\t\tcontainerEl.classList.add( 'notice-warning' );\n\t\t\t}\n\n\t\t\tconst actionsEl = document.getElementById( response.actions );\n\n\t\t\tif ( actionsEl ) {\n\t\t\t\tactionsEl.style.display = 'block';\n\t\t\t}\n\n\t\t\tdisconnectLink();\n\t\t},\n\t\terror: ( response ) => {\n\t\t\tcontainerEl.querySelector( 'p' ).innerHTML = response.message;\n\t\t\tcontainerEl.style.display = 'block';\n\t\t\tcontainerEl.classList.add( 'notice-error' );\n\n\t\t\tconst actionsEl = document.getElementById( response.actions );\n\n\t\t\tif ( actionsEl ) {\n\t\t\t\tactionsEl.style.display = 'block';\n\t\t\t\tdisconnectLink();\n\t\t\t}\n\t\t},\n\t} );\n}\n\n/**\n * Handles the Stripe Disconnect link and confirmation.\n */\nfunction disconnectLink() {\n\tconst disconnectLinkEls = document.querySelectorAll(\n\t\t'.simpay-disconnect-link'\n\t);\n\n\tif ( ! disconnectLinkEls ) {\n\t\treturn;\n\t}\n\n\tconst { i18n } = simpayAdmin;\n\tconst { disconnectConfirm, disconnectCancel } = i18n;\n\n\tdisconnectLinkEls.forEach( function ( el ) {\n\t\tel.addEventListener( 'click', ( event ) => {\n\t\t\tevent.preventDefault();\n\n\t\t\tjQuery( '.simpay-disconnect-confirm' ).dialog( {\n\t\t\t\tresizable: false,\n\t\t\t\theight: 'auto',\n\t\t\t\twidth: 400,\n\t\t\t\tmodal: true,\n\t\t\t\tdraggable: false,\n\t\t\t\topen() {\n\t\t\t\t\tjQuery( '.ui-dialog-buttonset .ui-button' )\n\t\t\t\t\t\t.removeClass( 'ui-button' )\n\t\t\t\t\t\t.last()\n\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\tmarginLeft: '10px',\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.focus();\n\t\t\t\t},\n\t\t\t\tbuttons: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: disconnectCancel,\n\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\tjQuery( this ).dialog( 'close' );\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclass: 'button button-secondary',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttext: disconnectConfirm,\n\t\t\t\t\t\tclick() {\n\t\t\t\t\t\t\twindow.location.href = el.href;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclass: 'button button-primary',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t} );\n\t\t} );\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\taccountInfo();\n} );\n","/* global _ */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n// Need to wait for the DOM because the script is not enqueued at the end of the page.\n// @todo Investigate enqueing admin.js in the footer.\ndomReady( () => {\n\tconst { hooks } = window.wpsp;\n\tconst radioEls = document.querySelectorAll(\n\t\t'[name=\"simpay_settings[test_mode]\"]'\n\t);\n\n\tif ( 0 === radioEls.length ) {\n\t\treturn;\n\t}\n\n\tconst selectedRadioEl = document.querySelector(\n\t\t'[name=\"simpay_settings[test_mode]\"]:checked'\n\t);\n\n\tconst currentMode = 'enabled' === selectedRadioEl.value ? 'test' : 'live';\n\n\thooks.doAction( 'settings.toggleTestMode', currentMode, currentMode );\n\n\t// Update when the input changes.\n\t_.each( radioEls, ( radio ) =>\n\t\tradio.addEventListener( 'change', ( e ) => {\n\t\t\tconst newMode = 'enabled' === e.target.value ? 'test' : 'live';\n\n\t\t\thooks.doAction( 'settings.toggleTestMode', newMode, currentMode );\n\t\t} )\n\t);\n} );\n","/* global simpayAdminSettingToggles */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * @typedef {Object} Setting\n *\n * @property {Object} settingObj Setting object.\n * @property {string} settingObj.id Setting ID.\n * @property {mixed} settingObj.value Value the setting should equal to trigger the\n * toggles.\n * @property {string[]} settingObj.toggles Setting IDs to toggle.\n */\n\n/**\n * Typedef {Object} SettingInput\n *\n * @param {string} currentValue Current value.\n * @param {HTMLElement} setting Setting input.\n */\n\nconst SETTING_TOGGLES = simpayAdminSettingToggles || [];\n\n/**\n * Retrieves the setting input (or select) and the currnet value.\n *\n * @param {Setting} settingObj Setting object.\n * @return {SettingInput}\n */\nfunction getSetting( settingObj ) {\n\tconst { id: settingId, value: settingValue, toggles } = settingObj;\n\n\t// Settting row .\n\tconst settingRowEl = document.querySelector(\n\t\t`.simpay-settings-${ settingId }`\n\t);\n\n\tif ( ! settingRowEl ) {\n\t\treturn {};\n\t}\n\n\t// Setting input.\n\tlet setting = settingRowEl.querySelector( 'input' );\n\n\tif ( ! setting ) {\n\t\tsetting = settingRowEl.querySelector( 'select' );\n\t}\n\n\t// Setting current value.\n\tlet currentValue = setting.value;\n\n\tif ( 'checkbox' === setting.type ) {\n\t\tcurrentValue = true === setting.checked ? 'yes' : 'no';\n\t}\n\n\treturn {\n\t\tsetting,\n\t\tcurrentValue,\n\t};\n}\n\n/**\n * Toggle setting row visibility based on the setting input's current value.\n *\n * @param {Setting} settingObj Setting object.\n */\nfunction toggleSettings( settingObj ) {\n\tconst { id, value: settingValue, toggles } = settingObj;\n\tconst { setting, currentValue } = getSetting( settingObj );\n\n\t// Don't adjust dependent settings if this one is already hidden.\n\tconst currentRow = document.querySelector( `.simpay-settings-${ id }` );\n\n\tif ( 'none' === currentRow.style.display ) {\n\t\treturn;\n\t}\n\n\t// Toggle setting row visibility.\n\tconst toToggleRowEls = toggles.map( ( setting ) => {\n\t\treturn document.querySelector( `.simpay-settings-${ setting }` );\n\t} );\n\n\ttoToggleRowEls.forEach( ( el ) => {\n\t\tif ( ! el ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Show row if the current value of the setting matches expectations.\n\t\tel.style.display = currentValue === settingValue ? 'table-row' : 'none';\n\t} );\n\n\t// Run through again with the dependent settings to ensure the current value\n\t// is used to set the visibility.\n\ttoggles.forEach( ( settingId ) => {\n\t\tconst currentSettingObj = _.find( SETTING_TOGGLES, {\n\t\t\tid: settingId,\n\t\t} );\n\n\t\tif ( currentSettingObj ) {\n\t\t\ttoggleSettings( currentSettingObj );\n\t\t}\n\t} );\n}\n\n/**\n * DOM ready.\n */\ndomReady( () => {\n\t// Setup toggles.\n\tSETTING_TOGGLES.forEach( ( settingObj ) => {\n\t\t// Toggle on page load.\n\t\ttoggleSettings( settingObj );\n\n\t\t// Bind to setting input changes.\n\t\tconst { setting } = getSetting( settingObj );\n\t\tsetting.addEventListener( 'change', () =>\n\t\t\ttoggleSettings( settingObj )\n\t\t);\n\t} );\n} );\n","/* global ClipboardJS */\n\n/**\n * WordPress dependencies\n */\nimport domReady from '@wordpress/dom-ready';\n\n/**\n * Uses the ClipboardJS library to copy the shortcode to the clipboard.\n */\nfunction copyToClipboard() {\n\tconst clipboard = new ClipboardJS( '.simpay-copy-button' );\n\n\tclipboard.on( 'success', function ( e ) {\n\t\tconst buttonEl = e.trigger;\n\t\tconst { copied: copiedText } = buttonEl.dataset;\n\t\tconst originalText = buttonEl.innerHTML;\n\n\t\t// Show success visual feedback.\n\t\tclearTimeout( successTimeout );\n\t\tbuttonEl.innerHTML = copiedText;\n\n\t\tif ( buttonEl.classList.contains( 'button-secondary' ) ) {\n\t\t\tbuttonEl.style.color = 'green';\n\t\t\tbuttonEl.style.borderColor = 'green';\n\t\t}\n\n\t\te.clearSelection();\n\n\t\t// Hide success visual feedback after 3 seconds since last success.\n\t\tconst successTimeout = setTimeout( function () {\n\t\t\tbuttonEl.innerHTML = originalText;\n\n\t\t\tif ( buttonEl.classList.contains( 'button-secondary' ) ) {\n\t\t\t\tbuttonEl.style.color = '';\n\t\t\t\tbuttonEl.style.borderColor = '';\n\t\t\t}\n\n\t\t\t// Remove the visually hidden textarea so that it isn't perceived by assistive technologies.\n\t\t\tif (\n\t\t\t\tclipboard.clipboardAction.fakeElem &&\n\t\t\t\tclipboard.clipboardAction.removeFake\n\t\t\t) {\n\t\t\t\tclipboard.clipboardAction.removeFake();\n\t\t\t}\n\t\t}, 3000 );\n\n\t\t// Handle success audible feedback.\n\t\twp.a11y.speak( copiedText );\n\t} );\n}\n\ndomReady( copyToClipboard );\n","/* global grecaptcha */\n\nexport function createToken( action ) {\n\tif ( ! window.simpayGoogleRecaptcha ) {\n\t\treturn Promise.resolve( '' );\n\t}\n\n\tconst { siteKey, i18n } = window.simpayGoogleRecaptcha;\n\n\treturn new Promise( ( resolve, reject ) => {\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => resolve( token ) );\n\t\t} catch ( error ) {\n\t\t\treject( i18n.invalid );\n\t\t}\n\t} );\n}\n","/* global jQuery, wpApiSettings */\n\n/**\n * Make an API request to the REST API.\n *\n * @param {string} route REST route.\n * @param {Object} data Data to send to the request.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function apiRequest( route, data ) {\n\ttry {\n\t\treturn await jQuery.ajax( {\n\t\t\tdata,\n\t\t\tmethod: 'POST',\n\t\t\turl: `${ wpApiSettings.root }wpsp/${ route }`,\n\t\t\tbeforeSend: ( xhr ) => {\n\t\t\t\txhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );\n\t\t\t},\n\t\t} );\n\t} catch ( { responseJSON } ) {\n\t\tthrow responseJSON;\n\t}\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Customer.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/customer', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","export * from './api-request.js';\n\nexport * as customers from './customers.js';\nexport * as paymentintents from './paymentintents.js';\nexport * as orders from './orders.js';\nexport * as sessions from './sessions.js';\nexport * as setupintents from './setupintents.js';\nexport * as subscriptions from './subscriptions.js';\n","/**\n * \"Order\" refers to an internal order, not a Stripe Order object.\n */\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\nimport { createToken } from '../../../frontend/utils/recaptcha.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates and returns an order preview.\n *\n * @since 4.5.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function preview( data ) {\n\t// Create a token for the reCAPTCHA.\n\tconst recaptcha = await createToken(\n\t\t`simple_pay_form_${ data.form_id }_order_preview`\n\t);\n\n\treturn apiRequest( 'v2/order/preview', {\n\t\t...data,\n\t\tcaptcha: {\n\t\t\trecaptcha,\n\t\t},\n\t} );\n}\n\n/**\n * Submits an Order.\n *\n * @since 4.5.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function submit( data ) {\n\t// Create a token for the reCAPTCHA.\n\tconst recaptcha = await createToken(\n\t\t`simple_pay_form_${ data.form_id }_order_submit`\n\t);\n\n\treturn apiRequest( 'v2/order/submit', {\n\t\t...data,\n\t\tcaptcha: {\n\t\t\trecaptcha,\n\t\t},\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a PaymentIntent.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/paymentintent/create', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Checkout Session.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/checkout-session', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a SetupIntent.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/setupintent/create', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Subscription.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/subscription', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n\n/**\n * Update a Subscription's payment method.\n *\n * Requires a Subscription's key and linked Customer for verification.\n * Takes direct arguments vs. spFormElem and full form data.\n *\n * @param {number} customerId ID of the Customer.\n * @param {string} customerNonce Customer nonce.\n * @param {string} subscriptionId ID of the Subscription.\n * @param {number} formId ID of the Payment Form.\n * @param {Object} args {\n * @return {Promise} AJAX promise.\n */\nexport function updatePaymentMethod(\n\tcustomerId,\n\tcustomerNonce,\n\tsubscriptionId,\n\tformId,\n\targs\n) {\n\treturn apiRequest(\n\t\t`v2/subscription/payment_method/${ subscriptionId }/${ customerId }`,\n\t\t{\n\t\t\tcustomer_nonce: customerNonce,\n\t\t\tform_values: args,\n\t\t\tform_id: formId,\n\t\t}\n\t);\n}\n","/**\n * WordPress dependencies\n */\nimport { createHooks } from '@wordpress/hooks';\n\nconst defaultHooks = createHooks();\nconst { addAction, addFilter, doAction, applyFilters } = defaultHooks;\n\nexport { addAction, addFilter, doAction, applyFilters };\nexport default defaultHooks;\n","export * from './number.js';\nexport { apiRequest } from '@wpsimplepay/api';\nexport * from './upgrade-modal.js';\n","// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger#Polyfill\nNumber.isInteger =\n\tNumber.isInteger ||\n\tfunction ( value ) {\n\t\treturn (\n\t\t\ttypeof value === 'number' &&\n\t\t\tisFinite( value ) &&\n\t\t\tMath.floor( value ) === value\n\t\t);\n\t};\n\n// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger#Polyfill\nNumber.isSafeInteger =\n\tNumber.isSafeInteger ||\n\tfunction ( value ) {\n\t\treturn (\n\t\t\tNumber.isInteger( value ) &&\n\t\t\tMath.abs( value ) <= Number.MAX_SAFE_INTEGER\n\t\t);\n\t};\n\n// @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER#Polyfill\nif ( ! Number.MAX_SAFE_INTEGER ) {\n\tNumber.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;\n}\n","/* global jQuery */\n\n/**\n * Blocks a checkbox from being toggled and displays an upgrade modal built\n * from the data attributes of the checkbox.\n *\n * @since 4.4.7\n *\n * @param {Event} e Change event.\n * @param {HTMLElement} e.target Checkbox being toggled.\n */\nexport function maybeBlockCheckboxWithUpgradeModal( e ) {\n\tconst { target } = e;\n\tconst {\n\t\tavailable,\n\t\tupgradeTitle,\n\t\tupgradeDescription,\n\t\tupgradeUrl,\n\t\tupgradePurchasedUrl,\n\t} = target.dataset;\n\n\tif ( ! available || 'yes' === available ) {\n\t\treturn;\n\t}\n\n\te.preventDefault();\n\n\tupgradeModal( {\n\t\ttitle: upgradeTitle,\n\t\tdescription: upgradeDescription,\n\t\turl: upgradeUrl,\n\t\tpurchasedUrl: upgradePurchasedUrl,\n\t} );\n\n\ttarget.checked = false;\n\n\treturn false;\n}\n\n/**\n * Blocks a button from doing anything and displays an upgrade modal built\n * from the data attributes of the button.\n *\n * @since 4.4.7\n *\n * @param {Event} e Click event.\n * @param {HTMLElement} e.target Button being pressed.\n */\nexport function maybeBlockButtonWithUpgradeModal( e ) {\n\tconst { target } = e;\n\tconst {\n\t\tavailable,\n\t\tupgradeTitle,\n\t\tupgradeDescription,\n\t\tupgradeUrl,\n\t\tupgradePurchasedUrl,\n\t} = target.dataset;\n\n\tif ( ! available || 'yes' === available ) {\n\t\treturn;\n\t}\n\n\te.preventDefault();\n\n\tupgradeModal( {\n\t\ttitle: upgradeTitle,\n\t\tdescription: upgradeDescription,\n\t\turl: upgradeUrl,\n\t\tpurchasedUrl: upgradePurchasedUrl,\n\t} );\n}\n\n/**\n * Blocks a select from doing anything and displays an upgrade modal built\n * from the data attributes of the button.\n *\n * @since 4.4.7\n *\n * @param {Event} e Change event.\n */\nexport function maybeBlockSelectWithUpgradeModal( e ) {\n\tconst { target } = e;\n\tconst {\n\t\tavailable,\n\t\tupgradeTitle,\n\t\tupgradeDescription,\n\t\tupgradeUrl,\n\t\tupgradePurchasedUrl,\n\t\tprevValue,\n\t} = target.options[ target.selectedIndex ].dataset;\n\n\tif ( ! available || 'yes' === available ) {\n\t\treturn;\n\t}\n\n\te.preventDefault();\n\n\tupgradeModal( {\n\t\ttitle: upgradeTitle,\n\t\tdescription: upgradeDescription,\n\t\turl: upgradeUrl,\n\t\tpurchasedUrl: upgradePurchasedUrl,\n\t} );\n\n\ttarget.value = prevValue;\n}\n\n/**\n * Launches the jQuery UI upgrade modal.\n *\n * @since 4.4.6\n *\n * @param {Object} args Upgrade modal arguments.\n * @param {string} args.title Upgrade modal title.\n * @param {string} args.description Upgrade modal description.\n * @param {string} args.url Upgrade modal URL.\n * @param {string} args.purchasedUrl Upgrade modal purchased URL.\n * @param {Object} opts jQuery UI Dialog options.\n */\nexport function upgradeModal(\n\t{ title, description, url, purchasedUrl },\n\topts = {}\n) {\n\tjQuery( '.simpay-upgrade-modal' ).dialog( {\n\t\tposition: {\n\t\t\tmy: 'center',\n\t\t\tat: 'center',\n\t\t\tof: window,\n\t\t},\n\t\tmodal: true,\n\t\twidth: 600,\n\t\tresizable: false,\n\t\tdraggable: false,\n\t\topen() {\n\t\t\tconst m = jQuery( this );\n\n\t\t\tm.parent().find( '.ui-dialog-titlebar' ).css( {\n\t\t\t\tborderBottom: 0,\n\t\t\t} );\n\n\t\t\tm.find( '.simpay-upgrade-modal__title' ).html( title );\n\t\t\tm.find( '.simpay-upgrade-modal__description' ).html( description );\n\t\t\tm.find( '.simpay-upgrade-modal__upgrade-url' ).attr( 'href', url );\n\t\t\tm.find( '.simpay-upgrade-modal__upgrade-purchased-url' ).attr(\n\t\t\t\t'href',\n\t\t\t\tpurchasedUrl\n\t\t\t);\n\t\t},\n\t\t...opts,\n\t} );\n}\n","module.exports = jQuery;"],"sourceRoot":""} \ No newline at end of file diff --git a/includes/core/assets/js/simpay-block-button.min.js.map b/includes/core/assets/js/simpay-block-button.min.js.map new file mode 100644 index 00000000..29d1ca38 --- /dev/null +++ b/includes/core/assets/js/simpay-block-button.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./js/blocks/button/edit.js","webpack:///./js/blocks/button/icon.js","webpack:///./js/blocks/button/index.js","webpack:///./js/blocks/button/save.js","webpack:///external [\"wp\",\"blockEditor\"]","webpack:///external [\"wp\",\"components\"]","webpack:///external [\"wp\",\"compose\"]","webpack:///external [\"wp\",\"element\"]","webpack:///external [\"wp\",\"hooks\"]","webpack:///external [\"wp\",\"i18n\"]","webpack:///external [\"wp\",\"primitives\"]"],"names":["withPaymentFormSelector","createHigherOrderComponent","BlockEdit","props","name","simpayBlockButton","paymentForms","attributes","setAttributes","simpayFormId","onChange","value","simpayFormInstanceId","parseInt","Math","floor","random","icon","__","label","addFilter","registerBlockAttribues","settings","type","addShortcodeOnSave","element","blockType","display"],"mappings":"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","file":"simpay-block-button.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/blocks/button/index.js\");\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/* global simpayBlockButton */\n\n/**\n * WordPress dependencies\n */\nimport { createHigherOrderComponent } from '@wordpress/compose';\nimport { PanelBody, SelectControl } from '@wordpress/components';\nimport { InspectorControls } from '@wordpress/block-editor';\nimport { addFilter } from '@wordpress/hooks';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport icon from './icon.js';\n\n/**\n * Adds inspector controls to the core button block.\n */\nconst withPaymentFormSelector = createHigherOrderComponent( ( BlockEdit ) => {\n\t/**\n\t * @param {Object} props Block properties.\n\t */\n\treturn ( props ) => {\n\t\t// Skip if not a core button block.\n\t\tif ( props.name !== 'core/button' ) {\n\t\t\treturn ;\n\t\t}\n\n\t\t// Skip if we cannot find our payment form list.\n\t\tif ( ! simpayBlockButton || ! simpayBlockButton.paymentForms ) {\n\t\t\treturn ;\n\t\t}\n\n\t\tconst { attributes, setAttributes } = props;\n\t\tconst { simpayFormId } = attributes;\n\n\t\t/**\n\t\t * Update attributes when a payment form is selected.\n\t\t *\n\t\t * @param {string} value Payment form ID.\n\t\t */\n\t\tconst onChange = ( value ) => {\n\t\t\tif ( '' === value ) {\n\t\t\t\tsetAttributes( {\n\t\t\t\t\tsimpayFormId: null,\n\t\t\t\t\tsimpayFormInstanceId: null,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAttributes( {\n\t\t\t\tsimpayFormId: parseInt( value ),\n\t\t\t\tsimpayFormInstanceId: Math.floor( Math.random() * 1000 ),\n\t\t\t} );\n\t\t};\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n}, 'withToolbarButton' );\n\naddFilter(\n\t'editor.BlockEdit',\n\t'simpay/with-payment-form-button-block',\n\twithPaymentFormSelector\n);\n","/**\n * WordPress dependencies\n */\nimport { SVG, Path } from '@wordpress/primitives';\n\nconst icon = (\n\t\n\t\t\n\t\t\n\t\n);\n\nexport default icon;\n","/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Internal dependencies\n */\nimport './edit.js';\nimport './save.js';\n\n/**\n * Adds additional attributes to the button block for managing payment forms.\n *\n * @param {Object} settings Block settings.\n * @param {string} name Block name.\n * @return {Object} Block settings.\n */\nfunction registerBlockAttribues( settings, name ) {\n\t// Skip if not a core button block.\n\tif ( name !== 'core/button' ) {\n\t\treturn settings;\n\t}\n\n\treturn {\n\t\t...settings,\n\t\tattributes: {\n\t\t\t...settings.attributes,\n\t\t\tsimpayFormId: {\n\t\t\t\ttype: 'integer',\n\t\t\t},\n\t\t\tsimpayFormInstanceId: {\n\t\t\t\ttype: 'integer',\n\t\t\t},\n\t\t},\n\t};\n}\n\naddFilter(\n\t'blocks.registerBlockType',\n\t'simpay/payment-form-button-block',\n\tregisterBlockAttribues\n);\n","/**\n * WordPress dependencies\n */\nimport { addFilter } from '@wordpress/hooks';\n\n/**\n * Filters the save result of the button block if a payment form is selected.\n *\n * @param {WPElement} element Block save result.\n * @param {WPBlock} blockType Block type definition.\n * @param {Object} attributes Block attributes.\n */\nfunction addShortcodeOnSave( element, blockType, attributes ) {\n\t// Skip if element is undefined.\n\tif ( ! element ) {\n\t\treturn;\n\t}\n\n\t// Skip if not a core button block.\n\tif ( blockType.name !== 'core/button' ) {\n\t\treturn element;\n\t}\n\n\t// Skip if a payment form is not selected.\n\tconst { simpayFormId, simpayFormInstanceId } = attributes;\n\n\tif ( ! simpayFormId ) {\n\t\treturn element;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t{ element }\n\t\t\t\n\t\t\t\t[simpay id={ simpayFormId } isButtonBlock=1 instanceId=\n\t\t\t\t{ simpayFormInstanceId }]\n\t\t\t\n\t\t\n\t);\n}\n\naddFilter(\n\t'blocks.getSaveElement',\n\t'simpay/save-payment-form-button-block',\n\taddShortcodeOnSave\n);\n","(function() { module.exports = window[\"wp\"][\"blockEditor\"]; }());","(function() { module.exports = window[\"wp\"][\"components\"]; }());","(function() { module.exports = window[\"wp\"][\"compose\"]; }());","(function() { module.exports = window[\"wp\"][\"element\"]; }());","(function() { module.exports = window[\"wp\"][\"hooks\"]; }());","(function() { module.exports = window[\"wp\"][\"i18n\"]; }());","(function() { module.exports = window[\"wp\"][\"primitives\"]; }());"],"sourceRoot":""} \ No newline at end of file diff --git a/includes/core/assets/js/simpay-polyfill.min.js b/includes/core/assets/js/simpay-polyfill.min.js index 61545f2e..ad42e157 100644 --- a/includes/core/assets/js/simpay-polyfill.min.js +++ b/includes/core/assets/js/simpay-polyfill.min.js @@ -1 +1 @@ -!function(t){var n={};function r(e){if(n[e])return n[e].exports;var i=n[e]={i:e,l:!1,exports:{}};return t[e].call(i.exports,i,i.exports,r),i.l=!0,i.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var i in t)r.d(e,i,function(n){return t[n]}.bind(null,i));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=149)}([function(t,n,r){var e=r(1),i=r(11),o=r(22),u=r(18),c=r(27),f=function(t,n,r){var a,s,l,h,p=t&f.F,v=t&f.G,y=t&f.S,d=t&f.P,g=t&f.B,x=v?e:y?e[n]||(e[n]={}):(e[n]||{}).prototype,b=v?i:i[n]||(i[n]={}),m=b.prototype||(b.prototype={});for(a in v&&(r=n),r)l=((s=!p&&x&&void 0!==x[a])?x:r)[a],h=g&&s?c(l,e):d&&"function"==typeof l?c(Function.call,l):l,x&&u(x,a,l,t&f.U),b[a]!=l&&o(b,a,h),d&&m[a]!=l&&(m[a]=l)};e.core=i,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){var e=r(4);t.exports=function(t){if(!e(t))throw TypeError(t+" is not an object!");return t}},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},,,,function(t,n,r){var e=r(66)("wks"),i=r(43),o=r(1).Symbol,u="function"==typeof o;(t.exports=function(t){return e[t]||(e[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=e},,function(t,n,r){var e=r(29),i=Math.min;t.exports=function(t){return t>0?i(e(t),9007199254740991):0}},function(t,n){var r=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},function(t,n,r){t.exports=!r(2)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(3),i=r(112),o=r(38),u=Object.defineProperty;n.f=r(12)?Object.defineProperty:function(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},,,function(t,n,r){var e=r(34);t.exports=function(t){return Object(e(t))}},,function(t,n,r){var e=r(1),i=r(22),o=r(21),u=r(43)("src"),c=r(153),f=(""+c).split("toString");r(11).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,r,c){var a="function"==typeof r;a&&(o(r,"name")||i(r,"name",n)),t[n]!==r&&(a&&(o(r,u)||i(r,u,t[n]?""+t[n]:f.join(String(n)))),t===e?t[n]=r:c?t[n]?t[n]=r:i(t,n,r):(delete t[n],i(t,n,r)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[u]||c.call(this)}))},function(t,n,r){var e=r(0),i=r(2),o=r(34),u=/"/g,c=function(t,n,r,e){var i=String(o(t)),c="<"+n;return""!==r&&(c+=" "+r+'="'+String(e).replace(u,""")+'"'),c+">"+i+""};t.exports=function(t,n){var r={};r[t]=n(c),e(e.P+e.F*i((function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3})),"String",r)}},,function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(13),i=r(42);t.exports=r(12)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){var e=r(60),i=r(34);t.exports=function(t){return e(i(t))}},,,function(t,n,r){"use strict";var e=r(2);t.exports=function(t,n){return!!t&&e((function(){n?t.call(null,(function(){}),1):t.call(null)}))}},function(t,n,r){var e=r(28);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(61),i=r(42),o=r(23),u=r(38),c=r(21),f=r(112),a=Object.getOwnPropertyDescriptor;n.f=r(12)?a:function(t,n){if(t=o(t),n=u(n,!0),f)try{return a(t,n)}catch(t){}if(c(t,n))return i(!e.f.call(t,n),t[n])}},function(t,n,r){var e=r(0),i=r(11),o=r(2);t.exports=function(t,n){var r=(i.Object||{})[t]||Object[t],u={};u[t]=n(r),e(e.S+e.F*o((function(){r(1)})),"Object",u)}},function(t,n,r){var e=r(27),i=r(60),o=r(16),u=r(10),c=r(128);t.exports=function(t,n){var r=1==t,f=2==t,a=3==t,s=4==t,l=6==t,h=5==t||l,p=n||c;return function(n,c,v){for(var y,d,g=o(n),x=i(g),b=e(c,v,3),m=u(x.length),S=0,w=r?p(n,m):f?p(n,0):void 0;m>S;S++)if((h||S in x)&&(d=b(y=x[S],S,g),t))if(r)w[S]=d;else if(d)switch(t){case 3:return!0;case 5:return y;case 6:return S;case 2:w.push(y)}else if(s)return!1;return l?-1:a||s?s:w}}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){"use strict";if(r(12)){var e=r(44),i=r(1),o=r(2),u=r(0),c=r(77),f=r(104),a=r(27),s=r(57),l=r(42),h=r(22),p=r(58),v=r(29),y=r(10),d=r(139),g=r(46),x=r(38),b=r(21),m=r(62),S=r(4),w=r(16),_=r(96),E=r(47),O=r(49),P=r(48).f,F=r(98),M=r(43),A=r(8),j=r(32),I=r(67),N=r(63),T=r(100),L=r(55),R=r(70),k=r(56),C=r(99),D=r(130),W=r(13),G=r(30),U=W.f,B=G.f,V=i.RangeError,z=i.TypeError,Y=i.Uint8Array,q=Array.prototype,$=f.ArrayBuffer,K=f.DataView,J=j(0),X=j(2),H=j(3),Z=j(4),Q=j(5),tt=j(6),nt=I(!0),rt=I(!1),et=T.values,it=T.keys,ot=T.entries,ut=q.lastIndexOf,ct=q.reduce,ft=q.reduceRight,at=q.join,st=q.sort,lt=q.slice,ht=q.toString,pt=q.toLocaleString,vt=A("iterator"),yt=A("toStringTag"),dt=M("typed_constructor"),gt=M("def_constructor"),xt=c.CONSTR,bt=c.TYPED,mt=c.VIEW,St=j(1,(function(t,n){return Pt(N(t,t[gt]),n)})),wt=o((function(){return 1===new Y(new Uint16Array([1]).buffer)[0]})),_t=!!Y&&!!Y.prototype.set&&o((function(){new Y(1).set({})})),Et=function(t,n){var r=v(t);if(r<0||r%n)throw V("Wrong offset!");return r},Ot=function(t){if(S(t)&&bt in t)return t;throw z(t+" is not a typed array!")},Pt=function(t,n){if(!S(t)||!(dt in t))throw z("It is not a typed array constructor!");return new t(n)},Ft=function(t,n){return Mt(N(t,t[gt]),n)},Mt=function(t,n){for(var r=0,e=n.length,i=Pt(t,e);e>r;)i[r]=n[r++];return i},At=function(t,n,r){U(t,n,{get:function(){return this._d[r]}})},jt=function(t){var n,r,e,i,o,u,c=w(t),f=arguments.length,s=f>1?arguments[1]:void 0,l=void 0!==s,h=F(c);if(null!=h&&!_(h)){for(u=h.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(l&&f>2&&(s=a(s,arguments[2],2)),n=0,r=y(c.length),i=Pt(this,r);r>n;n++)i[n]=l?s(c[n],n):c[n];return i},It=function(){for(var t=0,n=arguments.length,r=Pt(this,n);n>t;)r[t]=arguments[t++];return r},Nt=!!Y&&o((function(){pt.call(new Y(1))})),Tt=function(){return pt.apply(Nt?lt.call(Ot(this)):Ot(this),arguments)},Lt={copyWithin:function(t,n){return D.call(Ot(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function(t){return Z(Ot(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return C.apply(Ot(this),arguments)},filter:function(t){return Ft(this,X(Ot(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(Ot(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){J(Ot(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return rt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return nt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return at.apply(Ot(this),arguments)},lastIndexOf:function(t){return ut.apply(Ot(this),arguments)},map:function(t){return St(Ot(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Ot(this),arguments)},reduceRight:function(t){return ft.apply(Ot(this),arguments)},reverse:function(){for(var t,n=Ot(this).length,r=Math.floor(n/2),e=0;e1?arguments[1]:void 0)},sort:function(t){return st.call(Ot(this),t)},subarray:function(t,n){var r=Ot(this),e=r.length,i=g(t,e);return new(N(r,r[gt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,y((void 0===n?e:g(n,e))-i))}},Rt=function(t,n){return Ft(this,lt.call(Ot(this),t,n))},kt=function(t){Ot(this);var n=Et(arguments[1],1),r=this.length,e=w(t),i=y(e.length),o=0;if(i+n>r)throw V("Wrong length!");for(;o255?255:255&e),i.v[p](r*n+i.o,e,wt)}(this,r,t)},enumerable:!0})};b?(v=r((function(t,r,e,i){s(t,v,a,"_d");var o,u,c,f,l=0,p=0;if(S(r)){if(!(r instanceof $||"ArrayBuffer"==(f=m(r))||"SharedArrayBuffer"==f))return bt in r?Mt(v,r):jt.call(v,r);o=r,p=Et(e,n);var g=r.byteLength;if(void 0===i){if(g%n)throw V("Wrong length!");if((u=g-p)<0)throw V("Wrong length!")}else if((u=y(i)*n)+p>g)throw V("Wrong length!");c=u/n}else c=d(r),o=new $(u=c*n);for(h(t,"_d",{b:o,o:p,l:u,e:c,v:new K(o)});ldocument.F=Object<\/script>"),t.close(),f=t.F;e--;)delete f.prototype[o[e]];return f()};t.exports=Object.create||function(t,n){var r;return null!==t?(c.prototype=e(t),r=new c,c.prototype=null,r[u]=t):r=f(),void 0===n?r:i(r,n)}},function(t,n,r){var e=r(114),i=r(83).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,i)}},function(t,n,r){var e=r(21),i=r(16),o=r(82)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),e(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,n,r){var e=r(8)("unscopables"),i=Array.prototype;null==i[e]&&r(22)(i,e,{}),t.exports=function(t){i[e][t]=!0}},function(t,n,r){var e=r(4);t.exports=function(t,n){if(!e(t)||t._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return t}},,function(t,n,r){var e=r(13).f,i=r(21),o=r(8)("toStringTag");t.exports=function(t,n,r){t&&!i(t=r?t:t.prototype,o)&&e(t,o,{configurable:!0,value:n})}},function(t,n,r){var e=r(0),i=r(34),o=r(2),u=r(86),c="["+u+"]",f=RegExp("^"+c+c+"*"),a=RegExp(c+c+"*$"),s=function(t,n,r){var i={},c=o((function(){return!!u[t]()||"​…"!="​…"[t]()})),f=i[t]=c?n(l):u[t];r&&(i[r]=f),e(e.P+e.F*c,"String",i)},l=s.trim=function(t,n){return t=String(i(t)),1&n&&(t=t.replace(f,"")),2&n&&(t=t.replace(a,"")),t};t.exports=s},function(t,n){t.exports={}},function(t,n,r){"use strict";var e=r(1),i=r(13),o=r(12),u=r(8)("species");t.exports=function(t){var n=e[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n){t.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+": incorrect invocation!");return t}},function(t,n,r){var e=r(18);t.exports=function(t,n,r){for(var i in n)e(t,i,n[i],r);return t}},,function(t,n,r){var e=r(33);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,r){var e=r(33),i=r(8)("toStringTag"),o="Arguments"==e(function(){return arguments}());t.exports=function(t){var n,r,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),i))?r:o?e(n):"Object"==(u=e(n))&&"function"==typeof n.callee?"Arguments":u}},function(t,n,r){var e=r(3),i=r(28),o=r(8)("species");t.exports=function(t,n){var r,u=e(t).constructor;return void 0===u||null==(r=e(u)[o])?n:i(r)}},function(t,n,r){var e=function(t){"use strict";var n=Object.prototype,r=n.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},i=e.iterator||"@@iterator",o=e.asyncIterator||"@@asyncIterator",u=e.toStringTag||"@@toStringTag";function c(t,n,r){return Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{c({},"")}catch(t){c=function(t,n,r){return t[n]=r}}function f(t,n,r,e){var i=n&&n.prototype instanceof l?n:l,o=Object.create(i.prototype),u=new _(e||[]);return o._invoke=function(t,n,r){var e="suspendedStart";return function(i,o){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var u=r.delegate;if(u){var c=m(u,r);if(c){if(c===s)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===e)throw e="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);e="executing";var f=a(t,n,r);if("normal"===f.type){if(e=r.done?"completed":"suspendedYield",f.arg===s)continue;return{value:f.arg,done:r.done}}"throw"===f.type&&(e="completed",r.method="throw",r.arg=f.arg)}}}(t,r,u),o}function a(t,n,r){try{return{type:"normal",arg:t.call(n,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var s={};function l(){}function h(){}function p(){}var v={};c(v,i,(function(){return this}));var y=Object.getPrototypeOf,d=y&&y(y(E([])));d&&d!==n&&r.call(d,i)&&(v=d);var g=p.prototype=l.prototype=Object.create(v);function x(t){["next","throw","return"].forEach((function(n){c(t,n,(function(t){return this._invoke(n,t)}))}))}function b(t,n){var e;this._invoke=function(i,o){function u(){return new n((function(e,u){!function e(i,o,u,c){var f=a(t[i],t,o);if("throw"!==f.type){var s=f.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?n.resolve(l.__await).then((function(t){e("next",t,u,c)}),(function(t){e("throw",t,u,c)})):n.resolve(l).then((function(t){s.value=t,u(s)}),(function(t){return e("throw",t,u,c)}))}c(f.arg)}(i,o,e,u)}))}return e=e?e.then(u,u):u()}}function m(t,n){var r=t.iterator[n.method];if(void 0===r){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=void 0,m(t,n),"throw"===n.method))return s;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var e=a(r,t.iterator,n.arg);if("throw"===e.type)return n.method="throw",n.arg=e.arg,n.delegate=null,s;var i=e.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,s):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,s)}function S(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function w(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function E(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var e=-1,o=function n(){for(;++e=0;--i){var o=this.tryEntries[i],u=o.completion;if("root"===o.tryLoc)return e("end");if(o.tryLoc<=this.prev){var c=r.call(o,"catchLoc"),f=r.call(o,"finallyLoc");if(c&&f){if(this.prev=0;--e){var i=this.tryEntries[e];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--n){var r=this.tryEntries[n];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),w(r),s}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc===t){var e=r.completion;if("throw"===e.type){var i=e.arg;w(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:E(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=void 0),s}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},,function(t,n,r){var e=r(11),i=r(1),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:e.version,mode:r(44)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n,r){var e=r(23),i=r(10),o=r(46);t.exports=function(t){return function(n,r,u){var c,f=e(n),a=i(f.length),s=o(u,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,r){var e=r(33);t.exports=Array.isArray||function(t){return"Array"==e(t)}},function(t,n,r){var e=r(8)("iterator"),i=!1;try{var o=[7][e]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,n){if(!n&&!i)return!1;var r=!1;try{var o=[7],u=o[e]();u.next=function(){return{done:r=!0}},o[e]=function(){return u},t(o)}catch(t){}return r}},function(t,n,r){"use strict";var e=r(3);t.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},function(t,n,r){"use strict";var e=r(62),i=RegExp.prototype.exec;t.exports=function(t,n){var r=t.exec;if("function"==typeof r){var o=r.call(t,n);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==e(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,n)}},function(t,n,r){"use strict";r(132);var e=r(18),i=r(22),o=r(2),u=r(34),c=r(8),f=r(101),a=c("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();t.exports=function(t,n,r){var h=c(t),p=!o((function(){var n={};return n[h]=function(){return 7},7!=""[t](n)})),v=p?!o((function(){var n=!1,r=/a/;return r.exec=function(){return n=!0,null},"split"===t&&(r.constructor={},r.constructor[a]=function(){return r}),r[h](""),!n})):void 0;if(!p||!v||"replace"===t&&!s||"split"===t&&!l){var y=/./[h],d=r(u,h,""[t],(function(t,n,r,e,i){return n.exec===f?p&&!i?{done:!0,value:y.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}})),g=d[0],x=d[1];e(String.prototype,t,g),i(RegExp.prototype,h,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)})}}},function(t,n,r){var e=r(27),i=r(127),o=r(96),u=r(3),c=r(10),f=r(98),a={},s={};(n=t.exports=function(t,n,r,l,h){var p,v,y,d,g=h?function(){return t}:f(t),x=e(r,l,n?2:1),b=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(o(g)){for(p=c(t.length);p>b;b++)if((d=n?x(u(v=t[b])[0],v[1]):x(t[b]))===a||d===s)return d}else for(y=g.call(t);!(v=y.next()).done;)if((d=i(y,x,v.value,n))===a||d===s)return d}).BREAK=a,n.RETURN=s},function(t,n,r){var e=r(1).navigator;t.exports=e&&e.userAgent||""},function(t,n,r){"use strict";var e=r(1),i=r(0),o=r(18),u=r(58),c=r(39),f=r(74),a=r(57),s=r(4),l=r(2),h=r(70),p=r(53),v=r(87);t.exports=function(t,n,r,y,d,g){var x=e[t],b=x,m=d?"set":"add",S=b&&b.prototype,w={},_=function(t){var n=S[t];o(S,t,"delete"==t||"has"==t?function(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof b&&(g||S.forEach&&!l((function(){(new b).entries().next()})))){var E=new b,O=E[m](g?{}:-0,1)!=E,P=l((function(){E.has(1)})),F=h((function(t){new b(t)})),M=!g&&l((function(){for(var t=new b,n=5;n--;)t[m](n,n);return!t.has(-0)}));F||((b=n((function(n,r){a(n,b,t);var e=v(new x,n,b);return null!=r&&f(r,d,e[m],e),e}))).prototype=S,S.constructor=b),(P||M)&&(_("delete"),_("has"),d&&_("get")),(M||O)&&_(m),g&&S.clear&&delete S.clear}else b=y.getConstructor(n,t,d,m),u(b.prototype,r),c.NEED=!0;return p(b,t),w[t]=b,i(i.G+i.W+i.F*(b!=x),w),g||y.setStrong(b,t,d),b}},function(t,n,r){for(var e,i=r(1),o=r(22),u=r(43),c=u("typed_array"),f=u("view"),a=!(!i.ArrayBuffer||!i.DataView),s=a,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(e=i[h[l++]])?(o(e.prototype,c,!0),o(e.prototype,f,!0)):s=!1;t.exports={ABV:a,CONSTR:s,TYPED:c,VIEW:f}},,,function(t,n,r){var e=r(4),i=r(1).document,o=e(i)&&e(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,n,r){n.f=r(8)},function(t,n,r){var e=r(66)("keys"),i=r(43);t.exports=function(t){return e[t]||(e[t]=i(t))}},function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,n,r){var e=r(1).document;t.exports=e&&e.documentElement},function(t,n,r){var e=r(4),i=r(3),o=function(t,n){if(i(t),!e(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,e){try{(e=r(27)(Function.call,r(30).f(Object.prototype,"__proto__").set,2))(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,r){return o(t,r),n?t.__proto__=r:e(t,r),t}}({},!1):void 0),check:o}},function(t,n){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,n,r){var e=r(4),i=r(85).set;t.exports=function(t,n,r){var o,u=n.constructor;return u!==r&&"function"==typeof u&&(o=u.prototype)!==r.prototype&&e(o)&&i&&i(t,o),t}},function(t,n,r){"use strict";var e=r(29),i=r(34);t.exports=function(t){var n=String(i(this)),r="",o=e(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(n+=n))1&o&&(r+=n);return r}},function(t,n){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,n){var r=Math.expm1;t.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:r},function(t,n,r){var e=r(29),i=r(34);t.exports=function(t){return function(n,r){var o,u,c=String(i(n)),f=e(r),a=c.length;return f<0||f>=a?t?"":void 0:(o=c.charCodeAt(f))<55296||o>56319||f+1===a||(u=c.charCodeAt(f+1))<56320||u>57343?t?c.charAt(f):o:t?c.slice(f,f+2):u-56320+(o-55296<<10)+65536}}},function(t,n,r){"use strict";var e=r(44),i=r(0),o=r(18),u=r(22),c=r(55),f=r(126),a=r(53),s=r(49),l=r(8)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,n,r,v,y,d,g){f(r,n,v);var x,b,m,S=function(t){if(!h&&t in O)return O[t];switch(t){case"keys":case"values":return function(){return new r(this,t)}}return function(){return new r(this,t)}},w=n+" Iterator",_="values"==y,E=!1,O=t.prototype,P=O[l]||O["@@iterator"]||y&&O[y],F=P||S(y),M=y?_?S("entries"):F:void 0,A="Array"==n&&O.entries||P;if(A&&(m=s(A.call(new t)))!==Object.prototype&&m.next&&(a(m,w,!0),e||"function"==typeof m[l]||u(m,l,p)),_&&P&&"values"!==P.name&&(E=!0,F=function(){return P.call(this)}),e&&!g||!h&&!E&&O[l]||u(O,l,F),c[n]=F,c[w]=p,y)if(x={values:_?F:S("values"),keys:d?F:S("keys"),entries:M},g)for(b in x)b in O||o(O,b,x[b]);else i(i.P+i.F*(h||E),n,x);return x}},function(t,n,r){var e=r(94),i=r(34);t.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},function(t,n,r){var e=r(4),i=r(33),o=r(8)("match");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},function(t,n,r){var e=r(8)("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},function(t,n,r){var e=r(55),i=r(8)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},function(t,n,r){"use strict";var e=r(13),i=r(42);t.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},function(t,n,r){var e=r(62),i=r(8)("iterator"),o=r(55);t.exports=r(11).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[e(t)]}},function(t,n,r){"use strict";var e=r(16),i=r(46),o=r(10);t.exports=function(t){for(var n=e(this),r=o(n.length),u=arguments.length,c=i(u>1?arguments[1]:void 0,r),f=u>2?arguments[2]:void 0,a=void 0===f?r:i(f,r);a>c;)n[c++]=t;return n}},function(t,n,r){"use strict";var e=r(50),i=r(131),o=r(55),u=r(23);t.exports=r(92)(Array,"Array",(function(t,n){this._t=u(t),this._i=0,this._k=n}),(function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):i(0,"keys"==n?r:"values"==n?t[r]:[r,t[r]])}),"values"),o.Arguments=o.Array,e("keys"),e("values"),e("entries")},function(t,n,r){"use strict";var e,i,o=r(71),u=RegExp.prototype.exec,c=String.prototype.replace,f=u,a=(e=/a/,i=/b*/g,u.call(e,"a"),u.call(i,"a"),0!==e.lastIndex||0!==i.lastIndex),s=void 0!==/()??/.exec("")[1];(a||s)&&(f=function(t){var n,r,e,i,f=this;return s&&(r=new RegExp("^"+f.source+"$(?!\\s)",o.call(f))),a&&(n=f.lastIndex),e=u.call(f,t),a&&e&&(f.lastIndex=f.global?e.index+e[0].length:n),s&&e&&e.length>1&&c.call(e[0],r,(function(){for(i=1;ir;)n.push(arguments[r++]);return g[++d]=function(){c("function"==typeof t?t:Function(t),n)},e(d),d},p=function(t){delete g[t]},"process"==r(33)(l)?e=function(t){l.nextTick(u(x,t,1))}:y&&y.now?e=function(t){y.now(u(x,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=b,e=u(o.postMessage,o,1)):s.addEventListener&&"function"==typeof postMessage&&!s.importScripts?(e=function(t){s.postMessage(t+"","*")},s.addEventListener("message",b,!1)):e="onreadystatechange"in a("script")?function(t){f.appendChild(a("script")).onreadystatechange=function(){f.removeChild(this),x.call(t)}}:function(t){setTimeout(u(x,t,1),0)}),t.exports={set:h,clear:p}},function(t,n,r){"use strict";var e=r(1),i=r(12),o=r(44),u=r(77),c=r(22),f=r(58),a=r(2),s=r(57),l=r(29),h=r(10),p=r(139),v=r(48).f,y=r(13).f,d=r(99),g=r(53),x=e.ArrayBuffer,b=e.DataView,m=e.Math,S=e.RangeError,w=e.Infinity,_=x,E=m.abs,O=m.pow,P=m.floor,F=m.log,M=m.LN2,A=i?"_b":"buffer",j=i?"_l":"byteLength",I=i?"_o":"byteOffset";function N(t,n,r){var e,i,o,u=new Array(r),c=8*r-n-1,f=(1<>1,s=23===n?O(2,-24)-O(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for((t=E(t))!=t||t===w?(i=t!=t?1:0,e=f):(e=P(F(t)/M),t*(o=O(2,-e))<1&&(e--,o*=2),(t+=e+a>=1?s/o:s*O(2,1-a))*o>=2&&(e++,o/=2),e+a>=f?(i=0,e=f):e+a>=1?(i=(t*o-1)*O(2,n),e+=a):(i=t*O(2,a-1)*O(2,n),e=0));n>=8;u[l++]=255&i,i/=256,n-=8);for(e=e<0;u[l++]=255&e,e/=256,c-=8);return u[--l]|=128*h,u}function T(t,n,r){var e,i=8*r-n-1,o=(1<>1,c=i-7,f=r-1,a=t[f--],s=127&a;for(a>>=7;c>0;s=256*s+t[f],f--,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=n;c>0;e=256*e+t[f],f--,c-=8);if(0===s)s=1-u;else{if(s===o)return e?NaN:a?-w:w;e+=O(2,n),s-=u}return(a?-1:1)*e*O(2,s-n)}function L(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function R(t){return[255&t]}function k(t){return[255&t,t>>8&255]}function C(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function D(t){return N(t,52,8)}function W(t){return N(t,23,4)}function G(t,n,r){y(t.prototype,n,{get:function(){return this[r]}})}function U(t,n,r,e){var i=p(+r);if(i+n>t[j])throw S("Wrong index!");var o=t[A]._b,u=i+t[I],c=o.slice(u,u+n);return e?c:c.reverse()}function B(t,n,r,e,i,o){var u=p(+r);if(u+n>t[j])throw S("Wrong index!");for(var c=t[A]._b,f=u+t[I],a=e(+i),s=0;sq;)(V=Y[q++])in x||c(x,V,_[V]);o||(z.constructor=x)}var $=new b(new x(2)),K=b.prototype.setInt8;$.setInt8(0,2147483648),$.setInt8(1,2147483649),!$.getInt8(0)&&$.getInt8(1)||f(b.prototype,{setInt8:function(t,n){K.call(this,t,n<<24>>24)},setUint8:function(t,n){K.call(this,t,n<<24>>24)}},!0)}else x=function(t){s(this,x,"ArrayBuffer");var n=p(t);this._b=d.call(new Array(n),0),this[j]=n},b=function(t,n,r){s(this,b,"DataView"),s(t,x,"DataView");var e=t[j],i=l(n);if(i<0||i>e)throw S("Wrong offset!");if(i+(r=void 0===r?e-i:h(r))>e)throw S("Wrong length!");this[A]=t,this[I]=i,this[j]=r},i&&(G(x,"byteLength","_l"),G(b,"buffer","_b"),G(b,"byteLength","_l"),G(b,"byteOffset","_o")),f(b.prototype,{getInt8:function(t){return U(this,1,t)[0]<<24>>24},getUint8:function(t){return U(this,1,t)[0]},getInt16:function(t){var n=U(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function(t){var n=U(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function(t){return L(U(this,4,t,arguments[1]))},getUint32:function(t){return L(U(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return T(U(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return T(U(this,8,t,arguments[1]),52,8)},setInt8:function(t,n){B(this,1,t,R,n)},setUint8:function(t,n){B(this,1,t,R,n)},setInt16:function(t,n){B(this,2,t,k,n,arguments[2])},setUint16:function(t,n){B(this,2,t,k,n,arguments[2])},setInt32:function(t,n){B(this,4,t,C,n,arguments[2])},setUint32:function(t,n){B(this,4,t,C,n,arguments[2])},setFloat32:function(t,n){B(this,4,t,W,n,arguments[2])},setFloat64:function(t,n){B(this,8,t,D,n,arguments[2])}});g(x,"ArrayBuffer"),g(b,"DataView"),c(b.prototype,u.VIEW,!0),n.ArrayBuffer=x,n.DataView=b},function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){t.exports=!r(144)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},,,,,function(t,n,r){t.exports=!r(12)&&!r(2)((function(){return 7!=Object.defineProperty(r(80)("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(1),i=r(11),o=r(44),u=r(81),c=r(13).f;t.exports=function(t){var n=i.Symbol||(i.Symbol=o?{}:e.Symbol||{});"_"==t.charAt(0)||t in n||c(n,t,{value:u.f(t)})}},function(t,n,r){var e=r(21),i=r(23),o=r(67)(!1),u=r(82)("IE_PROTO");t.exports=function(t,n){var r,c=i(t),f=0,a=[];for(r in c)r!=u&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~o(a,r)||a.push(r));return a}},function(t,n,r){var e=r(13),i=r(3),o=r(45);t.exports=r(12)?Object.defineProperties:function(t,n){i(t);for(var r,u=o(n),c=u.length,f=0;c>f;)e.f(t,r=u[f++],n[r]);return t}},function(t,n,r){var e=r(23),i=r(48).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(e(t))}},function(t,n,r){"use strict";var e=r(12),i=r(45),o=r(68),u=r(61),c=r(16),f=r(60),a=Object.assign;t.exports=!a||r(2)((function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach((function(t){n[t]=t})),7!=a({},t)[r]||Object.keys(a({},n)).join("")!=e}))?function(t,n){for(var r=c(t),a=arguments.length,s=1,l=o.f,h=u.f;a>s;)for(var p,v=f(arguments[s++]),y=l?i(v).concat(l(v)):i(v),d=y.length,g=0;d>g;)p=y[g++],e&&!h.call(v,p)||(r[p]=v[p]);return r}:a},function(t,n){t.exports=Object.is||function(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}},function(t,n,r){"use strict";var e=r(28),i=r(4),o=r(120),u=[].slice,c={},f=function(t,n,r){if(!(n in c)){for(var e=[],i=0;i>>0||(u.test(r)?16:10))}:e},function(t,n,r){var e=r(1).parseFloat,i=r(54).trim;t.exports=1/e(r(86)+"-0")!=-1/0?function(t){var n=i(String(t),3),r=e(n);return 0===r&&"-"==n.charAt(0)?-0:r}:e},function(t,n,r){var e=r(33);t.exports=function(t,n){if("number"!=typeof t&&"Number"!=e(t))throw TypeError(n);return+t}},function(t,n,r){var e=r(4),i=Math.floor;t.exports=function(t){return!e(t)&&isFinite(t)&&i(t)===t}},function(t,n){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,n,r){"use strict";var e=r(47),i=r(42),o=r(53),u={};r(22)(u,r(8)("iterator"),(function(){return this})),t.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},function(t,n,r){var e=r(3);t.exports=function(t,n,r,i){try{return i?n(e(r)[0],r[1]):n(r)}catch(n){var o=t.return;throw void 0!==o&&e(o.call(t)),n}}},function(t,n,r){var e=r(243);t.exports=function(t,n){return new(e(t))(n)}},function(t,n,r){var e=r(28),i=r(16),o=r(60),u=r(10);t.exports=function(t,n,r,c,f){e(n);var a=i(t),s=o(a),l=u(a.length),h=f?l-1:0,p=f?-1:1;if(r<2)for(;;){if(h in s){c=s[h],h+=p;break}if(h+=p,f?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;f?h>=0:l>h;h+=p)h in s&&(c=n(c,s[h],h,a));return c}},function(t,n,r){"use strict";var e=r(16),i=r(46),o=r(10);t.exports=[].copyWithin||function(t,n){var r=e(this),u=o(r.length),c=i(t,u),f=i(n,u),a=arguments.length>2?arguments[2]:void 0,s=Math.min((void 0===a?u:i(a,u))-f,u-c),l=1;for(f0;)f in r?r[c]=r[f]:delete r[c],c+=l,f+=l;return r}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,r){"use strict";var e=r(101);r(0)({target:"RegExp",proto:!0,forced:e!==/./.exec},{exec:e})},function(t,n,r){r(12)&&"g"!=/./g.flags&&r(13).f(RegExp.prototype,"flags",{configurable:!0,get:r(71)})},function(t,n,r){"use strict";var e,i,o,u,c=r(44),f=r(1),a=r(27),s=r(62),l=r(0),h=r(4),p=r(28),v=r(57),y=r(74),d=r(63),g=r(103).set,x=r(263)(),b=r(135),m=r(264),S=r(75),w=r(136),_=f.TypeError,E=f.process,O=E&&E.versions,P=O&&O.v8||"",F=f.Promise,M="process"==s(E),A=function(){},j=i=b.f,I=!!function(){try{var t=F.resolve(1),n=(t.constructor={})[r(8)("species")]=function(t){t(A,A)};return(M||"function"==typeof PromiseRejectionEvent)&&t.then(A)instanceof n&&0!==P.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(t){}}(),N=function(t){var n;return!(!h(t)||"function"!=typeof(n=t.then))&&n},T=function(t,n){if(!t._n){t._n=!0;var r=t._c;x((function(){for(var e=t._v,i=1==t._s,o=0,u=function(n){var r,o,u,c=i?n.ok:n.fail,f=n.resolve,a=n.reject,s=n.domain;try{c?(i||(2==t._h&&k(t),t._h=1),!0===c?r=e:(s&&s.enter(),r=c(e),s&&(s.exit(),u=!0)),r===n.promise?a(_("Promise-chain cycle")):(o=N(r))?o.call(r,f,a):f(r)):a(e)}catch(t){s&&!u&&s.exit(),a(t)}};r.length>o;)u(r[o++]);t._c=[],t._n=!1,n&&!t._h&&L(t)}))}},L=function(t){g.call(f,(function(){var n,r,e,i=t._v,o=R(t);if(o&&(n=m((function(){M?E.emit("unhandledRejection",i,t):(r=f.onunhandledrejection)?r({promise:t,reason:i}):(e=f.console)&&e.error&&e.error("Unhandled promise rejection",i)})),t._h=M||R(t)?2:1),t._a=void 0,o&&n.e)throw n.v}))},R=function(t){return 1!==t._h&&0===(t._a||t._c).length},k=function(t){g.call(f,(function(){var n;M?E.emit("rejectionHandled",t):(n=f.onrejectionhandled)&&n({promise:t,reason:t._v})}))},C=function(t){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=t,n._s=2,n._a||(n._a=n._c.slice()),T(n,!0))},D=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw _("Promise can't be resolved itself");(n=N(t))?x((function(){var e={_w:r,_d:!1};try{n.call(t,a(D,e,1),a(C,e,1))}catch(t){C.call(e,t)}})):(r._v=t,r._s=1,T(r,!1))}catch(t){C.call({_w:r,_d:!1},t)}}};I||(F=function(t){v(this,F,"Promise","_h"),p(t),e.call(this);try{t(a(D,this,1),a(C,this,1))}catch(t){C.call(this,t)}},(e=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(58)(F.prototype,{then:function(t,n){var r=j(d(this,F));return r.ok="function"!=typeof t||t,r.fail="function"==typeof n&&n,r.domain=M?E.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&T(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new e;this.promise=t,this.resolve=a(D,t,1),this.reject=a(C,t,1)},b.f=j=function(t){return t===F||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!I,{Promise:F}),r(53)(F,"Promise"),r(56)("Promise"),u=r(11).Promise,l(l.S+l.F*!I,"Promise",{reject:function(t){var n=j(this);return(0,n.reject)(t),n.promise}}),l(l.S+l.F*(c||!I),"Promise",{resolve:function(t){return w(c&&this===u?F:this,t)}}),l(l.S+l.F*!(I&&r(70)((function(t){F.all(t).catch(A)}))),"Promise",{all:function(t){var n=this,r=j(n),e=r.resolve,i=r.reject,o=m((function(){var r=[],o=0,u=1;y(t,!1,(function(t){var c=o++,f=!1;r.push(void 0),u++,n.resolve(t).then((function(t){f||(f=!0,r[c]=t,--u||e(r))}),i)})),--u||e(r)}));return o.e&&i(o.v),r.promise},race:function(t){var n=this,r=j(n),e=r.reject,i=m((function(){y(t,!1,(function(t){n.resolve(t).then(r.resolve,e)}))}));return i.e&&e(i.v),r.promise}})},function(t,n,r){"use strict";var e=r(28);function i(t){var n,r;this.promise=new t((function(t,e){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=t,r=e})),this.resolve=e(n),this.reject=e(r)}t.exports.f=function(t){return new i(t)}},function(t,n,r){var e=r(3),i=r(4),o=r(135);t.exports=function(t,n){if(e(t),i(n)&&n.constructor===t)return n;var r=o.f(t);return(0,r.resolve)(n),r.promise}},function(t,n,r){"use strict";var e=r(13).f,i=r(47),o=r(58),u=r(27),c=r(57),f=r(74),a=r(92),s=r(131),l=r(56),h=r(12),p=r(39).fastKey,v=r(51),y=h?"_s":"size",d=function(t,n){var r,e=p(n);if("F"!==e)return t._i[e];for(r=t._f;r;r=r.n)if(r.k==n)return r};t.exports={getConstructor:function(t,n,r,a){var s=t((function(t,e){c(t,s,n,"_i"),t._t=n,t._i=i(null),t._f=void 0,t._l=void 0,t[y]=0,null!=e&&f(e,r,t[a],t)}));return o(s.prototype,{clear:function(){for(var t=v(this,n),r=t._i,e=t._f;e;e=e.n)e.r=!0,e.p&&(e.p=e.p.n=void 0),delete r[e.i];t._f=t._l=void 0,t[y]=0},delete:function(t){var r=v(this,n),e=d(r,t);if(e){var i=e.n,o=e.p;delete r._i[e.i],e.r=!0,o&&(o.n=i),i&&(i.p=o),r._f==e&&(r._f=i),r._l==e&&(r._l=o),r[y]--}return!!e},forEach:function(t){v(this,n);for(var r,e=u(t,arguments.length>1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(e(r.v,r.k,this);r&&r.r;)r=r.p},has:function(t){return!!d(v(this,n),t)}}),h&&e(s.prototype,"size",{get:function(){return v(this,n)[y]}}),s},def:function(t,n,r){var e,i,o=d(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[y]++,"F"!==i&&(t._i[i]=o)),t},getEntry:d,setStrong:function(t,n,r){a(t,n,(function(t,r){this._t=v(t,n),this._k=r,this._l=void 0}),(function(){for(var t=this._k,n=this._l;n&&n.r;)n=n.p;return this._t&&(this._l=n=n?n.n:this._t._f)?s(0,"keys"==t?n.k:"values"==t?n.v:[n.k,n.v]):(this._t=void 0,s(1))}),r?"entries":"values",!r,!0),l(n)}}},function(t,n,r){"use strict";var e=r(58),i=r(39).getWeak,o=r(3),u=r(4),c=r(57),f=r(74),a=r(32),s=r(21),l=r(51),h=a(5),p=a(6),v=0,y=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},g=function(t,n){return h(t.a,(function(t){return t[0]===n}))};d.prototype={get:function(t){var n=g(this,t);if(n)return n[1]},has:function(t){return!!g(this,t)},set:function(t,n){var r=g(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(t){var n=p(this.a,(function(n){return n[0]===t}));return~n&&this.a.splice(n,1),!!~n}},t.exports={getConstructor:function(t,n,r,o){var a=t((function(t,e){c(t,a,n,"_i"),t._t=n,t._i=v++,t._l=void 0,null!=e&&f(e,r,t[o],t)}));return e(a.prototype,{delete:function(t){if(!u(t))return!1;var r=i(t);return!0===r?y(l(this,n)).delete(t):r&&s(r,this._i)&&delete r[this._i]},has:function(t){if(!u(t))return!1;var r=i(t);return!0===r?y(l(this,n)).has(t):r&&s(r,this._i)}}),a},def:function(t,n,r){var e=i(o(n),!0);return!0===e?y(t).set(n,r):e[t._i]=r,t},ufstore:y}},function(t,n,r){var e=r(29),i=r(10);t.exports=function(t){if(void 0===t)return 0;var n=e(t),r=i(n);if(n!==r)throw RangeError("Wrong length!");return r}},function(t,n,r){var e=r(48),i=r(68),o=r(3),u=r(1).Reflect;t.exports=u&&u.ownKeys||function(t){var n=e.f(o(t)),r=i.f;return r?n.concat(r(t)):n}},function(t,n,r){var e=r(10),i=r(88),o=r(34);t.exports=function(t,n,r,u){var c=String(o(t)),f=c.length,a=void 0===r?" ":String(r),s=e(n);if(s<=f||""==a)return c;var l=s-f,h=i.call(a,Math.ceil(l/a.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},function(t,n,r){var e=r(12),i=r(45),o=r(23),u=r(61).f;t.exports=function(t){return function(n){for(var r,c=o(n),f=i(c),a=f.length,s=0,l=[];a>s;)r=f[s++],e&&!u.call(c,r)||l.push(t?[r,c[r]]:c[r]);return l}}},function(t,n){var r=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,,,,function(t,n,r){"use strict";r(150);var e,i=(e=r(321))&&e.__esModule?e:{default:e};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},function(t,n,r){"use strict";r(151),r(294),r(296),r(299),r(301),r(303),r(305),r(307),r(309),r(311),r(313),r(315),r(317),r(64)},function(t,n,r){r(152),r(155),r(156),r(157),r(158),r(159),r(160),r(161),r(162),r(163),r(164),r(165),r(166),r(167),r(168),r(169),r(170),r(171),r(172),r(173),r(174),r(175),r(176),r(177),r(178),r(179),r(180),r(181),r(182),r(183),r(184),r(185),r(186),r(187),r(188),r(189),r(190),r(191),r(192),r(193),r(194),r(195),r(196),r(198),r(199),r(200),r(201),r(202),r(203),r(204),r(205),r(206),r(207),r(208),r(209),r(210),r(211),r(212),r(213),r(214),r(215),r(216),r(217),r(218),r(219),r(220),r(221),r(222),r(223),r(224),r(225),r(226),r(227),r(228),r(229),r(230),r(231),r(233),r(234),r(236),r(237),r(238),r(239),r(240),r(241),r(242),r(244),r(245),r(246),r(247),r(248),r(249),r(250),r(251),r(252),r(253),r(254),r(255),r(256),r(100),r(257),r(132),r(258),r(133),r(259),r(260),r(261),r(262),r(134),r(265),r(266),r(267),r(268),r(269),r(270),r(271),r(272),r(273),r(274),r(275),r(276),r(277),r(278),r(279),r(280),r(281),r(282),r(283),r(284),r(285),r(286),r(287),r(288),r(289),r(290),r(291),r(292),r(293),t.exports=r(11)},function(t,n,r){"use strict";var e=r(1),i=r(21),o=r(12),u=r(0),c=r(18),f=r(39).KEY,a=r(2),s=r(66),l=r(53),h=r(43),p=r(8),v=r(81),y=r(113),d=r(154),g=r(69),x=r(3),b=r(4),m=r(16),S=r(23),w=r(38),_=r(42),E=r(47),O=r(116),P=r(30),F=r(68),M=r(13),A=r(45),j=P.f,I=M.f,N=O.f,T=e.Symbol,L=e.JSON,R=L&&L.stringify,k=p("_hidden"),C=p("toPrimitive"),D={}.propertyIsEnumerable,W=s("symbol-registry"),G=s("symbols"),U=s("op-symbols"),B=Object.prototype,V="function"==typeof T&&!!F.f,z=e.QObject,Y=!z||!z.prototype||!z.prototype.findChild,q=o&&a((function(){return 7!=E(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a}))?function(t,n,r){var e=j(B,n);e&&delete B[n],I(t,n,r),e&&t!==B&&I(B,n,e)}:I,$=function(t){var n=G[t]=E(T.prototype);return n._k=t,n},K=V&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},J=function(t,n,r){return t===B&&J(U,n,r),x(t),n=w(n,!0),x(r),i(G,n)?(r.enumerable?(i(t,k)&&t[k][n]&&(t[k][n]=!1),r=E(r,{enumerable:_(0,!1)})):(i(t,k)||I(t,k,_(1,{})),t[k][n]=!0),q(t,n,r)):I(t,n,r)},X=function(t,n){x(t);for(var r,e=d(n=S(n)),i=0,o=e.length;o>i;)J(t,r=e[i++],n[r]);return t},H=function(t){var n=D.call(this,t=w(t,!0));return!(this===B&&i(G,t)&&!i(U,t))&&(!(n||!i(this,t)||!i(G,t)||i(this,k)&&this[k][t])||n)},Z=function(t,n){if(t=S(t),n=w(n,!0),t!==B||!i(G,n)||i(U,n)){var r=j(t,n);return!r||!i(G,n)||i(t,k)&&t[k][n]||(r.enumerable=!0),r}},Q=function(t){for(var n,r=N(S(t)),e=[],o=0;r.length>o;)i(G,n=r[o++])||n==k||n==f||e.push(n);return e},tt=function(t){for(var n,r=t===B,e=N(r?U:S(t)),o=[],u=0;e.length>u;)!i(G,n=e[u++])||r&&!i(B,n)||o.push(G[n]);return o};V||(c((T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),n=function(r){this===B&&n.call(U,r),i(this,k)&&i(this[k],t)&&(this[k][t]=!1),q(this,t,_(1,r))};return o&&Y&&q(B,t,{configurable:!0,set:n}),$(t)}).prototype,"toString",(function(){return this._k})),P.f=Z,M.f=J,r(48).f=O.f=Q,r(61).f=H,F.f=tt,o&&!r(44)&&c(B,"propertyIsEnumerable",H,!0),v.f=function(t){return $(p(t))}),u(u.G+u.W+u.F*!V,{Symbol:T});for(var nt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;nt.length>rt;)p(nt[rt++]);for(var et=A(p.store),it=0;et.length>it;)y(et[it++]);u(u.S+u.F*!V,"Symbol",{for:function(t){return i(W,t+="")?W[t]:W[t]=T(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var n in W)if(W[n]===t)return n},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),u(u.S+u.F*!V,"Object",{create:function(t,n){return void 0===n?E(t):X(E(t),n)},defineProperty:J,defineProperties:X,getOwnPropertyDescriptor:Z,getOwnPropertyNames:Q,getOwnPropertySymbols:tt});var ot=a((function(){F.f(1)}));u(u.S+u.F*ot,"Object",{getOwnPropertySymbols:function(t){return F.f(m(t))}}),L&&u(u.S+u.F*(!V||a((function(){var t=T();return"[null]"!=R([t])||"{}"!=R({a:t})||"{}"!=R(Object(t))}))),"JSON",{stringify:function(t){for(var n,r,e=[t],i=1;arguments.length>i;)e.push(arguments[i++]);if(r=n=e[1],(b(n)||void 0!==t)&&!K(t))return g(n)||(n=function(t,n){if("function"==typeof r&&(n=r.call(this,t,n)),!K(n))return n}),e[1]=n,R.apply(L,e)}}),T.prototype[C]||r(22)(T.prototype,C,T.prototype.valueOf),l(T,"Symbol"),l(Math,"Math",!0),l(e.JSON,"JSON",!0)},function(t,n,r){t.exports=r(66)("native-function-to-string",Function.toString)},function(t,n,r){var e=r(45),i=r(68),o=r(61);t.exports=function(t){var n=e(t),r=i.f;if(r)for(var u,c=r(t),f=o.f,a=0;c.length>a;)f.call(t,u=c[a++])&&n.push(u);return n}},function(t,n,r){var e=r(0);e(e.S,"Object",{create:r(47)})},function(t,n,r){var e=r(0);e(e.S+e.F*!r(12),"Object",{defineProperty:r(13).f})},function(t,n,r){var e=r(0);e(e.S+e.F*!r(12),"Object",{defineProperties:r(115)})},function(t,n,r){var e=r(23),i=r(30).f;r(31)("getOwnPropertyDescriptor",(function(){return function(t,n){return i(e(t),n)}}))},function(t,n,r){var e=r(16),i=r(49);r(31)("getPrototypeOf",(function(){return function(t){return i(e(t))}}))},function(t,n,r){var e=r(16),i=r(45);r(31)("keys",(function(){return function(t){return i(e(t))}}))},function(t,n,r){r(31)("getOwnPropertyNames",(function(){return r(116).f}))},function(t,n,r){var e=r(4),i=r(39).onFreeze;r(31)("freeze",(function(t){return function(n){return t&&e(n)?t(i(n)):n}}))},function(t,n,r){var e=r(4),i=r(39).onFreeze;r(31)("seal",(function(t){return function(n){return t&&e(n)?t(i(n)):n}}))},function(t,n,r){var e=r(4),i=r(39).onFreeze;r(31)("preventExtensions",(function(t){return function(n){return t&&e(n)?t(i(n)):n}}))},function(t,n,r){var e=r(4);r(31)("isFrozen",(function(t){return function(n){return!e(n)||!!t&&t(n)}}))},function(t,n,r){var e=r(4);r(31)("isSealed",(function(t){return function(n){return!e(n)||!!t&&t(n)}}))},function(t,n,r){var e=r(4);r(31)("isExtensible",(function(t){return function(n){return!!e(n)&&(!t||t(n))}}))},function(t,n,r){var e=r(0);e(e.S+e.F,"Object",{assign:r(117)})},function(t,n,r){var e=r(0);e(e.S,"Object",{is:r(118)})},function(t,n,r){var e=r(0);e(e.S,"Object",{setPrototypeOf:r(85).set})},function(t,n,r){"use strict";var e=r(62),i={};i[r(8)("toStringTag")]="z",i+""!="[object z]"&&r(18)(Object.prototype,"toString",(function(){return"[object "+e(this)+"]"}),!0)},function(t,n,r){var e=r(0);e(e.P,"Function",{bind:r(119)})},function(t,n,r){var e=r(13).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||r(12)&&e(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},function(t,n,r){"use strict";var e=r(4),i=r(49),o=r(8)("hasInstance"),u=Function.prototype;o in u||r(13).f(u,o,{value:function(t){if("function"!=typeof this||!e(t))return!1;if(!e(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,n,r){var e=r(0),i=r(121);e(e.G+e.F*(parseInt!=i),{parseInt:i})},function(t,n,r){var e=r(0),i=r(122);e(e.G+e.F*(parseFloat!=i),{parseFloat:i})},function(t,n,r){"use strict";var e=r(1),i=r(21),o=r(33),u=r(87),c=r(38),f=r(2),a=r(48).f,s=r(30).f,l=r(13).f,h=r(54).trim,p=e.Number,v=p,y=p.prototype,d="Number"==o(r(47)(y)),g="trim"in String.prototype,x=function(t){var n=c(t,!1);if("string"==typeof n&&n.length>2){var r,e,i,o=(n=g?n.trim():h(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(r=n.charCodeAt(2))||120===r)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:e=2,i=49;break;case 79:case 111:e=8,i=55;break;default:return+n}for(var u,f=n.slice(2),a=0,s=f.length;ai)return NaN;return parseInt(f,e)}}return+n};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var n=arguments.length<1?0:t,r=this;return r instanceof p&&(d?f((function(){y.valueOf.call(r)})):"Number"!=o(r))?u(new v(x(n)),r,p):x(n)};for(var b,m=r(12)?a(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;m.length>S;S++)i(v,b=m[S])&&!i(p,b)&&l(p,b,s(v,b));p.prototype=y,y.constructor=p,r(18)(e,"Number",p)}},function(t,n,r){"use strict";var e=r(0),i=r(29),o=r(123),u=r(88),c=1..toFixed,f=Math.floor,a=[0,0,0,0,0,0],s="Number.toFixed: incorrect invocation!",l=function(t,n){for(var r=-1,e=n;++r<6;)e+=t*a[r],a[r]=e%1e7,e=f(e/1e7)},h=function(t){for(var n=6,r=0;--n>=0;)r+=a[n],a[n]=f(r/t),r=r%t*1e7},p=function(){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==a[t]){var r=String(a[t]);n=""===n?r:n+u.call("0",7-r.length)+r}return n},v=function(t,n,r){return 0===n?r:n%2==1?v(t,n-1,r*t):v(t*t,n/2,r)};e(e.P+e.F*(!!c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r(2)((function(){c.call({})}))),"Number",{toFixed:function(t){var n,r,e,c,f=o(this,s),a=i(t),y="",d="0";if(a<0||a>20)throw RangeError(s);if(f!=f)return"NaN";if(f<=-1e21||f>=1e21)return String(f);if(f<0&&(y="-",f=-f),f>1e-21)if(r=(n=function(t){for(var n=0,r=t;r>=4096;)n+=12,r/=4096;for(;r>=2;)n+=1,r/=2;return n}(f*v(2,69,1))-69)<0?f*v(2,-n,1):f/v(2,n,1),r*=4503599627370496,(n=52-n)>0){for(l(0,r),e=a;e>=7;)l(1e7,0),e-=7;for(l(v(10,e,1),0),e=n-1;e>=23;)h(1<<23),e-=23;h(1<0?y+((c=d.length)<=a?"0."+u.call("0",a-c)+d:d.slice(0,c-a)+"."+d.slice(c-a)):y+d}})},function(t,n,r){"use strict";var e=r(0),i=r(2),o=r(123),u=1..toPrecision;e(e.P+e.F*(i((function(){return"1"!==u.call(1,void 0)}))||!i((function(){u.call({})}))),"Number",{toPrecision:function(t){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(n):u.call(n,t)}})},function(t,n,r){var e=r(0);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,n,r){var e=r(0),i=r(1).isFinite;e(e.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,n,r){var e=r(0);e(e.S,"Number",{isInteger:r(124)})},function(t,n,r){var e=r(0);e(e.S,"Number",{isNaN:function(t){return t!=t}})},function(t,n,r){var e=r(0),i=r(124),o=Math.abs;e(e.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,n,r){var e=r(0);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,n,r){var e=r(0);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,n,r){var e=r(0),i=r(122);e(e.S+e.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,n,r){var e=r(0),i=r(121);e(e.S+e.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,n,r){var e=r(0),i=r(125),o=Math.sqrt,u=Math.acosh;e(e.S+e.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,n,r){var e=r(0),i=Math.asinh;e(e.S+e.F*!(i&&1/i(0)>0),"Math",{asinh:function t(n){return isFinite(n=+n)&&0!=n?n<0?-t(-n):Math.log(n+Math.sqrt(n*n+1)):n}})},function(t,n,r){var e=r(0),i=Math.atanh;e(e.S+e.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,n,r){var e=r(0),i=r(89);e(e.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,n,r){var e=r(0);e(e.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,n,r){var e=r(0),i=Math.exp;e(e.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,n,r){var e=r(0),i=r(90);e(e.S+e.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,n,r){var e=r(0);e(e.S,"Math",{fround:r(197)})},function(t,n,r){var e=r(89),i=Math.pow,o=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),f=i(2,-126);t.exports=Math.fround||function(t){var n,r,i=Math.abs(t),a=e(t);return ic||r!=r?a*(1/0):a*r}},function(t,n,r){var e=r(0),i=Math.abs;e(e.S,"Math",{hypot:function(t,n){for(var r,e,o=0,u=0,c=arguments.length,f=0;u0?(e=r/f)*e:r;return f===1/0?1/0:f*Math.sqrt(o)}})},function(t,n,r){var e=r(0),i=Math.imul;e(e.S+e.F*r(2)((function(){return-5!=i(4294967295,5)||2!=i.length})),"Math",{imul:function(t,n){var r=+t,e=+n,i=65535&r,o=65535&e;return 0|i*o+((65535&r>>>16)*o+i*(65535&e>>>16)<<16>>>0)}})},function(t,n,r){var e=r(0);e(e.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},function(t,n,r){var e=r(0);e(e.S,"Math",{log1p:r(125)})},function(t,n,r){var e=r(0);e(e.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,n,r){var e=r(0);e(e.S,"Math",{sign:r(89)})},function(t,n,r){var e=r(0),i=r(90),o=Math.exp;e(e.S+e.F*r(2)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,n,r){var e=r(0),i=r(90),o=Math.exp;e(e.S,"Math",{tanh:function(t){var n=i(t=+t),r=i(-t);return n==1/0?1:r==1/0?-1:(n-r)/(o(t)+o(-t))}})},function(t,n,r){var e=r(0);e(e.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,n,r){var e=r(0),i=r(46),o=String.fromCharCode,u=String.fromCodePoint;e(e.S+e.F*(!!u&&1!=u.length),"String",{fromCodePoint:function(t){for(var n,r=[],e=arguments.length,u=0;e>u;){if(n=+arguments[u++],i(n,1114111)!==n)throw RangeError(n+" is not a valid code point");r.push(n<65536?o(n):o(55296+((n-=65536)>>10),n%1024+56320))}return r.join("")}})},function(t,n,r){var e=r(0),i=r(23),o=r(10);e(e.S,"String",{raw:function(t){for(var n=i(t.raw),r=o(n.length),e=arguments.length,u=[],c=0;r>c;)u.push(String(n[c++])),c=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})}))},function(t,n,r){"use strict";var e=r(0),i=r(91)(!1);e(e.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,n,r){"use strict";var e=r(0),i=r(10),o=r(93),u="".endsWith;e(e.P+e.F*r(95)("endsWith"),"String",{endsWith:function(t){var n=o(this,t,"endsWith"),r=arguments.length>1?arguments[1]:void 0,e=i(n.length),c=void 0===r?e:Math.min(i(r),e),f=String(t);return u?u.call(n,f,c):n.slice(c-f.length,c)===f}})},function(t,n,r){"use strict";var e=r(0),i=r(93);e(e.P+e.F*r(95)("includes"),"String",{includes:function(t){return!!~i(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,r){var e=r(0);e(e.P,"String",{repeat:r(88)})},function(t,n,r){"use strict";var e=r(0),i=r(10),o=r(93),u="".startsWith;e(e.P+e.F*r(95)("startsWith"),"String",{startsWith:function(t){var n=o(this,t,"startsWith"),r=i(Math.min(arguments.length>1?arguments[1]:void 0,n.length)),e=String(t);return u?u.call(n,e,r):n.slice(r,r+e.length)===e}})},function(t,n,r){"use strict";r(19)("anchor",(function(t){return function(n){return t(this,"a","name",n)}}))},function(t,n,r){"use strict";r(19)("big",(function(t){return function(){return t(this,"big","","")}}))},function(t,n,r){"use strict";r(19)("blink",(function(t){return function(){return t(this,"blink","","")}}))},function(t,n,r){"use strict";r(19)("bold",(function(t){return function(){return t(this,"b","","")}}))},function(t,n,r){"use strict";r(19)("fixed",(function(t){return function(){return t(this,"tt","","")}}))},function(t,n,r){"use strict";r(19)("fontcolor",(function(t){return function(n){return t(this,"font","color",n)}}))},function(t,n,r){"use strict";r(19)("fontsize",(function(t){return function(n){return t(this,"font","size",n)}}))},function(t,n,r){"use strict";r(19)("italics",(function(t){return function(){return t(this,"i","","")}}))},function(t,n,r){"use strict";r(19)("link",(function(t){return function(n){return t(this,"a","href",n)}}))},function(t,n,r){"use strict";r(19)("small",(function(t){return function(){return t(this,"small","","")}}))},function(t,n,r){"use strict";r(19)("strike",(function(t){return function(){return t(this,"strike","","")}}))},function(t,n,r){"use strict";r(19)("sub",(function(t){return function(){return t(this,"sub","","")}}))},function(t,n,r){"use strict";r(19)("sup",(function(t){return function(){return t(this,"sup","","")}}))},function(t,n,r){var e=r(0);e(e.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,n,r){"use strict";var e=r(0),i=r(16),o=r(38);e(e.P+e.F*r(2)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var n=i(this),r=o(n);return"number"!=typeof r||isFinite(r)?n.toISOString():null}})},function(t,n,r){var e=r(0),i=r(232);e(e.P+e.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},function(t,n,r){"use strict";var e=r(2),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};t.exports=e((function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-50000000000001))}))||!e((function(){o.call(new Date(NaN))}))?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":n>9999?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(r>99?r:"0"+u(r))+"Z"}:o},function(t,n,r){var e=Date.prototype,i=e.toString,o=e.getTime;new Date(NaN)+""!="Invalid Date"&&r(18)(e,"toString",(function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"}))},function(t,n,r){var e=r(8)("toPrimitive"),i=Date.prototype;e in i||r(22)(i,e,r(235))},function(t,n,r){"use strict";var e=r(3),i=r(38);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),"number"!=t)}},function(t,n,r){var e=r(0);e(e.S,"Array",{isArray:r(69)})},function(t,n,r){"use strict";var e=r(27),i=r(0),o=r(16),u=r(127),c=r(96),f=r(10),a=r(97),s=r(98);i(i.S+i.F*!r(70)((function(t){Array.from(t)})),"Array",{from:function(t){var n,r,i,l,h=o(t),p="function"==typeof this?this:Array,v=arguments.length,y=v>1?arguments[1]:void 0,d=void 0!==y,g=0,x=s(h);if(d&&(y=e(y,v>2?arguments[2]:void 0,2)),null==x||p==Array&&c(x))for(r=new p(n=f(h.length));n>g;g++)a(r,g,d?y(h[g],g):h[g]);else for(l=x.call(h),r=new p;!(i=l.next()).done;g++)a(r,g,d?u(l,y,[i.value,g],!0):i.value);return r.length=g,r}})},function(t,n,r){"use strict";var e=r(0),i=r(97);e(e.S+e.F*r(2)((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,n=arguments.length,r=new("function"==typeof this?this:Array)(n);n>t;)i(r,t,arguments[t++]);return r.length=n,r}})},function(t,n,r){"use strict";var e=r(0),i=r(23),o=[].join;e(e.P+e.F*(r(60)!=Object||!r(26)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,n,r){"use strict";var e=r(0),i=r(84),o=r(33),u=r(46),c=r(10),f=[].slice;e(e.P+e.F*r(2)((function(){i&&f.call(i)})),"Array",{slice:function(t,n){var r=c(this.length),e=o(this);if(n=void 0===n?r:n,"Array"==e)return f.call(this,t,n);for(var i=u(t,r),a=u(n,r),s=c(a-i),l=new Array(s),h=0;h1&&(e=Math.min(e,o(arguments[1]))),e<0&&(e=r+e);e>=0;e--)if(e in n&&n[e]===t)return e||0;return-1}})},function(t,n,r){var e=r(0);e(e.P,"Array",{copyWithin:r(130)}),r(50)("copyWithin")},function(t,n,r){var e=r(0);e(e.P,"Array",{fill:r(99)}),r(50)("fill")},function(t,n,r){"use strict";var e=r(0),i=r(32)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),e(e.P+e.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(50)("find")},function(t,n,r){"use strict";var e=r(0),i=r(32)(6),o="findIndex",u=!0;o in[]&&Array(1)[o]((function(){u=!1})),e(e.P+e.F*u,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(50)(o)},function(t,n,r){r(56)("Array")},function(t,n,r){var e=r(1),i=r(87),o=r(13).f,u=r(48).f,c=r(94),f=r(71),a=e.RegExp,s=a,l=a.prototype,h=/a/g,p=/a/g,v=new a(h)!==h;if(r(12)&&(!v||r(2)((function(){return p[r(8)("match")]=!1,a(h)!=h||a(p)==p||"/a/i"!=a(h,"i")})))){a=function(t,n){var r=this instanceof a,e=c(t),o=void 0===n;return!r&&e&&t.constructor===a&&o?t:i(v?new s(e&&!o?t.source:t,n):s((e=t instanceof a)?t.source:t,e&&o?f.call(t):n),r?this:l,a)};for(var y=function(t){t in a||o(a,t,{configurable:!0,get:function(){return s[t]},set:function(n){s[t]=n}})},d=u(s),g=0;d.length>g;)y(d[g++]);l.constructor=a,a.prototype=l,r(18)(e,"RegExp",a)}r(56)("RegExp")},function(t,n,r){"use strict";r(133);var e=r(3),i=r(71),o=r(12),u=/./.toString,c=function(t){r(18)(RegExp.prototype,"toString",t,!0)};r(2)((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?c((function(){var t=e(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):"toString"!=u.name&&c((function(){return u.call(this)}))},function(t,n,r){"use strict";var e=r(3),i=r(10),o=r(102),u=r(72);r(73)("match",1,(function(t,n,r,c){return[function(r){var e=t(this),i=null==r?void 0:r[n];return void 0!==i?i.call(r,e):new RegExp(r)[n](String(e))},function(t){var n=c(r,t,this);if(n.done)return n.value;var f=e(t),a=String(this);if(!f.global)return u(f,a);var s=f.unicode;f.lastIndex=0;for(var l,h=[],p=0;null!==(l=u(f,a));){var v=String(l[0]);h[p]=v,""===v&&(f.lastIndex=o(a,i(f.lastIndex),s)),p++}return 0===p?null:h}]}))},function(t,n,r){"use strict";var e=r(3),i=r(16),o=r(10),u=r(29),c=r(102),f=r(72),a=Math.max,s=Math.min,l=Math.floor,h=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g;r(73)("replace",2,(function(t,n,r,v){return[function(e,i){var o=t(this),u=null==e?void 0:e[n];return void 0!==u?u.call(e,o,i):r.call(String(o),e,i)},function(t,n){var i=v(r,t,this,n);if(i.done)return i.value;var l=e(t),h=String(this),p="function"==typeof n;p||(n=String(n));var d=l.global;if(d){var g=l.unicode;l.lastIndex=0}for(var x=[];;){var b=f(l,h);if(null===b)break;if(x.push(b),!d)break;""===String(b[0])&&(l.lastIndex=c(h,o(l.lastIndex),g))}for(var m,S="",w=0,_=0;_=w&&(S+=h.slice(w,O)+j,w=O+E.length)}return S+h.slice(w)}];function y(t,n,e,o,u,c){var f=e+t.length,a=o.length,s=p;return void 0!==u&&(u=i(u),s=h),r.call(c,s,(function(r,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,e);case"'":return n.slice(f);case"<":c=u[i.slice(1,-1)];break;default:var s=+i;if(0===s)return r;if(s>a){var h=l(s/10);return 0===h?r:h<=a?void 0===o[h-1]?i.charAt(1):o[h-1]+i.charAt(1):r}c=o[s-1]}return void 0===c?"":c}))}}))},function(t,n,r){"use strict";var e=r(3),i=r(118),o=r(72);r(73)("search",1,(function(t,n,r,u){return[function(r){var e=t(this),i=null==r?void 0:r[n];return void 0!==i?i.call(r,e):new RegExp(r)[n](String(e))},function(t){var n=u(r,t,this);if(n.done)return n.value;var c=e(t),f=String(this),a=c.lastIndex;i(a,0)||(c.lastIndex=0);var s=o(c,f);return i(c.lastIndex,a)||(c.lastIndex=a),null===s?-1:s.index}]}))},function(t,n,r){"use strict";var e=r(94),i=r(3),o=r(63),u=r(102),c=r(10),f=r(72),a=r(101),s=r(2),l=Math.min,h=[].push,p="length",v=!s((function(){RegExp(4294967295,"y")}));r(73)("split",2,(function(t,n,r,s){var y;return y="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1)[p]||2!="ab".split(/(?:ab)*/)[p]||4!=".".split(/(.?)(.?)/)[p]||".".split(/()()/)[p]>1||"".split(/.?/)[p]?function(t,n){var i=String(this);if(void 0===t&&0===n)return[];if(!e(t))return r.call(i,t,n);for(var o,u,c,f=[],s=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),l=0,v=void 0===n?4294967295:n>>>0,y=new RegExp(t.source,s+"g");(o=a.call(y,i))&&!((u=y.lastIndex)>l&&(f.push(i.slice(l,o.index)),o[p]>1&&o.index=v));)y.lastIndex===o.index&&y.lastIndex++;return l===i[p]?!c&&y.test("")||f.push(""):f.push(i.slice(l)),f[p]>v?f.slice(0,v):f}:"0".split(void 0,0)[p]?function(t,n){return void 0===t&&0===n?[]:r.call(this,t,n)}:r,[function(r,e){var i=t(this),o=null==r?void 0:r[n];return void 0!==o?o.call(r,i,e):y.call(String(i),r,e)},function(t,n){var e=s(y,t,this,n,y!==r);if(e.done)return e.value;var a=i(t),h=String(this),p=o(a,RegExp),d=a.unicode,g=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(v?"y":"g"),x=new p(v?a:"^(?:"+a.source+")",g),b=void 0===n?4294967295:n>>>0;if(0===b)return[];if(0===h.length)return null===f(x,h)?[h]:[];for(var m=0,S=0,w=[];S0?arguments[0]:void 0)}}),{get:function(t){var n=e.getEntry(i(this,"Map"),t);return n&&n.v},set:function(t,n){return e.def(i(this,"Map"),0===t?0:t,n)}},e,!0)},function(t,n,r){"use strict";var e=r(137),i=r(51);t.exports=r(76)("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return e.def(i(this,"Set"),t=0===t?0:t,t)}},e)},function(t,n,r){"use strict";var e,i=r(1),o=r(32)(0),u=r(18),c=r(39),f=r(117),a=r(138),s=r(4),l=r(51),h=r(51),p=!i.ActiveXObject&&"ActiveXObject"in i,v=c.getWeak,y=Object.isExtensible,d=a.ufstore,g=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},x={get:function(t){if(s(t)){var n=v(t);return!0===n?d(l(this,"WeakMap")).get(t):n?n[this._i]:void 0}},set:function(t,n){return a.def(l(this,"WeakMap"),t,n)}},b=t.exports=r(76)("WeakMap",g,x,a,!0,!0);h&&p&&(f((e=a.getConstructor(g,"WeakMap")).prototype,x),c.NEED=!0,o(["delete","has","get","set"],(function(t){var n=b.prototype,r=n[t];u(n,t,(function(n,i){if(s(n)&&!y(n)){this._f||(this._f=new e);var o=this._f[t](n,i);return"set"==t?this:o}return r.call(this,n,i)}))})))},function(t,n,r){"use strict";var e=r(138),i=r(51);r(76)("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return e.def(i(this,"WeakSet"),t,!0)}},e,!1,!0)},function(t,n,r){"use strict";var e=r(0),i=r(77),o=r(104),u=r(3),c=r(46),f=r(10),a=r(4),s=r(1).ArrayBuffer,l=r(63),h=o.ArrayBuffer,p=o.DataView,v=i.ABV&&s.isView,y=h.prototype.slice,d=i.VIEW;e(e.G+e.W+e.F*(s!==h),{ArrayBuffer:h}),e(e.S+e.F*!i.CONSTR,"ArrayBuffer",{isView:function(t){return v&&v(t)||a(t)&&d in t}}),e(e.P+e.U+e.F*r(2)((function(){return!new h(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(t,n){if(void 0!==y&&void 0===n)return y.call(u(this),t);for(var r=u(this).byteLength,e=c(t,r),i=c(void 0===n?r:n,r),o=new(l(this,h))(f(i-e)),a=new p(this),s=new p(o),v=0;e=n.length)return{value:void 0,done:!0}}while(!((t=n[this._i++])in this._t));return{value:t,done:!1}})),e(e.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,n,r){var e=r(30),i=r(49),o=r(21),u=r(0),c=r(4),f=r(3);u(u.S,"Reflect",{get:function t(n,r){var u,a,s=arguments.length<3?n:arguments[2];return f(n)===s?n[r]:(u=e.f(n,r))?o(u,"value")?u.value:void 0!==u.get?u.get.call(s):void 0:c(a=i(n))?t(a,r,s):void 0}})},function(t,n,r){var e=r(30),i=r(0),o=r(3);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,n){return e.f(o(t),n)}})},function(t,n,r){var e=r(0),i=r(49),o=r(3);e(e.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,n,r){var e=r(0);e(e.S,"Reflect",{has:function(t,n){return n in t}})},function(t,n,r){var e=r(0),i=r(3),o=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,n,r){var e=r(0);e(e.S,"Reflect",{ownKeys:r(140)})},function(t,n,r){var e=r(0),i=r(3),o=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,n,r){var e=r(13),i=r(30),o=r(49),u=r(21),c=r(0),f=r(42),a=r(3),s=r(4);c(c.S,"Reflect",{set:function t(n,r,c){var l,h,p=arguments.length<4?n:arguments[3],v=i.f(a(n),r);if(!v){if(s(h=o(n)))return t(h,r,c,p);v=f(0)}if(u(v,"value")){if(!1===v.writable||!s(p))return!1;if(l=i.f(p,r)){if(l.get||l.set||!1===l.writable)return!1;l.value=c,e.f(p,r,l)}else e.f(p,r,f(0,c));return!0}return void 0!==v.set&&(v.set.call(p,c),!0)}})},function(t,n,r){var e=r(0),i=r(85);i&&e(e.S,"Reflect",{setPrototypeOf:function(t,n){i.check(t,n);try{return i.set(t,n),!0}catch(t){return!1}}})},function(t,n,r){r(295),t.exports=r(11).Array.includes},function(t,n,r){"use strict";var e=r(0),i=r(67)(!0);e(e.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(50)("includes")},function(t,n,r){r(297),t.exports=r(11).Array.flatMap},function(t,n,r){"use strict";var e=r(0),i=r(298),o=r(16),u=r(10),c=r(28),f=r(128);e(e.P,"Array",{flatMap:function(t){var n,r,e=o(this);return c(t),n=u(e.length),r=f(e,0),i(r,e,e,n,0,1,t,arguments[1]),r}}),r(50)("flatMap")},function(t,n,r){"use strict";var e=r(69),i=r(4),o=r(10),u=r(27),c=r(8)("isConcatSpreadable");t.exports=function t(n,r,f,a,s,l,h,p){for(var v,y,d=s,g=0,x=!!h&&u(h,p,3);g0)d=t(n,r,v,o(v.length),d,l-1)-1;else{if(d>=9007199254740991)throw TypeError();n[d]=v}d++}g++}return d}},function(t,n,r){r(300),t.exports=r(11).String.padStart},function(t,n,r){"use strict";var e=r(0),i=r(141),o=r(75),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,n,r){r(302),t.exports=r(11).String.padEnd},function(t,n,r){"use strict";var e=r(0),i=r(141),o=r(75),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,n,r){r(304),t.exports=r(11).String.trimLeft},function(t,n,r){"use strict";r(54)("trimLeft",(function(t){return function(){return t(this,1)}}),"trimStart")},function(t,n,r){r(306),t.exports=r(11).String.trimRight},function(t,n,r){"use strict";r(54)("trimRight",(function(t){return function(){return t(this,2)}}),"trimEnd")},function(t,n,r){r(308),t.exports=r(81).f("asyncIterator")},function(t,n,r){r(113)("asyncIterator")},function(t,n,r){r(310),t.exports=r(11).Object.getOwnPropertyDescriptors},function(t,n,r){var e=r(0),i=r(140),o=r(23),u=r(30),c=r(97);e(e.S,"Object",{getOwnPropertyDescriptors:function(t){for(var n,r,e=o(t),f=u.f,a=i(e),s={},l=0;a.length>l;)void 0!==(r=f(e,n=a[l++]))&&c(s,n,r);return s}})},function(t,n,r){r(312),t.exports=r(11).Object.values},function(t,n,r){var e=r(0),i=r(142)(!1);e(e.S,"Object",{values:function(t){return i(t)}})},function(t,n,r){r(314),t.exports=r(11).Object.entries},function(t,n,r){var e=r(0),i=r(142)(!0);e(e.S,"Object",{entries:function(t){return i(t)}})},function(t,n,r){"use strict";r(134),r(316),t.exports=r(11).Promise.finally},function(t,n,r){"use strict";var e=r(0),i=r(11),o=r(1),u=r(63),c=r(136);e(e.P+e.R,"Promise",{finally:function(t){var n=u(this,i.Promise||o.Promise),r="function"==typeof t;return this.then(r?function(r){return c(n,t()).then((function(){return r}))}:t,r?function(r){return c(n,t()).then((function(){throw r}))}:t)}})},function(t,n,r){r(318),r(319),r(320),t.exports=r(11)},function(t,n,r){var e=r(1),i=r(0),o=r(75),u=[].slice,c=/MSIE .\./.test(o),f=function(t){return function(n,r){var e=arguments.length>2,i=!!e&&u.call(arguments,2);return t(e?function(){("function"==typeof n?n:Function(n)).apply(this,i)}:n,r)}};i(i.G+i.B+i.F*c,{setTimeout:f(e.setTimeout),setInterval:f(e.setInterval)})},function(t,n,r){var e=r(0),i=r(103);e(e.G+e.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,n,r){for(var e=r(100),i=r(45),o=r(18),u=r(1),c=r(22),f=r(55),a=r(8),s=a("iterator"),l=a("toStringTag"),h=f.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(p),y=0;y0?i(e(t),9007199254740991):0}},,function(t,n){var r=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},function(t,n,r){t.exports=!r(5)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(6),i=r(113),o=r(38),u=Object.defineProperty;n.f=r(14)?Object.defineProperty:function(t,n,r){if(e(t),n=o(n,!0),e(r),i)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[n]=r.value),t}},,function(t,n,r){var e=r(35);t.exports=function(t){return Object(e(t))}},,,function(t,n,r){var e=r(4),i=r(23),o=r(22),u=r(43)("src"),c=r(155),f=(""+c).split("toString");r(13).inspectSource=function(t){return c.call(t)},(t.exports=function(t,n,r,c){var a="function"==typeof r;a&&(o(r,"name")||i(r,"name",n)),t[n]!==r&&(a&&(o(r,u)||i(r,u,t[n]?""+t[n]:f.join(String(n)))),t===e?t[n]=r:c?t[n]?t[n]=r:i(t,n,r):(delete t[n],i(t,n,r)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[u]||c.call(this)}))},function(t,n,r){var e=r(0),i=r(5),o=r(35),u=/"/g,c=function(t,n,r,e){var i=String(o(t)),c="<"+n;return""!==r&&(c+=" "+r+'="'+String(e).replace(u,""")+'"'),c+">"+i+""};t.exports=function(t,n){var r={};r[t]=n(c),e(e.P+e.F*i((function(){var n=""[t]('"');return n!==n.toLowerCase()||n.split('"').length>3})),"String",r)}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(15),i=r(42);t.exports=r(14)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){var e=r(61),i=r(35);t.exports=function(t){return e(i(t))}},,function(t,n,r){"use strict";var e=r(5);t.exports=function(t,n){return!!t&&e((function(){n?t.call(null,(function(){}),1):t.call(null)}))}},function(t,n,r){var e=r(28);t.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(62),i=r(42),o=r(24),u=r(38),c=r(22),f=r(113),a=Object.getOwnPropertyDescriptor;n.f=r(14)?a:function(t,n){if(t=o(t),n=u(n,!0),f)try{return a(t,n)}catch(t){}if(c(t,n))return i(!e.f.call(t,n),t[n])}},function(t,n,r){var e=r(0),i=r(13),o=r(5);t.exports=function(t,n){var r=(i.Object||{})[t]||Object[t],u={};u[t]=n(r),e(e.S+e.F*o((function(){r(1)})),"Object",u)}},function(t,n,r){var e=r(27),i=r(61),o=r(17),u=r(11),c=r(129);t.exports=function(t,n){var r=1==t,f=2==t,a=3==t,s=4==t,l=6==t,h=5==t||l,p=n||c;return function(n,c,v){for(var y,d,g=o(n),x=i(g),b=e(c,v,3),m=u(x.length),S=0,w=r?p(n,m):f?p(n,0):void 0;m>S;S++)if((h||S in x)&&(d=b(y=x[S],S,g),t))if(r)w[S]=d;else if(d)switch(t){case 3:return!0;case 5:return y;case 6:return S;case 2:w.push(y)}else if(s)return!1;return l?-1:a||s?s:w}}},,function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){"use strict";if(r(14)){var e=r(44),i=r(4),o=r(5),u=r(0),c=r(78),f=r(105),a=r(27),s=r(57),l=r(42),h=r(23),p=r(58),v=r(29),y=r(11),d=r(140),g=r(46),x=r(38),b=r(22),m=r(63),S=r(7),w=r(17),_=r(97),E=r(47),O=r(49),P=r(48).f,F=r(99),M=r(43),A=r(8),j=r(32),I=r(68),N=r(64),T=r(101),L=r(55),R=r(71),k=r(56),C=r(100),D=r(131),W=r(15),G=r(30),U=W.f,B=G.f,V=i.RangeError,z=i.TypeError,Y=i.Uint8Array,q=Array.prototype,$=f.ArrayBuffer,K=f.DataView,J=j(0),X=j(2),H=j(3),Z=j(4),Q=j(5),tt=j(6),nt=I(!0),rt=I(!1),et=T.values,it=T.keys,ot=T.entries,ut=q.lastIndexOf,ct=q.reduce,ft=q.reduceRight,at=q.join,st=q.sort,lt=q.slice,ht=q.toString,pt=q.toLocaleString,vt=A("iterator"),yt=A("toStringTag"),dt=M("typed_constructor"),gt=M("def_constructor"),xt=c.CONSTR,bt=c.TYPED,mt=c.VIEW,St=j(1,(function(t,n){return Pt(N(t,t[gt]),n)})),wt=o((function(){return 1===new Y(new Uint16Array([1]).buffer)[0]})),_t=!!Y&&!!Y.prototype.set&&o((function(){new Y(1).set({})})),Et=function(t,n){var r=v(t);if(r<0||r%n)throw V("Wrong offset!");return r},Ot=function(t){if(S(t)&&bt in t)return t;throw z(t+" is not a typed array!")},Pt=function(t,n){if(!S(t)||!(dt in t))throw z("It is not a typed array constructor!");return new t(n)},Ft=function(t,n){return Mt(N(t,t[gt]),n)},Mt=function(t,n){for(var r=0,e=n.length,i=Pt(t,e);e>r;)i[r]=n[r++];return i},At=function(t,n,r){U(t,n,{get:function(){return this._d[r]}})},jt=function(t){var n,r,e,i,o,u,c=w(t),f=arguments.length,s=f>1?arguments[1]:void 0,l=void 0!==s,h=F(c);if(null!=h&&!_(h)){for(u=h.call(c),e=[],n=0;!(o=u.next()).done;n++)e.push(o.value);c=e}for(l&&f>2&&(s=a(s,arguments[2],2)),n=0,r=y(c.length),i=Pt(this,r);r>n;n++)i[n]=l?s(c[n],n):c[n];return i},It=function(){for(var t=0,n=arguments.length,r=Pt(this,n);n>t;)r[t]=arguments[t++];return r},Nt=!!Y&&o((function(){pt.call(new Y(1))})),Tt=function(){return pt.apply(Nt?lt.call(Ot(this)):Ot(this),arguments)},Lt={copyWithin:function(t,n){return D.call(Ot(this),t,n,arguments.length>2?arguments[2]:void 0)},every:function(t){return Z(Ot(this),t,arguments.length>1?arguments[1]:void 0)},fill:function(t){return C.apply(Ot(this),arguments)},filter:function(t){return Ft(this,X(Ot(this),t,arguments.length>1?arguments[1]:void 0))},find:function(t){return Q(Ot(this),t,arguments.length>1?arguments[1]:void 0)},findIndex:function(t){return tt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},forEach:function(t){J(Ot(this),t,arguments.length>1?arguments[1]:void 0)},indexOf:function(t){return rt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},includes:function(t){return nt(Ot(this),t,arguments.length>1?arguments[1]:void 0)},join:function(t){return at.apply(Ot(this),arguments)},lastIndexOf:function(t){return ut.apply(Ot(this),arguments)},map:function(t){return St(Ot(this),t,arguments.length>1?arguments[1]:void 0)},reduce:function(t){return ct.apply(Ot(this),arguments)},reduceRight:function(t){return ft.apply(Ot(this),arguments)},reverse:function(){for(var t,n=Ot(this).length,r=Math.floor(n/2),e=0;e1?arguments[1]:void 0)},sort:function(t){return st.call(Ot(this),t)},subarray:function(t,n){var r=Ot(this),e=r.length,i=g(t,e);return new(N(r,r[gt]))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,y((void 0===n?e:g(n,e))-i))}},Rt=function(t,n){return Ft(this,lt.call(Ot(this),t,n))},kt=function(t){Ot(this);var n=Et(arguments[1],1),r=this.length,e=w(t),i=y(e.length),o=0;if(i+n>r)throw V("Wrong length!");for(;o255?255:255&e),i.v[p](r*n+i.o,e,wt)}(this,r,t)},enumerable:!0})};b?(v=r((function(t,r,e,i){s(t,v,a,"_d");var o,u,c,f,l=0,p=0;if(S(r)){if(!(r instanceof $||"ArrayBuffer"==(f=m(r))||"SharedArrayBuffer"==f))return bt in r?Mt(v,r):jt.call(v,r);o=r,p=Et(e,n);var g=r.byteLength;if(void 0===i){if(g%n)throw V("Wrong length!");if((u=g-p)<0)throw V("Wrong length!")}else if((u=y(i)*n)+p>g)throw V("Wrong length!");c=u/n}else c=d(r),o=new $(u=c*n);for(h(t,"_d",{b:o,o:p,l:u,e:c,v:new K(o)});ldocument.F=Object<\/script>"),t.close(),f=t.F;e--;)delete f.prototype[o[e]];return f()};t.exports=Object.create||function(t,n){var r;return null!==t?(c.prototype=e(t),r=new c,c.prototype=null,r[u]=t):r=f(),void 0===n?r:i(r,n)}},function(t,n,r){var e=r(115),i=r(84).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,i)}},function(t,n,r){var e=r(22),i=r(17),o=r(83)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),e(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},function(t,n,r){var e=r(8)("unscopables"),i=Array.prototype;null==i[e]&&r(23)(i,e,{}),t.exports=function(t){i[e][t]=!0}},function(t,n,r){var e=r(7);t.exports=function(t,n){if(!e(t)||t._t!==n)throw TypeError("Incompatible receiver, "+n+" required!");return t}},,function(t,n,r){var e=r(15).f,i=r(22),o=r(8)("toStringTag");t.exports=function(t,n,r){t&&!i(t=r?t:t.prototype,o)&&e(t,o,{configurable:!0,value:n})}},function(t,n,r){var e=r(0),i=r(35),o=r(5),u=r(87),c="["+u+"]",f=RegExp("^"+c+c+"*"),a=RegExp(c+c+"*$"),s=function(t,n,r){var i={},c=o((function(){return!!u[t]()||"​…"!="​…"[t]()})),f=i[t]=c?n(l):u[t];r&&(i[r]=f),e(e.P+e.F*c,"String",i)},l=s.trim=function(t,n){return t=String(i(t)),1&n&&(t=t.replace(f,"")),2&n&&(t=t.replace(a,"")),t};t.exports=s},function(t,n){t.exports={}},function(t,n,r){"use strict";var e=r(4),i=r(15),o=r(14),u=r(8)("species");t.exports=function(t){var n=e[t];o&&n&&!n[u]&&i.f(n,u,{configurable:!0,get:function(){return this}})}},function(t,n){t.exports=function(t,n,r,e){if(!(t instanceof n)||void 0!==e&&e in t)throw TypeError(r+": incorrect invocation!");return t}},function(t,n,r){var e=r(20);t.exports=function(t,n,r){for(var i in n)e(t,i,n[i],r);return t}},,,function(t,n,r){var e=r(34);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},function(t,n){n.f={}.propertyIsEnumerable},function(t,n,r){var e=r(34),i=r(8)("toStringTag"),o="Arguments"==e(function(){return arguments}());t.exports=function(t){var n,r,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,n){try{return t[n]}catch(t){}}(n=Object(t),i))?r:o?e(n):"Object"==(u=e(n))&&"function"==typeof n.callee?"Arguments":u}},function(t,n,r){var e=r(6),i=r(28),o=r(8)("species");t.exports=function(t,n){var r,u=e(t).constructor;return void 0===u||null==(r=e(u)[o])?n:i(r)}},function(t,n,r){var e=function(t){"use strict";var n=Object.prototype,r=n.hasOwnProperty,e="function"==typeof Symbol?Symbol:{},i=e.iterator||"@@iterator",o=e.asyncIterator||"@@asyncIterator",u=e.toStringTag||"@@toStringTag";function c(t,n,r){return Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[n]}try{c({},"")}catch(t){c=function(t,n,r){return t[n]=r}}function f(t,n,r,e){var i=n&&n.prototype instanceof l?n:l,o=Object.create(i.prototype),u=new _(e||[]);return o._invoke=function(t,n,r){var e="suspendedStart";return function(i,o){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var u=r.delegate;if(u){var c=m(u,r);if(c){if(c===s)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===e)throw e="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);e="executing";var f=a(t,n,r);if("normal"===f.type){if(e=r.done?"completed":"suspendedYield",f.arg===s)continue;return{value:f.arg,done:r.done}}"throw"===f.type&&(e="completed",r.method="throw",r.arg=f.arg)}}}(t,r,u),o}function a(t,n,r){try{return{type:"normal",arg:t.call(n,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var s={};function l(){}function h(){}function p(){}var v={};c(v,i,(function(){return this}));var y=Object.getPrototypeOf,d=y&&y(y(E([])));d&&d!==n&&r.call(d,i)&&(v=d);var g=p.prototype=l.prototype=Object.create(v);function x(t){["next","throw","return"].forEach((function(n){c(t,n,(function(t){return this._invoke(n,t)}))}))}function b(t,n){var e;this._invoke=function(i,o){function u(){return new n((function(e,u){!function e(i,o,u,c){var f=a(t[i],t,o);if("throw"!==f.type){var s=f.arg,l=s.value;return l&&"object"==typeof l&&r.call(l,"__await")?n.resolve(l.__await).then((function(t){e("next",t,u,c)}),(function(t){e("throw",t,u,c)})):n.resolve(l).then((function(t){s.value=t,u(s)}),(function(t){return e("throw",t,u,c)}))}c(f.arg)}(i,o,e,u)}))}return e=e?e.then(u,u):u()}}function m(t,n){var r=t.iterator[n.method];if(void 0===r){if(n.delegate=null,"throw"===n.method){if(t.iterator.return&&(n.method="return",n.arg=void 0,m(t,n),"throw"===n.method))return s;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var e=a(r,t.iterator,n.arg);if("throw"===e.type)return n.method="throw",n.arg=e.arg,n.delegate=null,s;var i=e.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,s):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,s)}function S(t){var n={tryLoc:t[0]};1 in t&&(n.catchLoc=t[1]),2 in t&&(n.finallyLoc=t[2],n.afterLoc=t[3]),this.tryEntries.push(n)}function w(t){var n=t.completion||{};n.type="normal",delete n.arg,t.completion=n}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function E(t){if(t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var e=-1,o=function n(){for(;++e=0;--i){var o=this.tryEntries[i],u=o.completion;if("root"===o.tryLoc)return e("end");if(o.tryLoc<=this.prev){var c=r.call(o,"catchLoc"),f=r.call(o,"finallyLoc");if(c&&f){if(this.prev=0;--e){var i=this.tryEntries[e];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--n){var r=this.tryEntries[n];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),w(r),s}},catch:function(t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc===t){var e=r.completion;if("throw"===e.type){var i=e.arg;w(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:E(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=void 0),s}},t}(t.exports);try{regeneratorRuntime=e}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=e:Function("r","regeneratorRuntime = r")(e)}},,function(t,n,r){var e=r(13),i=r(4),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:e.version,mode:r(44)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(t,n,r){var e=r(24),i=r(11),o=r(46);t.exports=function(t){return function(n,r,u){var c,f=e(n),a=i(f.length),s=o(u,a);if(t&&r!=r){for(;a>s;)if((c=f[s++])!=c)return!0}else for(;a>s;s++)if((t||s in f)&&f[s]===r)return t||s||0;return!t&&-1}}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,r){var e=r(34);t.exports=Array.isArray||function(t){return"Array"==e(t)}},function(t,n,r){var e=r(8)("iterator"),i=!1;try{var o=[7][e]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,n){if(!n&&!i)return!1;var r=!1;try{var o=[7],u=o[e]();u.next=function(){return{done:r=!0}},o[e]=function(){return u},t(o)}catch(t){}return r}},function(t,n,r){"use strict";var e=r(6);t.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},function(t,n,r){"use strict";var e=r(63),i=RegExp.prototype.exec;t.exports=function(t,n){var r=t.exec;if("function"==typeof r){var o=r.call(t,n);if("object"!=typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==e(t))throw new TypeError("RegExp#exec called on incompatible receiver");return i.call(t,n)}},function(t,n,r){"use strict";r(133);var e=r(20),i=r(23),o=r(5),u=r(35),c=r(8),f=r(102),a=c("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),l=function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();t.exports=function(t,n,r){var h=c(t),p=!o((function(){var n={};return n[h]=function(){return 7},7!=""[t](n)})),v=p?!o((function(){var n=!1,r=/a/;return r.exec=function(){return n=!0,null},"split"===t&&(r.constructor={},r.constructor[a]=function(){return r}),r[h](""),!n})):void 0;if(!p||!v||"replace"===t&&!s||"split"===t&&!l){var y=/./[h],d=r(u,h,""[t],(function(t,n,r,e,i){return n.exec===f?p&&!i?{done:!0,value:y.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}})),g=d[0],x=d[1];e(String.prototype,t,g),i(RegExp.prototype,h,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)})}}},function(t,n,r){var e=r(27),i=r(128),o=r(97),u=r(6),c=r(11),f=r(99),a={},s={};(n=t.exports=function(t,n,r,l,h){var p,v,y,d,g=h?function(){return t}:f(t),x=e(r,l,n?2:1),b=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(o(g)){for(p=c(t.length);p>b;b++)if((d=n?x(u(v=t[b])[0],v[1]):x(t[b]))===a||d===s)return d}else for(y=g.call(t);!(v=y.next()).done;)if((d=i(y,x,v.value,n))===a||d===s)return d}).BREAK=a,n.RETURN=s},function(t,n,r){var e=r(4).navigator;t.exports=e&&e.userAgent||""},function(t,n,r){"use strict";var e=r(4),i=r(0),o=r(20),u=r(58),c=r(39),f=r(75),a=r(57),s=r(7),l=r(5),h=r(71),p=r(53),v=r(88);t.exports=function(t,n,r,y,d,g){var x=e[t],b=x,m=d?"set":"add",S=b&&b.prototype,w={},_=function(t){var n=S[t];o(S,t,"delete"==t||"has"==t?function(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"get"==t?function(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function(t){return n.call(this,0===t?0:t),this}:function(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof b&&(g||S.forEach&&!l((function(){(new b).entries().next()})))){var E=new b,O=E[m](g?{}:-0,1)!=E,P=l((function(){E.has(1)})),F=h((function(t){new b(t)})),M=!g&&l((function(){for(var t=new b,n=5;n--;)t[m](n,n);return!t.has(-0)}));F||((b=n((function(n,r){a(n,b,t);var e=v(new x,n,b);return null!=r&&f(r,d,e[m],e),e}))).prototype=S,S.constructor=b),(P||M)&&(_("delete"),_("has"),d&&_("get")),(M||O)&&_(m),g&&S.clear&&delete S.clear}else b=y.getConstructor(n,t,d,m),u(b.prototype,r),c.NEED=!0;return p(b,t),w[t]=b,i(i.G+i.W+i.F*(b!=x),w),g||y.setStrong(b,t,d),b}},function(t,n,r){for(var e,i=r(4),o=r(23),u=r(43),c=u("typed_array"),f=u("view"),a=!(!i.ArrayBuffer||!i.DataView),s=a,l=0,h="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l<9;)(e=i[h[l++]])?(o(e.prototype,c,!0),o(e.prototype,f,!0)):s=!1;t.exports={ABV:a,CONSTR:s,TYPED:c,VIEW:f}},,,function(t,n,r){var e=r(7),i=r(4).document,o=e(i)&&e(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,n,r){n.f=r(8)},function(t,n,r){var e=r(67)("keys"),i=r(43);t.exports=function(t){return e[t]||(e[t]=i(t))}},function(t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,n,r){var e=r(4).document;t.exports=e&&e.documentElement},function(t,n,r){var e=r(7),i=r(6),o=function(t,n){if(i(t),!e(n)&&null!==n)throw TypeError(n+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,e){try{(e=r(27)(Function.call,r(30).f(Object.prototype,"__proto__").set,2))(t,[]),n=!(t instanceof Array)}catch(t){n=!0}return function(t,r){return o(t,r),n?t.__proto__=r:e(t,r),t}}({},!1):void 0),check:o}},function(t,n){t.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(t,n,r){var e=r(7),i=r(86).set;t.exports=function(t,n,r){var o,u=n.constructor;return u!==r&&"function"==typeof u&&(o=u.prototype)!==r.prototype&&e(o)&&i&&i(t,o),t}},function(t,n,r){"use strict";var e=r(29),i=r(35);t.exports=function(t){var n=String(i(this)),r="",o=e(t);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(n+=n))1&o&&(r+=n);return r}},function(t,n){t.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},function(t,n){var r=Math.expm1;t.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:r},function(t,n,r){var e=r(29),i=r(35);t.exports=function(t){return function(n,r){var o,u,c=String(i(n)),f=e(r),a=c.length;return f<0||f>=a?t?"":void 0:(o=c.charCodeAt(f))<55296||o>56319||f+1===a||(u=c.charCodeAt(f+1))<56320||u>57343?t?c.charAt(f):o:t?c.slice(f,f+2):u-56320+(o-55296<<10)+65536}}},function(t,n,r){"use strict";var e=r(44),i=r(0),o=r(20),u=r(23),c=r(55),f=r(127),a=r(53),s=r(49),l=r(8)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,n,r,v,y,d,g){f(r,n,v);var x,b,m,S=function(t){if(!h&&t in O)return O[t];switch(t){case"keys":case"values":return function(){return new r(this,t)}}return function(){return new r(this,t)}},w=n+" Iterator",_="values"==y,E=!1,O=t.prototype,P=O[l]||O["@@iterator"]||y&&O[y],F=P||S(y),M=y?_?S("entries"):F:void 0,A="Array"==n&&O.entries||P;if(A&&(m=s(A.call(new t)))!==Object.prototype&&m.next&&(a(m,w,!0),e||"function"==typeof m[l]||u(m,l,p)),_&&P&&"values"!==P.name&&(E=!0,F=function(){return P.call(this)}),e&&!g||!h&&!E&&O[l]||u(O,l,F),c[n]=F,c[w]=p,y)if(x={values:_?F:S("values"),keys:d?F:S("keys"),entries:M},g)for(b in x)b in O||o(O,b,x[b]);else i(i.P+i.F*(h||E),n,x);return x}},function(t,n,r){var e=r(95),i=r(35);t.exports=function(t,n,r){if(e(n))throw TypeError("String#"+r+" doesn't accept regex!");return String(i(t))}},function(t,n,r){var e=r(7),i=r(34),o=r(8)("match");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},function(t,n,r){var e=r(8)("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},function(t,n,r){var e=r(55),i=r(8)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},function(t,n,r){"use strict";var e=r(15),i=r(42);t.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},function(t,n,r){var e=r(63),i=r(8)("iterator"),o=r(55);t.exports=r(13).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[e(t)]}},function(t,n,r){"use strict";var e=r(17),i=r(46),o=r(11);t.exports=function(t){for(var n=e(this),r=o(n.length),u=arguments.length,c=i(u>1?arguments[1]:void 0,r),f=u>2?arguments[2]:void 0,a=void 0===f?r:i(f,r);a>c;)n[c++]=t;return n}},function(t,n,r){"use strict";var e=r(50),i=r(132),o=r(55),u=r(24);t.exports=r(93)(Array,"Array",(function(t,n){this._t=u(t),this._i=0,this._k=n}),(function(){var t=this._t,n=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):i(0,"keys"==n?r:"values"==n?t[r]:[r,t[r]])}),"values"),o.Arguments=o.Array,e("keys"),e("values"),e("entries")},function(t,n,r){"use strict";var e,i,o=r(72),u=RegExp.prototype.exec,c=String.prototype.replace,f=u,a=(e=/a/,i=/b*/g,u.call(e,"a"),u.call(i,"a"),0!==e.lastIndex||0!==i.lastIndex),s=void 0!==/()??/.exec("")[1];(a||s)&&(f=function(t){var n,r,e,i,f=this;return s&&(r=new RegExp("^"+f.source+"$(?!\\s)",o.call(f))),a&&(n=f.lastIndex),e=u.call(f,t),a&&e&&(f.lastIndex=f.global?e.index+e[0].length:n),s&&e&&e.length>1&&c.call(e[0],r,(function(){for(i=1;ir;)n.push(arguments[r++]);return g[++d]=function(){c("function"==typeof t?t:Function(t),n)},e(d),d},p=function(t){delete g[t]},"process"==r(34)(l)?e=function(t){l.nextTick(u(x,t,1))}:y&&y.now?e=function(t){y.now(u(x,t,1))}:v?(o=(i=new v).port2,i.port1.onmessage=b,e=u(o.postMessage,o,1)):s.addEventListener&&"function"==typeof postMessage&&!s.importScripts?(e=function(t){s.postMessage(t+"","*")},s.addEventListener("message",b,!1)):e="onreadystatechange"in a("script")?function(t){f.appendChild(a("script")).onreadystatechange=function(){f.removeChild(this),x.call(t)}}:function(t){setTimeout(u(x,t,1),0)}),t.exports={set:h,clear:p}},function(t,n,r){"use strict";var e=r(4),i=r(14),o=r(44),u=r(78),c=r(23),f=r(58),a=r(5),s=r(57),l=r(29),h=r(11),p=r(140),v=r(48).f,y=r(15).f,d=r(100),g=r(53),x=e.ArrayBuffer,b=e.DataView,m=e.Math,S=e.RangeError,w=e.Infinity,_=x,E=m.abs,O=m.pow,P=m.floor,F=m.log,M=m.LN2,A=i?"_b":"buffer",j=i?"_l":"byteLength",I=i?"_o":"byteOffset";function N(t,n,r){var e,i,o,u=new Array(r),c=8*r-n-1,f=(1<>1,s=23===n?O(2,-24)-O(2,-77):0,l=0,h=t<0||0===t&&1/t<0?1:0;for((t=E(t))!=t||t===w?(i=t!=t?1:0,e=f):(e=P(F(t)/M),t*(o=O(2,-e))<1&&(e--,o*=2),(t+=e+a>=1?s/o:s*O(2,1-a))*o>=2&&(e++,o/=2),e+a>=f?(i=0,e=f):e+a>=1?(i=(t*o-1)*O(2,n),e+=a):(i=t*O(2,a-1)*O(2,n),e=0));n>=8;u[l++]=255&i,i/=256,n-=8);for(e=e<0;u[l++]=255&e,e/=256,c-=8);return u[--l]|=128*h,u}function T(t,n,r){var e,i=8*r-n-1,o=(1<>1,c=i-7,f=r-1,a=t[f--],s=127&a;for(a>>=7;c>0;s=256*s+t[f],f--,c-=8);for(e=s&(1<<-c)-1,s>>=-c,c+=n;c>0;e=256*e+t[f],f--,c-=8);if(0===s)s=1-u;else{if(s===o)return e?NaN:a?-w:w;e+=O(2,n),s-=u}return(a?-1:1)*e*O(2,s-n)}function L(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]}function R(t){return[255&t]}function k(t){return[255&t,t>>8&255]}function C(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]}function D(t){return N(t,52,8)}function W(t){return N(t,23,4)}function G(t,n,r){y(t.prototype,n,{get:function(){return this[r]}})}function U(t,n,r,e){var i=p(+r);if(i+n>t[j])throw S("Wrong index!");var o=t[A]._b,u=i+t[I],c=o.slice(u,u+n);return e?c:c.reverse()}function B(t,n,r,e,i,o){var u=p(+r);if(u+n>t[j])throw S("Wrong index!");for(var c=t[A]._b,f=u+t[I],a=e(+i),s=0;sq;)(V=Y[q++])in x||c(x,V,_[V]);o||(z.constructor=x)}var $=new b(new x(2)),K=b.prototype.setInt8;$.setInt8(0,2147483648),$.setInt8(1,2147483649),!$.getInt8(0)&&$.getInt8(1)||f(b.prototype,{setInt8:function(t,n){K.call(this,t,n<<24>>24)},setUint8:function(t,n){K.call(this,t,n<<24>>24)}},!0)}else x=function(t){s(this,x,"ArrayBuffer");var n=p(t);this._b=d.call(new Array(n),0),this[j]=n},b=function(t,n,r){s(this,b,"DataView"),s(t,x,"DataView");var e=t[j],i=l(n);if(i<0||i>e)throw S("Wrong offset!");if(i+(r=void 0===r?e-i:h(r))>e)throw S("Wrong length!");this[A]=t,this[I]=i,this[j]=r},i&&(G(x,"byteLength","_l"),G(b,"buffer","_b"),G(b,"byteLength","_l"),G(b,"byteOffset","_o")),f(b.prototype,{getInt8:function(t){return U(this,1,t)[0]<<24>>24},getUint8:function(t){return U(this,1,t)[0]},getInt16:function(t){var n=U(this,2,t,arguments[1]);return(n[1]<<8|n[0])<<16>>16},getUint16:function(t){var n=U(this,2,t,arguments[1]);return n[1]<<8|n[0]},getInt32:function(t){return L(U(this,4,t,arguments[1]))},getUint32:function(t){return L(U(this,4,t,arguments[1]))>>>0},getFloat32:function(t){return T(U(this,4,t,arguments[1]),23,4)},getFloat64:function(t){return T(U(this,8,t,arguments[1]),52,8)},setInt8:function(t,n){B(this,1,t,R,n)},setUint8:function(t,n){B(this,1,t,R,n)},setInt16:function(t,n){B(this,2,t,k,n,arguments[2])},setUint16:function(t,n){B(this,2,t,k,n,arguments[2])},setInt32:function(t,n){B(this,4,t,C,n,arguments[2])},setUint32:function(t,n){B(this,4,t,C,n,arguments[2])},setFloat32:function(t,n){B(this,4,t,W,n,arguments[2])},setFloat64:function(t,n){B(this,8,t,D,n,arguments[2])}});g(x,"ArrayBuffer"),g(b,"DataView"),c(b.prototype,u.VIEW,!0),n.ArrayBuffer=x,n.DataView=b},function(t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,n){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,n,r){t.exports=!r(145)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},,,,,function(t,n,r){t.exports=!r(14)&&!r(5)((function(){return 7!=Object.defineProperty(r(81)("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(4),i=r(13),o=r(44),u=r(82),c=r(15).f;t.exports=function(t){var n=i.Symbol||(i.Symbol=o?{}:e.Symbol||{});"_"==t.charAt(0)||t in n||c(n,t,{value:u.f(t)})}},function(t,n,r){var e=r(22),i=r(24),o=r(68)(!1),u=r(83)("IE_PROTO");t.exports=function(t,n){var r,c=i(t),f=0,a=[];for(r in c)r!=u&&e(c,r)&&a.push(r);for(;n.length>f;)e(c,r=n[f++])&&(~o(a,r)||a.push(r));return a}},function(t,n,r){var e=r(15),i=r(6),o=r(45);t.exports=r(14)?Object.defineProperties:function(t,n){i(t);for(var r,u=o(n),c=u.length,f=0;c>f;)e.f(t,r=u[f++],n[r]);return t}},function(t,n,r){var e=r(24),i=r(48).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(e(t))}},function(t,n,r){"use strict";var e=r(14),i=r(45),o=r(69),u=r(62),c=r(17),f=r(61),a=Object.assign;t.exports=!a||r(5)((function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach((function(t){n[t]=t})),7!=a({},t)[r]||Object.keys(a({},n)).join("")!=e}))?function(t,n){for(var r=c(t),a=arguments.length,s=1,l=o.f,h=u.f;a>s;)for(var p,v=f(arguments[s++]),y=l?i(v).concat(l(v)):i(v),d=y.length,g=0;d>g;)p=y[g++],e&&!h.call(v,p)||(r[p]=v[p]);return r}:a},function(t,n){t.exports=Object.is||function(t,n){return t===n?0!==t||1/t==1/n:t!=t&&n!=n}},function(t,n,r){"use strict";var e=r(28),i=r(7),o=r(121),u=[].slice,c={},f=function(t,n,r){if(!(n in c)){for(var e=[],i=0;i>>0||(u.test(r)?16:10))}:e},function(t,n,r){var e=r(4).parseFloat,i=r(54).trim;t.exports=1/e(r(87)+"-0")!=-1/0?function(t){var n=i(String(t),3),r=e(n);return 0===r&&"-"==n.charAt(0)?-0:r}:e},function(t,n,r){var e=r(34);t.exports=function(t,n){if("number"!=typeof t&&"Number"!=e(t))throw TypeError(n);return+t}},function(t,n,r){var e=r(7),i=Math.floor;t.exports=function(t){return!e(t)&&isFinite(t)&&i(t)===t}},function(t,n){t.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},function(t,n,r){"use strict";var e=r(47),i=r(42),o=r(53),u={};r(23)(u,r(8)("iterator"),(function(){return this})),t.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},function(t,n,r){var e=r(6);t.exports=function(t,n,r,i){try{return i?n(e(r)[0],r[1]):n(r)}catch(n){var o=t.return;throw void 0!==o&&e(o.call(t)),n}}},function(t,n,r){var e=r(245);t.exports=function(t,n){return new(e(t))(n)}},function(t,n,r){var e=r(28),i=r(17),o=r(61),u=r(11);t.exports=function(t,n,r,c,f){e(n);var a=i(t),s=o(a),l=u(a.length),h=f?l-1:0,p=f?-1:1;if(r<2)for(;;){if(h in s){c=s[h],h+=p;break}if(h+=p,f?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;f?h>=0:l>h;h+=p)h in s&&(c=n(c,s[h],h,a));return c}},function(t,n,r){"use strict";var e=r(17),i=r(46),o=r(11);t.exports=[].copyWithin||function(t,n){var r=e(this),u=o(r.length),c=i(t,u),f=i(n,u),a=arguments.length>2?arguments[2]:void 0,s=Math.min((void 0===a?u:i(a,u))-f,u-c),l=1;for(f0;)f in r?r[c]=r[f]:delete r[c],c+=l,f+=l;return r}},function(t,n){t.exports=function(t,n){return{value:n,done:!!t}}},function(t,n,r){"use strict";var e=r(102);r(0)({target:"RegExp",proto:!0,forced:e!==/./.exec},{exec:e})},function(t,n,r){r(14)&&"g"!=/./g.flags&&r(15).f(RegExp.prototype,"flags",{configurable:!0,get:r(72)})},function(t,n,r){"use strict";var e,i,o,u,c=r(44),f=r(4),a=r(27),s=r(63),l=r(0),h=r(7),p=r(28),v=r(57),y=r(75),d=r(64),g=r(104).set,x=r(265)(),b=r(136),m=r(266),S=r(76),w=r(137),_=f.TypeError,E=f.process,O=E&&E.versions,P=O&&O.v8||"",F=f.Promise,M="process"==s(E),A=function(){},j=i=b.f,I=!!function(){try{var t=F.resolve(1),n=(t.constructor={})[r(8)("species")]=function(t){t(A,A)};return(M||"function"==typeof PromiseRejectionEvent)&&t.then(A)instanceof n&&0!==P.indexOf("6.6")&&-1===S.indexOf("Chrome/66")}catch(t){}}(),N=function(t){var n;return!(!h(t)||"function"!=typeof(n=t.then))&&n},T=function(t,n){if(!t._n){t._n=!0;var r=t._c;x((function(){for(var e=t._v,i=1==t._s,o=0,u=function(n){var r,o,u,c=i?n.ok:n.fail,f=n.resolve,a=n.reject,s=n.domain;try{c?(i||(2==t._h&&k(t),t._h=1),!0===c?r=e:(s&&s.enter(),r=c(e),s&&(s.exit(),u=!0)),r===n.promise?a(_("Promise-chain cycle")):(o=N(r))?o.call(r,f,a):f(r)):a(e)}catch(t){s&&!u&&s.exit(),a(t)}};r.length>o;)u(r[o++]);t._c=[],t._n=!1,n&&!t._h&&L(t)}))}},L=function(t){g.call(f,(function(){var n,r,e,i=t._v,o=R(t);if(o&&(n=m((function(){M?E.emit("unhandledRejection",i,t):(r=f.onunhandledrejection)?r({promise:t,reason:i}):(e=f.console)&&e.error&&e.error("Unhandled promise rejection",i)})),t._h=M||R(t)?2:1),t._a=void 0,o&&n.e)throw n.v}))},R=function(t){return 1!==t._h&&0===(t._a||t._c).length},k=function(t){g.call(f,(function(){var n;M?E.emit("rejectionHandled",t):(n=f.onrejectionhandled)&&n({promise:t,reason:t._v})}))},C=function(t){var n=this;n._d||(n._d=!0,(n=n._w||n)._v=t,n._s=2,n._a||(n._a=n._c.slice()),T(n,!0))},D=function(t){var n,r=this;if(!r._d){r._d=!0,r=r._w||r;try{if(r===t)throw _("Promise can't be resolved itself");(n=N(t))?x((function(){var e={_w:r,_d:!1};try{n.call(t,a(D,e,1),a(C,e,1))}catch(t){C.call(e,t)}})):(r._v=t,r._s=1,T(r,!1))}catch(t){C.call({_w:r,_d:!1},t)}}};I||(F=function(t){v(this,F,"Promise","_h"),p(t),e.call(this);try{t(a(D,this,1),a(C,this,1))}catch(t){C.call(this,t)}},(e=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=r(58)(F.prototype,{then:function(t,n){var r=j(d(this,F));return r.ok="function"!=typeof t||t,r.fail="function"==typeof n&&n,r.domain=M?E.domain:void 0,this._c.push(r),this._a&&this._a.push(r),this._s&&T(this,!1),r.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new e;this.promise=t,this.resolve=a(D,t,1),this.reject=a(C,t,1)},b.f=j=function(t){return t===F||t===u?new o(t):i(t)}),l(l.G+l.W+l.F*!I,{Promise:F}),r(53)(F,"Promise"),r(56)("Promise"),u=r(13).Promise,l(l.S+l.F*!I,"Promise",{reject:function(t){var n=j(this);return(0,n.reject)(t),n.promise}}),l(l.S+l.F*(c||!I),"Promise",{resolve:function(t){return w(c&&this===u?F:this,t)}}),l(l.S+l.F*!(I&&r(71)((function(t){F.all(t).catch(A)}))),"Promise",{all:function(t){var n=this,r=j(n),e=r.resolve,i=r.reject,o=m((function(){var r=[],o=0,u=1;y(t,!1,(function(t){var c=o++,f=!1;r.push(void 0),u++,n.resolve(t).then((function(t){f||(f=!0,r[c]=t,--u||e(r))}),i)})),--u||e(r)}));return o.e&&i(o.v),r.promise},race:function(t){var n=this,r=j(n),e=r.reject,i=m((function(){y(t,!1,(function(t){n.resolve(t).then(r.resolve,e)}))}));return i.e&&e(i.v),r.promise}})},function(t,n,r){"use strict";var e=r(28);function i(t){var n,r;this.promise=new t((function(t,e){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=t,r=e})),this.resolve=e(n),this.reject=e(r)}t.exports.f=function(t){return new i(t)}},function(t,n,r){var e=r(6),i=r(7),o=r(136);t.exports=function(t,n){if(e(t),i(n)&&n.constructor===t)return n;var r=o.f(t);return(0,r.resolve)(n),r.promise}},function(t,n,r){"use strict";var e=r(15).f,i=r(47),o=r(58),u=r(27),c=r(57),f=r(75),a=r(93),s=r(132),l=r(56),h=r(14),p=r(39).fastKey,v=r(51),y=h?"_s":"size",d=function(t,n){var r,e=p(n);if("F"!==e)return t._i[e];for(r=t._f;r;r=r.n)if(r.k==n)return r};t.exports={getConstructor:function(t,n,r,a){var s=t((function(t,e){c(t,s,n,"_i"),t._t=n,t._i=i(null),t._f=void 0,t._l=void 0,t[y]=0,null!=e&&f(e,r,t[a],t)}));return o(s.prototype,{clear:function(){for(var t=v(this,n),r=t._i,e=t._f;e;e=e.n)e.r=!0,e.p&&(e.p=e.p.n=void 0),delete r[e.i];t._f=t._l=void 0,t[y]=0},delete:function(t){var r=v(this,n),e=d(r,t);if(e){var i=e.n,o=e.p;delete r._i[e.i],e.r=!0,o&&(o.n=i),i&&(i.p=o),r._f==e&&(r._f=i),r._l==e&&(r._l=o),r[y]--}return!!e},forEach:function(t){v(this,n);for(var r,e=u(t,arguments.length>1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(e(r.v,r.k,this);r&&r.r;)r=r.p},has:function(t){return!!d(v(this,n),t)}}),h&&e(s.prototype,"size",{get:function(){return v(this,n)[y]}}),s},def:function(t,n,r){var e,i,o=d(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[y]++,"F"!==i&&(t._i[i]=o)),t},getEntry:d,setStrong:function(t,n,r){a(t,n,(function(t,r){this._t=v(t,n),this._k=r,this._l=void 0}),(function(){for(var t=this._k,n=this._l;n&&n.r;)n=n.p;return this._t&&(this._l=n=n?n.n:this._t._f)?s(0,"keys"==t?n.k:"values"==t?n.v:[n.k,n.v]):(this._t=void 0,s(1))}),r?"entries":"values",!r,!0),l(n)}}},function(t,n,r){"use strict";var e=r(58),i=r(39).getWeak,o=r(6),u=r(7),c=r(57),f=r(75),a=r(32),s=r(22),l=r(51),h=a(5),p=a(6),v=0,y=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},g=function(t,n){return h(t.a,(function(t){return t[0]===n}))};d.prototype={get:function(t){var n=g(this,t);if(n)return n[1]},has:function(t){return!!g(this,t)},set:function(t,n){var r=g(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(t){var n=p(this.a,(function(n){return n[0]===t}));return~n&&this.a.splice(n,1),!!~n}},t.exports={getConstructor:function(t,n,r,o){var a=t((function(t,e){c(t,a,n,"_i"),t._t=n,t._i=v++,t._l=void 0,null!=e&&f(e,r,t[o],t)}));return e(a.prototype,{delete:function(t){if(!u(t))return!1;var r=i(t);return!0===r?y(l(this,n)).delete(t):r&&s(r,this._i)&&delete r[this._i]},has:function(t){if(!u(t))return!1;var r=i(t);return!0===r?y(l(this,n)).has(t):r&&s(r,this._i)}}),a},def:function(t,n,r){var e=i(o(n),!0);return!0===e?y(t).set(n,r):e[t._i]=r,t},ufstore:y}},function(t,n,r){var e=r(29),i=r(11);t.exports=function(t){if(void 0===t)return 0;var n=e(t),r=i(n);if(n!==r)throw RangeError("Wrong length!");return r}},function(t,n,r){var e=r(48),i=r(69),o=r(6),u=r(4).Reflect;t.exports=u&&u.ownKeys||function(t){var n=e.f(o(t)),r=i.f;return r?n.concat(r(t)):n}},function(t,n,r){var e=r(11),i=r(89),o=r(35);t.exports=function(t,n,r,u){var c=String(o(t)),f=c.length,a=void 0===r?" ":String(r),s=e(n);if(s<=f||""==a)return c;var l=s-f,h=i.call(a,Math.ceil(l/a.length));return h.length>l&&(h=h.slice(0,l)),u?h+c:c+h}},function(t,n,r){var e=r(14),i=r(45),o=r(24),u=r(62).f;t.exports=function(t){return function(n){for(var r,c=o(n),f=i(c),a=f.length,s=0,l=[];a>s;)r=f[s++],e&&!u.call(c,r)||l.push(t?[r,c[r]]:c[r]);return l}}},function(t,n){var r=t.exports={version:"2.6.12"};"number"==typeof __e&&(__e=r)},function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,,,,,function(t,n,r){"use strict";r(152);var e,i=(e=r(323))&&e.__esModule?e:{default:e};i.default._babelPolyfill&&"undefined"!=typeof console&&console.warn&&console.warn("@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended and may have consequences if different versions of the polyfills are applied sequentially. If you do need to load the polyfill more than once, use @babel/polyfill/noConflict instead to bypass the warning."),i.default._babelPolyfill=!0},function(t,n,r){"use strict";r(153),r(296),r(298),r(301),r(303),r(305),r(307),r(309),r(311),r(313),r(315),r(317),r(319),r(65)},function(t,n,r){r(154),r(157),r(158),r(159),r(160),r(161),r(162),r(163),r(164),r(165),r(166),r(167),r(168),r(169),r(170),r(171),r(172),r(173),r(174),r(175),r(176),r(177),r(178),r(179),r(180),r(181),r(182),r(183),r(184),r(185),r(186),r(187),r(188),r(189),r(190),r(191),r(192),r(193),r(194),r(195),r(196),r(197),r(198),r(200),r(201),r(202),r(203),r(204),r(205),r(206),r(207),r(208),r(209),r(210),r(211),r(212),r(213),r(214),r(215),r(216),r(217),r(218),r(219),r(220),r(221),r(222),r(223),r(224),r(225),r(226),r(227),r(228),r(229),r(230),r(231),r(232),r(233),r(235),r(236),r(238),r(239),r(240),r(241),r(242),r(243),r(244),r(246),r(247),r(248),r(249),r(250),r(251),r(252),r(253),r(254),r(255),r(256),r(257),r(258),r(101),r(259),r(133),r(260),r(134),r(261),r(262),r(263),r(264),r(135),r(267),r(268),r(269),r(270),r(271),r(272),r(273),r(274),r(275),r(276),r(277),r(278),r(279),r(280),r(281),r(282),r(283),r(284),r(285),r(286),r(287),r(288),r(289),r(290),r(291),r(292),r(293),r(294),r(295),t.exports=r(13)},function(t,n,r){"use strict";var e=r(4),i=r(22),o=r(14),u=r(0),c=r(20),f=r(39).KEY,a=r(5),s=r(67),l=r(53),h=r(43),p=r(8),v=r(82),y=r(114),d=r(156),g=r(70),x=r(6),b=r(7),m=r(17),S=r(24),w=r(38),_=r(42),E=r(47),O=r(117),P=r(30),F=r(69),M=r(15),A=r(45),j=P.f,I=M.f,N=O.f,T=e.Symbol,L=e.JSON,R=L&&L.stringify,k=p("_hidden"),C=p("toPrimitive"),D={}.propertyIsEnumerable,W=s("symbol-registry"),G=s("symbols"),U=s("op-symbols"),B=Object.prototype,V="function"==typeof T&&!!F.f,z=e.QObject,Y=!z||!z.prototype||!z.prototype.findChild,q=o&&a((function(){return 7!=E(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a}))?function(t,n,r){var e=j(B,n);e&&delete B[n],I(t,n,r),e&&t!==B&&I(B,n,e)}:I,$=function(t){var n=G[t]=E(T.prototype);return n._k=t,n},K=V&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},J=function(t,n,r){return t===B&&J(U,n,r),x(t),n=w(n,!0),x(r),i(G,n)?(r.enumerable?(i(t,k)&&t[k][n]&&(t[k][n]=!1),r=E(r,{enumerable:_(0,!1)})):(i(t,k)||I(t,k,_(1,{})),t[k][n]=!0),q(t,n,r)):I(t,n,r)},X=function(t,n){x(t);for(var r,e=d(n=S(n)),i=0,o=e.length;o>i;)J(t,r=e[i++],n[r]);return t},H=function(t){var n=D.call(this,t=w(t,!0));return!(this===B&&i(G,t)&&!i(U,t))&&(!(n||!i(this,t)||!i(G,t)||i(this,k)&&this[k][t])||n)},Z=function(t,n){if(t=S(t),n=w(n,!0),t!==B||!i(G,n)||i(U,n)){var r=j(t,n);return!r||!i(G,n)||i(t,k)&&t[k][n]||(r.enumerable=!0),r}},Q=function(t){for(var n,r=N(S(t)),e=[],o=0;r.length>o;)i(G,n=r[o++])||n==k||n==f||e.push(n);return e},tt=function(t){for(var n,r=t===B,e=N(r?U:S(t)),o=[],u=0;e.length>u;)!i(G,n=e[u++])||r&&!i(B,n)||o.push(G[n]);return o};V||(c((T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=h(arguments.length>0?arguments[0]:void 0),n=function(r){this===B&&n.call(U,r),i(this,k)&&i(this[k],t)&&(this[k][t]=!1),q(this,t,_(1,r))};return o&&Y&&q(B,t,{configurable:!0,set:n}),$(t)}).prototype,"toString",(function(){return this._k})),P.f=Z,M.f=J,r(48).f=O.f=Q,r(62).f=H,F.f=tt,o&&!r(44)&&c(B,"propertyIsEnumerable",H,!0),v.f=function(t){return $(p(t))}),u(u.G+u.W+u.F*!V,{Symbol:T});for(var nt="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;nt.length>rt;)p(nt[rt++]);for(var et=A(p.store),it=0;et.length>it;)y(et[it++]);u(u.S+u.F*!V,"Symbol",{for:function(t){return i(W,t+="")?W[t]:W[t]=T(t)},keyFor:function(t){if(!K(t))throw TypeError(t+" is not a symbol!");for(var n in W)if(W[n]===t)return n},useSetter:function(){Y=!0},useSimple:function(){Y=!1}}),u(u.S+u.F*!V,"Object",{create:function(t,n){return void 0===n?E(t):X(E(t),n)},defineProperty:J,defineProperties:X,getOwnPropertyDescriptor:Z,getOwnPropertyNames:Q,getOwnPropertySymbols:tt});var ot=a((function(){F.f(1)}));u(u.S+u.F*ot,"Object",{getOwnPropertySymbols:function(t){return F.f(m(t))}}),L&&u(u.S+u.F*(!V||a((function(){var t=T();return"[null]"!=R([t])||"{}"!=R({a:t})||"{}"!=R(Object(t))}))),"JSON",{stringify:function(t){for(var n,r,e=[t],i=1;arguments.length>i;)e.push(arguments[i++]);if(r=n=e[1],(b(n)||void 0!==t)&&!K(t))return g(n)||(n=function(t,n){if("function"==typeof r&&(n=r.call(this,t,n)),!K(n))return n}),e[1]=n,R.apply(L,e)}}),T.prototype[C]||r(23)(T.prototype,C,T.prototype.valueOf),l(T,"Symbol"),l(Math,"Math",!0),l(e.JSON,"JSON",!0)},function(t,n,r){t.exports=r(67)("native-function-to-string",Function.toString)},function(t,n,r){var e=r(45),i=r(69),o=r(62);t.exports=function(t){var n=e(t),r=i.f;if(r)for(var u,c=r(t),f=o.f,a=0;c.length>a;)f.call(t,u=c[a++])&&n.push(u);return n}},function(t,n,r){var e=r(0);e(e.S,"Object",{create:r(47)})},function(t,n,r){var e=r(0);e(e.S+e.F*!r(14),"Object",{defineProperty:r(15).f})},function(t,n,r){var e=r(0);e(e.S+e.F*!r(14),"Object",{defineProperties:r(116)})},function(t,n,r){var e=r(24),i=r(30).f;r(31)("getOwnPropertyDescriptor",(function(){return function(t,n){return i(e(t),n)}}))},function(t,n,r){var e=r(17),i=r(49);r(31)("getPrototypeOf",(function(){return function(t){return i(e(t))}}))},function(t,n,r){var e=r(17),i=r(45);r(31)("keys",(function(){return function(t){return i(e(t))}}))},function(t,n,r){r(31)("getOwnPropertyNames",(function(){return r(117).f}))},function(t,n,r){var e=r(7),i=r(39).onFreeze;r(31)("freeze",(function(t){return function(n){return t&&e(n)?t(i(n)):n}}))},function(t,n,r){var e=r(7),i=r(39).onFreeze;r(31)("seal",(function(t){return function(n){return t&&e(n)?t(i(n)):n}}))},function(t,n,r){var e=r(7),i=r(39).onFreeze;r(31)("preventExtensions",(function(t){return function(n){return t&&e(n)?t(i(n)):n}}))},function(t,n,r){var e=r(7);r(31)("isFrozen",(function(t){return function(n){return!e(n)||!!t&&t(n)}}))},function(t,n,r){var e=r(7);r(31)("isSealed",(function(t){return function(n){return!e(n)||!!t&&t(n)}}))},function(t,n,r){var e=r(7);r(31)("isExtensible",(function(t){return function(n){return!!e(n)&&(!t||t(n))}}))},function(t,n,r){var e=r(0);e(e.S+e.F,"Object",{assign:r(118)})},function(t,n,r){var e=r(0);e(e.S,"Object",{is:r(119)})},function(t,n,r){var e=r(0);e(e.S,"Object",{setPrototypeOf:r(86).set})},function(t,n,r){"use strict";var e=r(63),i={};i[r(8)("toStringTag")]="z",i+""!="[object z]"&&r(20)(Object.prototype,"toString",(function(){return"[object "+e(this)+"]"}),!0)},function(t,n,r){var e=r(0);e(e.P,"Function",{bind:r(120)})},function(t,n,r){var e=r(15).f,i=Function.prototype,o=/^\s*function ([^ (]*)/;"name"in i||r(14)&&e(i,"name",{configurable:!0,get:function(){try{return(""+this).match(o)[1]}catch(t){return""}}})},function(t,n,r){"use strict";var e=r(7),i=r(49),o=r(8)("hasInstance"),u=Function.prototype;o in u||r(15).f(u,o,{value:function(t){if("function"!=typeof this||!e(t))return!1;if(!e(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},function(t,n,r){var e=r(0),i=r(122);e(e.G+e.F*(parseInt!=i),{parseInt:i})},function(t,n,r){var e=r(0),i=r(123);e(e.G+e.F*(parseFloat!=i),{parseFloat:i})},function(t,n,r){"use strict";var e=r(4),i=r(22),o=r(34),u=r(88),c=r(38),f=r(5),a=r(48).f,s=r(30).f,l=r(15).f,h=r(54).trim,p=e.Number,v=p,y=p.prototype,d="Number"==o(r(47)(y)),g="trim"in String.prototype,x=function(t){var n=c(t,!1);if("string"==typeof n&&n.length>2){var r,e,i,o=(n=g?n.trim():h(n,3)).charCodeAt(0);if(43===o||45===o){if(88===(r=n.charCodeAt(2))||120===r)return NaN}else if(48===o){switch(n.charCodeAt(1)){case 66:case 98:e=2,i=49;break;case 79:case 111:e=8,i=55;break;default:return+n}for(var u,f=n.slice(2),a=0,s=f.length;ai)return NaN;return parseInt(f,e)}}return+n};if(!p(" 0o1")||!p("0b1")||p("+0x1")){p=function(t){var n=arguments.length<1?0:t,r=this;return r instanceof p&&(d?f((function(){y.valueOf.call(r)})):"Number"!=o(r))?u(new v(x(n)),r,p):x(n)};for(var b,m=r(14)?a(v):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;m.length>S;S++)i(v,b=m[S])&&!i(p,b)&&l(p,b,s(v,b));p.prototype=y,y.constructor=p,r(20)(e,"Number",p)}},function(t,n,r){"use strict";var e=r(0),i=r(29),o=r(124),u=r(89),c=1..toFixed,f=Math.floor,a=[0,0,0,0,0,0],s="Number.toFixed: incorrect invocation!",l=function(t,n){for(var r=-1,e=n;++r<6;)e+=t*a[r],a[r]=e%1e7,e=f(e/1e7)},h=function(t){for(var n=6,r=0;--n>=0;)r+=a[n],a[n]=f(r/t),r=r%t*1e7},p=function(){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==a[t]){var r=String(a[t]);n=""===n?r:n+u.call("0",7-r.length)+r}return n},v=function(t,n,r){return 0===n?r:n%2==1?v(t,n-1,r*t):v(t*t,n/2,r)};e(e.P+e.F*(!!c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!r(5)((function(){c.call({})}))),"Number",{toFixed:function(t){var n,r,e,c,f=o(this,s),a=i(t),y="",d="0";if(a<0||a>20)throw RangeError(s);if(f!=f)return"NaN";if(f<=-1e21||f>=1e21)return String(f);if(f<0&&(y="-",f=-f),f>1e-21)if(r=(n=function(t){for(var n=0,r=t;r>=4096;)n+=12,r/=4096;for(;r>=2;)n+=1,r/=2;return n}(f*v(2,69,1))-69)<0?f*v(2,-n,1):f/v(2,n,1),r*=4503599627370496,(n=52-n)>0){for(l(0,r),e=a;e>=7;)l(1e7,0),e-=7;for(l(v(10,e,1),0),e=n-1;e>=23;)h(1<<23),e-=23;h(1<0?y+((c=d.length)<=a?"0."+u.call("0",a-c)+d:d.slice(0,c-a)+"."+d.slice(c-a)):y+d}})},function(t,n,r){"use strict";var e=r(0),i=r(5),o=r(124),u=1..toPrecision;e(e.P+e.F*(i((function(){return"1"!==u.call(1,void 0)}))||!i((function(){u.call({})}))),"Number",{toPrecision:function(t){var n=o(this,"Number#toPrecision: incorrect invocation!");return void 0===t?u.call(n):u.call(n,t)}})},function(t,n,r){var e=r(0);e(e.S,"Number",{EPSILON:Math.pow(2,-52)})},function(t,n,r){var e=r(0),i=r(4).isFinite;e(e.S,"Number",{isFinite:function(t){return"number"==typeof t&&i(t)}})},function(t,n,r){var e=r(0);e(e.S,"Number",{isInteger:r(125)})},function(t,n,r){var e=r(0);e(e.S,"Number",{isNaN:function(t){return t!=t}})},function(t,n,r){var e=r(0),i=r(125),o=Math.abs;e(e.S,"Number",{isSafeInteger:function(t){return i(t)&&o(t)<=9007199254740991}})},function(t,n,r){var e=r(0);e(e.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(t,n,r){var e=r(0);e(e.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(t,n,r){var e=r(0),i=r(123);e(e.S+e.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(t,n,r){var e=r(0),i=r(122);e(e.S+e.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(t,n,r){var e=r(0),i=r(126),o=Math.sqrt,u=Math.acosh;e(e.S+e.F*!(u&&710==Math.floor(u(Number.MAX_VALUE))&&u(1/0)==1/0),"Math",{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?Math.log(t)+Math.LN2:i(t-1+o(t-1)*o(t+1))}})},function(t,n,r){var e=r(0),i=Math.asinh;e(e.S+e.F*!(i&&1/i(0)>0),"Math",{asinh:function t(n){return isFinite(n=+n)&&0!=n?n<0?-t(-n):Math.log(n+Math.sqrt(n*n+1)):n}})},function(t,n,r){var e=r(0),i=Math.atanh;e(e.S+e.F*!(i&&1/i(-0)<0),"Math",{atanh:function(t){return 0==(t=+t)?t:Math.log((1+t)/(1-t))/2}})},function(t,n,r){var e=r(0),i=r(90);e(e.S,"Math",{cbrt:function(t){return i(t=+t)*Math.pow(Math.abs(t),1/3)}})},function(t,n,r){var e=r(0);e(e.S,"Math",{clz32:function(t){return(t>>>=0)?31-Math.floor(Math.log(t+.5)*Math.LOG2E):32}})},function(t,n,r){var e=r(0),i=Math.exp;e(e.S,"Math",{cosh:function(t){return(i(t=+t)+i(-t))/2}})},function(t,n,r){var e=r(0),i=r(91);e(e.S+e.F*(i!=Math.expm1),"Math",{expm1:i})},function(t,n,r){var e=r(0);e(e.S,"Math",{fround:r(199)})},function(t,n,r){var e=r(90),i=Math.pow,o=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),f=i(2,-126);t.exports=Math.fround||function(t){var n,r,i=Math.abs(t),a=e(t);return ic||r!=r?a*(1/0):a*r}},function(t,n,r){var e=r(0),i=Math.abs;e(e.S,"Math",{hypot:function(t,n){for(var r,e,o=0,u=0,c=arguments.length,f=0;u0?(e=r/f)*e:r;return f===1/0?1/0:f*Math.sqrt(o)}})},function(t,n,r){var e=r(0),i=Math.imul;e(e.S+e.F*r(5)((function(){return-5!=i(4294967295,5)||2!=i.length})),"Math",{imul:function(t,n){var r=+t,e=+n,i=65535&r,o=65535&e;return 0|i*o+((65535&r>>>16)*o+i*(65535&e>>>16)<<16>>>0)}})},function(t,n,r){var e=r(0);e(e.S,"Math",{log10:function(t){return Math.log(t)*Math.LOG10E}})},function(t,n,r){var e=r(0);e(e.S,"Math",{log1p:r(126)})},function(t,n,r){var e=r(0);e(e.S,"Math",{log2:function(t){return Math.log(t)/Math.LN2}})},function(t,n,r){var e=r(0);e(e.S,"Math",{sign:r(90)})},function(t,n,r){var e=r(0),i=r(91),o=Math.exp;e(e.S+e.F*r(5)((function(){return-2e-17!=!Math.sinh(-2e-17)})),"Math",{sinh:function(t){return Math.abs(t=+t)<1?(i(t)-i(-t))/2:(o(t-1)-o(-t-1))*(Math.E/2)}})},function(t,n,r){var e=r(0),i=r(91),o=Math.exp;e(e.S,"Math",{tanh:function(t){var n=i(t=+t),r=i(-t);return n==1/0?1:r==1/0?-1:(n-r)/(o(t)+o(-t))}})},function(t,n,r){var e=r(0);e(e.S,"Math",{trunc:function(t){return(t>0?Math.floor:Math.ceil)(t)}})},function(t,n,r){var e=r(0),i=r(46),o=String.fromCharCode,u=String.fromCodePoint;e(e.S+e.F*(!!u&&1!=u.length),"String",{fromCodePoint:function(t){for(var n,r=[],e=arguments.length,u=0;e>u;){if(n=+arguments[u++],i(n,1114111)!==n)throw RangeError(n+" is not a valid code point");r.push(n<65536?o(n):o(55296+((n-=65536)>>10),n%1024+56320))}return r.join("")}})},function(t,n,r){var e=r(0),i=r(24),o=r(11);e(e.S,"String",{raw:function(t){for(var n=i(t.raw),r=o(n.length),e=arguments.length,u=[],c=0;r>c;)u.push(String(n[c++])),c=n.length?{value:void 0,done:!0}:(t=e(n,r),this._i+=t.length,{value:t,done:!1})}))},function(t,n,r){"use strict";var e=r(0),i=r(92)(!1);e(e.P,"String",{codePointAt:function(t){return i(this,t)}})},function(t,n,r){"use strict";var e=r(0),i=r(11),o=r(94),u="".endsWith;e(e.P+e.F*r(96)("endsWith"),"String",{endsWith:function(t){var n=o(this,t,"endsWith"),r=arguments.length>1?arguments[1]:void 0,e=i(n.length),c=void 0===r?e:Math.min(i(r),e),f=String(t);return u?u.call(n,f,c):n.slice(c-f.length,c)===f}})},function(t,n,r){"use strict";var e=r(0),i=r(94);e(e.P+e.F*r(96)("includes"),"String",{includes:function(t){return!!~i(this,t,"includes").indexOf(t,arguments.length>1?arguments[1]:void 0)}})},function(t,n,r){var e=r(0);e(e.P,"String",{repeat:r(89)})},function(t,n,r){"use strict";var e=r(0),i=r(11),o=r(94),u="".startsWith;e(e.P+e.F*r(96)("startsWith"),"String",{startsWith:function(t){var n=o(this,t,"startsWith"),r=i(Math.min(arguments.length>1?arguments[1]:void 0,n.length)),e=String(t);return u?u.call(n,e,r):n.slice(r,r+e.length)===e}})},function(t,n,r){"use strict";r(21)("anchor",(function(t){return function(n){return t(this,"a","name",n)}}))},function(t,n,r){"use strict";r(21)("big",(function(t){return function(){return t(this,"big","","")}}))},function(t,n,r){"use strict";r(21)("blink",(function(t){return function(){return t(this,"blink","","")}}))},function(t,n,r){"use strict";r(21)("bold",(function(t){return function(){return t(this,"b","","")}}))},function(t,n,r){"use strict";r(21)("fixed",(function(t){return function(){return t(this,"tt","","")}}))},function(t,n,r){"use strict";r(21)("fontcolor",(function(t){return function(n){return t(this,"font","color",n)}}))},function(t,n,r){"use strict";r(21)("fontsize",(function(t){return function(n){return t(this,"font","size",n)}}))},function(t,n,r){"use strict";r(21)("italics",(function(t){return function(){return t(this,"i","","")}}))},function(t,n,r){"use strict";r(21)("link",(function(t){return function(n){return t(this,"a","href",n)}}))},function(t,n,r){"use strict";r(21)("small",(function(t){return function(){return t(this,"small","","")}}))},function(t,n,r){"use strict";r(21)("strike",(function(t){return function(){return t(this,"strike","","")}}))},function(t,n,r){"use strict";r(21)("sub",(function(t){return function(){return t(this,"sub","","")}}))},function(t,n,r){"use strict";r(21)("sup",(function(t){return function(){return t(this,"sup","","")}}))},function(t,n,r){var e=r(0);e(e.S,"Date",{now:function(){return(new Date).getTime()}})},function(t,n,r){"use strict";var e=r(0),i=r(17),o=r(38);e(e.P+e.F*r(5)((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})})),"Date",{toJSON:function(t){var n=i(this),r=o(n);return"number"!=typeof r||isFinite(r)?n.toISOString():null}})},function(t,n,r){var e=r(0),i=r(234);e(e.P+e.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},function(t,n,r){"use strict";var e=r(5),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};t.exports=e((function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-50000000000001))}))||!e((function(){o.call(new Date(NaN))}))?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":n>9999?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(r>99?r:"0"+u(r))+"Z"}:o},function(t,n,r){var e=Date.prototype,i=e.toString,o=e.getTime;new Date(NaN)+""!="Invalid Date"&&r(20)(e,"toString",(function(){var t=o.call(this);return t==t?i.call(this):"Invalid Date"}))},function(t,n,r){var e=r(8)("toPrimitive"),i=Date.prototype;e in i||r(23)(i,e,r(237))},function(t,n,r){"use strict";var e=r(6),i=r(38);t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),"number"!=t)}},function(t,n,r){var e=r(0);e(e.S,"Array",{isArray:r(70)})},function(t,n,r){"use strict";var e=r(27),i=r(0),o=r(17),u=r(128),c=r(97),f=r(11),a=r(98),s=r(99);i(i.S+i.F*!r(71)((function(t){Array.from(t)})),"Array",{from:function(t){var n,r,i,l,h=o(t),p="function"==typeof this?this:Array,v=arguments.length,y=v>1?arguments[1]:void 0,d=void 0!==y,g=0,x=s(h);if(d&&(y=e(y,v>2?arguments[2]:void 0,2)),null==x||p==Array&&c(x))for(r=new p(n=f(h.length));n>g;g++)a(r,g,d?y(h[g],g):h[g]);else for(l=x.call(h),r=new p;!(i=l.next()).done;g++)a(r,g,d?u(l,y,[i.value,g],!0):i.value);return r.length=g,r}})},function(t,n,r){"use strict";var e=r(0),i=r(98);e(e.S+e.F*r(5)((function(){function t(){}return!(Array.of.call(t)instanceof t)})),"Array",{of:function(){for(var t=0,n=arguments.length,r=new("function"==typeof this?this:Array)(n);n>t;)i(r,t,arguments[t++]);return r.length=n,r}})},function(t,n,r){"use strict";var e=r(0),i=r(24),o=[].join;e(e.P+e.F*(r(61)!=Object||!r(26)(o)),"Array",{join:function(t){return o.call(i(this),void 0===t?",":t)}})},function(t,n,r){"use strict";var e=r(0),i=r(85),o=r(34),u=r(46),c=r(11),f=[].slice;e(e.P+e.F*r(5)((function(){i&&f.call(i)})),"Array",{slice:function(t,n){var r=c(this.length),e=o(this);if(n=void 0===n?r:n,"Array"==e)return f.call(this,t,n);for(var i=u(t,r),a=u(n,r),s=c(a-i),l=new Array(s),h=0;h1&&(e=Math.min(e,o(arguments[1]))),e<0&&(e=r+e);e>=0;e--)if(e in n&&n[e]===t)return e||0;return-1}})},function(t,n,r){var e=r(0);e(e.P,"Array",{copyWithin:r(131)}),r(50)("copyWithin")},function(t,n,r){var e=r(0);e(e.P,"Array",{fill:r(100)}),r(50)("fill")},function(t,n,r){"use strict";var e=r(0),i=r(32)(5),o=!0;"find"in[]&&Array(1).find((function(){o=!1})),e(e.P+e.F*o,"Array",{find:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(50)("find")},function(t,n,r){"use strict";var e=r(0),i=r(32)(6),o="findIndex",u=!0;o in[]&&Array(1)[o]((function(){u=!1})),e(e.P+e.F*u,"Array",{findIndex:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(50)(o)},function(t,n,r){r(56)("Array")},function(t,n,r){var e=r(4),i=r(88),o=r(15).f,u=r(48).f,c=r(95),f=r(72),a=e.RegExp,s=a,l=a.prototype,h=/a/g,p=/a/g,v=new a(h)!==h;if(r(14)&&(!v||r(5)((function(){return p[r(8)("match")]=!1,a(h)!=h||a(p)==p||"/a/i"!=a(h,"i")})))){a=function(t,n){var r=this instanceof a,e=c(t),o=void 0===n;return!r&&e&&t.constructor===a&&o?t:i(v?new s(e&&!o?t.source:t,n):s((e=t instanceof a)?t.source:t,e&&o?f.call(t):n),r?this:l,a)};for(var y=function(t){t in a||o(a,t,{configurable:!0,get:function(){return s[t]},set:function(n){s[t]=n}})},d=u(s),g=0;d.length>g;)y(d[g++]);l.constructor=a,a.prototype=l,r(20)(e,"RegExp",a)}r(56)("RegExp")},function(t,n,r){"use strict";r(134);var e=r(6),i=r(72),o=r(14),u=/./.toString,c=function(t){r(20)(RegExp.prototype,"toString",t,!0)};r(5)((function(){return"/a/b"!=u.call({source:"a",flags:"b"})}))?c((function(){var t=e(this);return"/".concat(t.source,"/","flags"in t?t.flags:!o&&t instanceof RegExp?i.call(t):void 0)})):"toString"!=u.name&&c((function(){return u.call(this)}))},function(t,n,r){"use strict";var e=r(6),i=r(11),o=r(103),u=r(73);r(74)("match",1,(function(t,n,r,c){return[function(r){var e=t(this),i=null==r?void 0:r[n];return void 0!==i?i.call(r,e):new RegExp(r)[n](String(e))},function(t){var n=c(r,t,this);if(n.done)return n.value;var f=e(t),a=String(this);if(!f.global)return u(f,a);var s=f.unicode;f.lastIndex=0;for(var l,h=[],p=0;null!==(l=u(f,a));){var v=String(l[0]);h[p]=v,""===v&&(f.lastIndex=o(a,i(f.lastIndex),s)),p++}return 0===p?null:h}]}))},function(t,n,r){"use strict";var e=r(6),i=r(17),o=r(11),u=r(29),c=r(103),f=r(73),a=Math.max,s=Math.min,l=Math.floor,h=/\$([$&`']|\d\d?|<[^>]*>)/g,p=/\$([$&`']|\d\d?)/g;r(74)("replace",2,(function(t,n,r,v){return[function(e,i){var o=t(this),u=null==e?void 0:e[n];return void 0!==u?u.call(e,o,i):r.call(String(o),e,i)},function(t,n){var i=v(r,t,this,n);if(i.done)return i.value;var l=e(t),h=String(this),p="function"==typeof n;p||(n=String(n));var d=l.global;if(d){var g=l.unicode;l.lastIndex=0}for(var x=[];;){var b=f(l,h);if(null===b)break;if(x.push(b),!d)break;""===String(b[0])&&(l.lastIndex=c(h,o(l.lastIndex),g))}for(var m,S="",w=0,_=0;_=w&&(S+=h.slice(w,O)+j,w=O+E.length)}return S+h.slice(w)}];function y(t,n,e,o,u,c){var f=e+t.length,a=o.length,s=p;return void 0!==u&&(u=i(u),s=h),r.call(c,s,(function(r,i){var c;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,e);case"'":return n.slice(f);case"<":c=u[i.slice(1,-1)];break;default:var s=+i;if(0===s)return r;if(s>a){var h=l(s/10);return 0===h?r:h<=a?void 0===o[h-1]?i.charAt(1):o[h-1]+i.charAt(1):r}c=o[s-1]}return void 0===c?"":c}))}}))},function(t,n,r){"use strict";var e=r(6),i=r(119),o=r(73);r(74)("search",1,(function(t,n,r,u){return[function(r){var e=t(this),i=null==r?void 0:r[n];return void 0!==i?i.call(r,e):new RegExp(r)[n](String(e))},function(t){var n=u(r,t,this);if(n.done)return n.value;var c=e(t),f=String(this),a=c.lastIndex;i(a,0)||(c.lastIndex=0);var s=o(c,f);return i(c.lastIndex,a)||(c.lastIndex=a),null===s?-1:s.index}]}))},function(t,n,r){"use strict";var e=r(95),i=r(6),o=r(64),u=r(103),c=r(11),f=r(73),a=r(102),s=r(5),l=Math.min,h=[].push,p="length",v=!s((function(){RegExp(4294967295,"y")}));r(74)("split",2,(function(t,n,r,s){var y;return y="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1)[p]||2!="ab".split(/(?:ab)*/)[p]||4!=".".split(/(.?)(.?)/)[p]||".".split(/()()/)[p]>1||"".split(/.?/)[p]?function(t,n){var i=String(this);if(void 0===t&&0===n)return[];if(!e(t))return r.call(i,t,n);for(var o,u,c,f=[],s=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),l=0,v=void 0===n?4294967295:n>>>0,y=new RegExp(t.source,s+"g");(o=a.call(y,i))&&!((u=y.lastIndex)>l&&(f.push(i.slice(l,o.index)),o[p]>1&&o.index=v));)y.lastIndex===o.index&&y.lastIndex++;return l===i[p]?!c&&y.test("")||f.push(""):f.push(i.slice(l)),f[p]>v?f.slice(0,v):f}:"0".split(void 0,0)[p]?function(t,n){return void 0===t&&0===n?[]:r.call(this,t,n)}:r,[function(r,e){var i=t(this),o=null==r?void 0:r[n];return void 0!==o?o.call(r,i,e):y.call(String(i),r,e)},function(t,n){var e=s(y,t,this,n,y!==r);if(e.done)return e.value;var a=i(t),h=String(this),p=o(a,RegExp),d=a.unicode,g=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(v?"y":"g"),x=new p(v?a:"^(?:"+a.source+")",g),b=void 0===n?4294967295:n>>>0;if(0===b)return[];if(0===h.length)return null===f(x,h)?[h]:[];for(var m=0,S=0,w=[];S0?arguments[0]:void 0)}}),{get:function(t){var n=e.getEntry(i(this,"Map"),t);return n&&n.v},set:function(t,n){return e.def(i(this,"Map"),0===t?0:t,n)}},e,!0)},function(t,n,r){"use strict";var e=r(138),i=r(51);t.exports=r(77)("Set",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return e.def(i(this,"Set"),t=0===t?0:t,t)}},e)},function(t,n,r){"use strict";var e,i=r(4),o=r(32)(0),u=r(20),c=r(39),f=r(118),a=r(139),s=r(7),l=r(51),h=r(51),p=!i.ActiveXObject&&"ActiveXObject"in i,v=c.getWeak,y=Object.isExtensible,d=a.ufstore,g=function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}},x={get:function(t){if(s(t)){var n=v(t);return!0===n?d(l(this,"WeakMap")).get(t):n?n[this._i]:void 0}},set:function(t,n){return a.def(l(this,"WeakMap"),t,n)}},b=t.exports=r(77)("WeakMap",g,x,a,!0,!0);h&&p&&(f((e=a.getConstructor(g,"WeakMap")).prototype,x),c.NEED=!0,o(["delete","has","get","set"],(function(t){var n=b.prototype,r=n[t];u(n,t,(function(n,i){if(s(n)&&!y(n)){this._f||(this._f=new e);var o=this._f[t](n,i);return"set"==t?this:o}return r.call(this,n,i)}))})))},function(t,n,r){"use strict";var e=r(139),i=r(51);r(77)("WeakSet",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{add:function(t){return e.def(i(this,"WeakSet"),t,!0)}},e,!1,!0)},function(t,n,r){"use strict";var e=r(0),i=r(78),o=r(105),u=r(6),c=r(46),f=r(11),a=r(7),s=r(4).ArrayBuffer,l=r(64),h=o.ArrayBuffer,p=o.DataView,v=i.ABV&&s.isView,y=h.prototype.slice,d=i.VIEW;e(e.G+e.W+e.F*(s!==h),{ArrayBuffer:h}),e(e.S+e.F*!i.CONSTR,"ArrayBuffer",{isView:function(t){return v&&v(t)||a(t)&&d in t}}),e(e.P+e.U+e.F*r(5)((function(){return!new h(2).slice(1,void 0).byteLength})),"ArrayBuffer",{slice:function(t,n){if(void 0!==y&&void 0===n)return y.call(u(this),t);for(var r=u(this).byteLength,e=c(t,r),i=c(void 0===n?r:n,r),o=new(l(this,h))(f(i-e)),a=new p(this),s=new p(o),v=0;e=n.length)return{value:void 0,done:!0}}while(!((t=n[this._i++])in this._t));return{value:t,done:!1}})),e(e.S,"Reflect",{enumerate:function(t){return new o(t)}})},function(t,n,r){var e=r(30),i=r(49),o=r(22),u=r(0),c=r(7),f=r(6);u(u.S,"Reflect",{get:function t(n,r){var u,a,s=arguments.length<3?n:arguments[2];return f(n)===s?n[r]:(u=e.f(n,r))?o(u,"value")?u.value:void 0!==u.get?u.get.call(s):void 0:c(a=i(n))?t(a,r,s):void 0}})},function(t,n,r){var e=r(30),i=r(0),o=r(6);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(t,n){return e.f(o(t),n)}})},function(t,n,r){var e=r(0),i=r(49),o=r(6);e(e.S,"Reflect",{getPrototypeOf:function(t){return i(o(t))}})},function(t,n,r){var e=r(0);e(e.S,"Reflect",{has:function(t,n){return n in t}})},function(t,n,r){var e=r(0),i=r(6),o=Object.isExtensible;e(e.S,"Reflect",{isExtensible:function(t){return i(t),!o||o(t)}})},function(t,n,r){var e=r(0);e(e.S,"Reflect",{ownKeys:r(141)})},function(t,n,r){var e=r(0),i=r(6),o=Object.preventExtensions;e(e.S,"Reflect",{preventExtensions:function(t){i(t);try{return o&&o(t),!0}catch(t){return!1}}})},function(t,n,r){var e=r(15),i=r(30),o=r(49),u=r(22),c=r(0),f=r(42),a=r(6),s=r(7);c(c.S,"Reflect",{set:function t(n,r,c){var l,h,p=arguments.length<4?n:arguments[3],v=i.f(a(n),r);if(!v){if(s(h=o(n)))return t(h,r,c,p);v=f(0)}if(u(v,"value")){if(!1===v.writable||!s(p))return!1;if(l=i.f(p,r)){if(l.get||l.set||!1===l.writable)return!1;l.value=c,e.f(p,r,l)}else e.f(p,r,f(0,c));return!0}return void 0!==v.set&&(v.set.call(p,c),!0)}})},function(t,n,r){var e=r(0),i=r(86);i&&e(e.S,"Reflect",{setPrototypeOf:function(t,n){i.check(t,n);try{return i.set(t,n),!0}catch(t){return!1}}})},function(t,n,r){r(297),t.exports=r(13).Array.includes},function(t,n,r){"use strict";var e=r(0),i=r(68)(!0);e(e.P,"Array",{includes:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0)}}),r(50)("includes")},function(t,n,r){r(299),t.exports=r(13).Array.flatMap},function(t,n,r){"use strict";var e=r(0),i=r(300),o=r(17),u=r(11),c=r(28),f=r(129);e(e.P,"Array",{flatMap:function(t){var n,r,e=o(this);return c(t),n=u(e.length),r=f(e,0),i(r,e,e,n,0,1,t,arguments[1]),r}}),r(50)("flatMap")},function(t,n,r){"use strict";var e=r(70),i=r(7),o=r(11),u=r(27),c=r(8)("isConcatSpreadable");t.exports=function t(n,r,f,a,s,l,h,p){for(var v,y,d=s,g=0,x=!!h&&u(h,p,3);g0)d=t(n,r,v,o(v.length),d,l-1)-1;else{if(d>=9007199254740991)throw TypeError();n[d]=v}d++}g++}return d}},function(t,n,r){r(302),t.exports=r(13).String.padStart},function(t,n,r){"use strict";var e=r(0),i=r(142),o=r(76),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padStart:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!0)}})},function(t,n,r){r(304),t.exports=r(13).String.padEnd},function(t,n,r){"use strict";var e=r(0),i=r(142),o=r(76),u=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(o);e(e.P+e.F*u,"String",{padEnd:function(t){return i(this,t,arguments.length>1?arguments[1]:void 0,!1)}})},function(t,n,r){r(306),t.exports=r(13).String.trimLeft},function(t,n,r){"use strict";r(54)("trimLeft",(function(t){return function(){return t(this,1)}}),"trimStart")},function(t,n,r){r(308),t.exports=r(13).String.trimRight},function(t,n,r){"use strict";r(54)("trimRight",(function(t){return function(){return t(this,2)}}),"trimEnd")},function(t,n,r){r(310),t.exports=r(82).f("asyncIterator")},function(t,n,r){r(114)("asyncIterator")},function(t,n,r){r(312),t.exports=r(13).Object.getOwnPropertyDescriptors},function(t,n,r){var e=r(0),i=r(141),o=r(24),u=r(30),c=r(98);e(e.S,"Object",{getOwnPropertyDescriptors:function(t){for(var n,r,e=o(t),f=u.f,a=i(e),s={},l=0;a.length>l;)void 0!==(r=f(e,n=a[l++]))&&c(s,n,r);return s}})},function(t,n,r){r(314),t.exports=r(13).Object.values},function(t,n,r){var e=r(0),i=r(143)(!1);e(e.S,"Object",{values:function(t){return i(t)}})},function(t,n,r){r(316),t.exports=r(13).Object.entries},function(t,n,r){var e=r(0),i=r(143)(!0);e(e.S,"Object",{entries:function(t){return i(t)}})},function(t,n,r){"use strict";r(135),r(318),t.exports=r(13).Promise.finally},function(t,n,r){"use strict";var e=r(0),i=r(13),o=r(4),u=r(64),c=r(137);e(e.P+e.R,"Promise",{finally:function(t){var n=u(this,i.Promise||o.Promise),r="function"==typeof t;return this.then(r?function(r){return c(n,t()).then((function(){return r}))}:t,r?function(r){return c(n,t()).then((function(){throw r}))}:t)}})},function(t,n,r){r(320),r(321),r(322),t.exports=r(13)},function(t,n,r){var e=r(4),i=r(0),o=r(76),u=[].slice,c=/MSIE .\./.test(o),f=function(t){return function(n,r){var e=arguments.length>2,i=!!e&&u.call(arguments,2);return t(e?function(){("function"==typeof n?n:Function(n)).apply(this,i)}:n,r)}};i(i.G+i.B+i.F*c,{setTimeout:f(e.setTimeout),setInterval:f(e.setInterval)})},function(t,n,r){var e=r(0),i=r(104);e(e.G+e.B,{setImmediate:i.set,clearImmediate:i.clear})},function(t,n,r){for(var e=r(101),i=r(45),o=r(20),u=r(4),c=r(23),f=r(55),a=r(8),s=a("iterator"),l=a("toStringTag"),h=f.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},v=i(p),y=0;y'.concat(f,"");c=c.replace("{{amount}}",p),a.find("span").html(c)}}},showError:function(t,e,r){return t.find(".simpay-errors").html(r)},triggerBrowserValidation:function(e,r){return t("").attr({type:"submit",style:{display:"none"}}).appendTo(e).click().remove()}}}).call(this,r(14))},17:function(t,e){function r(e){return t.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},20:function(t,e,r){t.exports=r(64)},24:function(t,e,r){"use strict";r.d(e,"a",(function(){return m})),r.d(e,"c",(function(){return v}));var n=function(t){return"string"!=typeof t||""===t?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(t)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)},o=function(t){return"string"!=typeof t||""===t?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(t)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(t)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)},i=function(t){return function(e,r,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;if(o(e)&&n(r))if("function"==typeof i)if("number"==typeof a){var u={callback:i,priority:a,namespace:r};if(t[e]){var c,s=t[e].handlers;for(c=s.length;c>0&&!(a>=s[c-1].priority);c--);c===s.length?s[c]=u:s.splice(c,0,u),(t.__current||[]).forEach((function(t){t.name===e&&t.currentIndex>=c&&t.currentIndex++}))}else t[e]={handlers:[u],runs:0};"hookAdded"!==e&&h("hookAdded",e,r,i,a)}else console.error("If specified, the hook priority must be a number.");else console.error("The hook callback must be a function.")}},a=function(t,e){return function(r,i){if(o(r)&&(e||n(i))){if(!t[r])return 0;var a=0;if(e)a=t[r].handlers.length,t[r]={runs:t[r].runs,handlers:[]};else for(var u=t[r].handlers,c=function(e){u[e].namespace===i&&(u.splice(e,1),a++,(t.__current||[]).forEach((function(t){t.name===r&&t.currentIndex>=e&&t.currentIndex--})))},s=u.length-1;s>=0;s--)c(s);return"hookRemoved"!==r&&h("hookRemoved",r,i),a}}},u=function(t){return function(e,r){return void 0!==r?e in t&&t[e].handlers.some((function(t){return t.namespace===r})):e in t}},c=function(t,e){return function(r){t[r]||(t[r]={handlers:[],runs:0}),t[r].runs++;for(var n=t[r].handlers,o=arguments.length,i=new Array(o>1?o-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.state,o=e.__unstableLegacyFormData;return Object(c.a)("v2/customer",h({form_values:p()(e[0],{hash:!0}),form_data:JSON.stringify(h(h({},o),n)),form_id:r},t))}function m(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function v(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.state,o=e.__unstableLegacyFormData;return Object(c.a)("v2/paymentintent/create",v({form_values:p()(e[0],{hash:!0}),form_data:JSON.stringify(v(v({},o),n)),form_id:r},t))}function b(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function x(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.state,o=e.__unstableLegacyFormData;return Object(c.a)("v2/checkout-session",x({form_values:p()(e[0],{hash:!0}),form_data:JSON.stringify(x(x({},o),n)),form_id:r},t))}function _(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function w(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.state;return Object(c.a)("v2/setupintent/create",w({form_values:p()(e[0],{hash:!0}),form_data:JSON.stringify(n),form_id:r},t))}function P(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function T(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.state,o=e.__unstableLegacyFormData;return Object(c.a)("v2/subscription",T({form_values:p()(e[0],{hash:!0}),form_data:JSON.stringify(T(T({},o),n)),form_id:r},t))}function F(t,e,r,n,o){return Object(c.a)("v2/subscription/payment_method/".concat(r,"/").concat(t),{customer_nonce:e,form_values:o,form_id:n})}},346:function(t,e,r){"use strict";r.r(e),function(t){var e=r(6),n=r.n(e),o=r(24),i=r(52),a=r(25),u=r(148);function c(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function s(t){for(var e=1;e1&&void 0!==arguments[1]&&arguments[1],u=window.simpayApp.formCount;if(e.attr("data-simpay-form-instance",u),!1===a){var c=window.simplePayForms;r=c[n=e.data("simpay-form-id")]}else r=a,n=a.id;var l=r,f=l.type,p=l.form,d=p.prices,h=p.livemode,y=p.config,m=void 0===y?{}:y,v=m.taxRates,g=void 0===v?[]:v,b=m.paymentMethods,x=void 0===b?[]:b,O=s(s(s(s(s({formId:n,formInstance:u,quantity:1,isValid:!0,stripeParams:s(s({},r.stripe.strings),r.stripe.bools),prices:d},r.form.bools),r.form.integers),r.form.i18n),r.form.strings),r.form.config);e.__unstableLegacyFormData=O;var w=i.getPaymentFormType(f);_.each(w,(function(t,r){e[r]=_.isFunction(t)?_.bind(t,e,e):t})),e.id=n,e.state={isValid:!0,customAmount:!1,coupon:!1,price:_.find(d,(function(t){return!0===t.default})),paymentMethod:_.first(x),taxRates:g,paymentMethods:x,livemode:h,displayType:O.formDisplayType},e.setState=function(t){e.state=s(s({},e.state),t)};var j=r.stripe.strings,P=j.key,T=j.stripe_api_version,k=j.elementsLocale;e.stripeInstance=Stripe(P,{apiVersion:T,locale:k||"auto"}),Object(o.c)("simpaySetupPaymentForm",e),window.simpayApp.spFormData[n]=O,window.simpayApp.spFormElems[n]=e,t(document.body).trigger("simpayCoreFormVarsInitialized",[e,O]).trigger("simpayBindCoreFormEventsAndTriggers",[e,O]).trigger("simpaySetupCoreForm",[e])}window.wpsp={hooks:o.b,paymentForms:i,initPaymentForm:y,api:{customers:l,paymentintents:f,sessions:p,setupintents:d,subscriptions:h}},window.simpayApp=s({formCount:0,spFormElList:{},spFormData:{},spFormElems:{}},u.a),t((function(){return e=t(document.body).find(".simpay-checkout-form:not(.simpay-update-payment-method)"),window.simpayApp.spFormElList=e,void e.each((function(){window.simpayApp.formCount++,y(t(this))}));var e}))}.call(this,r(14))},347:function(t,e){function r(e,n){return t.exports=r=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e,n)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},348:function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.__esModule=!0,t.exports.default=t.exports},355:function(t,e,r){"use strict";var n=r(36),o=r.n(n),i=r(20),a=r.n(i),u=r(52),c=r(24),s=r(40),l=r.n(s),f=r(41),p=r.n(f),d=r(78),h=r.n(d),y=r(79),m=r.n(y),v=r(59),g=r.n(v),b=r(37),x=r.n(b),O=r(17),_=r.n(O),w=r(6),j=r.n(w);function P(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function T(t){for(var e=1;e0}}]),t}();var A=function(t){h()(o,t);var e,r,n=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=g()(e);if(r){var o=g()(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return m()(this,t)});function o(){return p()(this,o),n.apply(this,arguments)}return l()(o)}(k);var I=function(t){h()(o,t);var e,r,n=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=g()(e);if(r){var o=g()(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return m()(this,t)});function o(t){var e;return p()(this,o),(e=n.call(this,t)).LineItem=A,e}return l()(o)}(L),M=r(25);function E(){return(E=o()(a.a.mark((function t(e){var r,n,o,i,u,c,s,l,f,p;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.error,n=e.disable,o=e.__unstableLegacyFormData,i=null,u=o.hasCustomerFields,r(""),n(),!u){t.next=11;break}return t.next=8,M.a.create({},e);case 8:c=t.sent,s=c.customer.id,i=s;case 11:return t.next=13,M.c.create({customer_id:i},e);case 13:if(l=t.sent,f=l.sessionId,p=l.session.url,"stripe"!==l.redirect_type){t.next=19;break}return t.abrupt("return",e.stripeInstance.redirectToCheckout({sessionId:f}).then((function(t){return t.error&&r(t.error),t})));case 19:window.location.href=p;case 20:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var C=window.spShared,R=C.convertToDollars,N=C.formatCurrency,B="stripe-checkout";function U(t){if(!window.simpayGoogleRecaptcha)return Promise.resolve("");var e=window.simpayGoogleRecaptcha,r=e.siteKey,n=e.i18n;return new Promise((function(e,o){try{grecaptcha.execute(r,{action:t}).then((function(t){return e(t)}))}catch(t){o(n.invalid)}}))}function G(){return(G=o()(a.a.mark((function t(e){var r,n,o,i,u,c,s;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.id,n=e.setState,o=e.submit,i=e.disable,u=e.enable,c=e.error,s=e.__unstableLegacyFormData,i(),e.trigger("simpayBeforeStripePayment",[e,s]),s.isValid){t.next=6;break}return u(),t.abrupt("return");case 6:return t.prev=6,t.next=9,U("simple_pay_form_".concat(r,"_customer")).then((function(t){n({customerCaptchaToken:t})}));case 9:return t.next=11,U("simple_pay_form_".concat(r,"_payment")).then((function(t){n({paymentCaptchaToken:t})}));case 11:o().catch(c),t.next=17;break;case 14:t.prev=14,t.t0=t.catch(6),c(t.t0);case 17:case"end":return t.stop()}}),t,null,[[6,14]])})))).apply(this,arguments)}Object(u.registerPaymentFormType)(B,{type:B,setup:function(t){var e=t.enable;(0,t.disable)(),t.cart=Object(u.__unstableUpdatePaymentFormCart)(t,new I);var r=t.find(".simpay-payment-btn")[0];r&&(r.addEventListener("click",(function(e){e.preventDefault();var r=window.simpayApp.triggerBrowserValidation;t[0].checkValidity()?Object(c.c)("simpaySubmitPaymentForm",t):r(t)})),e())},submit:function(_x){return E.apply(this,arguments)},enable:function(t){var e=t.cart,r=t.__unstableLegacyFormData,n=r.paymentButtonText,o=r.paymentButtonTrialText;t.removeClass("simpay-checkout-form--loading");var i=t.find(".simpay-payment-btn");if(i.prop("disabled",!1).removeClass("simpay-disabled"),0===e.getTotalDueToday())i.find("span").text(o);else{var a=N(e.isZeroDecimal()?e.getTotalDueToday():R(e.getTotalDueToday()),!0,e.getCurrencySymbol(),e.isZeroDecimal()),u=''.concat(a,"");i.find("span").html(n.replace("{{amount}}",u))}},disable:function(t){var e=t.__unstableLegacyFormData.paymentButtonLoadingText;t.addClass("simpay-checkout-form--loading"),t.find(".simpay-payment-btn").prop("disabled",!0).addClass("simpay-disabled").find("span").html(e)},error:function(t,e){var r,n=t.enable,o=t.__unstableLegacyFormData,i=o.stripeErrorMessages,a=o.unknownError;if(e&&""===e)r="";else if(void 0!==e){var u=e.message,c=e.code;r=u||e,c&&i[c]&&(r=i[c])}else r=a;t.find(".simpay-errors").html(r),n()}}),Object(c.a)("simpaySetupPaymentForm","wpsp/paymentForm",(function(t){return(0,t.setup)()})),Object(c.a)("simpaySubmitPaymentForm","wpsp/paymentForm",(function(_x){return G.apply(this,arguments)}))},36:function(t,e){function r(t,e,r,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}t.exports=function(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function u(t){r(a,o,i,u,c,"next",t)}function c(t){r(a,o,i,u,c,"throw",t)}u(void 0)}))}},t.exports.__esModule=!0,t.exports.default=t.exports},37:function(t,e,r){var n=r(108),o=r(109),i=r(110),a=r(111);t.exports=function(t){return n(t)||o(t)||i(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},40:function(t,e){function r(t,e){for(var r=0;r=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:j(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}(t.exports);try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},65:function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(i[r]=t[r])}return i},t.exports.__esModule=!0,t.exports.default=t.exports},150:function(t,e,r){"use strict";(function(t){var r=window.spShared,n=r.convertToDollars,o=r.formatCurrency;e.a={init:_.noop,setupCoreForm:_.noop,isStripeCheckoutForm:function(t){return void 0===t.formDisplayType||"stripe_checkout"===t.formDisplayType},setCoreFinalAmount:function(e,r){r.finalAmount=e.cart.getTotalDueToday(),t(document.body).trigger("simpayFinalizeCoreAmount",[e,r])},disableForm:function(t,e,r){var n=t.find(".simpay-payment-btn"),o=e.paymentButtonLoadingText;t.addClass("simpay-checkout-form--loading"),window.simpayApp.isStripeCheckoutForm(e)||(n=t.find(".simpay-checkout-btn"),o=e.checkoutButtonLoadingText),n.prop("disabled",!0),!0===r&&n.addClass("simpay-disabled").find("span").html(o)},enableForm:function(e,r){var i=e.cart;if(void 0!==i){var a=e.find(".simpay-payment-btn"),u=r.paymentButtonLoadingText,c=r.paymentButtonText;e.removeClass("simpay-checkout-form--loading"),window.simpayApp.isStripeCheckoutForm(r)||(a=e.find(".simpay-checkout-btn"),u=r.checkoutButtonLoadingText,c=r.checkoutButtonText),a.prop("disabled",!1).removeClass("simpay-disabled");var s=document.createElement("div");if(s.innerHTML=u,t(s).html()===a.find("span").html())if(0===i.getTotalDueToday()){var l=r.checkoutButtonTrialText;a.find("span").text(l)}else{var f=o(i.isZeroDecimal()?i.getTotalDueToday():n(i.getTotalDueToday()),!0,i.getCurrencySymbol(),i.isZeroDecimal()),p=''.concat(f,"");c=c.replace("{{amount}}",p),a.find("span").html(c)}}},showError:function(t,e,r){return t.find(".simpay-errors").html(r)},triggerBrowserValidation:function(e,r){return t("").attr({type:"submit",style:{display:"none"}}).appendTo(e).click().remove()}}}).call(this,r(16))},16:function(t,e){t.exports=jQuery},18:function(t,e){function r(t,e,r,n,o,i,a){try{var u=t[i](a),c=u.value}catch(t){return void r(t)}u.done?e(c):Promise.resolve(c).then(n,o)}t.exports=function(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function u(t){r(a,o,i,u,c,"next",t)}function c(t){r(a,o,i,u,c,"throw",t)}u(void 0)}))}},t.exports.__esModule=!0,t.exports.default=t.exports},19:function(t,e){function r(e){return t.exports=r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},2:function(t,e){t.exports=function(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t},t.exports.__esModule=!0,t.exports.default=t.exports},25:function(t,e,r){"use strict";r.d(e,"a",(function(){return y})),r.d(e,"c",(function(){return v}));var n=function(t){return"string"!=typeof t||""===t?(console.error("The namespace must be a non-empty string."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.\-\/]*$/.test(t)||(console.error("The namespace can only contain numbers, letters, dashes, periods, underscores and slashes."),!1)},o=function(t){return"string"!=typeof t||""===t?(console.error("The hook name must be a non-empty string."),!1):/^__/.test(t)?(console.error("The hook name cannot begin with `__`."),!1):!!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(t)||(console.error("The hook name can only contain numbers, letters, dashes, periods and underscores."),!1)},i=function(t){return function(e,r,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:10;if(o(e)&&n(r))if("function"==typeof i)if("number"==typeof a){var u={callback:i,priority:a,namespace:r};if(t[e]){var c,s=t[e].handlers;for(c=s.length;c>0&&!(a>=s[c-1].priority);c--);c===s.length?s[c]=u:s.splice(c,0,u),(t.__current||[]).forEach((function(t){t.name===e&&t.currentIndex>=c&&t.currentIndex++}))}else t[e]={handlers:[u],runs:0};"hookAdded"!==e&&h("hookAdded",e,r,i,a)}else console.error("If specified, the hook priority must be a number.");else console.error("The hook callback must be a function.")}},a=function(t,e){return function(r,i){if(o(r)&&(e||n(i))){if(!t[r])return 0;var a=0;if(e)a=t[r].handlers.length,t[r]={runs:t[r].runs,handlers:[]};else for(var u=t[r].handlers,c=function(e){u[e].namespace===i&&(u.splice(e,1),a++,(t.__current||[]).forEach((function(t){t.name===r&&t.currentIndex>=e&&t.currentIndex--})))},s=u.length-1;s>=0;s--)c(s);return"hookRemoved"!==r&&h("hookRemoved",r,i),a}}},u=function(t){return function(e,r){return void 0!==r?e in t&&t[e].handlers.some((function(t){return t.namespace===r})):e in t}},c=function(t,e){return function(r){t[r]||(t[r]={handlers:[],runs:0}),t[r].runs++;for(var n=t[r].handlers,o=arguments.length,i=new Array(o>1?o-1:0),a=1;a1&&void 0!==arguments[1]&&arguments[1],c=window.simpayApp.formCount;if(e.attr("data-simpay-form-instance",c),!1===i){var l=window.simplePayForms;r=l[o=e.data("simpay-form-id")]}else r=i,o=i.id;var p=r,d=p.type,h=p.form,m=h.prices,y=h.livemode,v=h.config,g=void 0===v?{}:v,b=g.taxRates,x=void 0===b?[]:b,w=g.paymentMethods,O=void 0===w?[]:w,T=g.taxStatus,j=void 0===T?"fixed-global":T,P=f(f(f(f(f({formId:o,formInstance:c,quantity:1,isValid:!0,stripeParams:f(f({},r.stripe.strings),r.stripe.bools),prices:m},r.form.bools),r.form.integers),r.form.i18n),r.form.strings),r.form.config);e.__unstableLegacyFormData=P;var k=u.getPaymentFormType(d);_.each(k,(function(t,r){e[r]=_.isFunction(t)?_.bind(t,e,e):t})),e.id=o,e.state={isValid:!0,customAmount:!1,coupon:!1,price:_.find(m,(function(t){return!0===t.default})),paymentMethod:_.first(O),taxRates:x,taxStatus:j,paymentMethods:O,livemode:y,displayType:P.formDisplayType},e.setState=function(t){e.state=f(f({},e.state),t)},e.getFormData=function(){var t=f(f({},e.__unstableLegacyFormData),e.state),r=(t.order,t.customer,t.paymentMethods,n()(t,s));return JSON.stringify(r)};var S=r.stripe.strings,F=S.key,L=S.stripe_api_version,A=S.elementsLocale;e.stripeInstance=Stripe(F,{apiVersion:L,locale:A||"auto"}),Object(a.c)("simpaySetupPaymentForm",e),window.simpayApp.spFormData[o]=P,window.simpayApp.spFormElems[o]=e,t(document.body).trigger("simpayCoreFormVarsInitialized",[e,P]).trigger("simpayBindCoreFormEventsAndTriggers",[e,P]).trigger("simpaySetupCoreForm",[e])}window.wpsp={hooks:a.b,paymentForms:u,initPaymentForm:p},window.simpayApp=f({formCount:0,spFormElList:{},spFormData:{},spFormElems:{}},c.a),t((function(){return e=t(document.body).find(".simpay-checkout-form:not(.simpay-update-payment-method)"),window.simpayApp.spFormElList=e,void e.each((function(){window.simpayApp.formCount++,p(t(this))}));var e}))}.call(this,r(16))},349:function(t,e){t.exports=function(t,e){if(null==t)return{};var r,n,o={},i=Object.keys(t);for(n=0;n=0||(o[r]=t[r]);return o},t.exports.__esModule=!0,t.exports.default=t.exports},350:function(t,e){function r(e,n){return t.exports=r=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},t.exports.__esModule=!0,t.exports.default=t.exports,r(e,n)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},351:function(t,e){t.exports=function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t},t.exports.__esModule=!0,t.exports.default=t.exports},358:function(t,e,r){"use strict";var n=r(18),o=r.n(n),i=r(10),a=r.n(i),u=r(52),c=r(25),s=r(40),l=r.n(s),f=r(41),p=r.n(f),d=r(79),h=r.n(d),m=r(80),y=r.n(m),v=r(60),g=r.n(v),b=r(37),x=r.n(b),_=r(19),w=r.n(_),O=r(2),T=r.n(O);function j(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function P(t){for(var e=1;e0}}]),t}();var I=function(t){h()(o,t);var e,r,n=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=g()(e);if(r){var o=g()(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return y()(this,t)});function o(){return p()(this,o),n.apply(this,arguments)}return l()(o)}(k);var M=function(t){h()(o,t);var e,r,n=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=g()(e);if(r){var o=g()(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return y()(this,t)});function o(t){var e;return p()(this,o),(e=n.call(this,t)).LineItem=I,e}return l()(o)}(A),D=r(59);function E(){return(E=o()(a.a.mark((function t(e){var r,n,o,i,u,c,s,l,f,p;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.error,n=e.disable,o=e.__unstableLegacyFormData,i=null,u=o.hasCustomerFields,r(""),n(),!u){t.next=13;break}return t.next=8,D.a.create({},e).catch(r);case 8:if(c=t.sent){t.next=11;break}return t.abrupt("return");case 11:s=c.customer.id,i=s;case 13:return t.next=15,D.b.create({customer_id:i,payment_method_type:o.paymentMethods?o.paymentMethods[0].id:"card"},e).catch(r);case 15:if(l=t.sent){t.next=18;break}return t.abrupt("return");case 18:if(f=l.sessionId,p=l.session.url,"stripe"!==l.redirect_type){t.next=21;break}return t.abrupt("return",e.stripeInstance.redirectToCheckout({sessionId:f}).then((function(t){return t.error&&r(t.error),t})));case 21:window.location.href=p;case 22:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var C=window.spShared,R=C.convertToDollars,B=C.formatCurrency,N="stripe-checkout";Object(u.registerPaymentFormType)(N,{type:N,setup:function(t){var e=t.enable;(0,t.disable)(),t.cart=Object(u.__unstableUpdatePaymentFormCart)(t,new M);var r=t.find(".simpay-payment-btn")[0];r&&(r.addEventListener("click",(function(e){e.preventDefault();var r=window.simpayApp.triggerBrowserValidation;t[0].checkValidity()?Object(c.c)("simpaySubmitPaymentForm",t):r(t)})),e())},submit:function(_x){return E.apply(this,arguments)},enable:function(t){var e=t.cart,r=t.__unstableLegacyFormData,n=r.paymentButtonText,o=r.paymentButtonTrialText;t.removeClass("simpay-checkout-form--loading");var i=t.find(".simpay-payment-btn");if(i.prop("disabled",!1).removeClass("simpay-disabled"),0===e.getTotalDueToday())i.find("span").text(o);else{var a=B(e.isZeroDecimal()?e.getTotalDueToday():R(e.getTotalDueToday()),!0,e.getCurrencySymbol(),e.isZeroDecimal()),u=''.concat(a,"");i.find("span").html(n.replace("{{amount}}",u))}},disable:function(t){var e=t.__unstableLegacyFormData.paymentButtonLoadingText;t.addClass("simpay-checkout-form--loading"),t.find(".simpay-payment-btn").prop("disabled",!0).addClass("simpay-disabled").find("span").html(e)},error:function(t,e){var r,n=t.enable,o=t.__unstableLegacyFormData,i=o.stripeErrorMessages,a=o.unknownError;if(e&&""===e)r="";else if(void 0!==e){var u=e.message,c=e.code;r=u||e,c&&i[c]&&(r=i[c])}else r=a;t.find(".simpay-errors").html(r),n()}});var U=r(33);function G(){return(G=o()(a.a.mark((function t(e){var r,n,o,i,u,c,s;return a.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.id,n=e.setState,o=e.submit,i=e.disable,u=e.enable,c=e.error,s=e.__unstableLegacyFormData,i(),e.trigger("simpayBeforeStripePayment",[e,s]),s.isValid){t.next=6;break}return u(),t.abrupt("return");case 6:return t.prev=6,t.next=9,Object(U.a)("simple_pay_form_".concat(r,"_customer")).then((function(t){n({customerCaptchaToken:t})}));case 9:return t.next=11,Object(U.a)("simple_pay_form_".concat(r,"_payment")).then((function(t){n({paymentCaptchaToken:t})}));case 11:o(),t.next=17;break;case 14:t.prev=14,t.t0=t.catch(6),c(t.t0);case 17:case"end":return t.stop()}}),t,null,[[6,14]])})))).apply(this,arguments)}Object(c.a)("simpaySetupPaymentForm","wpsp/paymentForm",(function(t){return(0,t.setup)()})),Object(c.a)("simpaySubmitPaymentForm","wpsp/paymentForm",(function(_x){return G.apply(this,arguments)}))},37:function(t,e,r){var n=r(109),o=r(110),i=r(111),a=r(112);t.exports=function(t){return n(t)||o(t)||i(t)||a()},t.exports.__esModule=!0,t.exports.default=t.exports},40:function(t,e){function r(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.getFormData;return Object(i.a)("v2/customer",f({form_values:s()(e[0],{hash:!0}),form_data:n(),form_id:r},t))}function d(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function h(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0,r=e.id,n=e.getFormData;return Object(i.a)("v2/checkout-session",h({form_values:s()(e[0],{hash:!0}),form_data:n(),form_id:r},t))}r(18),r(10),r(33)},60:function(t,e){function r(e){return t.exports=r=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},t.exports.__esModule=!0,t.exports.default=t.exports,r(e)}t.exports=r,t.exports.__esModule=!0,t.exports.default=t.exports},65:function(t,e,r){var n=function(t){"use strict";var e=Object.prototype,r=e.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function u(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o=e&&e.prototype instanceof f?e:f,i=Object.create(o.prototype),a=new O(n||[]);return i._invoke=function(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=x(a,r);if(u){if(u===l)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=s(t,e,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===l)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}(t,r,a),i}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var l={};function f(){}function p(){}function d(){}var h={};u(h,o,(function(){return this}));var m=Object.getPrototypeOf,y=m&&m(m(T([])));y&&y!==e&&r.call(y,o)&&(h=y);var v=d.prototype=f.prototype=Object.create(h);function g(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function b(t,e){var n;this._invoke=function(o,i){function a(){return new e((function(n,a){!function n(o,i,a,u){var c=s(t[o],t,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==typeof f&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,a,u)}),(function(t){n("throw",t,a,u)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return n("throw",t,a,u)}))}u(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function x(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,x(t,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=s(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,l;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function _(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function w(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(_,this),this.reset(!0)}function T(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),w(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;w(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:T(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}(t.exports);try{regeneratorRuntime=n}catch(t){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}},66:function(t,e){t.exports=function(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that adds a new hook.\n */\n\nfunction createAddHook(hooks) {\n /**\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {Function} callback Function to call when the hook is run\n * @param {?number} priority Priority of this hook (default=10)\n */\n return function addHook(hookName, namespace, callback) {\n var priority = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!validateNamespace(namespace)) {\n return;\n }\n\n if ('function' !== typeof callback) {\n // eslint-disable-next-line no-console\n console.error('The hook callback must be a function.');\n return;\n } // Validate numeric priority\n\n\n if ('number' !== typeof priority) {\n // eslint-disable-next-line no-console\n console.error('If specified, the hook priority must be a number.');\n return;\n }\n\n var handler = {\n callback: callback,\n priority: priority,\n namespace: namespace\n };\n\n if (hooks[hookName]) {\n // Find the correct insert index of the new hook.\n var handlers = hooks[hookName].handlers;\n var i;\n\n for (i = handlers.length; i > 0; i--) {\n if (priority >= handlers[i - 1].priority) {\n break;\n }\n }\n\n if (i === handlers.length) {\n // If append, operate via direct assignment.\n handlers[i] = handler;\n } else {\n // Otherwise, insert before index via splice.\n handlers.splice(i, 0, handler);\n } // We may also be currently executing this hook. If the callback\n // we're adding would come after the current callback, there's no\n // problem; otherwise we need to increase the execution index of\n // any other runs by 1 to account for the added element.\n\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex++;\n }\n });\n } else {\n // This is the first hook of its type.\n hooks[hookName] = {\n handlers: [handler],\n runs: 0\n };\n }\n\n if (hookName !== 'hookAdded') {\n doAction('hookAdded', hookName, namespace, callback, priority);\n }\n };\n}\n\nexport default createAddHook;\n//# sourceMappingURL=createAddHook.js.map","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns the current hook.\n */\nfunction createCurrentHook(hooks) {\n /**\n * Returns the name of the currently running hook, or `null` if no hook of\n * the given type is currently running.\n *\n * @return {?string} The name of the currently running hook, or\n * `null` if no hook is currently running.\n */\n return function currentHook() {\n if (!hooks.__current || !hooks.__current.length) {\n return null;\n }\n\n return hooks.__current[hooks.__current.length - 1].name;\n };\n}\n\nexport default createCurrentHook;\n//# sourceMappingURL=createCurrentHook.js.map","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns a hook's call count.\n */\n\nfunction createDidHook(hooks) {\n /**\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number} The number of times the hook has run.\n */\n return function didHook(hookName) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n return hooks[hookName] && hooks[hookName].runs ? hooks[hookName].runs : 0;\n };\n}\n\nexport default createDidHook;\n//# sourceMappingURL=createDidHook.js.map","/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook(hooks) {\n /**\n * Returns whether a hook is currently being executed.\n *\n * @param {?string} hookName The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n return function doingHook(hookName) {\n // If the hookName was not passed, check for any current hook.\n if ('undefined' === typeof hookName) {\n return 'undefined' !== typeof hooks.__current[0];\n } // Return the __current hook.\n\n\n return hooks.__current[0] ? hookName === hooks.__current[0].name : false;\n };\n}\n\nexport default createDoingHook;\n//# sourceMappingURL=createDoingHook.js.map","/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook(hooks) {\n /**\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {?string} namespace Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n return function hasHook(hookName, namespace) {\n // Use the namespace if provided.\n if ('undefined' !== typeof namespace) {\n return hookName in hooks && hooks[hookName].handlers.some(function (hook) {\n return hook.namespace === namespace;\n });\n }\n\n return hookName in hooks;\n };\n}\n\nexport default createHasHook;\n//# sourceMappingURL=createHasHook.js.map","/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Object} Object that contains all hooks.\n */\n\nfunction createHooks() {\n var actions = Object.create(null);\n var filters = Object.create(null);\n actions.__current = [];\n filters.__current = [];\n return {\n addAction: createAddHook(actions),\n addFilter: createAddHook(filters),\n removeAction: createRemoveHook(actions),\n removeFilter: createRemoveHook(filters),\n hasAction: createHasHook(actions),\n hasFilter: createHasHook(filters),\n removeAllActions: createRemoveHook(actions, true),\n removeAllFilters: createRemoveHook(filters, true),\n doAction: createRunHook(actions),\n applyFilters: createRunHook(filters, true),\n currentAction: createCurrentHook(actions),\n currentFilter: createCurrentHook(filters),\n doingAction: createDoingHook(actions),\n doingFilter: createDoingHook(filters),\n didAction: createDidHook(actions),\n didFilter: createDidHook(filters),\n actions: actions,\n filters: filters\n };\n}\n\nexport default createHooks;\n//# sourceMappingURL=createHooks.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {boolean} removeAll Whether to remove all callbacks for a hookName, without regard to namespace. Used to create `removeAll*` functions.\n *\n * @return {Function} Function that removes hooks.\n */\n\nfunction createRemoveHook(hooks, removeAll) {\n /**\n * Removes the specified callback (or all callbacks) from the hook with a\n * given hookName and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n *\n * @return {number} The number of callbacks removed.\n */\n return function removeHook(hookName, namespace) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!removeAll && !validateNamespace(namespace)) {\n return;\n } // Bail if no hooks exist by this name\n\n\n if (!hooks[hookName]) {\n return 0;\n }\n\n var handlersRemoved = 0;\n\n if (removeAll) {\n handlersRemoved = hooks[hookName].handlers.length;\n hooks[hookName] = {\n runs: hooks[hookName].runs,\n handlers: []\n };\n } else {\n // Try to find the specified callback to remove.\n var handlers = hooks[hookName].handlers;\n\n var _loop = function _loop(i) {\n if (handlers[i].namespace === namespace) {\n handlers.splice(i, 1);\n handlersRemoved++; // This callback may also be part of a hook that is\n // currently executing. If the callback we're removing\n // comes after the current callback, there's no problem;\n // otherwise we need to decrease the execution index of any\n // other runs by 1 to account for the removed element.\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex--;\n }\n });\n }\n };\n\n for (var i = handlers.length - 1; i >= 0; i--) {\n _loop(i);\n }\n }\n\n if (hookName !== 'hookRemoved') {\n doAction('hookRemoved', hookName, namespace);\n }\n\n return handlersRemoved;\n };\n}\n\nexport default createRemoveHook;\n//# sourceMappingURL=createRemoveHook.js.map","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n\n/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {?boolean} returnFirstArg Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {Function} Function that runs hook callbacks.\n */\nfunction createRunHook(hooks, returnFirstArg) {\n /**\n * Runs all callbacks for the specified hook.\n *\n * @param {string} hookName The name of the hook to run.\n * @param {...*} args Arguments to pass to the hook callbacks.\n *\n * @return {*} Return value of runner, if applicable.\n */\n return function runHooks(hookName) {\n if (!hooks[hookName]) {\n hooks[hookName] = {\n handlers: [],\n runs: 0\n };\n }\n\n hooks[hookName].runs++;\n var handlers = hooks[hookName].handlers; // The following code is stripped from production builds.\n\n if ('production' !== process.env.NODE_ENV) {\n // Handle any 'all' hooks registered.\n if ('hookAdded' !== hookName && hooks.all) {\n handlers.push.apply(handlers, _toConsumableArray(hooks.all.handlers));\n }\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (!handlers || !handlers.length) {\n return returnFirstArg ? args[0] : undefined;\n }\n\n var hookInfo = {\n name: hookName,\n currentIndex: 0\n };\n\n hooks.__current.push(hookInfo);\n\n while (hookInfo.currentIndex < handlers.length) {\n var handler = handlers[hookInfo.currentIndex];\n var result = handler.callback.apply(null, args);\n\n if (returnFirstArg) {\n args[0] = result;\n }\n\n hookInfo.currentIndex++;\n }\n\n hooks.__current.pop();\n\n if (returnFirstArg) {\n return args[0];\n }\n };\n}\n\nexport default createRunHook;\n//# sourceMappingURL=createRunHook.js.map","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n\nvar _createHooks = createHooks(),\n addAction = _createHooks.addAction,\n addFilter = _createHooks.addFilter,\n removeAction = _createHooks.removeAction,\n removeFilter = _createHooks.removeFilter,\n hasAction = _createHooks.hasAction,\n hasFilter = _createHooks.hasFilter,\n removeAllActions = _createHooks.removeAllActions,\n removeAllFilters = _createHooks.removeAllFilters,\n doAction = _createHooks.doAction,\n applyFilters = _createHooks.applyFilters,\n currentAction = _createHooks.currentAction,\n currentFilter = _createHooks.currentFilter,\n doingAction = _createHooks.doingAction,\n doingFilter = _createHooks.doingFilter,\n didAction = _createHooks.didAction,\n didFilter = _createHooks.didFilter,\n actions = _createHooks.actions,\n filters = _createHooks.filters;\n\nexport { createHooks, addAction, addFilter, removeAction, removeFilter, hasAction, hasFilter, removeAllActions, removeAllFilters, doAction, applyFilters, currentAction, currentFilter, doingAction, doingFilter, didAction, didFilter, actions, filters };\n//# sourceMappingURL=index.js.map","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName(hookName) {\n if ('string' !== typeof hookName || '' === hookName) {\n // eslint-disable-next-line no-console\n console.error('The hook name must be a non-empty string.');\n return false;\n }\n\n if (/^__/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name cannot begin with `__`.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name can only contain numbers, letters, dashes, periods and underscores.');\n return false;\n }\n\n return true;\n}\n\nexport default validateHookName;\n//# sourceMappingURL=validateHookName.js.map","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace(namespace) {\n if ('string' !== typeof namespace || '' === namespace) {\n // eslint-disable-next-line no-console\n console.error('The namespace must be a non-empty string.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test(namespace)) {\n // eslint-disable-next-line no-console\n console.error('The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.');\n return false;\n }\n\n return true;\n}\n\nexport default validateNamespace;\n//# sourceMappingURL=validateNamespace.js.map","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","/* global jQuery, _, Stripe */\n\n/**\n * Internal dependencies.\n */\nimport { default as hooks, doAction } from '@wpsimplepay/hooks';\nimport * as paymentForms from '@wpsimplepay/payment-forms';\nimport * as api from '@wpsimplepay/api';\nimport { default as legacyHelpers } from './utils/legacy.js';\nimport './payment-forms';\n\n/**\n * WP Simple Pay API.\n *\n * @todo Create automatically with Webpack.\n */\n\n// Don't expose api.apiRequest to window.\nconst {\n\tcharges,\n\tcustomers,\n\tpaymentintents,\n\tsessions,\n\tsetupintents,\n\tsubscriptions,\n} = api;\n\nwindow.wpsp = {\n\thooks,\n\tpaymentForms,\n\tapi: {\n\t\tcharges,\n\t\tcustomers,\n\t\tpaymentintents,\n\t\tsessions,\n\t\tsetupintents,\n\t\tsubscriptions,\n\t},\n};\n\n/**\n * Legacy API.\n */\nwindow.simpayApp = {\n\tformCount: 0,\n\tspFormElList: {},\n\tspFormData: {},\n\tspFormElems: {},\n\t...legacyHelpers,\n};\n\n/**\n * Initializes Payment Forms on the current page.\n */\nfunction initPaymentForms() {\n\tconst $paymentForms = jQuery( document.body ).find(\n\t\t'.simpay-checkout-form:not(.simpay-update-payment-method)'\n\t);\n\n\twindow.simpayApp.spFormElList = $paymentForms;\n\n\t$paymentForms.each( function () {\n\t\twindow.simpayApp.formCount++;\n\t\tinitPaymentForm( jQuery( this ) );\n\t} );\n}\n\n/**\n * Initializes a Payment Form given a jQuery object.\n *\n * @param {jQuery} $paymentForm jQuery Payment Form object.\n */\nfunction initPaymentForm( $paymentForm ) {\n\t// Add the form instance count to the wrapper element to allow selectors\n\t// such as #payment-form-123[data-simpay-form-instance=\"2\"].\n\t//\n\t// This ensures we can query for a specific element if a form appears more\n\t// than once on a page. We cannot always access via spFormElem/$paymentForm\n\t// due to Overlay forms being moved around the DOM.\n\t//\n\t// @link https://github.com/wpsimplepay/wp-simple-pay-pro/pull/766\n\tconst { formCount } = window.simpayApp;\n\t$paymentForm.attr( 'data-simpay-form-instance', formCount );\n\n\t// Retrieve localized form data.\n\tconst forms = window.simplePayForms;\n\tconst formId = $paymentForm.data( 'simpay-form-id' );\n\n\tconst paymentFormData = forms[ formId ];\n\tconst {\n\t\ttype: formType,\n\t\tform: { prices, livemode, config = {} },\n\t} = paymentFormData;\n\n\tconst { taxRates = [], paymentMethods = [] } = config;\n\n\t// Merge localized form data in to a semi-simplified object.\n\t// Maintained for backwards compatibility.\n\tconst formData = {\n\t\tformId,\n\t\tformInstance: formCount,\n\t\tquantity: 1,\n\t\tisValid: true,\n\t\tstripeParams: {\n\t\t\t...paymentFormData.stripe.strings,\n\t\t\t...paymentFormData.stripe.bools,\n\t\t},\n\t\tprices,\n\t\t...paymentFormData.form.bools,\n\t\t...paymentFormData.form.integers,\n\t\t...paymentFormData.form.i18n,\n\t\t...paymentFormData.form.strings,\n\t\t...paymentFormData.form.config,\n\t};\n\n\t// Attach legacy form data to the Payment Form jQuery object so\n\t// it is available for backwards compatibility.\n\t$paymentForm.__unstableLegacyFormData = formData;\n\n\t// Bind the Payment Form's type settings.\n\tconst formTypeSettings = paymentForms.getPaymentFormType( formType );\n\n\t_.each( formTypeSettings, ( setting, settingKey ) => {\n\t\t// Bind the instance of the PaymentForm to the first argument of setting callbacks.\n\t\t// @link https://underscorejs.org/#bind\n\t\t$paymentForm[ settingKey ] = _.isFunction( setting )\n\t\t\t? _.bind( setting, $paymentForm, $paymentForm )\n\t\t\t: setting;\n\t} );\n\n\t// Attach the ID.\n\t$paymentForm.id = formId;\n\n\t// Attach form state information to the Payment Form jQuery object.\n\t$paymentForm.state = {\n\t\tisValid: true,\n\t\tcustomAmount: false,\n\t\tcoupon: false,\n\t\t// Ensure a price is always available.\n\t\tprice: _.find( prices, ( { default: isDefault } ) => {\n\t\t\treturn true === isDefault;\n\t\t} ),\n\t\tpaymentMethod: _.first( paymentMethods ),\n\t\ttaxRates,\n\t\tpaymentMethods,\n\t\tlivemode,\n\t};\n\n\t// Attach a form state setter to the Payment Form jQuery object.\n\t$paymentForm.setState = function ( updatedState ) {\n\t\t$paymentForm.state = {\n\t\t\t...$paymentForm.state,\n\t\t\t...updatedState,\n\t\t};\n\t};\n\n\t// Attach a Stripe instance to the Payment Form jQuery object.\n\tconst {\n\t\tkey: publishableKey,\n\t\telementsLocale,\n\t} = paymentFormData.stripe.strings;\n\n\t$paymentForm.stripeInstance = Stripe( publishableKey, {\n\t\tlocale: elementsLocale || 'auto',\n\t} );\n\n\t/**\n\t * Allows further setup of a Payment Form.\n\t *\n\t * @since 4.2.0\n\t *\n\t * @param {PaymentForm} $paymentForm\n\t */\n\tdoAction( 'simpaySetupPaymentForm', $paymentForm );\n\n\t// Backwards compatibility.\n\twindow.simpayApp.spFormData[ formId ] = formData;\n\twindow.simpayApp.spFormElems[ formId ] = $paymentForm;\n\n\tjQuery( document.body )\n\t\t.trigger( 'simpayCoreFormVarsInitialized', [ $paymentForm, formData ] )\n\t\t.trigger( 'simpayBindCoreFormEventsAndTriggers', [\n\t\t\t$paymentForm,\n\t\t\tformData,\n\t\t] )\n\t\t.trigger( 'simpaySetupCoreForm', [ $paymentForm ] );\n}\n\njQuery( () => initPaymentForms() );\n","/**\n * Internal dependencies\n */\n// Payment Form types.\nimport './stripe-checkout';\n\nimport { addAction } from '@wpsimplepay/hooks';\nimport { createToken } from '../utils/recaptcha.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Sets up the relevant Payment Form type when a Payment Form is initialized.\n *\n * @param {PaymentForm} paymentForm\n */\nfunction setupPaymentForm( { setup } ) {\n\treturn setup();\n}\naddAction( 'simpaySetupPaymentForm', 'wpsp/paymentForm', setupPaymentForm );\n\n/**\n * Submits a Payment Form.\n *\n * @param {PaymentForm} paymentForm\n */\nasync function submitPaymentForm( paymentForm ) {\n\tconst {\n\t\tid,\n\t\tsetState,\n\t\tsubmit,\n\t\tdisable: disableForm,\n\t\tenable: enableForm,\n\t\terror: onError,\n\t\t__unstableLegacyFormData,\n\t} = paymentForm;\n\n\t// Disable while processing.\n\tdisableForm();\n\n\t// Allow further validation.\n\t// Backwards compatibility.\n\tpaymentForm.trigger( 'simpayBeforeStripePayment', [\n\t\tpaymentForm,\n\t\t__unstableLegacyFormData,\n\t] );\n\n\tif ( ! __unstableLegacyFormData.isValid ) {\n\t\tenableForm();\n\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// Generate reCAPTCHA tokens before proceeding.\n\t\t//\n\t\t// @todo This is still tightly coupled with the form submission...\n\t\t// but maybe that's fine. It is no longer duplicated between Payment Form\n\t\t// types, so that's better.\n\t\t//\n\t\t// doAction can't be used here because all assigned callees are executed at once.\n\t\tawait createToken( `simple_pay_form_${ id }_customer` ).then(\n\t\t\t( token ) => {\n\t\t\t\tsetState( {\n\t\t\t\t\tcustomerCaptchaToken: token,\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\n\t\tawait createToken( `simple_pay_form_${ id }_payment` ).then(\n\t\t\t( token ) => {\n\t\t\t\tsetState( {\n\t\t\t\t\tpaymentCaptchaToken: token,\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\n\t\tsubmit().catch( onError );\n\t} catch ( error ) {\n\t\tonError( error );\n\t}\n}\naddAction( 'simpaySubmitPaymentForm', 'wpsp/paymentForm', submitPaymentForm );\n","/**\n * Internal dependencies\n */\nimport { Cart as BaseCart } from '@wpsimplepay/cart';\nimport LineItem from './line-item.js';\n\n/**\n * Cart for Stripe Checkout form types.\n *\n * @since 3.7.0\n */\nexport const Cart = class Cart extends BaseCart {\n\t/**\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Cart arguments.\n\t */\n\tconstructor( args ) {\n\t\tsuper( args );\n\n\t\t// Define the type of line item to use.\n\t\tthis.LineItem = LineItem;\n\t}\n};\n","/**\n * Internal dependencies\n */\nimport { LineItem as BaseLineItem } from '@wpsimplepay/cart';\n\n/**\n * LineItem\n */\nclass LineItem extends BaseLineItem {}\n\nexport default LineItem;\n","/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Disable the Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nfunction disable( paymentForm ) {\n\tconst { __unstableLegacyFormData } = paymentForm;\n\tconst { paymentButtonLoadingText } = __unstableLegacyFormData;\n\n\t// Add a loading class indicator.\n\tpaymentForm.addClass( 'simpay-checkout-form--loading' );\n\n\t// Disable the form submit button.\n\tpaymentForm\n\t\t.find( '.simpay-payment-btn' )\n\t\t.prop( 'disabled', true )\n\t\t.addClass( 'simpay-disabled' )\n\t\t.find( 'span' )\n\t\t.html( paymentButtonLoadingText );\n}\n\nexport default disable;\n","/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\nconst { convertToDollars, formatCurrency } = window.spShared;\n\n/**\n * Enable the Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nfunction enable( paymentForm ) {\n\tconst { cart, __unstableLegacyFormData } = paymentForm;\n\tconst { startTrial, paymentButtonText } = __unstableLegacyFormData;\n\n\t// Remove a loading class indicator.\n\tpaymentForm.removeClass( 'simpay-checkout-form--loading' );\n\n\t// Enable the form submit button.\n\tconst submitButtonEl = paymentForm.find( '.simpay-payment-btn' );\n\n\tsubmitButtonEl.prop( 'disabled', false ).removeClass( 'simpay-disabled' );\n\n\tif ( 0 === cart.getTotal() ) {\n\t\tsubmitButtonEl.find( 'span' ).text( startTrial );\n\t} else {\n\t\tconst formatted = formatCurrency(\n\t\t\tcart.isZeroDecimal()\n\t\t\t\t? cart.getTotal()\n\t\t\t\t: convertToDollars( cart.getTotal() ),\n\t\t\ttrue,\n\t\t\tcart.getCurrencySymbol(),\n\t\t\tcart.isZeroDecimal()\n\t\t);\n\n\t\tconst amount = `${ formatted }`;\n\n\t\tsubmitButtonEl\n\t\t\t.find( 'span' )\n\t\t\t.html( paymentButtonText.replace( '{{amount}}', amount ) );\n\t}\n}\n\nexport default enable;\n","/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Display an error message below the Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n * @param {Object|string} _error Error message or object.\n */\nfunction error( paymentForm, _error ) {\n\tconst { enable: enableForm, __unstableLegacyFormData } = paymentForm;\n\tconst { stripeErrorMessages } = __unstableLegacyFormData;\n\n\tconst { message, code } = _error;\n\tlet errorMessage = message ? message : _error;\n\n\t// Use localized message if code exists.\n\tif ( code && stripeErrorMessages[ code ] ) {\n\t\terrorMessage = stripeErrorMessages[ code ];\n\t}\n\n\t// Show message in UI.\n\tpaymentForm.find( '.simpay-errors' ).html( errorMessage );\n\n\t// Enable form.\n\tenableForm();\n}\n\nexport default error;\n","/**\n * Internal dependencies\n */\nimport { registerPaymentFormType } from '@wpsimplepay/payment-forms';\nimport { default as setup } from './setup.js';\nimport { default as submit } from './submit.js';\nimport { default as enable } from './enable.js';\nimport { default as disable } from './disable.js';\nimport { default as error } from './error.js';\n\nconst type = 'stripe-checkout';\n\nregisterPaymentFormType( type, {\n\ttype,\n\tsetup,\n\tsubmit,\n\tenable,\n\tdisable,\n\terror,\n} );\n","/**\n * Internal dependencies\n */\nimport { doAction } from '@wpsimplepay/hooks';\nimport { __unstableUpdatePaymentFormCart } from '@wpsimplepay/payment-forms';\nimport { Cart } from './cart';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Setup Stripe Checkout Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nfunction setup( paymentForm ) {\n\tconst { enable: enableForm, disable: disableForm } = paymentForm;\n\n\t// Disable while setting up.\n\tdisableForm();\n\n\t// Bind cart to PaymentForm.\n\tpaymentForm.cart = __unstableUpdatePaymentFormCart(\n\t\tpaymentForm,\n\t\tnew Cart()\n\t);\n\n\t// Bind submit button.\n\tconst submitButtonEl = paymentForm.find( '.simpay-payment-btn' )[ 0 ];\n\n\tif ( ! submitButtonEl ) {\n\t\treturn;\n\t}\n\n\tsubmitButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\n\t\t// HTML5 validation check.\n\t\tconst { triggerBrowserValidation } = window.simpayApp;\n\n\t\tif ( ! paymentForm[ 0 ].checkValidity() ) {\n\t\t\ttriggerBrowserValidation( paymentForm );\n\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * Allows processing during a Payment Form submission.\n\t\t *\n\t\t * @since 4.2.0\n\t\t *\n\t\t * @param {PaymentForm} paymentForm\n\t\t */\n\t\tdoAction( 'simpaySubmitPaymentForm', paymentForm );\n\t} );\n\n\tenableForm();\n}\n\nexport default setup;\n","/**\n * Internal dependencies\n */\nimport { customers, sessions } from '@wpsimplepay/api';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Submit Stripe Checkout Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nasync function submit( paymentForm ) {\n\tconst { error: onError, __unstableLegacyFormData } = paymentForm;\n\n\tlet customerId = null;\n\tconst { hasCustomerFields } = __unstableLegacyFormData;\n\n\t// Only generate a custom Customer if we need to map on-page form fields.\n\tif ( hasCustomerFields ) {\n\t\tconst { id } = await customers.create( {}, paymentForm );\n\n\t\tcustomerId = id;\n\t}\n\n\t// Generate a Checkout Session.\n\tconst { sessionId } = await sessions.create(\n\t\t{\n\t\t\tcustomer_id: customerId,\n\t\t},\n\t\tpaymentForm\n\t);\n\n\t// Redirect to Stripe.\n\treturn paymentForm.stripeInstance\n\t\t.redirectToCheckout( {\n\t\t\tsessionId,\n\t\t} )\n\t\t.then( ( result ) => {\n\t\t\tif ( result.error ) {\n\t\t\t\tonError( result.error );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} );\n}\n\nexport default submit;\n","/* global _, jQuery */\n\n/**\n * Internal dependencies\n */\nconst { convertToDollars, formatCurrency } = window.spShared;\n\nexport default {\n\tinit: _.noop,\n\tsetupCoreForm: _.noop,\n\n\t/**\n\t * Does this payment form use the Stripe Checkout overlay?\n\t *\n\t * @param {Object} formData Configured form data.\n\t */\n\tisStripeCheckoutForm( formData ) {\n\t\treturn (\n\t\t\tundefined === formData.formDisplayType ||\n\t\t\t'stripe_checkout' === formData.formDisplayType\n\t\t);\n\t},\n\n\t/**\n\t * Set the final amount for the Payment Form.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t */\n\tsetCoreFinalAmount( spFormElem, formData ) {\n\t\t// Backwards compat.\n\t\tformData.finalAmount = spFormElem.cart.getTotal();\n\n\t\tjQuery( document.body ).trigger( 'simpayFinalizeCoreAmount', [\n\t\t\tspFormElem,\n\t\t\tformData,\n\t\t] );\n\t},\n\n\t/**\n\t * Disable Payment Form.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t * @param {bool} setSubmitAsLoading Adjust button text to Processing text state.\n\t * @param setSubmitButtonAsLoading\n\t */\n\tdisableForm( spFormElem, formData, setSubmitButtonAsLoading ) {\n\t\tlet submitBtn = spFormElem.find( '.simpay-payment-btn' );\n\t\tlet loadingText = formData.paymentButtonLoadingText;\n\n\t\tspFormElem.addClass( 'simpay-checkout-form--loading' );\n\n\t\tif ( ! window.simpayApp.isStripeCheckoutForm( formData ) ) {\n\t\t\tsubmitBtn = spFormElem.find( '.simpay-checkout-btn' );\n\t\t\tloadingText = formData.checkoutButtonLoadingText;\n\t\t}\n\n\t\t// Disable the form submit button upon initial form load or form submission.\n\t\tsubmitBtn.prop( 'disabled', true );\n\n\t\tif ( true === setSubmitButtonAsLoading ) {\n\t\t\tsubmitBtn\n\t\t\t\t.addClass( 'simpay-disabled' )\n\t\t\t\t.find( 'span' )\n\t\t\t\t.html( loadingText );\n\t\t}\n\t},\n\n\t/**\n\t * Enable Payment Form.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t */\n\tenableForm( spFormElem, formData ) {\n\t\tconst { cart } = spFormElem;\n\n\t\t// Do nothing if Cart is unavailable.\n\t\tif ( undefined === cart ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet submitBtn = spFormElem.find( '.simpay-payment-btn' );\n\t\tlet loadingText = formData.paymentButtonLoadingText;\n\t\tlet buttonText = formData.paymentButtonText;\n\n\t\tspFormElem.removeClass( 'simpay-checkout-form--loading' );\n\n\t\tif ( ! window.simpayApp.isStripeCheckoutForm( formData ) ) {\n\t\t\tsubmitBtn = spFormElem.find( '.simpay-checkout-btn' );\n\t\t\tloadingText = formData.checkoutButtonLoadingText;\n\t\t\tbuttonText = formData.checkoutButtonText;\n\t\t}\n\n\t\t// Re-enable button.\n\t\tsubmitBtn.prop( 'disabled', false ).removeClass( 'simpay-disabled' );\n\n\t\t// Embed in to an arbitrary node to retrieve parsed entities.\n\t\tconst embeddedHtml = document.createElement( 'div' );\n\t\tembeddedHtml.innerHTML = loadingText;\n\n\t\t// Reset button text back to original if needed during validation.\n\t\tif (\n\t\t\tjQuery( embeddedHtml ).html() === submitBtn.find( 'span' ).html()\n\t\t) {\n\t\t\tif ( 0 === cart.getTotal() ) {\n\t\t\t\tconst { startTrial } = formData;\n\t\t\t\tsubmitBtn.find( 'span' ).text( startTrial );\n\t\t\t} else {\n\t\t\t\tconst formatted = formatCurrency(\n\t\t\t\t\tcart.isZeroDecimal()\n\t\t\t\t\t\t? cart.getTotal()\n\t\t\t\t\t\t: convertToDollars( cart.getTotal() ),\n\t\t\t\t\ttrue,\n\t\t\t\t\tcart.getCurrencySymbol(),\n\t\t\t\t\tcart.isZeroDecimal()\n\t\t\t\t);\n\n\t\t\t\tconst amount = `${ formatted }`;\n\n\t\t\t\tbuttonText = buttonText.replace( '{{amount}}', amount );\n\n\t\t\t\tsubmitBtn.find( 'span' ).html( buttonText );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Show an error.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t * @param {string} errorMessage Message to show.\n\t */\n\tshowError( spFormElem, formData, errorMessage ) {\n\t\treturn spFormElem.find( '.simpay-errors' ).html( errorMessage );\n\t},\n\n\t/**\n\t * Ref triggerBrowserValidation in https://stripe.github.io/elements-examples/\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t */\n\ttriggerBrowserValidation( spFormElem, formData ) {\n\t\treturn jQuery( '' )\n\t\t\t.attr( {\n\t\t\t\ttype: 'submit',\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.appendTo( spFormElem )\n\t\t\t.click()\n\t\t\t.remove();\n\t},\n};\n","/* global grecaptcha */\n\nexport function createToken( action ) {\n\tif ( ! window.simpayGoogleRecaptcha ) {\n\t\treturn Promise.resolve( '' );\n\t}\n\n\tconst { siteKey, i18n } = window.simpayGoogleRecaptcha;\n\n\treturn new Promise( ( resolve, reject ) => {\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => resolve( token ) );\n\t\t} catch ( error ) {\n\t\t\treject( i18n.invalid );\n\t\t}\n\t} );\n}\n","/* global jQuery, wpApiSettings */\n\n/**\n * Make an API request to the REST API.\n *\n * @param {string} route REST route.\n * @param {Object} data Data to send to the request.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function apiRequest( route, data ) {\n\ttry {\n\t\treturn await jQuery.ajax( {\n\t\t\tdata,\n\t\t\tmethod: 'POST',\n\t\t\turl: `${ wpApiSettings.root }wpsp/${ route }`,\n\t\t\tbeforeSend: ( xhr ) => {\n\t\t\t\txhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );\n\t\t\t},\n\t\t} );\n\t} catch ( { responseJSON } ) {\n\t\tthrow responseJSON;\n\t}\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Charge\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, state, __unstableLegacyFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/charge', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: JSON.stringify( {\n\t\t\t...__unstableLegacyFormData,\n\t\t\t...state,\n\t\t} ),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Customer.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, state, __unstableLegacyFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/customer', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: JSON.stringify( {\n\t\t\t...__unstableLegacyFormData,\n\t\t\t...state,\n\t\t} ),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","export * from './api-request.js';\n\nexport * as charges from './charges.js';\nexport * as customers from './customers.js';\nexport * as paymentintents from './paymentintents.js';\nexport * as sessions from './sessions.js';\nexport * as setupintents from './setupintents.js';\nexport * as subscriptions from './subscriptions.js';\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a PaymentIntent.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, state, __unstableLegacyFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/paymentintent/create', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: JSON.stringify( {\n\t\t\t...__unstableLegacyFormData,\n\t\t\t...state,\n\t\t} ),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Checkout Session.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, state, __unstableLegacyFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/checkout-session', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: JSON.stringify( {\n\t\t\t...__unstableLegacyFormData,\n\t\t\t...state,\n\t\t} ),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a SetupIntent.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, state } = paymentForm;\n\n\treturn apiRequest( 'v2/setupintent/create', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: JSON.stringify( state ),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Subscription.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, state, __unstableLegacyFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/subscription', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: JSON.stringify( {\n\t\t\t...__unstableLegacyFormData,\n\t\t\t...state,\n\t\t} ),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n\n/**\n * Update a Subscription's payment method.\n *\n * Requires a Subscription's key and linked Customer for verification.\n * Takes direct arguments vs. spFormElem and full form data.\n *\n * @param {number} customerId ID of the Customer.\n * @param {string} subscriptionId ID of the Subscription.\n * @param {number} formId ID of the Payment Form.\n * @param {Object} args {\n * @return {Promise} AJAX promise.\n */\nexport function updatePaymentMethod(\n\tcustomerId,\n\tsubscriptionId,\n\tformId,\n\targs\n) {\n\treturn apiRequest(\n\t\t`v2/subscription/payment_method/${ subscriptionId }/${ customerId }`,\n\t\t{\n\t\t\tform_values: args,\n\t\t\tform_id: formId,\n\t\t}\n\t);\n}\n","/**\n * Internal dependencies\n */\nimport LineItem from './line-item.js';\n\n/**\n * Cart\n */\nexport const Cart = class Cart {\n\t/**\n\t * Creates a cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @see `update()`\n\t *\n\t * @param {Object} args Cart arguments.\n\t * @return {Cart} Cart.\n\t */\n\tconstructor( args ) {\n\t\t// Set defaults.\n\t\t// @todo add support for classProperties.\n\t\tthis.items = [];\n\t\tthis.currency = 'usd';\n\t\tthis.taxPercent = 0;\n\t\tthis.taxRates = [];\n\t\tthis.coupon = false;\n\t\tthis.isNonDecimalCurrency = false;\n\n\t\tthis.update( args );\n\t}\n\n\t/**\n\t * Updates the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Cart arguments.\n\t * @param {number} args.taxPercent Tax percentage.\n\t * @param {Array} args.taxRates Tax rates.\n\t * @param {false|Object} args.coupon Stripe Coupon.\n\t * @param {boolean} args.isNonDecimalCurrency If the currency is non-decimal based.\n\t * @return {Cart} Cart.\n\t */\n\tupdate( args ) {\n\t\t// Parse and retrieve specific arguments.\n\t\tconst {\n\t\t\tcurrency,\n\t\t\ttaxPercent,\n\t\t\ttaxRates,\n\t\t\tcoupon,\n\t\t\tisNonDecimalCurrency,\n\t\t} = {\n\t\t\t...this,\n\t\t\t...args,\n\t\t};\n\n\t\t// Set currency.\n\t\tif ( 'string' !== typeof currency ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-currency',\n\t\t\t\tmessage: 'Currency must be a string.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.currency = currency;\n\t\t}\n\n\t\t// Set fees.\n\t\tif ( isNaN( taxPercent ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-tax-percent',\n\t\t\t\tmessage: 'Tax percentage must be a number.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.taxPercent = parseFloat( taxPercent );\n\t\t}\n\n\t\t// Tax rates.\n\t\tif ( taxRates && Array.isArray( taxRates ) ) {\n\t\t\tthis.taxRates = taxRates;\n\t\t}\n\n\t\t// Set coupon.\n\t\t// @todo Validate coupon data.\n\t\tif ( ! ( false === coupon || 'object' === typeof coupon ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-coupon',\n\t\t\t\tmessage: 'Coupon must be a false or contain coupon data.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.coupon = coupon;\n\t\t}\n\n\t\tif ( 'boolean' !== typeof isNonDecimalCurrency ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-non-decimal-currency',\n\t\t\t\tmessage: 'Declaring a non-decimal currency must be a boolean.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.isNonDecimalCurrency = isNonDecimalCurrency;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Resets the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {Cart} Cart.\n\t */\n\treset() {\n\t\treturn new Cart();\n\t}\n\n\t/**\n\t * Returns the currency used by the base item, and therefore, the whole cart.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {string}\n\t */\n\tgetCurrency() {\n\t\tlet currency;\n\t\tconst { price } = this.getLineItem( 'base' );\n\n\t\tif ( null === price ) {\n\t\t\tcurrency = spGeneral.strings.currency;\n\t\t} else {\n\t\t\tcurrency = price.currency;\n\t\t}\n\n\t\treturn currency;\n\t}\n\n\t/**\n\t * Returns the currency symbol used by the base item, and therefore,\n\t * the whole cart.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {string}\n\t */\n\tgetCurrencySymbol() {\n\t\tlet currencySymbol;\n\t\tconst { price } = this.getLineItem( 'base' );\n\n\t\tif ( null === price ) {\n\t\t\tcurrencySymbol = spGeneral.strings.currencySymbol;\n\t\t} else {\n\t\t\tcurrencySymbol = price.currency_symbol;\n\t\t}\n\n\t\treturn currencySymbol;\n\t}\n\n\t/**\n\t * Determines if the currenet cart is using a zero decimal currency.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {bool}\n\t */\n\tisZeroDecimal() {\n\t\tconst { price } = this.getLineItem( 'base' );\n\t\tconst { is_zero_decimal: isZeroDecimal } = price;\n\n\t\treturn isZeroDecimal;\n\t}\n\n\t/**\n\t * Retrieves coupon information.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {Object} Stripe Coupon.\n\t */\n\tgetCoupon() {\n\t\treturn this.coupon;\n\t}\n\n\t/**\n\t * Retrieves a cart's inclusive tax percentage.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {string} taxCalculation Tax caclulation type.\n\t * @return {number} Cart's inclusive tax percentage.\n\t */\n\tgetTaxPercent( taxCalculation ) {\n\t\treturn this.getTaxRates().reduce(\n\t\t\t( percent, { calculation, percentage } ) => {\n\t\t\t\tif ( taxCalculation !== calculation ) {\n\t\t\t\t\treturn percent;\n\t\t\t\t}\n\n\t\t\t\treturn ( percent += percentage );\n\t\t\t},\n\t\t\t0\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves the cart's tax decimal amount for calculations.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number}\n\t */\n\tgetTaxDecimal() {\n\t\treturn this.taxPercent / 100;\n\t}\n\n\t/**\n\t * Retrieves the cart's tax rates.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {Array}\n\t */\n\tgetTaxRates() {\n\t\treturn this.taxRates;\n\t}\n\n\t/**\n\t * Retrieves the items in the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {Array} List of cart items.\n\t */\n\tgetLineItems() {\n\t\treturn this.items;\n\t}\n\n\t/**\n\t * Retrieves subtotal.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart subtotal.\n\t */\n\tgetSubtotal() {\n\t\treturn this.getLineItems().reduce( ( subtotal, lineItem ) => {\n\t\t\treturn ( subtotal += Math.round(\n\t\t\t\tlineItem.getUnitPrice() * lineItem.getQuantity()\n\t\t\t) );\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Retrieves the total discount amount.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart discount amount.\n\t */\n\tgetDiscount() {\n\t\tconst coupon = this.getCoupon();\n\t\tconst { percent_off: percentOff, amount_off: amountOff } = coupon;\n\n\t\tlet discount = 0;\n\n\t\tif ( false === coupon ) {\n\t\t\treturn discount;\n\t\t}\n\n\t\tif ( percentOff ) {\n\t\t\tdiscount += Math.round( this.getSubtotal() * ( percentOff / 100 ) );\n\t\t} else if ( amountOff ) {\n\t\t\tdiscount += amountOff;\n\t\t}\n\n\t\treturn discount;\n\t}\n\n\t/**\n\t * Retrieves the total tax amount.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart tax.\n\t */\n\tgetTax() {\n\t\treturn this.getLineItems().reduce( ( tax, lineItem ) => {\n\t\t\treturn ( tax += lineItem.getTax() );\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Retrieves the cart's tax amounts for corresponding tax rate IDs.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @link https://github.com/wpsimplepay/wp-simple-pay-pro/issues/1198#issuecomment-776724336\n\t *\n\t * @return {Object[]}\n\t */\n\tgetAppliedTaxRates() {\n\t\tconst lineItems = this.getLineItems();\n\n\t\tconst exclusiveTaxRates = this.getTaxRates().filter(\n\t\t\t( { calculation } ) => calculation !== 'inclusive'\n\t\t);\n\t\tconst totalExclusiveTaxDecimal =\n\t\t\tthis.getTaxPercent( 'exclusive' ) / 100;\n\n\t\tconst inclusiveTaxRates = this.getTaxRates().filter(\n\t\t\t( { calculation } ) => calculation !== 'exclusive'\n\t\t);\n\t\tconst inclusiveTaxPercent = this.getTaxPercent( 'inclusive' );\n\t\tconst totalInclusiveTaxDecimal = inclusiveTaxPercent / 100;\n\n\t\tconst taxRateAmounts = {};\n\n\t\tlineItems.forEach( ( lineItem ) => {\n\t\t\tconst lineExclusiveTax = lineItem.getTax();\n\t\t\tconst lineTaxableAmount = lineItem.getTaxableAmount();\n\t\t\tconst lineInclusiveTaxAmount = lineItem.getInclusiveTaxAmount();\n\n\t\t\texclusiveTaxRates.forEach( ( taxRate, i ) => {\n\t\t\t\tconst { id, percentage } = taxRate;\n\t\t\t\tconst taxDecimal = percentage / 100;\n\t\t\t\tlet taxAmount = 0;\n\n\t\t\t\tif ( i === exclusiveTaxRates.length - 1 ) {\n\t\t\t\t\tconst otherExclusiveTaxRates = exclusiveTaxRates.filter(\n\t\t\t\t\t\t( { id: taxRateId } ) => taxRateId !== id\n\t\t\t\t\t);\n\n\t\t\t\t\tconst otherExclusiveTaxPercent = otherExclusiveTaxRates.reduce(\n\t\t\t\t\t\t( percent, { percentage } ) => {\n\t\t\t\t\t\t\treturn ( percent += percentage );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\n\t\t\t\t\tconst otherExclusiveTaxDecimal =\n\t\t\t\t\t\totherExclusiveTaxPercent / 100;\n\n\t\t\t\t\tconst remainingExclusiveTax = Math.floor(\n\t\t\t\t\t\tlineTaxableAmount * otherExclusiveTaxDecimal\n\t\t\t\t\t);\n\n\t\t\t\t\ttaxAmount = lineExclusiveTax - remainingExclusiveTax;\n\t\t\t\t} else {\n\t\t\t\t\ttaxAmount = Math.floor(\n\t\t\t\t\t\tlineExclusiveTax *\n\t\t\t\t\t\t\t( taxDecimal / totalExclusiveTaxDecimal )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\ttaxRateAmounts[ id ] = [\n\t\t\t\t\t...( taxRateAmounts[ id ] || [] ),\n\t\t\t\t\ttaxAmount,\n\t\t\t\t];\n\t\t\t} );\n\n\t\t\tinclusiveTaxRates.forEach( ( taxRate, i ) => {\n\t\t\t\tconst { id, percentage } = taxRate;\n\t\t\t\tconst taxDecimal = percentage / 100;\n\t\t\t\tlet taxAmount;\n\n\t\t\t\tif ( i === inclusiveTaxRates.length - 1 ) {\n\t\t\t\t\tconst otherInclusiveTaxRates = inclusiveTaxRates.filter(\n\t\t\t\t\t\t( { id: taxRateId } ) => taxRateId !== id\n\t\t\t\t\t);\n\n\t\t\t\t\tconst otherInclusiveTaxAmount = otherInclusiveTaxRates.reduce(\n\t\t\t\t\t\t( taxAmount, { percentage } ) => {\n\t\t\t\t\t\t\treturn ( taxAmount += Math.floor(\n\t\t\t\t\t\t\t\tlineInclusiveTaxAmount *\n\t\t\t\t\t\t\t\t\t( percentage /\n\t\t\t\t\t\t\t\t\t\t100 /\n\t\t\t\t\t\t\t\t\t\ttotalInclusiveTaxDecimal )\n\t\t\t\t\t\t\t) );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\n\t\t\t\t\ttaxAmount =\n\t\t\t\t\t\tlineInclusiveTaxAmount - otherInclusiveTaxAmount;\n\t\t\t\t} else {\n\t\t\t\t\ttaxAmount = Math.floor(\n\t\t\t\t\t\tlineInclusiveTaxAmount *\n\t\t\t\t\t\t\t( taxDecimal / totalInclusiveTaxDecimal )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\ttaxRateAmounts[ id ] = [\n\t\t\t\t\t...( taxRateAmounts[ id ] || [] ),\n\t\t\t\t\ttaxAmount,\n\t\t\t\t];\n\t\t\t} );\n\t\t} );\n\n\t\treturn taxRateAmounts;\n\t}\n\n\t/**\n\t * Retrieves the total.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart total.\n\t */\n\tgetTotal() {\n\t\treturn this.getLineItems().reduce( ( total, lineItem ) => {\n\t\t\treturn ( total += lineItem.getTotal() );\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Retrieves the recurring total.\n\t *\n\t * Calculates amounts manually by applying the whole discount to the line item.\n\t * Assumes discounts apply indefinitely.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Cart recurring total.\n\t */\n\tgetRecurringTotal() {\n\t\tconst recurring = this.getLineItem( 'base' );\n\t\tlet recurringSubtotal =\n\t\t\trecurring.getUnitPrice() * recurring.getQuantity();\n\t\trecurringSubtotal = Math.round(\n\t\t\trecurringSubtotal - this.getDiscount()\n\t\t);\n\n\t\tconst taxRates = this.getTaxRates();\n\t\tconst taxRate = this.getTaxPercent( 'inclusive' ) / 100;\n\n\t\tconst inclusiveTaxAmount = Math.round(\n\t\t\trecurringSubtotal - recurringSubtotal / ( 1 + taxRate )\n\t\t);\n\n\t\tconst postInclusiveTaxAmount = Math.round(\n\t\t\trecurringSubtotal - inclusiveTaxAmount\n\t\t);\n\t\tconst taxAmount = taxRates.reduce(\n\t\t\t( tax, { percentage, calculation } ) => {\n\t\t\t\tif ( 'inclusive' === calculation ) {\n\t\t\t\t\treturn tax;\n\t\t\t\t}\n\n\t\t\t\treturn ( tax += Math.round(\n\t\t\t\t\tpostInclusiveTaxAmount * ( percentage / 100 )\n\t\t\t\t) );\n\t\t\t},\n\t\t\t0\n\t\t);\n\n\t\treturn Math.round( recurringSubtotal + taxAmount );\n\t}\n\n\t/**\n\t * Retrieves an item.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {string} id Cart line item ID.\n\t * @return {LineItem} Cart line item.\n\t */\n\tgetLineItem( id ) {\n\t\tconst items = this.getLineItems();\n\n\t\t// Can't use `find` because it is not supported in IE.\n\t\tconst filteredItems = items.filter(\n\t\t\t( { id: itemId } ) => itemId === id\n\t\t);\n\n\t\tif ( 0 === filteredItems.length ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item',\n\t\t\t\tmessage: `Unable to retrieve line item \"${ id }\"`,\n\t\t\t};\n\t\t}\n\n\t\treturn filteredItems[ 0 ];\n\t}\n\n\t/**\n\t * Adds a line item to the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object|LineItem} item Cart line item or arguments to create one.\n\t * @return {LineItem} Added line item.\n\t */\n\taddLineItem( item ) {\n\t\tlet lineitem;\n\n\t\tif ( true === item instanceof LineItem ) {\n\t\t\tlineitem = item;\n\t\t} else {\n\t\t\tlineitem = new this.LineItem( item, this );\n\t\t}\n\n\t\tthis.items.push( lineitem );\n\n\t\treturn lineitem;\n\t}\n};\n","export * from './cart.js';\nexport * from './line-item.js';\n\n/**\n * Converts current `formData` to a structured cart.\n *\n * @since 3.7.0\n *\n * @param {Object} formData Legacy form data.\n * @return {Object} data Cart data.\n */\nexport function convertFormDataToCartData( formData ) {\n\tconst { debugLog, convertToCents } = window.spShared;\n\n\tconst {\n\t\tbooleans: { isZeroDecimal: isNonDecimalCurrency },\n\t} = window.spGeneral;\n\n\tconst {\n\t\tstripeParams: { currency },\n\n\t\t// Items.\n\t\tamount,\n\t\tisSubscription,\n\t\tquantity,\n\t\tisTrial,\n\t\tplanInterval,\n\t\tplanIntervalCount,\n\n\t\t// Fees.\n\t\tfeePercent,\n\t\tfeeAmount,\n\t\ttaxPercent,\n\t} = formData;\n\n\tconst data = {\n\t\tcurrency,\n\t\titems: [],\n\t\ttaxPercent: 0,\n\t\tisNonDecimalCurrency,\n\t};\n\n\t//\n\t// Add items.\n\t//\n\n\t// Initial Setup Fee.\n\tdata.items.push( {\n\t\tid: 'setup-fee',\n\t\ttitle: 'Initial Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\t// Plan Setup Fee.\n\tdata.items.push( {\n\t\tid: 'plan-setup-fee',\n\t\ttitle: 'Plan Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\t// Base item.\n\tif ( isSubscription ) {\n\t\tdata.items.push( {\n\t\t\tid: 'base',\n\t\t\ttitle: 'Subscription',\n\t\t\tamount: convertToCents( amount ),\n\t\t\tquantity,\n\t\t\tsubscription: {\n\t\t\t\tisTrial,\n\t\t\t\tinterval: planInterval,\n\t\t\t\tintervalCount: planIntervalCount,\n\t\t\t},\n\t\t} );\n\t} else {\n\t\tlet singleAmount = amount;\n\n\t\tif ( ! isNaN( feeAmount ) && feeAmount > 0 ) {\n\t\t\tsingleAmount += feeAmount;\n\n\t\t\tdebugLog(\n\t\t\t\t'feeAmount:',\n\t\t\t\t'Arbitrary fee amounts should be added to the base amount directly.'\n\t\t\t);\n\t\t}\n\n\t\tdata.items.push( {\n\t\t\tid: 'base',\n\t\t\ttitle: 'One-time amount',\n\t\t\tamount: convertToCents( singleAmount ),\n\t\t\tquantity,\n\t\t\tsubscription: false,\n\t\t} );\n\t}\n\n\t// Tax.\n\tif ( ! isNaN( taxPercent ) ) {\n\t\tdata.taxPercent = taxPercent;\n\t}\n\n\t// Add any arbitrary fee percentage to tax percentage.\n\t// @link https://github.com/wpsimplepay/wp-simple-pay-pro/issues/1161\n\tif ( ! isNaN( feePercent ) && feePercent > 0 ) {\n\t\tdata.taxPercent = data.taxPercent + feePercent;\n\t\tdebugLog(\n\t\t\t'feePercent:',\n\t\t\t'Arbitrary fee percentages should be added to the taxPercent directly.'\n\t\t);\n\t}\n\n\treturn data;\n}\n","/**\n * Internal dependencies\n */\nimport { Cart } from './cart.js';\n\n/**\n * LineItem\n */\nexport const LineItem = class LineItem {\n\t/**\n\t * Create a line item.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Line item arguments.\n\t * @param {string} args.id Cart line item ID.\n\t * @param {string} args.title Cart line item title.\n\t * @param {number} args.amount Cart line item amount.\n\t * @param {number} args.quantity Cart line item quantity.\n\t * @param {boolean|Object} args.subscription Cart line item subscription data.\n\t * @param {boolean} args.subscription.isTrial Cart line item subscription trial designation.\n\t * @param {number} args.subscription.intervalCount Cart line item subscription interval count.\n\t * @param {number} args.subscription.interval Cart line item subscription interval.\n\t * @param {Object} args.price Price option data.\n\t * @param {Cart} cart Cart this line item is attached to.\n\t * @return {LineItem} LineItem\n\t */\n\tconstructor( args, cart ) {\n\t\t// Set defaults.\n\t\t// @todo add support for classProperties.\n\t\tthis.cart = null;\n\t\tthis.id = null;\n\t\tthis.title = null;\n\t\tthis.amount = 0;\n\t\tthis.quantity = 1;\n\t\tthis.subscription = false;\n\t\tthis.price = null;\n\n\t\tif ( 'object' !== typeof cart ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-cart',\n\t\t\t\tmessage: 'Item must have an cart.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.cart = cart;\n\t\t}\n\n\t\tthis.update( args );\n\t}\n\n\t/**\n\t * Updates a line item.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Cart line item arguments.\n\t * @param {string} args.id Cart line item ID.\n\t * @param {string} args.title Cart line item title.\n\t * @param {number} args.amount Cart line item amount.\n\t * @param {number} args.quantity Cart line item quantity.\n\t * @param {boolean|Object} args.subscription Cart line item subscription data.\n\t * @param {boolean} args.subscription.isTrial Cart line item subscription trial designation.\n\t * @param {number} args.subscription.intervalCount Cart line item subscription interval count.\n\t * @param {number} args.subscription.interval Cart line item subscription interval.\n\t * @param {Object} args.price Price option data.\n\t * @return {LineItem} Line item.\n\t */\n\tupdate( args ) {\n\t\t// Parse and retrieve specific arguments.\n\t\tconst { id, title, amount, quantity, subscription, price } = {\n\t\t\t...this,\n\t\t\t...args,\n\t\t};\n\n\t\t// ID must be a string.\n\t\tif ( 'string' !== typeof id ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-id',\n\t\t\t\tmessage: 'Item ID must be a string.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\t// Title must be a string.\n\t\t// Not currently shown in any UI, but may be in the future.\n\t\tif ( 'string' !== typeof title ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-title',\n\t\t\t\tmessage: 'Item title must be a string.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.title = title;\n\t\t}\n\n\t\t// Amount must be a number.\n\t\tif ( ! Number.isSafeInteger( amount ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-amount',\n\t\t\t\tmessage: 'Item amount must be an integer.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.amount = amount;\n\t\t}\n\n\t\t// Quantity must be a number.\n\t\tif ( ! Number.isSafeInteger( quantity ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-quantity',\n\t\t\t\tmessage: 'Item quantity must be an integer.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.quantity = quantity;\n\t\t}\n\n\t\t// Subscription must be false or contain subscription data.\n\t\t// @todo Validate subscription data.\n\t\tif (\n\t\t\t! ( false === subscription || 'object' === typeof subscription )\n\t\t) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-subscription',\n\t\t\t\tmessage:\n\t\t\t\t\t'Item subscription data must be a false or contain subscription data.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.subscription = subscription;\n\t\t}\n\n\t\t// Price option data.\n\t\tif ( typeof price === 'object' && price !== null ) {\n\t\t\tthis.price = price;\n\t\t} else {\n\t\t\tthis.price = null;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes the line item from the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {LineItem} Removed line item.\n\t */\n\tremove() {\n\t\tconst allItems = this.cart.getLineItems();\n\t\tconst remainingItems = allItems.filter( ( { id } ) => this.id !== id );\n\n\t\tthis.cart.items = remainingItems;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Retrieves a cart line item's unit price.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item unit price.\n\t */\n\tgetUnitPrice() {\n\t\treturn this.amount;\n\t}\n\n\t/**\n\t * Retrieves the cart line item's quantity.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item quantity.\n\t */\n\tgetQuantity() {\n\t\treturn this.quantity;\n\t}\n\n\t/**\n\t * Retrieves the cart line item's discount.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Cart line item discount.\n\t */\n\tgetDiscount() {\n\t\tconst cartDiscount = this.cart.getDiscount();\n\n\t\tif ( 0 === cartDiscount ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst nonZeroLineItems = this.cart\n\t\t\t.getLineItems()\n\t\t\t.filter( ( lineItem ) => {\n\t\t\t\treturn 0 !== lineItem.getUnitPrice();\n\t\t\t} );\n\n\t\treturn Math.round( cartDiscount / nonZeroLineItems.length );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's subtotal.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item subtotal.\n\t */\n\tgetSubtotal() {\n\t\tconst hasTrial =\n\t\t\tthis.subscription && false !== this.subscription.isTrial;\n\n\t\tif ( hasTrial ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst amount = this.getUnitPrice() * this.getQuantity();\n\n\t\tif ( 0 === amount ) {\n\t\t\treturn amount;\n\t\t}\n\n\t\treturn Math.round( amount - this.getDiscount() );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's inclusive tax amount.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Inclusive tax amount.\n\t */\n\tgetInclusiveTaxAmount() {\n\t\tconst taxRate = this.cart.getTaxPercent( 'inclusive' ) / 100;\n\t\tconst subtotal = this.getSubtotal();\n\n\t\tconst inclusiveTaxAmount = Math.round(\n\t\t\tsubtotal - subtotal / ( 1 + taxRate )\n\t\t);\n\n\t\treturn Math.round( subtotal - ( subtotal - inclusiveTaxAmount ) );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's taxable amount.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Taxable amount.\n\t */\n\tgetTaxableAmount() {\n\t\tconst subtotal = this.getSubtotal();\n\t\tconst inclusiveTaxAmount = this.getInclusiveTaxAmount();\n\n\t\treturn Math.round( subtotal - inclusiveTaxAmount );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's tax.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item tax.\n\t */\n\tgetTax() {\n\t\tconst taxableAmount = this.getTaxableAmount();\n\t\tconst taxPercent = this.cart.getTaxPercent( 'exclusive' );\n\n\t\treturn Math.round( taxableAmount * ( taxPercent / 100 ) );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's total.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item total.\n\t */\n\tgetTotal() {\n\t\treturn this.getSubtotal() + this.getTax();\n\t}\n};\n\nexport default LineItem;\n","/**\n * WordPress dependencies\n */\nimport { createHooks } from '@wordpress/hooks';\n\nconst defaultHooks = createHooks();\nconst { addAction, addFilter, doAction, applyFilters } = defaultHooks;\n\nexport { addAction, addFilter, doAction, applyFilters };\nexport default defaultHooks;\n","export * from './payment-form-types.js';\nexport * from './payment-methods.js';\n","/** @typedef {import('./../').PaymentFormType} PaymentFormType */\n\n/**\n * Payment form type definitions keyed by type.\n *\n * @type {Object.}\n */\nconst paymentFormsTypes = {};\n\n/**\n * Registers a payment form type.\n *\n * @since 4.2.0\n *\n * @param {string} type A string identifying the payment from type.\n * @param {PaymentFormType} settings Payment form type settings and callbacks.\n * @return {PaymentFormType} The registered payment form type.\n */\nexport function registerPaymentFormType( type, settings ) {\n\tif ( typeof settings !== 'object' ) {\n\t\treturn null;\n\t}\n\n\tif ( typeof type !== 'string' ) {\n\t\treturn null;\n\t}\n\n\tif ( paymentFormsTypes[ type ] ) {\n\t\treturn null;\n\t}\n\n\t// @todo Validate onSetup, onSubmit, and onError exist.\n\tpaymentFormsTypes[ type ] = settings;\n\n\treturn settings;\n}\n\n/**\n * Returns a registered payment form type's settings.\n *\n * @since 4.2.0\n *\n * @param {string} type Payment form type\n * @return {?PaymentFormType} Payment form type settings.\n */\nexport function getPaymentFormType( type ) {\n\treturn paymentFormsTypes[ type ];\n}\n\n/**\n * Returns available Payment Forms.\n *\n * @since 4.2.0\n *\n * @return {Object.} Payment form types keyed by type.\n */\nexport const getPaymentFormTypes = () => paymentFormsTypes;\n","/** @typedef {import('./../').PaymentMethod} PaymentMethod */\n\n/**\n * Payment Method definitions keyed by ID.\n *\n * @type {Object.}\n */\nconst paymentMethods = {};\n\n/**\n * Registers a Payment Method.\n *\n * @since 4.2.0\n *\n * @param {string} id A string identifying the Payment Method.\n * @param {Object} settings Payment Methodsettings and callbacks.\n * @return {PaymentMethod} The registered Payment Method.\n */\nexport function registerPaymentMethod( id, settings ) {\n\tif ( typeof settings !== 'object' ) {\n\t\treturn null;\n\t}\n\n\tif ( typeof id !== 'string' ) {\n\t\treturn null;\n\t}\n\n\tif ( paymentMethods[ id ] ) {\n\t\treturn null;\n\t}\n\n\t// @todo Validate onSetup, onSubmit, and onError exist.\n\tpaymentMethods[ id ] = settings;\n\n\treturn settings;\n}\n\n/**\n * Returns a registered Payment Method's settings.\n *\n * @since 4.2.0\n *\n * @param {string} id Payment Method ID.\n * @return {?PaymentMethod} Payment Method settings.\n */\nexport function getPaymentMethod( id ) {\n\treturn paymentMethods[ id ];\n}\n\n/**\n * Returns available Payment Methods.\n *\n * @since 3.8.0\n *\n * @return {Object} Payment Methods keyed by ID.\n */\nexport const getPaymentMethods = () => paymentMethods;\n","/**\n * Payment Form.\n *\n * @typedef {Object} PaymentForm\n *\n * @property {(paymentForm: PaymentForm) => void} setup A callback for setting up the payment form type.\n * @property {(paymentForm: PaymentForm) => void} submit A callback for submitting the payment form type.\n * @property {(paymentForm: PaymentForm) => void} enable A callback for enabling the payment form type.\n * @property {(paymentForm: PaymentForm) => void} disable A callback for disabling the payment form type.\n * @property {(paymentForm: PaymentForm, error: Object|string) => void} error A callback for display payment form type errors.\n * @property {Stripe} stripeInstance stripe.js Stripe object.\n * @property {Object} state Payment Form state.\n * @property {(updatedState: Object) => Object} setState Payment form state setter.\n * @property {Object} __unstableLegacyFormData Legacy payment form data.\n */\n\n/**\n * Payment Form type.\n *\n * @typedef {Object} PaymentFormType\n *\n * @property {(paymentForm: PaymentForm) => void} setup A callback for setting up the payment form type.\n * @property {(paymentForm: PaymentForm) => void} submit A callback for submitting the payment form type.\n * @property {(paymentForm: PaymentForm) => void} enable A callback for enabling the payment form type.\n * @property {(paymentForm: PaymentForm) => void} disable A callback for disabling the payment form type.\n * @property {(paymentForm: PaymentForm, error: Object|string) => void} error A callback for display payment form type errors.\n */\n\n/**\n * Payment Method.\n *\n * @typedef {Object} PaymentMethod\n *\n * @property {(paymentForm: PaymentForm) => void} setup A callback for setting up the form.\n * @property {(paymentForm: PaymentForm) => void} submit A callback for submitting the form.\n */\n\nexport * from './api';\nexport * from './utils.js';\n","/**\n * Primes a cart based on Payment Form data.\n *\n * @todo This might not be any better than the previous convertFormDataToCartData\n * but it helps reduce code duplication between payment form types.\n *\n * @param {PaymentForm} paymentForm Payment Form\n * @param {Cart} cart Payment Form cart.\n */\nexport function __unstableUpdatePaymentFormCart( paymentForm, cart ) {\n\tconst {\n\t\tstate: { price, taxRates },\n\t} = paymentForm;\n\n\t// Create a cart from the default price.\n\tconst {\n\t\tunit_amount: unitAmount,\n\t\tcurrency,\n\t\tcan_recur: canRecur,\n\t\trecurring,\n\t} = price;\n\n\tcart.update( {\n\t\tcurrency,\n\t\ttaxRates,\n\t} );\n\n\tcart.addLineItem( {\n\t\tid: 'setup-fee',\n\t\ttitle: 'Initial Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\tcart.addLineItem( {\n\t\tid: 'plan-setup-fee',\n\t\ttitle: 'Plan Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\tcart.addLineItem( {\n\t\tid: 'base',\n\t\tprice,\n\t\ttitle: recurring && false === canRecur ? 'Subscription' : 'One Time',\n\t\tamount: unitAmount,\n\t\tquantity: 1,\n\t\tsubscription:\n\t\t\trecurring && false === canRecur\n\t\t\t\t? {\n\t\t\t\t\t\tisTrial: !! recurring.trial_period_days,\n\t\t\t\t\t\tinterval: recurring.interval,\n\t\t\t\t\t\tintervalCount: recurring.interval_count,\n\t\t\t\t }\n\t\t\t\t: false,\n\t} );\n\n\treturn cart;\n}\n","module.exports = jQuery;"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/createClass.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/defineProperty.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/inherits.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/typeof.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@babel/runtime/regenerator/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createAddHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createCurrentHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createDidHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createDoingHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createHasHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createHooks.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createRemoveHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/createRunHook.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/validateHookName.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/@wordpress/hooks/build-module/validateNamespace.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/form-serialize/index.js","webpack:////Users/spencerfinnell/dev/wpsimplepay/wp-content/plugins/wp-simple-pay-pro/node_modules/regenerator-runtime/runtime.js","webpack:///./js/frontend/index.js","webpack:///./js/frontend/payment-forms/index.js","webpack:///./js/frontend/payment-forms/stripe-checkout/cart/index.js","webpack:///./js/frontend/payment-forms/stripe-checkout/cart/line-item.js","webpack:///./js/frontend/payment-forms/stripe-checkout/disable.js","webpack:///./js/frontend/payment-forms/stripe-checkout/enable.js","webpack:///./js/frontend/payment-forms/stripe-checkout/error.js","webpack:///./js/frontend/payment-forms/stripe-checkout/index.js","webpack:///./js/frontend/payment-forms/stripe-checkout/setup.js","webpack:///./js/frontend/payment-forms/stripe-checkout/submit.js","webpack:///./js/frontend/utils/legacy.js","webpack:///./js/frontend/utils/recaptcha.js","webpack:///./js/packages/api/src/api-request.js","webpack:///./js/packages/api/src/customers.js","webpack:///./js/packages/api/src/index.js","webpack:///./js/packages/api/src/orders.js","webpack:///./js/packages/api/src/paymentintents.js","webpack:///./js/packages/api/src/sessions.js","webpack:///./js/packages/api/src/setupintents.js","webpack:///./js/packages/api/src/subscriptions.js","webpack:///./js/packages/cart/src/cart.js","webpack:///./js/packages/cart/src/index.js","webpack:///./js/packages/cart/src/line-item.js","webpack:///./js/packages/hooks/src/index.js","webpack:///./js/packages/payment-forms/src/api/index.js","webpack:///./js/packages/payment-forms/src/api/payment-form-types.js","webpack:///./js/packages/payment-forms/src/api/payment-methods.js","webpack:///./js/packages/payment-forms/src/index.js","webpack:///./js/packages/payment-forms/src/utils.js","webpack:///external \"jQuery\""],"names":["window","wpsp","hooks","paymentForms","initPaymentForm","simpayApp","formCount","spFormElList","spFormData","spFormElems","legacyHelpers","initPaymentForms","$paymentForms","jQuery","document","body","find","each","$paymentForm","__unstableFormVars","attr","paymentFormData","formId","forms","simplePayForms","data","id","formType","type","form","prices","livemode","config","taxRates","paymentMethods","taxStatus","formData","formInstance","quantity","isValid","stripeParams","stripe","strings","bools","integers","i18n","__unstableLegacyFormData","formTypeSettings","_","setting","settingKey","isFunction","bind","state","customAmount","coupon","price","isDefault","default","paymentMethod","first","displayType","formDisplayType","setState","updatedState","getFormData","_formData","_o","order","_cus","customer","_pms","cleanFormData","JSON","stringify","publishableKey","key","apiVersion","stripe_api_version","elementsLocale","stripeInstance","Stripe","locale","doAction","trigger","setupPaymentForm","setup","addAction","submitPaymentForm","paymentForm","submit","disableForm","disable","enableForm","enable","onError","error","createToken","then","token","customerCaptchaToken","paymentCaptchaToken","Cart","args","LineItem","BaseCart","BaseLineItem","paymentButtonLoadingText","addClass","prop","html","spShared","convertToDollars","formatCurrency","cart","paymentButtonText","paymentButtonTrialText","removeClass","submitButtonEl","getTotalDueToday","text","formatted","isZeroDecimal","getCurrencySymbol","amount","replace","_error","stripeErrorMessages","unknownError","errorMessage","undefined","message","code","registerPaymentFormType","__unstableUpdatePaymentFormCart","addEventListener","e","preventDefault","triggerBrowserValidation","checkValidity","customerId","hasCustomerFields","customers","create","sessions","customer_id","payment_method_type","sessionId","url","session","redirectType","redirect_type","redirectToCheckout","result","location","href","init","noop","setupCoreForm","isStripeCheckoutForm","setCoreFinalAmount","spFormElem","finalAmount","setSubmitButtonAsLoading","submitBtn","loadingText","checkoutButtonLoadingText","buttonText","checkoutButtonText","embeddedHtml","createElement","innerHTML","checkoutButtonTrialText","showError","style","display","appendTo","click","remove","action","simpayGoogleRecaptcha","Promise","resolve","siteKey","reject","grecaptcha","execute","invalid","apiRequest","route","ajax","method","wpApiSettings","root","beforeSend","xhr","setRequestHeader","nonce","responseJSON","form_values","serialize","hash","form_data","form_id","preview","recaptcha","captcha","updatePaymentMethod","customerNonce","subscriptionId","customer_nonce","items","currency","taxPercent","taxBehavior","automaticTax","isNonDecimalCurrency","update","isNaN","parseFloat","Array","isArray","getLineItem","spGeneral","currencySymbol","currency_symbol","is_zero_decimal","taxCalculation","getTaxRates","reduce","percent","calculation","percentage","getLineItems","subtotal","lineItem","hasFreeTrial","Math","round","getUnitPrice","getQuantity","getCoupon","percentOff","percent_off","amountOff","amount_off","discount","getSubtotal","tax","getTax","lineItems","exclusiveTaxRates","filter","totalExclusiveTaxDecimal","getTaxPercent","inclusiveTaxRates","inclusiveTaxPercent","totalInclusiveTaxDecimal","taxRateAmounts","forEach","lineExclusiveTax","lineTaxableAmount","getTaxableAmount","lineInclusiveTaxAmount","getInclusiveTaxAmount","taxRate","i","taxDecimal","taxAmount","length","otherExclusiveTaxRates","taxRateId","otherExclusiveTaxPercent","otherExclusiveTaxDecimal","remainingExclusiveTax","floor","otherInclusiveTaxRates","otherInclusiveTaxAmount","total","getTotal","initialTax","parseInt","amount_tax","recurring","recurringSubtotal","getDiscount","inclusiveTaxAmount","postInclusiveTaxAmount","upcomingInvoice","couponPercentOff","couponAmountOff","couponDuration","duration","filteredItems","itemId","item","lineitem","push","convertFormDataToCartData","debugLog","convertToCents","booleans","isSubscription","isTrial","planInterval","planIntervalCount","feePercent","feeAmount","title","subscription","interval","intervalCount","singleAmount","Number","isSafeInteger","allItems","remainingItems","cartDiscount","nonZeroLineItems","taxableAmount","trial_period_days","defaultHooks","createHooks","addFilter","applyFilters","paymentFormsTypes","settings","getPaymentFormType","getPaymentFormTypes","registerPaymentMethod","getPaymentMethod","getPaymentMethods","unitAmount","unit_amount","canRecur","can_recur","addLineItem","interval_count"],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA;AACA;;AAEA,wCAAwC,SAAS;AACjD;AACA;;AAEA;AACA;;AAEA,iH;;;;;;;;;;;ACVA,uBAAuB,mBAAO,CAAC,+FAAuB;;AAEtD;AACA;AACA;;AAEA,kH;;;;;;;;;;;ACNA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,sH;;;;;;;;;;;ACRA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA,iH;;;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;;AAEA,+G;;;;;;;;;;;ACNA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,4G;;;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,+G;;;;;;;;;;;;ACfA;AAAA;AAAe;AACf;;AAEA,wCAAwC,SAAS;AACjD;AACA;;AAEA;AACA,C;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAqD;AACtC;AACf,iCAAiC,oEAAgB;AACjD,C;;;;;;;;;;;;ACHA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuD;AACJ;AACsB;AAClB;AACxC;AACf,SAAS,qEAAiB,SAAS,mEAAe,SAAS,8EAA0B,SAAS,qEAAiB;AAC/G,C;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAqD;AACtC;AACf;AACA,oCAAoC,oEAAgB;AACpD;AACA;AACA;AACA,sFAAsF,oEAAgB;AACtG,C;;;;;;;;;;;ACRA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,+G;;;;;;;;;;;ACPA,qBAAqB,mBAAO,CAAC,2FAAqB;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA,yG;;;;;;;;;;;ACpBA;AACA;AACA;;AAEA,gH;;;;;;;;;;;ACJA;AACA;AACA;;AAEA,kH;;;;;;;;;;;ACJA,mCAAmC,mBAAO,CAAC,uHAAmC;;AAE9E;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,wH;;;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6H;;;;;;;;;;;ACfA,cAAc,mBAAO,CAAC,2EAAa;;AAEnC,4BAA4B,mBAAO,CAAC,yGAA4B;;AAEhE;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,0H;;;;;;;;;;;ACdA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA,+G;;;;;;;;;;;ACRA,wBAAwB,mBAAO,CAAC,iGAAwB;;AAExD,sBAAsB,mBAAO,CAAC,6FAAsB;;AAEpD,iCAAiC,mBAAO,CAAC,mHAAiC;;AAE1E,wBAAwB,mBAAO,CAAC,iGAAwB;;AAExD;AACA;AACA;;AAEA,kH;;;;;;;;;;;ACZA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA,uG;;;;;;;;;;;ACVA,uBAAuB,mBAAO,CAAC,+FAAuB;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2H;;;;;;;;;;;ACXA,iBAAiB,mBAAO,CAAC,iFAAqB;;;;;;;;;;;;;ACA9C;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACuD;AACF;AACvB;AAC9B;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA,SAAS,oEAAgB;AACzB;AACA;;AAEA,SAAS,qEAAiB;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA,iBAAiB;AACjB;;;AAGA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,kDAAQ;AACd;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AChGA;AAAA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe,gFAAiB,EAAC;AACjC,6C;;;;;;;;;;;;AC3BA;AAAA;AAAA;AACA;AACA;AACqD;AACrD;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA;AACA,SAAS,oEAAgB;AACzB;AACA;;AAEA;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AC/BA;AAAA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEe,8EAAe,EAAC;AAC/B,2C;;;;;;;;;;;;AC9BA;AAAA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAC4C;AACM;AACN;AACA;AACQ;AACJ;AACJ;AAC5C;AACA;AACA;AACA,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAa;AAC5B,eAAe,8DAAa;AAC5B,kBAAkB,iEAAgB;AAClC,kBAAkB,iEAAgB;AAClC,eAAe,8DAAa;AAC5B,eAAe,8DAAa;AAC5B,sBAAsB,iEAAgB;AACtC,sBAAsB,iEAAgB;AACtC,cAAc,8DAAa;AAC3B,kBAAkB,8DAAa;AAC/B,mBAAmB,kEAAiB;AACpC,mBAAmB,kEAAiB;AACpC,iBAAiB,gEAAe;AAChC,iBAAiB,gEAAe;AAChC,eAAe,8DAAa;AAC5B,eAAe,8DAAa;AAC5B;AACA;AACA;AACA;;AAEe,0EAAW,EAAC;AAC3B,uC;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACuD;AACF;AACvB;AAC9B;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB;AACA,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA,cAAc,OAAO;AACrB;AACA;AACA,SAAS,oEAAgB;AACzB;AACA;;AAEA,uBAAuB,qEAAiB;AACxC;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA,uCAAuC,QAAQ;AAC/C;AACA;AACA;;AAEA;AACA,MAAM,kDAAQ;AACd;;AAEA;AACA;AACA;;AAEe,+EAAgB,EAAC;AAChC,4C;;;;;;;;;;;;ACnFA;AAAA;AAA8E;;AAE9E;AACA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,SAAS;AACrB;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,KAAK;AACnB;AACA,cAAc,EAAE;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4CAA4C;;AAE5C,QAAQ,IAAqC;AAC7C;AACA;AACA,sCAAsC,4FAAkB;AACxD;AACA;;AAEA,0FAA0F,aAAa;AACvG;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEe,4EAAa,EAAC;AAC7B,yC;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACwC;;AAExC,mBAAmB,4DAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2P;AAC3P,iC;;;;;;;;;;;;AC1BA;AAAA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,+EAAgB,EAAC;AAChC,4C;;;;;;;;;;;;AChCA;AAAA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEe,gFAAiB,EAAC;AACjC,6C;;;;;;;;;;;ACzBA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;;AAEA;AACA;;AAEA,kBAAkB,oBAAoB;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,yBAAyB;AACnD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACnQA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,KAAK;AACL,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;;AAEA;;AAEA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,kBAAkB;AACnD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA,iBAAiB;;AAEjB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C,QAAQ;AACtD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,8CAA8C,QAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO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","file":"simpay-public.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/frontend/index.js\");\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"regenerator-runtime\");\n","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that adds a new hook.\n */\n\nfunction createAddHook(hooks) {\n /**\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {Function} callback Function to call when the hook is run\n * @param {?number} priority Priority of this hook (default=10)\n */\n return function addHook(hookName, namespace, callback) {\n var priority = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!validateNamespace(namespace)) {\n return;\n }\n\n if ('function' !== typeof callback) {\n // eslint-disable-next-line no-console\n console.error('The hook callback must be a function.');\n return;\n } // Validate numeric priority\n\n\n if ('number' !== typeof priority) {\n // eslint-disable-next-line no-console\n console.error('If specified, the hook priority must be a number.');\n return;\n }\n\n var handler = {\n callback: callback,\n priority: priority,\n namespace: namespace\n };\n\n if (hooks[hookName]) {\n // Find the correct insert index of the new hook.\n var handlers = hooks[hookName].handlers;\n var i;\n\n for (i = handlers.length; i > 0; i--) {\n if (priority >= handlers[i - 1].priority) {\n break;\n }\n }\n\n if (i === handlers.length) {\n // If append, operate via direct assignment.\n handlers[i] = handler;\n } else {\n // Otherwise, insert before index via splice.\n handlers.splice(i, 0, handler);\n } // We may also be currently executing this hook. If the callback\n // we're adding would come after the current callback, there's no\n // problem; otherwise we need to increase the execution index of\n // any other runs by 1 to account for the added element.\n\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex++;\n }\n });\n } else {\n // This is the first hook of its type.\n hooks[hookName] = {\n handlers: [handler],\n runs: 0\n };\n }\n\n if (hookName !== 'hookAdded') {\n doAction('hookAdded', hookName, namespace, callback, priority);\n }\n };\n}\n\nexport default createAddHook;\n//# sourceMappingURL=createAddHook.js.map","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns the current hook.\n */\nfunction createCurrentHook(hooks) {\n /**\n * Returns the name of the currently running hook, or `null` if no hook of\n * the given type is currently running.\n *\n * @return {?string} The name of the currently running hook, or\n * `null` if no hook is currently running.\n */\n return function currentHook() {\n if (!hooks.__current || !hooks.__current.length) {\n return null;\n }\n\n return hooks.__current[hooks.__current.length - 1].name;\n };\n}\n\nexport default createCurrentHook;\n//# sourceMappingURL=createCurrentHook.js.map","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns a hook's call count.\n */\n\nfunction createDidHook(hooks) {\n /**\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number} The number of times the hook has run.\n */\n return function didHook(hookName) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n return hooks[hookName] && hooks[hookName].runs ? hooks[hookName].runs : 0;\n };\n}\n\nexport default createDidHook;\n//# sourceMappingURL=createDidHook.js.map","/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook(hooks) {\n /**\n * Returns whether a hook is currently being executed.\n *\n * @param {?string} hookName The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n return function doingHook(hookName) {\n // If the hookName was not passed, check for any current hook.\n if ('undefined' === typeof hookName) {\n return 'undefined' !== typeof hooks.__current[0];\n } // Return the __current hook.\n\n\n return hooks.__current[0] ? hookName === hooks.__current[0].name : false;\n };\n}\n\nexport default createDoingHook;\n//# sourceMappingURL=createDoingHook.js.map","/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n *\n * @return {Function} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook(hooks) {\n /**\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {?string} namespace Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n return function hasHook(hookName, namespace) {\n // Use the namespace if provided.\n if ('undefined' !== typeof namespace) {\n return hookName in hooks && hooks[hookName].handlers.some(function (hook) {\n return hook.namespace === namespace;\n });\n }\n\n return hookName in hooks;\n };\n}\n\nexport default createHasHook;\n//# sourceMappingURL=createHasHook.js.map","/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Object} Object that contains all hooks.\n */\n\nfunction createHooks() {\n var actions = Object.create(null);\n var filters = Object.create(null);\n actions.__current = [];\n filters.__current = [];\n return {\n addAction: createAddHook(actions),\n addFilter: createAddHook(filters),\n removeAction: createRemoveHook(actions),\n removeFilter: createRemoveHook(filters),\n hasAction: createHasHook(actions),\n hasFilter: createHasHook(filters),\n removeAllActions: createRemoveHook(actions, true),\n removeAllFilters: createRemoveHook(filters, true),\n doAction: createRunHook(actions),\n applyFilters: createRunHook(filters, true),\n currentAction: createCurrentHook(actions),\n currentFilter: createCurrentHook(filters),\n doingAction: createDoingHook(actions),\n doingFilter: createDoingHook(filters),\n didAction: createDidHook(actions),\n didFilter: createDidHook(filters),\n actions: actions,\n filters: filters\n };\n}\n\nexport default createHooks;\n//# sourceMappingURL=createHooks.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\nimport { doAction } from './';\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {boolean} removeAll Whether to remove all callbacks for a hookName, without regard to namespace. Used to create `removeAll*` functions.\n *\n * @return {Function} Function that removes hooks.\n */\n\nfunction createRemoveHook(hooks, removeAll) {\n /**\n * Removes the specified callback (or all callbacks) from the hook with a\n * given hookName and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n *\n * @return {number} The number of callbacks removed.\n */\n return function removeHook(hookName, namespace) {\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!removeAll && !validateNamespace(namespace)) {\n return;\n } // Bail if no hooks exist by this name\n\n\n if (!hooks[hookName]) {\n return 0;\n }\n\n var handlersRemoved = 0;\n\n if (removeAll) {\n handlersRemoved = hooks[hookName].handlers.length;\n hooks[hookName] = {\n runs: hooks[hookName].runs,\n handlers: []\n };\n } else {\n // Try to find the specified callback to remove.\n var handlers = hooks[hookName].handlers;\n\n var _loop = function _loop(i) {\n if (handlers[i].namespace === namespace) {\n handlers.splice(i, 1);\n handlersRemoved++; // This callback may also be part of a hook that is\n // currently executing. If the callback we're removing\n // comes after the current callback, there's no problem;\n // otherwise we need to decrease the execution index of any\n // other runs by 1 to account for the removed element.\n\n (hooks.__current || []).forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex--;\n }\n });\n }\n };\n\n for (var i = handlers.length - 1; i >= 0; i--) {\n _loop(i);\n }\n }\n\n if (hookName !== 'hookRemoved') {\n doAction('hookRemoved', hookName, namespace);\n }\n\n return handlersRemoved;\n };\n}\n\nexport default createRemoveHook;\n//# sourceMappingURL=createRemoveHook.js.map","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n\n/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {Object} hooks Stored hooks, keyed by hook name.\n * @param {?boolean} returnFirstArg Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {Function} Function that runs hook callbacks.\n */\nfunction createRunHook(hooks, returnFirstArg) {\n /**\n * Runs all callbacks for the specified hook.\n *\n * @param {string} hookName The name of the hook to run.\n * @param {...*} args Arguments to pass to the hook callbacks.\n *\n * @return {*} Return value of runner, if applicable.\n */\n return function runHooks(hookName) {\n if (!hooks[hookName]) {\n hooks[hookName] = {\n handlers: [],\n runs: 0\n };\n }\n\n hooks[hookName].runs++;\n var handlers = hooks[hookName].handlers; // The following code is stripped from production builds.\n\n if ('production' !== process.env.NODE_ENV) {\n // Handle any 'all' hooks registered.\n if ('hookAdded' !== hookName && hooks.all) {\n handlers.push.apply(handlers, _toConsumableArray(hooks.all.handlers));\n }\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (!handlers || !handlers.length) {\n return returnFirstArg ? args[0] : undefined;\n }\n\n var hookInfo = {\n name: hookName,\n currentIndex: 0\n };\n\n hooks.__current.push(hookInfo);\n\n while (hookInfo.currentIndex < handlers.length) {\n var handler = handlers[hookInfo.currentIndex];\n var result = handler.callback.apply(null, args);\n\n if (returnFirstArg) {\n args[0] = result;\n }\n\n hookInfo.currentIndex++;\n }\n\n hooks.__current.pop();\n\n if (returnFirstArg) {\n return args[0];\n }\n };\n}\n\nexport default createRunHook;\n//# sourceMappingURL=createRunHook.js.map","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n\nvar _createHooks = createHooks(),\n addAction = _createHooks.addAction,\n addFilter = _createHooks.addFilter,\n removeAction = _createHooks.removeAction,\n removeFilter = _createHooks.removeFilter,\n hasAction = _createHooks.hasAction,\n hasFilter = _createHooks.hasFilter,\n removeAllActions = _createHooks.removeAllActions,\n removeAllFilters = _createHooks.removeAllFilters,\n doAction = _createHooks.doAction,\n applyFilters = _createHooks.applyFilters,\n currentAction = _createHooks.currentAction,\n currentFilter = _createHooks.currentFilter,\n doingAction = _createHooks.doingAction,\n doingFilter = _createHooks.doingFilter,\n didAction = _createHooks.didAction,\n didFilter = _createHooks.didFilter,\n actions = _createHooks.actions,\n filters = _createHooks.filters;\n\nexport { createHooks, addAction, addFilter, removeAction, removeFilter, hasAction, hasFilter, removeAllActions, removeAllFilters, doAction, applyFilters, currentAction, currentFilter, doingAction, doingFilter, didAction, didFilter, actions, filters };\n//# sourceMappingURL=index.js.map","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName(hookName) {\n if ('string' !== typeof hookName || '' === hookName) {\n // eslint-disable-next-line no-console\n console.error('The hook name must be a non-empty string.');\n return false;\n }\n\n if (/^__/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name cannot begin with `__`.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name can only contain numbers, letters, dashes, periods and underscores.');\n return false;\n }\n\n return true;\n}\n\nexport default validateHookName;\n//# sourceMappingURL=validateHookName.js.map","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace(namespace) {\n if ('string' !== typeof namespace || '' === namespace) {\n // eslint-disable-next-line no-console\n console.error('The namespace must be a non-empty string.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test(namespace)) {\n // eslint-disable-next-line no-console\n console.error('The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.');\n return false;\n }\n\n return true;\n}\n\nexport default validateNamespace;\n//# sourceMappingURL=validateNamespace.js.map","// get successful control from form and assemble into object\n// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.2\n\n// types which indicate a submit action and are not successful controls\n// these will be ignored\nvar k_r_submitter = /^(?:submit|button|image|reset|file)$/i;\n\n// node names which could be successful controls\nvar k_r_success_contrls = /^(?:input|select|textarea|keygen)/i;\n\n// Matches bracket notation.\nvar brackets = /(\\[[^\\[\\]]*\\])/g;\n\n// serializes form fields\n// @param form MUST be an HTMLForm element\n// @param options is an optional argument to configure the serialization. Default output\n// with no options specified is a url encoded string\n// - hash: [true | false] Configure the output type. If true, the output will\n// be a js object.\n// - serializer: [function] Optional serializer function to override the default one.\n// The function takes 3 arguments (result, key, value) and should return new result\n// hash and url encoded str serializers are provided with this module\n// - disabled: [true | false]. If true serialize disabled fields.\n// - empty: [true | false]. If true serialize empty fields\nfunction serialize(form, options) {\n if (typeof options != 'object') {\n options = { hash: !!options };\n }\n else if (options.hash === undefined) {\n options.hash = true;\n }\n\n var result = (options.hash) ? {} : '';\n var serializer = options.serializer || ((options.hash) ? hash_serializer : str_serialize);\n\n var elements = form && form.elements ? form.elements : [];\n\n //Object store each radio and set if it's empty or not\n var radio_store = Object.create(null);\n\n for (var i=0 ; i result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/* global jQuery, _, Stripe */\n\n/**\n * Internal dependencies.\n */\nimport { default as hooks, doAction } from '@wpsimplepay/hooks';\nimport * as paymentForms from '@wpsimplepay/payment-forms';\nimport { default as legacyHelpers } from './utils/legacy.js';\nimport './payment-forms';\n\n/**\n * WP Simple Pay API.\n *\n * @todo Create automatically with Webpack.\n */\nwindow.wpsp = {\n\thooks,\n\tpaymentForms,\n\tinitPaymentForm,\n};\n\n/**\n * Legacy API.\n */\nwindow.simpayApp = {\n\tformCount: 0,\n\tspFormElList: {},\n\tspFormData: {},\n\tspFormElems: {},\n\t...legacyHelpers,\n};\n\n/**\n * Initializes Payment Forms on the current page.\n */\nfunction initPaymentForms() {\n\tconst $paymentForms = jQuery( document.body ).find(\n\t\t'.simpay-checkout-form:not(.simpay-update-payment-method)'\n\t);\n\n\twindow.simpayApp.spFormElList = $paymentForms;\n\n\t$paymentForms.each( function () {\n\t\twindow.simpayApp.formCount++;\n\t\tinitPaymentForm( jQuery( this ) );\n\t} );\n}\n\n/**\n * Initializes a Payment Form given a jQuery object.\n *\n * @param {jQuery} $paymentForm jQuery Payment Form object.\n * @param {Object|boolean} __unstableFormVars Form data. Will be pulled from page source if not set.\n */\nfunction initPaymentForm( $paymentForm, __unstableFormVars = false ) {\n\t// Add the form instance count to the wrapper element to allow selectors\n\t// such as #payment-form-123[data-simpay-form-instance=\"2\"].\n\t//\n\t// This ensures we can query for a specific element if a form appears more\n\t// than once on a page. We cannot always access via spFormElem/$paymentForm\n\t// due to Overlay forms being moved around the DOM.\n\t//\n\t// @link https://github.com/wpsimplepay/wp-simple-pay-pro/pull/766\n\tconst { formCount } = window.simpayApp;\n\t$paymentForm.attr( 'data-simpay-form-instance', formCount );\n\n\t// Retrieve localized form data.\n\tlet paymentFormData, formId;\n\n\tif ( false === __unstableFormVars ) {\n\t\tconst forms = window.simplePayForms;\n\n\t\tformId = $paymentForm.data( 'simpay-form-id' );\n\t\tpaymentFormData = forms[ formId ];\n\t} else {\n\t\tpaymentFormData = __unstableFormVars;\n\t\tformId = __unstableFormVars.id;\n\t}\n\n\tconst {\n\t\ttype: formType,\n\t\tform: { prices, livemode, config = {} },\n\t} = paymentFormData;\n\n\tconst {\n\t\ttaxRates = [],\n\t\tpaymentMethods = [],\n\t\ttaxStatus = 'fixed-global',\n\t} = config;\n\n\t// Merge localized form data in to a semi-simplified object.\n\t// Maintained for backwards compatibility.\n\tconst formData = {\n\t\tformId,\n\t\tformInstance: formCount,\n\t\tquantity: 1,\n\t\tisValid: true,\n\t\tstripeParams: {\n\t\t\t...paymentFormData.stripe.strings,\n\t\t\t...paymentFormData.stripe.bools,\n\t\t},\n\t\tprices,\n\t\t...paymentFormData.form.bools,\n\t\t...paymentFormData.form.integers,\n\t\t...paymentFormData.form.i18n,\n\t\t...paymentFormData.form.strings,\n\t\t...paymentFormData.form.config,\n\t};\n\n\t// Attach legacy form data to the Payment Form jQuery object so\n\t// it is available for backwards compatibility.\n\t$paymentForm.__unstableLegacyFormData = formData;\n\n\t// Bind the Payment Form's type settings.\n\tconst formTypeSettings = paymentForms.getPaymentFormType( formType );\n\n\t_.each( formTypeSettings, ( setting, settingKey ) => {\n\t\t// Bind the instance of the PaymentForm to the first argument of setting callbacks.\n\t\t// @link https://underscorejs.org/#bind\n\t\t$paymentForm[ settingKey ] = _.isFunction( setting )\n\t\t\t? _.bind( setting, $paymentForm, $paymentForm )\n\t\t\t: setting;\n\t} );\n\n\t// Attach the ID.\n\t$paymentForm.id = formId;\n\n\t// Attach form state information to the Payment Form jQuery object.\n\t$paymentForm.state = {\n\t\tisValid: true,\n\t\tcustomAmount: false,\n\t\tcoupon: false,\n\t\t// Ensure a price is always available.\n\t\tprice: _.find( prices, ( { default: isDefault } ) => {\n\t\t\treturn true === isDefault;\n\t\t} ),\n\t\tpaymentMethod: _.first( paymentMethods ),\n\t\ttaxRates,\n\t\ttaxStatus,\n\t\tpaymentMethods,\n\t\tlivemode,\n\t\tdisplayType: formData.formDisplayType,\n\t};\n\n\t// Attach a form state setter to the Payment Form jQuery object.\n\t$paymentForm.setState = function ( updatedState ) {\n\t\t$paymentForm.state = {\n\t\t\t...$paymentForm.state,\n\t\t\t...updatedState,\n\t\t};\n\t};\n\n\t// Attach a helper to get the form data/state.\n\t$paymentForm.getFormData = function () {\n\t\tconst _formData = {\n\t\t\t...$paymentForm.__unstableLegacyFormData,\n\t\t\t...$paymentForm.state,\n\t\t};\n\n\t\t// Remove additional data that is not needed and may trigger WAF rules.\n\t\tconst {\n\t\t\torder: _o,\n\t\t\tcustomer: _cus,\n\t\t\tpaymentMethods: _pms,\n\t\t\t...cleanFormData // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#rest_property\n\t\t} = _formData;\n\n\t\treturn JSON.stringify( cleanFormData );\n\t};\n\n\t// Attach a Stripe instance to the Payment Form jQuery object.\n\tconst {\n\t\tkey: publishableKey,\n\t\tstripe_api_version: apiVersion,\n\t\telementsLocale,\n\t} = paymentFormData.stripe.strings;\n\n\t$paymentForm.stripeInstance = Stripe( publishableKey, {\n\t\tapiVersion,\n\t\tlocale: elementsLocale || 'auto',\n\t} );\n\n\t/**\n\t * Allows further setup of a Payment Form.\n\t *\n\t * @since 4.2.0\n\t *\n\t * @param {PaymentForm} $paymentForm\n\t */\n\tdoAction( 'simpaySetupPaymentForm', $paymentForm );\n\n\t// Backwards compatibility.\n\twindow.simpayApp.spFormData[ formId ] = formData;\n\twindow.simpayApp.spFormElems[ formId ] = $paymentForm;\n\n\tjQuery( document.body )\n\t\t.trigger( 'simpayCoreFormVarsInitialized', [ $paymentForm, formData ] )\n\t\t.trigger( 'simpayBindCoreFormEventsAndTriggers', [\n\t\t\t$paymentForm,\n\t\t\tformData,\n\t\t] )\n\t\t.trigger( 'simpaySetupCoreForm', [ $paymentForm ] );\n}\n\njQuery( () => initPaymentForms() );\n","/**\n * Internal dependencies\n */\n// Payment Form types.\nimport './stripe-checkout';\n\nimport { addAction } from '@wpsimplepay/hooks';\nimport { createToken } from '../utils/recaptcha.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Sets up the relevant Payment Form type when a Payment Form is initialized.\n *\n * @param {PaymentForm} paymentForm\n */\nfunction setupPaymentForm( { setup } ) {\n\treturn setup();\n}\naddAction( 'simpaySetupPaymentForm', 'wpsp/paymentForm', setupPaymentForm );\n\n/**\n * Submits a Payment Form.\n *\n * @param {PaymentForm} paymentForm\n */\nasync function submitPaymentForm( paymentForm ) {\n\tconst {\n\t\tid,\n\t\tsetState,\n\t\tsubmit,\n\t\tdisable: disableForm,\n\t\tenable: enableForm,\n\t\terror: onError,\n\t\t__unstableLegacyFormData,\n\t} = paymentForm;\n\n\t// Disable while processing.\n\tdisableForm();\n\n\t// Allow further validation.\n\t// Backwards compatibility.\n\tpaymentForm.trigger( 'simpayBeforeStripePayment', [\n\t\tpaymentForm,\n\t\t__unstableLegacyFormData,\n\t] );\n\n\tif ( ! __unstableLegacyFormData.isValid ) {\n\t\tenableForm();\n\n\t\treturn;\n\t}\n\n\ttry {\n\t\t// Generate reCAPTCHA tokens before proceeding.\n\t\t//\n\t\t// @todo This is still tightly coupled with the form submission...\n\t\t// but maybe that's fine. It is no longer duplicated between Payment Form\n\t\t// types, so that's better.\n\t\t//\n\t\t// doAction can't be used here because all assigned callees are executed at once.\n\t\tawait createToken( `simple_pay_form_${ id }_customer` ).then(\n\t\t\t( token ) => {\n\t\t\t\tsetState( {\n\t\t\t\t\tcustomerCaptchaToken: token,\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\n\t\tawait createToken( `simple_pay_form_${ id }_payment` ).then(\n\t\t\t( token ) => {\n\t\t\t\tsetState( {\n\t\t\t\t\tpaymentCaptchaToken: token,\n\t\t\t\t} );\n\t\t\t}\n\t\t);\n\n\t\tsubmit();\n\t} catch ( error ) {\n\t\tonError( error );\n\t}\n}\naddAction( 'simpaySubmitPaymentForm', 'wpsp/paymentForm', submitPaymentForm );\n","/**\n * Internal dependencies\n */\nimport { Cart as BaseCart } from '@wpsimplepay/cart';\nimport LineItem from './line-item.js';\n\n/**\n * Cart for Stripe Checkout form types.\n *\n * @since 3.7.0\n */\nexport const Cart = class Cart extends BaseCart {\n\t/**\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Cart arguments.\n\t */\n\tconstructor( args ) {\n\t\tsuper( args );\n\n\t\t// Define the type of line item to use.\n\t\tthis.LineItem = LineItem;\n\t}\n};\n","/**\n * Internal dependencies\n */\nimport { LineItem as BaseLineItem } from '@wpsimplepay/cart';\n\n/**\n * LineItem\n */\nclass LineItem extends BaseLineItem {}\n\nexport default LineItem;\n","/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Disable the Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nfunction disable( paymentForm ) {\n\tconst { __unstableLegacyFormData } = paymentForm;\n\tconst { paymentButtonLoadingText } = __unstableLegacyFormData;\n\n\t// Add a loading class indicator.\n\tpaymentForm.addClass( 'simpay-checkout-form--loading' );\n\n\t// Disable the form submit button.\n\tpaymentForm\n\t\t.find( '.simpay-payment-btn' )\n\t\t.prop( 'disabled', true )\n\t\t.addClass( 'simpay-disabled' )\n\t\t.find( 'span' )\n\t\t.html( paymentButtonLoadingText );\n}\n\nexport default disable;\n","/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\nconst { convertToDollars, formatCurrency } = window.spShared;\n\n/**\n * Enable the Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nfunction enable( paymentForm ) {\n\tconst { cart, __unstableLegacyFormData } = paymentForm;\n\tconst {\n\t\tpaymentButtonText,\n\t\tpaymentButtonTrialText,\n\t} = __unstableLegacyFormData;\n\n\t// Remove a loading class indicator.\n\tpaymentForm.removeClass( 'simpay-checkout-form--loading' );\n\n\t// Enable the form submit button.\n\tconst submitButtonEl = paymentForm.find( '.simpay-payment-btn' );\n\n\tsubmitButtonEl.prop( 'disabled', false ).removeClass( 'simpay-disabled' );\n\n\tif ( 0 === cart.getTotalDueToday() ) {\n\t\tsubmitButtonEl.find( 'span' ).text( paymentButtonTrialText );\n\t} else {\n\t\tconst formatted = formatCurrency(\n\t\t\tcart.isZeroDecimal()\n\t\t\t\t? cart.getTotalDueToday()\n\t\t\t\t: convertToDollars( cart.getTotalDueToday() ),\n\t\t\ttrue,\n\t\t\tcart.getCurrencySymbol(),\n\t\t\tcart.isZeroDecimal()\n\t\t);\n\n\t\tconst amount = `${ formatted }`;\n\n\t\tsubmitButtonEl\n\t\t\t.find( 'span' )\n\t\t\t.html( paymentButtonText.replace( '{{amount}}', amount ) );\n\t}\n}\n\nexport default enable;\n","/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Display an error message below the Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n * @param {Object|string} _error Error message or object.\n */\nfunction error( paymentForm, _error ) {\n\tconst { enable: enableForm, __unstableLegacyFormData } = paymentForm;\n\tconst { stripeErrorMessages, unknownError } = __unstableLegacyFormData;\n\n\tlet errorMessage;\n\n\t// Passed empty to clear the error.\n\tif ( _error && '' === _error ) {\n\t\terrorMessage = '';\n\n\t\t// Error is not undefined.\n\t} else if ( undefined !== _error ) {\n\t\tconst { message, code } = _error;\n\t\terrorMessage = message ? message : _error;\n\n\t\t// Use localized message if code exists.\n\t\tif ( code && stripeErrorMessages[ code ] ) {\n\t\t\terrorMessage = stripeErrorMessages[ code ];\n\t\t}\n\n\t\t// Unable to determine error.\n\t} else {\n\t\terrorMessage = unknownError;\n\t}\n\n\t// Show message in UI.\n\tpaymentForm.find( '.simpay-errors' ).html( errorMessage );\n\n\t// Enable form.\n\tenableForm();\n}\n\nexport default error;\n","/**\n * Internal dependencies\n */\nimport { registerPaymentFormType } from '@wpsimplepay/payment-forms';\nimport { default as setup } from './setup.js';\nimport { default as submit } from './submit.js';\nimport { default as enable } from './enable.js';\nimport { default as disable } from './disable.js';\nimport { default as error } from './error.js';\n\nconst type = 'stripe-checkout';\n\nregisterPaymentFormType( type, {\n\ttype,\n\tsetup,\n\tsubmit,\n\tenable,\n\tdisable,\n\terror,\n} );\n","/**\n * Internal dependencies\n */\nimport { doAction } from '@wpsimplepay/hooks';\nimport { __unstableUpdatePaymentFormCart } from '@wpsimplepay/payment-forms';\nimport { Cart } from './cart';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Setup Stripe Checkout Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nfunction setup( paymentForm ) {\n\tconst { enable: enableForm, disable: disableForm } = paymentForm;\n\n\t// Disable while setting up.\n\tdisableForm();\n\n\t// Bind cart to PaymentForm.\n\tpaymentForm.cart = __unstableUpdatePaymentFormCart(\n\t\tpaymentForm,\n\t\tnew Cart()\n\t);\n\n\t// Bind submit button.\n\tconst submitButtonEl = paymentForm.find( '.simpay-payment-btn' )[ 0 ];\n\n\tif ( ! submitButtonEl ) {\n\t\treturn;\n\t}\n\n\tsubmitButtonEl.addEventListener( 'click', ( e ) => {\n\t\te.preventDefault();\n\n\t\t// HTML5 validation check.\n\t\tconst { triggerBrowserValidation } = window.simpayApp;\n\n\t\tif ( ! paymentForm[ 0 ].checkValidity() ) {\n\t\t\ttriggerBrowserValidation( paymentForm );\n\n\t\t\treturn;\n\t\t}\n\n\t\t/**\n\t\t * Allows processing during a Payment Form submission.\n\t\t *\n\t\t * @since 4.2.0\n\t\t *\n\t\t * @param {PaymentForm} paymentForm\n\t\t */\n\t\tdoAction( 'simpaySubmitPaymentForm', paymentForm );\n\t} );\n\n\tenableForm();\n}\n\nexport default setup;\n","/**\n * Internal dependencies\n */\nimport { customers, sessions } from '@wpsimplepay/api';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Submit Stripe Checkout Payment Form.\n *\n * @since 4.2.0\n *\n * @param {PaymentForm} paymentForm\n */\nasync function submit( paymentForm ) {\n\tconst {\n\t\terror: onError,\n\t\tdisable: disableForm,\n\t\t__unstableLegacyFormData,\n\t} = paymentForm;\n\n\tlet customerId = null;\n\tconst { hasCustomerFields } = __unstableLegacyFormData;\n\n\tonError( '' );\n\tdisableForm();\n\n\t// Only generate a custom Customer if we need to map on-page form fields.\n\tif ( hasCustomerFields ) {\n\t\tconst {\n\t\t\tcustomer: { id },\n\t\t} = await customers.create( {}, paymentForm );\n\n\t\tcustomerId = id;\n\t}\n\n\t// Generate a Checkout Session.\n\tconst {\n\t\tsessionId,\n\t\tsession: { url },\n\t\tredirect_type: redirectType,\n\t} = await sessions.create(\n\t\t{\n\t\t\tcustomer_id: customerId,\n\t\t\tpayment_method_type:\n\t\t\t\t__unstableLegacyFormData.paymentMethods[ 0 ].id,\n\t\t},\n\t\tpaymentForm\n\t);\n\n\t// Redirect to Stripe.\n\tif ( 'stripe' === redirectType ) {\n\t\treturn paymentForm.stripeInstance\n\t\t\t.redirectToCheckout( {\n\t\t\t\tsessionId,\n\t\t\t} )\n\t\t\t.then( ( result ) => {\n\t\t\t\tif ( result.error ) {\n\t\t\t\t\tonError( result.error );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t} );\n\t}\n\n\twindow.location.href = url;\n}\n\nexport default submit;\n","/* global _, jQuery */\n\n/**\n * Internal dependencies\n */\nconst { convertToDollars, formatCurrency } = window.spShared;\n\nexport default {\n\tinit: _.noop,\n\tsetupCoreForm: _.noop,\n\n\t/**\n\t * Does this payment form use the Stripe Checkout overlay?\n\t *\n\t * @param {Object} formData Configured form data.\n\t */\n\tisStripeCheckoutForm( formData ) {\n\t\treturn (\n\t\t\tundefined === formData.formDisplayType ||\n\t\t\t'stripe_checkout' === formData.formDisplayType\n\t\t);\n\t},\n\n\t/**\n\t * Set the final amount for the Payment Form.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t */\n\tsetCoreFinalAmount( spFormElem, formData ) {\n\t\t// Backwards compat.\n\t\tformData.finalAmount = spFormElem.cart.getTotalDueToday();\n\n\t\tjQuery( document.body ).trigger( 'simpayFinalizeCoreAmount', [\n\t\t\tspFormElem,\n\t\t\tformData,\n\t\t] );\n\t},\n\n\t/**\n\t * Disable Payment Form.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t * @param {bool} setSubmitAsLoading Adjust button text to Processing text state.\n\t * @param setSubmitButtonAsLoading\n\t */\n\tdisableForm( spFormElem, formData, setSubmitButtonAsLoading ) {\n\t\tlet submitBtn = spFormElem.find( '.simpay-payment-btn' );\n\t\tlet loadingText = formData.paymentButtonLoadingText;\n\n\t\tspFormElem.addClass( 'simpay-checkout-form--loading' );\n\n\t\tif ( ! window.simpayApp.isStripeCheckoutForm( formData ) ) {\n\t\t\tsubmitBtn = spFormElem.find( '.simpay-checkout-btn' );\n\t\t\tloadingText = formData.checkoutButtonLoadingText;\n\t\t}\n\n\t\t// Disable the form submit button upon initial form load or form submission.\n\t\tsubmitBtn.prop( 'disabled', true );\n\n\t\tif ( true === setSubmitButtonAsLoading ) {\n\t\t\tsubmitBtn\n\t\t\t\t.addClass( 'simpay-disabled' )\n\t\t\t\t.find( 'span' )\n\t\t\t\t.html( loadingText );\n\t\t}\n\t},\n\n\t/**\n\t * Enable Payment Form.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t */\n\tenableForm( spFormElem, formData ) {\n\t\tconst { cart } = spFormElem;\n\n\t\t// Do nothing if Cart is unavailable.\n\t\tif ( undefined === cart ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet submitBtn = spFormElem.find( '.simpay-payment-btn' );\n\t\tlet loadingText = formData.paymentButtonLoadingText;\n\t\tlet buttonText = formData.paymentButtonText;\n\n\t\tspFormElem.removeClass( 'simpay-checkout-form--loading' );\n\n\t\tif ( ! window.simpayApp.isStripeCheckoutForm( formData ) ) {\n\t\t\tsubmitBtn = spFormElem.find( '.simpay-checkout-btn' );\n\t\t\tloadingText = formData.checkoutButtonLoadingText;\n\t\t\tbuttonText = formData.checkoutButtonText;\n\t\t}\n\n\t\t// Re-enable button.\n\t\tsubmitBtn.prop( 'disabled', false ).removeClass( 'simpay-disabled' );\n\n\t\t// Embed in to an arbitrary node to retrieve parsed entities.\n\t\tconst embeddedHtml = document.createElement( 'div' );\n\t\tembeddedHtml.innerHTML = loadingText;\n\n\t\t// Reset button text back to original if needed during validation.\n\t\tif (\n\t\t\tjQuery( embeddedHtml ).html() === submitBtn.find( 'span' ).html()\n\t\t) {\n\t\t\tif ( 0 === cart.getTotalDueToday() ) {\n\t\t\t\tconst { checkoutButtonTrialText } = formData;\n\t\t\t\tsubmitBtn.find( 'span' ).text( checkoutButtonTrialText );\n\t\t\t} else {\n\t\t\t\tconst formatted = formatCurrency(\n\t\t\t\t\tcart.isZeroDecimal()\n\t\t\t\t\t\t? cart.getTotalDueToday()\n\t\t\t\t\t\t: convertToDollars( cart.getTotalDueToday() ),\n\t\t\t\t\ttrue,\n\t\t\t\t\tcart.getCurrencySymbol(),\n\t\t\t\t\tcart.isZeroDecimal()\n\t\t\t\t);\n\n\t\t\t\tconst amount = `${ formatted }`;\n\n\t\t\t\tbuttonText = buttonText.replace( '{{amount}}', amount );\n\n\t\t\t\tsubmitBtn.find( 'span' ).html( buttonText );\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Show an error.\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t * @param {string} errorMessage Message to show.\n\t */\n\tshowError( spFormElem, formData, errorMessage ) {\n\t\treturn spFormElem.find( '.simpay-errors' ).html( errorMessage );\n\t},\n\n\t/**\n\t * Ref triggerBrowserValidation in https://stripe.github.io/elements-examples/\n\t *\n\t * @param {jQuery} spFormElem Form element jQuery object.\n\t * @param {Object} formData Configured form data.\n\t */\n\ttriggerBrowserValidation( spFormElem, formData ) {\n\t\treturn jQuery( '' )\n\t\t\t.attr( {\n\t\t\t\ttype: 'submit',\n\t\t\t\tstyle: {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t},\n\t\t\t} )\n\t\t\t.appendTo( spFormElem )\n\t\t\t.click()\n\t\t\t.remove();\n\t},\n};\n","/* global grecaptcha */\n\nexport function createToken( action ) {\n\tif ( ! window.simpayGoogleRecaptcha ) {\n\t\treturn Promise.resolve( '' );\n\t}\n\n\tconst { siteKey, i18n } = window.simpayGoogleRecaptcha;\n\n\treturn new Promise( ( resolve, reject ) => {\n\t\ttry {\n\t\t\tgrecaptcha\n\t\t\t\t.execute( siteKey, {\n\t\t\t\t\taction,\n\t\t\t\t} )\n\t\t\t\t.then( ( token ) => resolve( token ) );\n\t\t} catch ( error ) {\n\t\t\treject( i18n.invalid );\n\t\t}\n\t} );\n}\n","/* global jQuery, wpApiSettings */\n\n/**\n * Make an API request to the REST API.\n *\n * @param {string} route REST route.\n * @param {Object} data Data to send to the request.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function apiRequest( route, data ) {\n\ttry {\n\t\treturn await jQuery.ajax( {\n\t\t\tdata,\n\t\t\tmethod: 'POST',\n\t\t\turl: `${ wpApiSettings.root }wpsp/${ route }`,\n\t\t\tbeforeSend: ( xhr ) => {\n\t\t\t\txhr.setRequestHeader( 'X-WP-Nonce', wpApiSettings.nonce );\n\t\t\t},\n\t\t} );\n\t} catch ( { responseJSON } ) {\n\t\tthrow responseJSON;\n\t}\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Customer.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/customer', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","export * from './api-request.js';\n\nexport * as customers from './customers.js';\nexport * as paymentintents from './paymentintents.js';\nexport * as orders from './orders.js';\nexport * as sessions from './sessions.js';\nexport * as setupintents from './setupintents.js';\nexport * as subscriptions from './subscriptions.js';\n","/**\n * \"Order\" refers to an internal order, not a Stripe Order object.\n */\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\nimport { createToken } from '../../../frontend/utils/recaptcha.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates and returns an order preview.\n *\n * @since 4.6.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function preview( data ) {\n\t// Create a token for the reCAPTCHA.\n\tconst recaptcha = await createToken(\n\t\t`simple_pay_form_${ data.form_id }_order_preview`\n\t);\n\n\treturn apiRequest( 'v2/order/preview', {\n\t\t...data,\n\t\tcaptcha: {\n\t\t\trecaptcha,\n\t\t},\n\t} );\n}\n\n/**\n * Submits an Order.\n *\n * @since 4.6.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport async function submit( data ) {\n\t// Create a token for the reCAPTCHA.\n\tconst recaptcha = await createToken(\n\t\t`simple_pay_form_${ data.form_id }_order_submit`\n\t);\n\n\treturn apiRequest( 'v2/order/submit', {\n\t\t...data,\n\t\tcaptcha: {\n\t\t\trecaptcha,\n\t\t},\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a PaymentIntent.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/paymentintent/create', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Checkout Session.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/checkout-session', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a SetupIntent.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/setupintent/create', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n","/**\n * External dependencies.\n */\nimport serialize from 'form-serialize';\n\n/**\n * Internal dependencies.\n */\nimport { apiRequest } from './api-request.js';\n\n/** @typedef {import('@wpsimplepay/payment-forms').PaymentForm} PaymentForm */\n\n/**\n * Creates a Subscription.\n *\n * @since 4.2.0\n *\n * @param {Object} data Data to pass to REST endpoint.\n * @param {PaymentForm} paymentForm\n * @return {jqXHR} jQuery XMLHttpRequest object.\n */\nexport function create( data = {}, paymentForm ) {\n\tconst { id, getFormData } = paymentForm;\n\n\treturn apiRequest( 'v2/subscription', {\n\t\tform_values: serialize( paymentForm[ 0 ], { hash: true } ),\n\t\tform_data: getFormData(),\n\t\tform_id: id,\n\t\t...data,\n\t} );\n}\n\n/**\n * Update a Subscription's payment method.\n *\n * Requires a Subscription's key and linked Customer for verification.\n * Takes direct arguments vs. spFormElem and full form data.\n *\n * @param {number} customerId ID of the Customer.\n * @param {string} customerNonce Customer nonce.\n * @param {string} subscriptionId ID of the Subscription.\n * @param {number} formId ID of the Payment Form.\n * @param {Object} args {\n * @return {Promise} AJAX promise.\n */\nexport function updatePaymentMethod(\n\tcustomerId,\n\tcustomerNonce,\n\tsubscriptionId,\n\tformId,\n\targs\n) {\n\treturn apiRequest(\n\t\t`v2/subscription/payment_method/${ subscriptionId }/${ customerId }`,\n\t\t{\n\t\t\tcustomer_nonce: customerNonce,\n\t\t\tform_values: args,\n\t\t\tform_id: formId,\n\t\t}\n\t);\n}\n","/**\n * Internal dependencies\n */\nimport LineItem from './line-item.js';\n\n/**\n * Cart\n */\nexport const Cart = class Cart {\n\t/**\n\t * Creates a cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @see `update()`\n\t *\n\t * @param {Object} args Cart arguments.\n\t * @return {Cart} Cart.\n\t */\n\tconstructor( args ) {\n\t\t// Set defaults.\n\t\t// @todo add support for classProperties.\n\t\tthis.items = [];\n\t\tthis.currency = 'usd';\n\t\tthis.taxPercent = 0;\n\t\tthis.taxRates = [];\n\t\tthis.taxStatus = 'fixed-global';\n\t\tthis.taxBehavior = 'exclusive';\n\t\tthis.automaticTax = {};\n\t\tthis.coupon = false;\n\t\tthis.isNonDecimalCurrency = false;\n\n\t\tthis.update( args );\n\t}\n\n\t/**\n\t * Updates the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Cart arguments.\n\t * @param {number} args.taxPercent Tax percentage.\n\t * @param {Array} args.taxRates Tax rates.\n\t * @param {false|Object} args.coupon Stripe Coupon.\n\t * @param {boolean} args.isNonDecimalCurrency If the currency is non-decimal based.\n\t * @return {Cart} Cart.\n\t */\n\tupdate( args ) {\n\t\t// Parse and retrieve specific arguments.\n\t\tconst {\n\t\t\tcurrency,\n\t\t\ttaxPercent,\n\t\t\ttaxRates,\n\t\t\ttaxStatus,\n\t\t\ttaxBehavior,\n\t\t\tautomaticTax,\n\t\t\tcoupon,\n\t\t\tisNonDecimalCurrency,\n\t\t} = {\n\t\t\t...this,\n\t\t\t...args,\n\t\t};\n\n\t\t// Set currency.\n\t\tif ( 'string' !== typeof currency ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-currency',\n\t\t\t\tmessage: 'Currency must be a string.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.currency = currency;\n\t\t}\n\n\t\t// Set fees.\n\t\tif ( isNaN( taxPercent ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-tax-percent',\n\t\t\t\tmessage: 'Tax percentage must be a number.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.taxPercent = parseFloat( taxPercent );\n\t\t}\n\n\t\t// Tax.\n\t\tif ( taxRates && Array.isArray( taxRates ) ) {\n\t\t\tthis.taxRates = taxRates;\n\t\t}\n\n\t\tif ( taxStatus && 'string' === typeof taxStatus ) {\n\t\t\tthis.taxStatus = taxStatus;\n\t\t}\n\n\t\tif ( taxBehavior && 'string' === typeof taxBehavior ) {\n\t\t\tthis.taxBehavior = taxBehavior;\n\t\t}\n\n\t\tif ( automaticTax && 'object' === typeof automaticTax ) {\n\t\t\tthis.automaticTax = automaticTax;\n\t\t}\n\n\t\t// Set coupon.\n\t\t// @todo Validate coupon data.\n\t\tif ( ! ( false === coupon || 'object' === typeof coupon ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-coupon',\n\t\t\t\tmessage: 'Coupon must be a false or contain coupon data.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.coupon = coupon;\n\t\t}\n\n\t\tif ( 'boolean' !== typeof isNonDecimalCurrency ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-non-decimal-currency',\n\t\t\t\tmessage: 'Declaring a non-decimal currency must be a boolean.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.isNonDecimalCurrency = isNonDecimalCurrency;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Resets the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {Cart} Cart.\n\t */\n\treset() {\n\t\treturn new Cart();\n\t}\n\n\t/**\n\t * Returns the currency used by the base item, and therefore, the whole cart.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {string}\n\t */\n\tgetCurrency() {\n\t\tlet currency;\n\t\tconst { price } = this.getLineItem( 'base' );\n\n\t\tif ( null === price ) {\n\t\t\tcurrency = spGeneral.strings.currency;\n\t\t} else {\n\t\t\tcurrency = price.currency;\n\t\t}\n\n\t\treturn currency;\n\t}\n\n\t/**\n\t * Returns the currency symbol used by the base item, and therefore,\n\t * the whole cart.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {string}\n\t */\n\tgetCurrencySymbol() {\n\t\tlet currencySymbol;\n\t\tconst { price } = this.getLineItem( 'base' );\n\n\t\tif ( null === price ) {\n\t\t\tcurrencySymbol = spGeneral.strings.currencySymbol;\n\t\t} else {\n\t\t\tcurrencySymbol = price.currency_symbol;\n\t\t}\n\n\t\treturn currencySymbol;\n\t}\n\n\t/**\n\t * Determines if the currenet cart is using a zero decimal currency.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {bool}\n\t */\n\tisZeroDecimal() {\n\t\tconst { price } = this.getLineItem( 'base' );\n\t\tconst { is_zero_decimal: isZeroDecimal } = price;\n\n\t\treturn isZeroDecimal;\n\t}\n\n\t/**\n\t * Retrieves coupon information.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {Object} Stripe Coupon.\n\t */\n\tgetCoupon() {\n\t\treturn this.coupon;\n\t}\n\n\t/**\n\t * Retrieves a cart's inclusive tax percentage.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {string} taxCalculation Tax caclulation type.\n\t * @return {number} Cart's inclusive tax percentage.\n\t */\n\tgetTaxPercent( taxCalculation ) {\n\t\treturn this.getTaxRates().reduce(\n\t\t\t( percent, { calculation, percentage } ) => {\n\t\t\t\tif ( taxCalculation !== calculation ) {\n\t\t\t\t\treturn percent;\n\t\t\t\t}\n\n\t\t\t\treturn ( percent += percentage );\n\t\t\t},\n\t\t\t0\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves the cart's tax decimal amount for calculations.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number}\n\t */\n\tgetTaxDecimal() {\n\t\treturn this.taxPercent / 100;\n\t}\n\n\t/**\n\t * Retrieves the cart's tax rates.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {Array}\n\t */\n\tgetTaxRates() {\n\t\treturn this.taxRates;\n\t}\n\n\t/**\n\t * Retrieves the items in the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {Array} List of cart items.\n\t */\n\tgetLineItems() {\n\t\treturn this.items;\n\t}\n\n\t/**\n\t * Retrieves subtotal.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart subtotal.\n\t */\n\tgetSubtotal() {\n\t\treturn this.getLineItems().reduce( ( subtotal, lineItem ) => {\n\t\t\t// Return early if the line item has a trial.\n\t\t\tif ( lineItem.hasFreeTrial() ) {\n\t\t\t\treturn subtotal;\n\t\t\t}\n\n\t\t\t// Add the subtotal of a line item without a trial.\n\t\t\treturn ( subtotal += Math.round(\n\t\t\t\tlineItem.getUnitPrice() * lineItem.getQuantity()\n\t\t\t) );\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Retrieves the total discount amount.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart discount amount.\n\t */\n\tgetDiscount() {\n\t\tconst coupon = this.getCoupon();\n\t\tconst { percent_off: percentOff, amount_off: amountOff } = coupon;\n\n\t\tlet discount = 0;\n\n\t\tif ( false === coupon ) {\n\t\t\treturn discount;\n\t\t}\n\n\t\tif ( percentOff ) {\n\t\t\tdiscount += Math.round( this.getSubtotal() * ( percentOff / 100 ) );\n\t\t} else if ( amountOff ) {\n\t\t\tdiscount += amountOff;\n\t\t}\n\n\t\treturn discount;\n\t}\n\n\t/**\n\t * Retrieves the total tax amount.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart tax.\n\t */\n\tgetTax() {\n\t\tif ( 'none' === this.taxStatus ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn this.getLineItems().reduce( ( tax, lineItem ) => {\n\t\t\treturn ( tax += lineItem.getTax() );\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Retrieves the cart's tax amounts for corresponding tax rate IDs.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @link https://github.com/wpsimplepay/wp-simple-pay-pro/issues/1198#issuecomment-776724336\n\t *\n\t * @return {Object[]}\n\t */\n\tgetAppliedTaxRates() {\n\t\tconst lineItems = this.getLineItems();\n\n\t\tconst exclusiveTaxRates = this.getTaxRates().filter(\n\t\t\t( { calculation } ) => calculation !== 'inclusive'\n\t\t);\n\t\tconst totalExclusiveTaxDecimal =\n\t\t\tthis.getTaxPercent( 'exclusive' ) / 100;\n\n\t\tconst inclusiveTaxRates = this.getTaxRates().filter(\n\t\t\t( { calculation } ) => calculation !== 'exclusive'\n\t\t);\n\t\tconst inclusiveTaxPercent = this.getTaxPercent( 'inclusive' );\n\t\tconst totalInclusiveTaxDecimal = inclusiveTaxPercent / 100;\n\n\t\tconst taxRateAmounts = {};\n\n\t\tlineItems.forEach( ( lineItem ) => {\n\t\t\tif ( lineItem.hasFreeTrial() ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst lineExclusiveTax = lineItem.getTax();\n\t\t\tconst lineTaxableAmount = lineItem.getTaxableAmount();\n\t\t\tconst lineInclusiveTaxAmount = lineItem.getInclusiveTaxAmount();\n\n\t\t\texclusiveTaxRates.forEach( ( taxRate, i ) => {\n\t\t\t\tconst { id, percentage } = taxRate;\n\t\t\t\tconst taxDecimal = percentage / 100;\n\t\t\t\tlet taxAmount = 0;\n\n\t\t\t\tif ( i === exclusiveTaxRates.length - 1 ) {\n\t\t\t\t\tconst otherExclusiveTaxRates = exclusiveTaxRates.filter(\n\t\t\t\t\t\t( { id: taxRateId } ) => taxRateId !== id\n\t\t\t\t\t);\n\n\t\t\t\t\tconst otherExclusiveTaxPercent = otherExclusiveTaxRates.reduce(\n\t\t\t\t\t\t( percent, { percentage } ) => {\n\t\t\t\t\t\t\treturn ( percent += percentage );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\n\t\t\t\t\tconst otherExclusiveTaxDecimal =\n\t\t\t\t\t\totherExclusiveTaxPercent / 100;\n\n\t\t\t\t\tconst remainingExclusiveTax = Math.floor(\n\t\t\t\t\t\tlineTaxableAmount * otherExclusiveTaxDecimal\n\t\t\t\t\t);\n\n\t\t\t\t\ttaxAmount = lineExclusiveTax - remainingExclusiveTax;\n\t\t\t\t} else {\n\t\t\t\t\ttaxAmount = Math.floor(\n\t\t\t\t\t\tlineExclusiveTax *\n\t\t\t\t\t\t\t( taxDecimal / totalExclusiveTaxDecimal )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\ttaxRateAmounts[ id ] = [\n\t\t\t\t\t...( taxRateAmounts[ id ] || [] ),\n\t\t\t\t\ttaxAmount,\n\t\t\t\t];\n\t\t\t} );\n\n\t\t\tinclusiveTaxRates.forEach( ( taxRate, i ) => {\n\t\t\t\tconst { id, percentage } = taxRate;\n\t\t\t\tconst taxDecimal = percentage / 100;\n\t\t\t\tlet taxAmount;\n\n\t\t\t\tif ( i === inclusiveTaxRates.length - 1 ) {\n\t\t\t\t\tconst otherInclusiveTaxRates = inclusiveTaxRates.filter(\n\t\t\t\t\t\t( { id: taxRateId } ) => taxRateId !== id\n\t\t\t\t\t);\n\n\t\t\t\t\tconst otherInclusiveTaxAmount = otherInclusiveTaxRates.reduce(\n\t\t\t\t\t\t( taxAmount, { percentage } ) => {\n\t\t\t\t\t\t\treturn ( taxAmount += Math.floor(\n\t\t\t\t\t\t\t\tlineInclusiveTaxAmount *\n\t\t\t\t\t\t\t\t\t( percentage /\n\t\t\t\t\t\t\t\t\t\t100 /\n\t\t\t\t\t\t\t\t\t\ttotalInclusiveTaxDecimal )\n\t\t\t\t\t\t\t) );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t0\n\t\t\t\t\t);\n\n\t\t\t\t\ttaxAmount =\n\t\t\t\t\t\tlineInclusiveTaxAmount - otherInclusiveTaxAmount;\n\t\t\t\t} else {\n\t\t\t\t\ttaxAmount = Math.floor(\n\t\t\t\t\t\tlineInclusiveTaxAmount *\n\t\t\t\t\t\t\t( taxDecimal / totalInclusiveTaxDecimal )\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\ttaxRateAmounts[ id ] = [\n\t\t\t\t\t...( taxRateAmounts[ id ] || [] ),\n\t\t\t\t\ttaxAmount,\n\t\t\t\t];\n\t\t\t} );\n\t\t} );\n\n\t\treturn taxRateAmounts;\n\t}\n\n\t/**\n\t * Retrieves the total.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart total.\n\t */\n\tgetTotal() {\n\t\treturn this.getLineItems().reduce( ( total, lineItem ) => {\n\t\t\treturn ( total += lineItem.getTotal() );\n\t\t}, 0 );\n\t}\n\n\t/**\n\t * Retrieves the total due today.\n\t *\n\t * @since 4.5.0\n\t *\n\t * @return {number} Cart total due today.\n\t */\n\tgetTotalDueToday() {\n\t\tlet initialTax = 0;\n\n\t\tif (\n\t\t\t'exclusive' === this.taxBehavior &&\n\t\t\tthis.automaticTax &&\n\t\t\t! this.hasFreeTrial()\n\t\t) {\n\t\t\tinitialTax = parseInt( this.automaticTax.amount_tax || initialTax );\n\t\t}\n\n\t\treturn this.getLineItems().reduce( ( total, lineItem ) => {\n\t\t\t// Return current total if the line item has a free trial.\n\t\t\tif ( lineItem.hasFreeTrial() ) {\n\t\t\t\treturn total;\n\t\t\t}\n\n\t\t\t// Add line item total to existing total.\n\t\t\treturn ( total += lineItem.getTotal() );\n\t\t}, initialTax );\n\t}\n\n\t/**\n\t * Retrieves the recurring total.\n\t *\n\t * Calculates amounts manually by applying the whole discount to the line item.\n\t * Assumes discounts apply indefinitely.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Cart recurring total.\n\t */\n\tgetRecurringTotal() {\n\t\tconst recurring = this.getLineItem( 'base' );\n\t\tlet recurringSubtotal =\n\t\t\trecurring.getUnitPrice() * recurring.getQuantity();\n\t\trecurringSubtotal = Math.round(\n\t\t\trecurringSubtotal - this.getDiscount()\n\t\t);\n\n\t\tconst taxRates = this.getTaxRates();\n\t\tconst taxRate = this.getTaxPercent( 'inclusive' ) / 100;\n\n\t\tconst inclusiveTaxAmount = Math.round(\n\t\t\trecurringSubtotal - recurringSubtotal / ( 1 + taxRate )\n\t\t);\n\n\t\tconst postInclusiveTaxAmount = Math.round(\n\t\t\trecurringSubtotal - inclusiveTaxAmount\n\t\t);\n\t\tconst taxAmount = taxRates.reduce(\n\t\t\t( tax, { percentage, calculation } ) => {\n\t\t\t\tif ( 'inclusive' === calculation ) {\n\t\t\t\t\treturn tax;\n\t\t\t\t}\n\n\t\t\t\treturn ( tax += Math.round(\n\t\t\t\t\tpostInclusiveTaxAmount * ( percentage / 100 )\n\t\t\t\t) );\n\t\t\t},\n\t\t\t0\n\t\t);\n\n\t\treturn Math.round( recurringSubtotal + taxAmount );\n\t}\n\n\t/**\n\t * Retrieves the recurring total without a discount.\n\t *\n\t * @since 4.4.5\n\t *\n\t * @return {number} Cart recurring total.\n\t */\n\tgetRecurringNoDiscountTotal() {\n\t\tconst recurring = this.getLineItem( 'base' );\n\t\tconst recurringSubtotal =\n\t\t\trecurring.getUnitPrice() * recurring.getQuantity();\n\n\t\tlet taxAmount = 0;\n\n\t\tif ( 'automatic' !== this.taxStatus && 'none' !== this.taxStatus ) {\n\t\t\tconst taxRates = this.getTaxRates();\n\t\t\tconst taxRate = this.getTaxPercent( 'inclusive' ) / 100;\n\n\t\t\tconst inclusiveTaxAmount = Math.round(\n\t\t\t\trecurringSubtotal - recurringSubtotal / ( 1 + taxRate )\n\t\t\t);\n\n\t\t\tconst postInclusiveTaxAmount = Math.round(\n\t\t\t\trecurringSubtotal - inclusiveTaxAmount\n\t\t\t);\n\n\t\t\ttaxAmount = taxRates.reduce(\n\t\t\t\t( tax, { percentage, calculation } ) => {\n\t\t\t\t\tif ( 'inclusive' === calculation ) {\n\t\t\t\t\t\treturn tax;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ( tax += Math.round(\n\t\t\t\t\t\tpostInclusiveTaxAmount * ( percentage / 100 )\n\t\t\t\t\t) );\n\t\t\t\t},\n\t\t\t\t0\n\t\t\t);\n\t\t} else if (\n\t\t\t'automatic' === this.taxStatus &&\n\t\t\t'exclusive' === this.taxBehavior &&\n\t\t\tthis.automaticTax\n\t\t) {\n\t\t\ttaxAmount = this.automaticTax.upcomingInvoice?.amount_tax || 0;\n\t\t}\n\n\t\treturn Math.round( recurringSubtotal + taxAmount );\n\t}\n\n\t/**\n\t * Retrieves the recurring amount for the next invoice.\n\t *\n\t * @since 4.4.5\n\t *\n\t * @return {number} Cart reucurring total due today.\n\t */\n\tgetNextInvoiceTotal() {\n\t\tconst recurring = this.getLineItem( 'base' );\n\t\tconst coupon = this.getCoupon();\n\t\tconst {\n\t\t\tpercent_off: couponPercentOff,\n\t\t\tamount_off: couponAmountOff,\n\t\t\tduration: couponDuration,\n\t\t} = coupon;\n\n\t\tlet recurringSubtotal =\n\t\t\trecurring.getUnitPrice() * recurring.getQuantity();\n\n\t\t// Calculate the discount for the next invoice.\n\t\t// Cannot use getDiscount() because it discounts off the amount due today.\n\t\tif ( coupon && couponDuration !== 'once' ) {\n\t\t\tlet discount = 0;\n\n\t\t\tif ( couponPercentOff ) {\n\t\t\t\tdiscount += Math.round(\n\t\t\t\t\trecurringSubtotal * ( couponPercentOff / 100 )\n\t\t\t\t);\n\t\t\t} else if ( couponAmountOff ) {\n\t\t\t\tdiscount += couponAmountOff;\n\t\t\t}\n\n\t\t\trecurringSubtotal = Math.round( recurringSubtotal - discount );\n\t\t}\n\n\t\tlet taxAmount = 0;\n\n\t\tif ( 'automatic' !== this.taxStatus && 'none' !== this.taxStatus ) {\n\t\t\tconst taxRates = this.getTaxRates();\n\t\t\tconst taxRate = this.getTaxPercent( 'inclusive' ) / 100;\n\n\t\t\tconst inclusiveTaxAmount = Math.round(\n\t\t\t\trecurringSubtotal - recurringSubtotal / ( 1 + taxRate )\n\t\t\t);\n\n\t\t\tconst postInclusiveTaxAmount = Math.round(\n\t\t\t\trecurringSubtotal - inclusiveTaxAmount\n\t\t\t);\n\n\t\t\ttaxAmount = taxRates.reduce(\n\t\t\t\t( tax, { percentage, calculation } ) => {\n\t\t\t\t\tif ( 'inclusive' === calculation ) {\n\t\t\t\t\t\treturn tax;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ( tax += Math.round(\n\t\t\t\t\t\tpostInclusiveTaxAmount * ( percentage / 100 )\n\t\t\t\t\t) );\n\t\t\t\t},\n\t\t\t\t0\n\t\t\t);\n\t\t} else if (\n\t\t\t'automatic' === this.taxStatus &&\n\t\t\t'exclusive' === this.taxBehavior &&\n\t\t\tthis.automaticTax\n\t\t) {\n\t\t\ttaxAmount = this.automaticTax.upcomingInvoice?.amount_tax || 0;\n\t\t}\n\n\t\treturn Math.round( recurringSubtotal + taxAmount );\n\t}\n\n\t/**\n\t * Retrieves an item.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {string} id Cart line item ID.\n\t * @return {LineItem} Cart line item.\n\t */\n\tgetLineItem( id ) {\n\t\tconst items = this.getLineItems();\n\n\t\t// Can't use `find` because it is not supported in IE.\n\t\tconst filteredItems = items.filter(\n\t\t\t( { id: itemId } ) => itemId === id\n\t\t);\n\n\t\tif ( 0 === filteredItems.length ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item',\n\t\t\t\tmessage: `Unable to retrieve line item \"${ id }\"`,\n\t\t\t};\n\t\t}\n\n\t\treturn filteredItems[ 0 ];\n\t}\n\n\t/**\n\t * Adds a line item to the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object|LineItem} item Cart line item or arguments to create one.\n\t * @return {LineItem} Added line item.\n\t */\n\taddLineItem( item ) {\n\t\tlet lineitem;\n\n\t\tif ( true === item instanceof LineItem ) {\n\t\t\tlineitem = item;\n\t\t} else {\n\t\t\tlineitem = new this.LineItem( item, this );\n\t\t}\n\n\t\tthis.items.push( lineitem );\n\n\t\treturn lineitem;\n\t}\n\n\t/**\n\t * Determines if the cart has a free trial item.\n\t *\n\t * @since 4.4.5\n\t */\n\thasFreeTrial() {\n\t\treturn (\n\t\t\tthis.getLineItems().filter( ( lineItem ) =>\n\t\t\t\tlineItem.hasFreeTrial()\n\t\t\t).length > 0\n\t\t);\n\t}\n};\n","export * from './cart.js';\nexport * from './line-item.js';\n\n/**\n * Converts current `formData` to a structured cart.\n *\n * @since 3.7.0\n *\n * @param {Object} formData Legacy form data.\n * @return {Object} data Cart data.\n */\nexport function convertFormDataToCartData( formData ) {\n\tconst { debugLog, convertToCents } = window.spShared;\n\n\tconst {\n\t\tbooleans: { isZeroDecimal: isNonDecimalCurrency },\n\t} = window.spGeneral;\n\n\tconst {\n\t\tstripeParams: { currency },\n\n\t\t// Items.\n\t\tamount,\n\t\tisSubscription,\n\t\tquantity,\n\t\tisTrial,\n\t\tplanInterval,\n\t\tplanIntervalCount,\n\n\t\t// Fees.\n\t\tfeePercent,\n\t\tfeeAmount,\n\t\ttaxPercent,\n\t} = formData;\n\n\tconst data = {\n\t\tcurrency,\n\t\titems: [],\n\t\ttaxPercent: 0,\n\t\tisNonDecimalCurrency,\n\t};\n\n\t//\n\t// Add items.\n\t//\n\n\t// Initial Setup Fee.\n\tdata.items.push( {\n\t\tid: 'setup-fee',\n\t\ttitle: 'Initial Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\t// Plan Setup Fee.\n\tdata.items.push( {\n\t\tid: 'plan-setup-fee',\n\t\ttitle: 'Plan Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\t// Base item.\n\tif ( isSubscription ) {\n\t\tdata.items.push( {\n\t\t\tid: 'base',\n\t\t\ttitle: 'Subscription',\n\t\t\tamount: convertToCents( amount ),\n\t\t\tquantity,\n\t\t\tsubscription: {\n\t\t\t\tisTrial,\n\t\t\t\tinterval: planInterval,\n\t\t\t\tintervalCount: planIntervalCount,\n\t\t\t},\n\t\t} );\n\t} else {\n\t\tlet singleAmount = amount;\n\n\t\tif ( ! isNaN( feeAmount ) && feeAmount > 0 ) {\n\t\t\tsingleAmount += feeAmount;\n\n\t\t\tdebugLog(\n\t\t\t\t'feeAmount:',\n\t\t\t\t'Arbitrary fee amounts should be added to the base amount directly.'\n\t\t\t);\n\t\t}\n\n\t\tdata.items.push( {\n\t\t\tid: 'base',\n\t\t\ttitle: 'One-time amount',\n\t\t\tamount: convertToCents( singleAmount ),\n\t\t\tquantity,\n\t\t\tsubscription: false,\n\t\t} );\n\t}\n\n\t// Tax.\n\tif ( ! isNaN( taxPercent ) ) {\n\t\tdata.taxPercent = taxPercent;\n\t}\n\n\t// Add any arbitrary fee percentage to tax percentage.\n\t// @link https://github.com/wpsimplepay/wp-simple-pay-pro/issues/1161\n\tif ( ! isNaN( feePercent ) && feePercent > 0 ) {\n\t\tdata.taxPercent = data.taxPercent + feePercent;\n\t\tdebugLog(\n\t\t\t'feePercent:',\n\t\t\t'Arbitrary fee percentages should be added to the taxPercent directly.'\n\t\t);\n\t}\n\n\treturn data;\n}\n","/**\n * Internal dependencies\n */\nimport { Cart } from './cart.js';\n\n/**\n * LineItem\n */\nexport const LineItem = class LineItem {\n\t/**\n\t * Create a line item.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Line item arguments.\n\t * @param {string} args.id Cart line item ID.\n\t * @param {string} args.title Cart line item title.\n\t * @param {number} args.amount Cart line item amount.\n\t * @param {number} args.quantity Cart line item quantity.\n\t * @param {boolean|Object} args.subscription Cart line item subscription data.\n\t * @param {boolean} args.subscription.isTrial Cart line item subscription trial designation.\n\t * @param {number} args.subscription.intervalCount Cart line item subscription interval count.\n\t * @param {number} args.subscription.interval Cart line item subscription interval.\n\t * @param {Object} args.price Price option data.\n\t * @param {Cart} cart Cart this line item is attached to.\n\t * @return {LineItem} LineItem\n\t */\n\tconstructor( args, cart ) {\n\t\t// Set defaults.\n\t\t// @todo add support for classProperties.\n\t\tthis.cart = null;\n\t\tthis.id = null;\n\t\tthis.title = null;\n\t\tthis.amount = 0;\n\t\tthis.quantity = 1;\n\t\tthis.subscription = false;\n\t\tthis.price = null;\n\n\t\tif ( 'object' !== typeof cart ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-cart',\n\t\t\t\tmessage: 'Item must have an cart.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.cart = cart;\n\t\t}\n\n\t\tthis.update( args );\n\t}\n\n\t/**\n\t * Updates a line item.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @param {Object} args Cart line item arguments.\n\t * @param {string} args.id Cart line item ID.\n\t * @param {string} args.title Cart line item title.\n\t * @param {number} args.amount Cart line item amount.\n\t * @param {number} args.quantity Cart line item quantity.\n\t * @param {boolean|Object} args.subscription Cart line item subscription data.\n\t * @param {boolean} args.subscription.isTrial Cart line item subscription trial designation.\n\t * @param {number} args.subscription.intervalCount Cart line item subscription interval count.\n\t * @param {number} args.subscription.interval Cart line item subscription interval.\n\t * @param {Object} args.price Price option data.\n\t * @return {LineItem} Line item.\n\t */\n\tupdate( args ) {\n\t\t// Parse and retrieve specific arguments.\n\t\tconst { id, title, amount, quantity, subscription, price } = {\n\t\t\t...this,\n\t\t\t...args,\n\t\t};\n\n\t\t// ID must be a string.\n\t\tif ( 'string' !== typeof id ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-id',\n\t\t\t\tmessage: 'Item ID must be a string.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.id = id;\n\t\t}\n\n\t\t// Title must be a string.\n\t\t// Not currently shown in any UI, but may be in the future.\n\t\tif ( 'string' !== typeof title ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-title',\n\t\t\t\tmessage: 'Item title must be a string.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.title = title;\n\t\t}\n\n\t\t// Amount must be a number.\n\t\tif ( ! Number.isSafeInteger( amount ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-amount',\n\t\t\t\tmessage: 'Item amount must be an integer.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.amount = amount;\n\t\t}\n\n\t\t// Quantity must be a number.\n\t\tif ( ! Number.isSafeInteger( quantity ) ) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-quantity',\n\t\t\t\tmessage: 'Item quantity must be an integer.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.quantity = quantity;\n\t\t}\n\n\t\t// Subscription must be false or contain subscription data.\n\t\t// @todo Validate subscription data.\n\t\tif (\n\t\t\t! ( false === subscription || 'object' === typeof subscription )\n\t\t) {\n\t\t\tthrow {\n\t\t\t\tid: 'invalid-line-item-subscription',\n\t\t\t\tmessage:\n\t\t\t\t\t'Item subscription data must be a false or contain subscription data.',\n\t\t\t};\n\t\t} else {\n\t\t\tthis.subscription = subscription;\n\t\t}\n\n\t\t// Price option data.\n\t\tif ( typeof price === 'object' && price !== null ) {\n\t\t\tthis.price = price;\n\t\t} else {\n\t\t\tthis.price = null;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Removes the line item from the cart.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {LineItem} Removed line item.\n\t */\n\tremove() {\n\t\tconst allItems = this.cart.getLineItems();\n\t\tconst remainingItems = allItems.filter( ( { id } ) => this.id !== id );\n\n\t\tthis.cart.items = remainingItems;\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Retrieves a cart line item's unit price.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item unit price.\n\t */\n\tgetUnitPrice() {\n\t\treturn this.amount;\n\t}\n\n\t/**\n\t * Retrieves the cart line item's quantity.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item quantity.\n\t */\n\tgetQuantity() {\n\t\treturn this.quantity;\n\t}\n\n\t/**\n\t * Retrieves the cart line item's discount.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Cart line item discount.\n\t */\n\tgetDiscount() {\n\t\tconst cartDiscount = this.cart.getDiscount();\n\n\t\tif ( 0 === cartDiscount ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst nonZeroLineItems = this.cart\n\t\t\t.getLineItems()\n\t\t\t.filter( ( lineItem ) => {\n\t\t\t\treturn (\n\t\t\t\t\t! lineItem.hasFreeTrial() && 0 !== lineItem.getUnitPrice()\n\t\t\t\t);\n\t\t\t} );\n\n\t\treturn Math.round( cartDiscount / nonZeroLineItems.length );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's subtotal.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item subtotal.\n\t */\n\tgetSubtotal() {\n\t\tif ( this.hasFreeTrial() ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst amount = this.getUnitPrice() * this.getQuantity();\n\n\t\tif ( 0 === amount ) {\n\t\t\treturn amount;\n\t\t}\n\n\t\treturn Math.round( amount - this.getDiscount() );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's inclusive tax amount.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Inclusive tax amount.\n\t */\n\tgetInclusiveTaxAmount() {\n\t\tconst taxRate = this.cart.getTaxPercent( 'inclusive' ) / 100;\n\t\tconst subtotal = this.getSubtotal();\n\n\t\tconst inclusiveTaxAmount = Math.round(\n\t\t\tsubtotal - subtotal / ( 1 + taxRate )\n\t\t);\n\n\t\treturn Math.round( subtotal - ( subtotal - inclusiveTaxAmount ) );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's taxable amount.\n\t *\n\t * @since 4.1.0\n\t *\n\t * @return {number} Taxable amount.\n\t */\n\tgetTaxableAmount() {\n\t\tconst subtotal = this.getSubtotal();\n\t\tconst inclusiveTaxAmount = this.getInclusiveTaxAmount();\n\n\t\treturn Math.round( subtotal - inclusiveTaxAmount );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's tax.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item tax.\n\t */\n\tgetTax() {\n\t\tif (\n\t\t\t'automatic' === this.cart.taxStatus ||\n\t\t\t'none' === this.cart.taxStatus\n\t\t) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst taxableAmount = this.getTaxableAmount();\n\t\tconst taxPercent = this.cart.getTaxPercent( 'exclusive' );\n\n\t\treturn Math.round( taxableAmount * ( taxPercent / 100 ) );\n\t}\n\n\t/**\n\t * Retrieves a cart line item's total.\n\t *\n\t * @since 3.7.0\n\t *\n\t * @return {number} Cart line item total.\n\t */\n\tgetTotal() {\n\t\treturn this.getSubtotal() + this.getTax();\n\t}\n\n\t/**\n\t * Determines if the line item has a free trial.\n\t *\n\t * @since 4.4.5\n\t *\n\t * @return {bool} If the line item has a free trial.\n\t */\n\thasFreeTrial() {\n\t\tconst { price } = this;\n\n\t\tif ( ! price ) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn (\n\t\t\tfalse !== this.subscription &&\n\t\t\tprice.recurring &&\n\t\t\tprice.recurring.trial_period_days\n\t\t);\n\t}\n};\n\nexport default LineItem;\n","/**\n * WordPress dependencies\n */\nimport { createHooks } from '@wordpress/hooks';\n\nconst defaultHooks = createHooks();\nconst { addAction, addFilter, doAction, applyFilters } = defaultHooks;\n\nexport { addAction, addFilter, doAction, applyFilters };\nexport default defaultHooks;\n","export * from './payment-form-types.js';\nexport * from './payment-methods.js';\n","/** @typedef {import('./../').PaymentFormType} PaymentFormType */\n\n/**\n * Payment form type definitions keyed by type.\n *\n * @type {Object.}\n */\nconst paymentFormsTypes = {};\n\n/**\n * Registers a payment form type.\n *\n * @since 4.2.0\n *\n * @param {string} type A string identifying the payment from type.\n * @param {PaymentFormType} settings Payment form type settings and callbacks.\n * @return {PaymentFormType} The registered payment form type.\n */\nexport function registerPaymentFormType( type, settings ) {\n\tif ( typeof settings !== 'object' ) {\n\t\treturn null;\n\t}\n\n\tif ( typeof type !== 'string' ) {\n\t\treturn null;\n\t}\n\n\tif ( paymentFormsTypes[ type ] ) {\n\t\treturn null;\n\t}\n\n\t// @todo Validate onSetup, onSubmit, and onError exist.\n\tpaymentFormsTypes[ type ] = settings;\n\n\treturn settings;\n}\n\n/**\n * Returns a registered payment form type's settings.\n *\n * @since 4.2.0\n *\n * @param {string} type Payment form type\n * @return {?PaymentFormType} Payment form type settings.\n */\nexport function getPaymentFormType( type ) {\n\treturn paymentFormsTypes[ type ];\n}\n\n/**\n * Returns available Payment Forms.\n *\n * @since 4.2.0\n *\n * @return {Object.} Payment form types keyed by type.\n */\nexport const getPaymentFormTypes = () => paymentFormsTypes;\n","/** @typedef {import('./../').PaymentMethod} PaymentMethod */\n\n/**\n * Payment Method definitions keyed by ID.\n *\n * @type {Object.}\n */\nconst paymentMethods = {};\n\n/**\n * Registers a Payment Method.\n *\n * @since 4.2.0\n *\n * @param {string} id A string identifying the Payment Method.\n * @param {Object} settings Payment Methodsettings and callbacks.\n * @return {PaymentMethod} The registered Payment Method.\n */\nexport function registerPaymentMethod( id, settings ) {\n\tif ( typeof settings !== 'object' ) {\n\t\treturn null;\n\t}\n\n\tif ( typeof id !== 'string' ) {\n\t\treturn null;\n\t}\n\n\tif ( paymentMethods[ id ] ) {\n\t\treturn null;\n\t}\n\n\t// @todo Validate onSetup, onSubmit, and onError exist.\n\tpaymentMethods[ id ] = settings;\n\n\treturn settings;\n}\n\n/**\n * Returns a registered Payment Method's settings.\n *\n * @since 4.2.0\n *\n * @param {string} id Payment Method ID.\n * @return {?PaymentMethod} Payment Method settings.\n */\nexport function getPaymentMethod( id ) {\n\treturn paymentMethods[ id ];\n}\n\n/**\n * Returns available Payment Methods.\n *\n * @since 3.8.0\n *\n * @return {Object} Payment Methods keyed by ID.\n */\nexport const getPaymentMethods = () => paymentMethods;\n","/**\n * Payment Form.\n *\n * @typedef {Object} PaymentForm\n *\n * @property {(paymentForm: PaymentForm) => void} setup A callback for setting up the payment form type.\n * @property {(paymentForm: PaymentForm) => void} submit A callback for submitting the payment form type.\n * @property {(paymentForm: PaymentForm) => void} enable A callback for enabling the payment form type.\n * @property {(paymentForm: PaymentForm) => void} disable A callback for disabling the payment form type.\n * @property {(paymentForm: PaymentForm, error: Object|string) => void} error A callback for display payment form type errors.\n * @property {Stripe} stripeInstance stripe.js Stripe object.\n * @property {Object} state Payment Form state.\n * @property {(updatedState: Object) => Object} setState Payment form state setter.\n * @property {Object} __unstableLegacyFormData Legacy payment form data.\n */\n\n/**\n * Payment Form type.\n *\n * @typedef {Object} PaymentFormType\n *\n * @property {(paymentForm: PaymentForm) => void} setup A callback for setting up the payment form type.\n * @property {(paymentForm: PaymentForm) => void} submit A callback for submitting the payment form type.\n * @property {(paymentForm: PaymentForm) => void} enable A callback for enabling the payment form type.\n * @property {(paymentForm: PaymentForm) => void} disable A callback for disabling the payment form type.\n * @property {(paymentForm: PaymentForm, error: Object|string) => void} error A callback for display payment form type errors.\n */\n\n/**\n * Payment Method.\n *\n * @typedef {Object} PaymentMethod\n *\n * @property {(paymentForm: PaymentForm) => void} setup A callback for setting up the form.\n * @property {(paymentForm: PaymentForm) => void} submit A callback for submitting the form.\n */\n\nexport * from './api';\nexport * from './utils.js';\n","/**\n * Primes a cart based on Payment Form data.\n *\n * @todo This might not be any better than the previous convertFormDataToCartData\n * but it helps reduce code duplication between payment form types.\n *\n * @param {PaymentForm} paymentForm Payment Form\n * @param {Cart} cart Payment Form cart.\n */\nexport function __unstableUpdatePaymentFormCart( paymentForm, cart ) {\n\tconst {\n\t\tstate: { price, taxRates, taxStatus },\n\t} = paymentForm;\n\n\t// Create a cart from the default price.\n\tconst {\n\t\tunit_amount: unitAmount,\n\t\tcurrency,\n\t\tcan_recur: canRecur,\n\t\trecurring,\n\t} = price;\n\n\tcart.update( {\n\t\tcurrency,\n\t\ttaxRates,\n\t\ttaxStatus,\n\t} );\n\n\tcart.addLineItem( {\n\t\tid: 'setup-fee',\n\t\ttitle: 'Initial Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\tcart.addLineItem( {\n\t\tid: 'plan-setup-fee',\n\t\ttitle: 'Plan Setup Fee',\n\t\tamount: 0,\n\t\tquantity: 1,\n\t\tsubscription: false,\n\t} );\n\n\tcart.addLineItem( {\n\t\tid: 'base',\n\t\tprice,\n\t\ttitle: recurring && false === canRecur ? 'Subscription' : 'One Time',\n\t\tamount: unitAmount,\n\t\tquantity: 1,\n\t\tsubscription:\n\t\t\trecurring && false === canRecur\n\t\t\t\t? {\n\t\t\t\t\t\tisTrial: !! recurring.trial_period_days,\n\t\t\t\t\t\tinterval: recurring.interval,\n\t\t\t\t\t\tintervalCount: recurring.interval_count,\n\t\t\t\t }\n\t\t\t\t: false,\n\t} );\n\n\treturn cart;\n}\n","module.exports = jQuery;"],"sourceRoot":""} \ No newline at end of file diff --git a/includes/core/class-simplepay.php b/includes/core/class-simplepay.php index 1ddc6dc0..a7c557b9 100644 --- a/includes/core/class-simplepay.php +++ b/includes/core/class-simplepay.php @@ -154,6 +154,7 @@ public function load() { require_once( SIMPLE_PAY_INC . 'core/api/tax-rates.php' ); require_once( SIMPLE_PAY_INC . 'core/api/customers.php' ); require_once( SIMPLE_PAY_INC . 'core/api/paymentmethods.php' ); + require_once( SIMPLE_PAY_INC . 'core/api/paymentintents.php' ); require_once( SIMPLE_PAY_INC . 'core/api/setupintents.php' ); require_once( SIMPLE_PAY_INC . 'core/api/coupons.php' ); diff --git a/includes/core/forms/class-price-options.php b/includes/core/forms/class-price-options.php index 05d9ae97..3155e594 100644 --- a/includes/core/forms/class-price-options.php +++ b/includes/core/forms/class-price-options.php @@ -528,9 +528,10 @@ private function is_current_mode_latest() { */ private function get_price_args_to_copy( $price, $product_id ) { $args = array( - 'unit_amount' => $price->unit_amount, - 'currency' => $price->currency, - 'product' => $product_id, + 'unit_amount' => $price->unit_amount, + 'currency' => $price->currency, + 'tax_behavior' => $price->tax_behavior, + 'product' => $product_id, ); if ( isset( $price->metadata ) ) { @@ -634,6 +635,13 @@ private function get_product_args( $form ) { $product_args['images'] = array( $this->form->image_url ); } + // Tax code. + $tax_code = get_post_meta( $this->form->id, '_tax_code', true ); + + if ( ! empty( $tax_code ) ) { + $product_args['tax_code'] = $tax_code; + } + return $product_args; } diff --git a/includes/core/forms/functions.php b/includes/core/forms/functions.php index b09d855b..5f9f9348 100644 --- a/includes/core/forms/functions.php +++ b/includes/core/forms/functions.php @@ -48,7 +48,7 @@ function simpay_get_payment_form_prices( $form ) { * @since 4.1.0 * * @param \SimplePay\Core\Abstracts\Form $form Payment Form. - * @param string $id Price option ID. + * @param string $price_id Price option ID. * @return false|\SimplePay\Core\PaymentForm\PriceOption Price option. False if * not found. */ @@ -89,7 +89,7 @@ function simpay_payment_form_prices_is_defined_price( $price_id ) { * * @since 4.1.0 * - * @param array \SimplePay\Core\PaymentForm\PriceOption[] Price options. + * @param array array<\SimplePay\Core\PaymentForm\PriceOption> $prices Price options. * @return bool */ function simpay_payment_form_prices_has_subscription_price( $prices ) { @@ -148,7 +148,7 @@ function simpay_get_payment_form_default_price( $prices ) { array_filter( $prices, function( $price ) { - return null !== $price->default && $price->default === true; + return null !== $price->default && true === $price->default; } ) ); @@ -257,6 +257,7 @@ function simpay_payment_form_add_missing_custom_fields( $count = count( $fields ); $payment_methods = get_post_meta( $form_id, '_payment_methods', true ); + $tax_status = get_post_meta( $form_id, '_tax_status', true ); // Form display type-specific. switch ( $form_display_type ) { @@ -282,6 +283,10 @@ function simpay_payment_form_add_missing_custom_fields( isset( $payment_methods['stripe-elements']['sepa-debit'] ) && isset( $payment_methods['stripe-elements']['sepa-debit']['id'] ) ) || + ( + isset( $payment_methods['stripe-elements']['klarna'] ) && + isset( $payment_methods['stripe-elements']['klarna']['id'] ) + ) || ( isset( $payment_methods['stripe-elements']['afterpay-clearpay'] ) && isset( $payment_methods['stripe-elements']['afterpay-clearpay']['id'] ) @@ -313,19 +318,22 @@ function simpay_payment_form_add_missing_custom_fields( $count++; } - // Ensure "Address" exists and is required if using Klarna. + $needs_required_address = ( + ( + isset( $payment_methods['stripe-elements']['klarna'] ) && + isset( $payment_methods['stripe-elements']['klarna']['id'] ) + ) || + ( + isset( $payment_methods['stripe-elements']['afterpay-clearpay'] ) && + isset( $payment_methods['stripe-elements']['afterpay-clearpay']['id'] ) + ) || + 'automatic' === $tax_status + ); + + // Ensure "Address" exists and is required if using Klarna, or automatic taxes. if ( ! isset( $fields['address'] ) && - ( - ( - isset( $payment_methods['stripe-elements']['klarna'] ) && - isset( $payment_methods['stripe-elements']['klarna']['id'] ) - ) || - ( - isset( $payment_methods['stripe-elements']['afterpay-clearpay'] ) && - isset( $payment_methods['stripe-elements']['afterpay-clearpay']['id'] ) - ) - ) + true === $needs_required_address ) { $args = array( 'uid' => $count, @@ -349,6 +357,54 @@ function simpay_payment_form_add_missing_custom_fields( $fields['address'][] = $args; $count++; + + // If the address field exists, ensure it is required. + } elseif ( + isset( $fields['address'] ) && + true === $needs_required_address + ) { + $current_address_field = current( $fields['address'] ); + + $args['required'] = 'yes'; + + if ( + isset( $payment_methods['stripe-elements']['afterpay-clearpay'] ) && + isset( $payment_methods['stripe-elements']['afterpay-clearpay']['id'] ) + ) { + $args['collect-shipping'] = 'yes'; + } + + $fields['address'] = array( + array_merge( + $current_address_field, + $args + ), + ); + } + + // Add "Amount Breakdown" if using automatic taxes. + if ( + ! isset( $fields['total_amount'] ) && + 'automatic' === $tax_status + ) { + $fields['total_amount'][] = array(); + + $count++; + } + + // Set "Phone" to optional if using Payment Request Button. + if ( + isset( $fields['payment_request_button'] ) && + isset( $fields['telephone'] ) + ) { + $fields['telephone'] = array( + array_merge( + current( $fields['telephone'] ), + array( + 'required' => 'no', + ) + ), + ); } // Ensure "Payment Methods" exist. @@ -391,6 +447,11 @@ function simpay_payment_form_add_missing_custom_fields( break; default: + // Remove "Address" if using automatic taxes. + if ( 'automatic' === $tax_status && isset( $fields['address'] ) ) { + unset( $fields['address'] ); + } + // Ensure "Payment Button" exists. if ( ! isset( $fields['payment_button'] ) ) { $fields['payment_button'][] = array( @@ -413,7 +474,7 @@ function simpay_payment_form_add_missing_custom_fields( $fields['plan_select'][] = array( 'uid' => $count, 'id' => 'simpay_' . $form_id . '_plan_select_' . $count, - 'label' => 'Choose an amount' + 'label' => 'Choose an amount', ); $count++; @@ -459,6 +520,7 @@ function simpay_payment_form_add_missing_custom_fields( 'plan_select', 'custom_amount', 'recurring_amount_toggle', + 'total_amount', 'card', 'checkout_button', ) diff --git a/includes/core/functions/shared.php b/includes/core/functions/shared.php index 136eedf7..08faec31 100644 --- a/includes/core/functions/shared.php +++ b/includes/core/functions/shared.php @@ -537,28 +537,41 @@ function simpay_shared_script_variables() { 'currencySymbol' => html_entity_decode( simpay_get_saved_currency_symbol() ), - 'currencyPosition' => simpay_get_currency_position(), - 'decimalSeparator' => simpay_get_decimal_separator(), - 'thousandSeparator' => simpay_get_thousand_separator(), - 'ajaxurl' => admin_url( 'admin-ajax.php' ), - /* translators: %s Minimum price amount. */ - 'customAmountLabel' => esc_html__( + 'currencyPosition' => simpay_get_currency_position(), + 'decimalSeparator' => simpay_get_decimal_separator(), + 'thousandSeparator' => simpay_get_thousand_separator(), + 'ajaxurl' => admin_url( 'admin-ajax.php' ), + 'customAmountLabel' => esc_html__( 'starting at %s', 'stripe' ), - 'recurringIntervals' => simpay_get_recurring_intervals(), + 'recurringIntervals' => simpay_get_recurring_intervals(), /* translators: %1$s Recurring amount. %2$s Recurring interval count. %3$s Recurring interval. */ - 'recurringIntervalDisplay' => esc_html_x( + 'recurringIntervalDisplay' => esc_html_x( '%1$s every %2$s %3$s', 'recurring interval', 'stripe' ), /* translators: %1$s Recurring amount. %2$s Recurring interval count -- not output when 1. %3$s Recurring interval. %4$s Limited discount interval count. %5$s Recurring amount without discount. */ - 'recurringIntervalDisplayLimitedDiscount' => esc_html_x( + 'recurringIntervalDisplayLimitedDiscount' => esc_html_x( '%1$s every %2$s %3$s for %4$s months then %5$s', 'recurring interval', 'stripe' ), + /* translators: %1$s Recurring amount. %2$s Recurring interval count -- not output when 1. %3$s Recurring interval. %4$s Limited discount interval count. %5$s Recurring amount without discount. */ + 'recurringIntervalDisplayAutomaticTaxDiscount' => esc_html_x( + '%1$s every %2$s %3$s until coupon expires', + 'recurring interval with automatic tax', + 'stripe' + ), + 'addressRequired' => esc_html__( + 'Enter address to calculate', + 'stripe' + ), + 'addressInvalid' => esc_html__( + 'Please enter a valid address', + 'stripe' + ), ); $i18n['i18n'] = array( @@ -1304,6 +1317,7 @@ function simpay_get_payment_form_setting( 'type' => '_form_display_type', 'payment_methods' => '_payment_methods', 'fields' => '_custom_fields', + 'tax_status' => '_tax_status', ); // Pull the value from the database. diff --git a/includes/core/i18n/countries.php b/includes/core/i18n/countries.php index 0a3367fd..ed083707 100644 --- a/includes/core/i18n/countries.php +++ b/includes/core/i18n/countries.php @@ -24,12 +24,8 @@ */ function get_countries() { $countries = array( - 'US' => __( 'United States', 'stripe' ), - 'CA' => __( 'Canada', 'stripe' ), - 'GB' => __( 'United Kingdom', 'stripe' ), - 'AD' => __( 'Andorra', 'stripe' ), 'AF' => __( 'Afghanistan', 'stripe' ), - 'AX' => __( 'Åland Islands', 'stripe' ), + 'AX' => __( 'Åland Islands', 'stripe' ), 'AL' => __( 'Albania', 'stripe' ), 'DZ' => __( 'Algeria', 'stripe' ), 'AS' => __( 'American Samoa', 'stripe' ), @@ -50,6 +46,7 @@ function get_countries() { 'BB' => __( 'Barbados', 'stripe' ), 'BY' => __( 'Belarus', 'stripe' ), 'BE' => __( 'Belgium', 'stripe' ), + 'PW' => __( 'Belau', 'stripe' ), 'BZ' => __( 'Belize', 'stripe' ), 'BJ' => __( 'Benin', 'stripe' ), 'BM' => __( 'Bermuda', 'stripe' ), @@ -61,12 +58,13 @@ function get_countries() { 'BV' => __( 'Bouvet Island', 'stripe' ), 'BR' => __( 'Brazil', 'stripe' ), 'IO' => __( 'British Indian Ocean Territory', 'stripe' ), - 'BN' => __( 'Brunei Darrussalam', 'stripe' ), + 'BN' => __( 'Brunei', 'stripe' ), 'BG' => __( 'Bulgaria', 'stripe' ), 'BF' => __( 'Burkina Faso', 'stripe' ), 'BI' => __( 'Burundi', 'stripe' ), 'KH' => __( 'Cambodia', 'stripe' ), 'CM' => __( 'Cameroon', 'stripe' ), + 'CA' => __( 'Canada', 'stripe' ), 'CV' => __( 'Cape Verde', 'stripe' ), 'KY' => __( 'Cayman Islands', 'stripe' ), 'CF' => __( 'Central African Republic', 'stripe' ), @@ -74,28 +72,26 @@ function get_countries() { 'CL' => __( 'Chile', 'stripe' ), 'CN' => __( 'China', 'stripe' ), 'CX' => __( 'Christmas Island', 'stripe' ), - 'CC' => __( 'Cocos Islands', 'stripe' ), + 'CC' => __( 'Cocos (Keeling) Islands', 'stripe' ), 'CO' => __( 'Colombia', 'stripe' ), 'KM' => __( 'Comoros', 'stripe' ), - 'CD' => __( 'Congo, Democratic People\'s Republic', 'stripe' ), - 'CG' => __( 'Congo, Republic of', 'stripe' ), + 'CG' => __( 'Congo (Brazzaville)', 'stripe' ), + 'CD' => __( 'Congo (Kinshasa)', 'stripe' ), 'CK' => __( 'Cook Islands', 'stripe' ), 'CR' => __( 'Costa Rica', 'stripe' ), - 'CI' => __( 'Cote d\'Ivoire', 'stripe' ), - 'HR' => __( 'Croatia/Hrvatska', 'stripe' ), + 'HR' => __( 'Croatia', 'stripe' ), 'CU' => __( 'Cuba', 'stripe' ), - 'CW' => __( 'CuraÇao', 'stripe' ), + 'CW' => __( 'Curaçao', 'stripe' ), 'CY' => __( 'Cyprus', 'stripe' ), 'CZ' => __( 'Czech Republic', 'stripe' ), 'DK' => __( 'Denmark', 'stripe' ), 'DJ' => __( 'Djibouti', 'stripe' ), 'DM' => __( 'Dominica', 'stripe' ), 'DO' => __( 'Dominican Republic', 'stripe' ), - 'TP' => __( 'East Timor', 'stripe' ), 'EC' => __( 'Ecuador', 'stripe' ), 'EG' => __( 'Egypt', 'stripe' ), - 'GQ' => __( 'Equatorial Guinea', 'stripe' ), 'SV' => __( 'El Salvador', 'stripe' ), + 'GQ' => __( 'Equatorial Guinea', 'stripe' ), 'ER' => __( 'Eritrea', 'stripe' ), 'EE' => __( 'Estonia', 'stripe' ), 'ET' => __( 'Ethiopia', 'stripe' ), @@ -111,9 +107,9 @@ function get_countries() { 'GM' => __( 'Gambia', 'stripe' ), 'GE' => __( 'Georgia', 'stripe' ), 'DE' => __( 'Germany', 'stripe' ), - 'GR' => __( 'Greece', 'stripe' ), 'GH' => __( 'Ghana', 'stripe' ), 'GI' => __( 'Gibraltar', 'stripe' ), + 'GR' => __( 'Greece', 'stripe' ), 'GL' => __( 'Greenland', 'stripe' ), 'GD' => __( 'Grenada', 'stripe' ), 'GP' => __( 'Guadeloupe', 'stripe' ), @@ -124,8 +120,7 @@ function get_countries() { 'GW' => __( 'Guinea-Bissau', 'stripe' ), 'GY' => __( 'Guyana', 'stripe' ), 'HT' => __( 'Haiti', 'stripe' ), - 'HM' => __( 'Heard and McDonald Islands', 'stripe' ), - 'VA' => __( 'Holy See (City Vatican State)', 'stripe' ), + 'HM' => __( 'Heard Island and McDonald Islands', 'stripe' ), 'HN' => __( 'Honduras', 'stripe' ), 'HK' => __( 'Hong Kong', 'stripe' ), 'HU' => __( 'Hungary', 'stripe' ), @@ -138,6 +133,7 @@ function get_countries() { 'IM' => __( 'Isle of Man', 'stripe' ), 'IL' => __( 'Israel', 'stripe' ), 'IT' => __( 'Italy', 'stripe' ), + 'CI' => __( 'Ivory Coast', 'stripe' ), 'JM' => __( 'Jamaica', 'stripe' ), 'JP' => __( 'Japan', 'stripe' ), 'JE' => __( 'Jersey', 'stripe' ), @@ -147,16 +143,16 @@ function get_countries() { 'KI' => __( 'Kiribati', 'stripe' ), 'KW' => __( 'Kuwait', 'stripe' ), 'KG' => __( 'Kyrgyzstan', 'stripe' ), - 'LA' => __( 'Lao People\'s Democratic Republic', 'stripe' ), + 'LA' => __( 'Laos', 'stripe' ), 'LV' => __( 'Latvia', 'stripe' ), 'LB' => __( 'Lebanon', 'stripe' ), 'LS' => __( 'Lesotho', 'stripe' ), 'LR' => __( 'Liberia', 'stripe' ), - 'LY' => __( 'Libyan Arab Jamahiriya', 'stripe' ), + 'LY' => __( 'Libya', 'stripe' ), 'LI' => __( 'Liechtenstein', 'stripe' ), 'LT' => __( 'Lithuania', 'stripe' ), 'LU' => __( 'Luxembourg', 'stripe' ), - 'MO' => __( 'Macau', 'stripe' ), + 'MO' => __( 'Macao', 'stripe' ), 'MK' => __( 'North Macedonia', 'stripe' ), 'MG' => __( 'Madagascar', 'stripe' ), 'MW' => __( 'Malawi', 'stripe' ), @@ -171,7 +167,7 @@ function get_countries() { 'YT' => __( 'Mayotte', 'stripe' ), 'MX' => __( 'Mexico', 'stripe' ), 'FM' => __( 'Micronesia', 'stripe' ), - 'MD' => __( 'Moldova, Republic of', 'stripe' ), + 'MD' => __( 'Moldova', 'stripe' ), 'MC' => __( 'Monaco', 'stripe' ), 'MN' => __( 'Mongolia', 'stripe' ), 'ME' => __( 'Montenegro', 'stripe' ), @@ -183,7 +179,6 @@ function get_countries() { 'NR' => __( 'Nauru', 'stripe' ), 'NP' => __( 'Nepal', 'stripe' ), 'NL' => __( 'Netherlands', 'stripe' ), - 'AN' => __( 'Netherlands Antilles', 'stripe' ), 'NC' => __( 'New Caledonia', 'stripe' ), 'NZ' => __( 'New Zealand', 'stripe' ), 'NI' => __( 'Nicaragua', 'stripe' ), @@ -191,34 +186,32 @@ function get_countries() { 'NG' => __( 'Nigeria', 'stripe' ), 'NU' => __( 'Niue', 'stripe' ), 'NF' => __( 'Norfolk Island', 'stripe' ), - 'KP' => __( 'North Korea', 'stripe' ), 'MP' => __( 'Northern Mariana Islands', 'stripe' ), + 'KP' => __( 'North Korea', 'stripe' ), 'NO' => __( 'Norway', 'stripe' ), 'OM' => __( 'Oman', 'stripe' ), 'PK' => __( 'Pakistan', 'stripe' ), - 'PW' => __( 'Palau', 'stripe' ), - 'PS' => __( 'Palestinian Territories', 'stripe' ), + 'PS' => __( 'Palestinian Territory', 'stripe' ), 'PA' => __( 'Panama', 'stripe' ), 'PG' => __( 'Papua New Guinea', 'stripe' ), 'PY' => __( 'Paraguay', 'stripe' ), 'PE' => __( 'Peru', 'stripe' ), 'PH' => __( 'Philippines', 'stripe' ), - 'PN' => __( 'Pitcairn Island', 'stripe' ), + 'PN' => __( 'Pitcairn', 'stripe' ), 'PL' => __( 'Poland', 'stripe' ), 'PT' => __( 'Portugal', 'stripe' ), 'PR' => __( 'Puerto Rico', 'stripe' ), 'QA' => __( 'Qatar', 'stripe' ), - 'XK' => __( 'Republic of Kosovo', 'stripe' ), - 'RE' => __( 'Reunion Island', 'stripe' ), + 'RE' => __( 'Reunion', 'stripe' ), 'RO' => __( 'Romania', 'stripe' ), - 'RU' => __( 'Russian Federation', 'stripe' ), + 'RU' => __( 'Russia', 'stripe' ), 'RW' => __( 'Rwanda', 'stripe' ), 'BL' => __( 'Saint Barthélemy', 'stripe' ), 'SH' => __( 'Saint Helena', 'stripe' ), 'KN' => __( 'Saint Kitts and Nevis', 'stripe' ), 'LC' => __( 'Saint Lucia', 'stripe' ), - 'MF' => __( 'Saint Martin (French)', 'stripe' ), - 'SX' => __( 'Saint Martin (Dutch)', 'stripe' ), + 'MF' => __( 'Saint Martin (French part)', 'stripe' ), + 'SX' => __( 'Saint Martin (Dutch part)', 'stripe' ), 'PM' => __( 'Saint Pierre and Miquelon', 'stripe' ), 'VC' => __( 'Saint Vincent and the Grenadines', 'stripe' ), 'SM' => __( 'San Marino', 'stripe' ), @@ -234,19 +227,18 @@ function get_countries() { 'SB' => __( 'Solomon Islands', 'stripe' ), 'SO' => __( 'Somalia', 'stripe' ), 'ZA' => __( 'South Africa', 'stripe' ), - 'GS' => __( 'South Georgia', 'stripe' ), + 'GS' => __( 'South Georgia/Sandwich Islands', 'stripe' ), 'KR' => __( 'South Korea', 'stripe' ), 'SS' => __( 'South Sudan', 'stripe' ), 'ES' => __( 'Spain', 'stripe' ), 'LK' => __( 'Sri Lanka', 'stripe' ), 'SD' => __( 'Sudan', 'stripe' ), 'SR' => __( 'Suriname', 'stripe' ), - 'SJ' => __( 'Svalbard and Jan Mayen Islands', 'stripe' ), - 'SZ' => __( 'Swaziland', 'stripe' ), + 'SJ' => __( 'Svalbard and Jan Mayen', 'stripe' ), + 'SZ' => __( 'Eswatini', 'stripe' ), 'SE' => __( 'Sweden', 'stripe' ), 'CH' => __( 'Switzerland', 'stripe' ), - 'SY' => __( 'Syrian Arab Republic', 'stripe' ), - 'TA' => __( 'Tajikistan', 'stripe' ), + 'SY' => __( 'Syria', 'stripe' ), 'TW' => __( 'Taiwan', 'stripe' ), 'TJ' => __( 'Tajikistan', 'stripe' ), 'TZ' => __( 'Tanzania', 'stripe' ), @@ -264,17 +256,20 @@ function get_countries() { 'UG' => __( 'Uganda', 'stripe' ), 'UA' => __( 'Ukraine', 'stripe' ), 'AE' => __( 'United Arab Emirates', 'stripe' ), + 'GB' => __( 'United Kingdom (UK)', 'stripe' ), + 'US' => __( 'United States (US)', 'stripe' ), + 'UM' => __( 'United States (US) Minor Outlying Islands', 'stripe' ), 'UY' => __( 'Uruguay', 'stripe' ), - 'UM' => __( 'US Minor Outlying Islands', 'stripe' ), 'UZ' => __( 'Uzbekistan', 'stripe' ), 'VU' => __( 'Vanuatu', 'stripe' ), + 'VA' => __( 'Vatican', 'stripe' ), 'VE' => __( 'Venezuela', 'stripe' ), 'VN' => __( 'Vietnam', 'stripe' ), 'VG' => __( 'Virgin Islands (British)', 'stripe' ), - 'VI' => __( 'Virgin Islands (USA)', 'stripe' ), - 'WF' => __( 'Wallis and Futuna Islands', 'stripe' ), + 'VI' => __( 'Virgin Islands (US)', 'stripe' ), + 'WF' => __( 'Wallis and Futuna', 'stripe' ), 'EH' => __( 'Western Sahara', 'stripe' ), - 'WS' => __( 'Western Samoa', 'stripe' ), + 'WS' => __( 'Samoa', 'stripe' ), 'YE' => __( 'Yemen', 'stripe' ), 'ZM' => __( 'Zambia', 'stripe' ), 'ZW' => __( 'Zimbabwe', 'stripe' ), diff --git a/includes/core/i18n/states.php b/includes/core/i18n/states.php new file mode 100644 index 00000000..c14355c4 --- /dev/null +++ b/includes/core/i18n/states.php @@ -0,0 +1,2095 @@ + array(), + 'AL' => array( // Albanian states. + 'AL-01' => __( 'Berat', 'stripe' ), + 'AL-09' => __( 'Dibër', 'stripe' ), + 'AL-02' => __( 'Durrës', 'stripe' ), + 'AL-03' => __( 'Elbasan', 'stripe' ), + 'AL-04' => __( 'Fier', 'stripe' ), + 'AL-05' => __( 'Gjirokastër', 'stripe' ), + 'AL-06' => __( 'Korçë', 'stripe' ), + 'AL-07' => __( 'Kukës', 'stripe' ), + 'AL-08' => __( 'Lezhë', 'stripe' ), + 'AL-10' => __( 'Shkodër', 'stripe' ), + 'AL-11' => __( 'Tirana', 'stripe' ), + 'AL-12' => __( 'Vlorë', 'stripe' ), + ), + 'AO' => array( // Angolan states. + 'BGO' => __( 'Bengo', 'stripe' ), + 'BLU' => __( 'Benguela', 'stripe' ), + 'BIE' => __( 'Bié', 'stripe' ), + 'CAB' => __( 'Cabinda', 'stripe' ), + 'CNN' => __( 'Cunene', 'stripe' ), + 'HUA' => __( 'Huambo', 'stripe' ), + 'HUI' => __( 'Huíla', 'stripe' ), + 'CCU' => __( 'Kuando Kubango', 'stripe' ), + 'CNO' => __( 'Kwanza-Norte', 'stripe' ), + 'CUS' => __( 'Kwanza-Sul', 'stripe' ), + 'LUA' => __( 'Luanda', 'stripe' ), + 'LNO' => __( 'Lunda-Norte', 'stripe' ), + 'LSU' => __( 'Lunda-Sul', 'stripe' ), + 'MAL' => __( 'Malanje', 'stripe' ), + 'MOX' => __( 'Moxico', 'stripe' ), + 'NAM' => __( 'Namibe', 'stripe' ), + 'UIG' => __( 'Uíge', 'stripe' ), + 'ZAI' => __( 'Zaire', 'stripe' ), + ), + 'AR' => array( // Argentinian provinces. + 'C' => __( 'Ciudad Autónoma de Buenos Aires', 'stripe' ), + 'B' => __( 'Buenos Aires', 'stripe' ), + 'K' => __( 'Catamarca', 'stripe' ), + 'H' => __( 'Chaco', 'stripe' ), + 'U' => __( 'Chubut', 'stripe' ), + 'X' => __( 'Córdoba', 'stripe' ), + 'W' => __( 'Corrientes', 'stripe' ), + 'E' => __( 'Entre Ríos', 'stripe' ), + 'P' => __( 'Formosa', 'stripe' ), + 'Y' => __( 'Jujuy', 'stripe' ), + 'L' => __( 'La Pampa', 'stripe' ), + 'F' => __( 'La Rioja', 'stripe' ), + 'M' => __( 'Mendoza', 'stripe' ), + 'N' => __( 'Misiones', 'stripe' ), + 'Q' => __( 'Neuquén', 'stripe' ), + 'R' => __( 'Río Negro', 'stripe' ), + 'A' => __( 'Salta', 'stripe' ), + 'J' => __( 'San Juan', 'stripe' ), + 'D' => __( 'San Luis', 'stripe' ), + 'Z' => __( 'Santa Cruz', 'stripe' ), + 'S' => __( 'Santa Fe', 'stripe' ), + 'G' => __( 'Santiago del Estero', 'stripe' ), + 'V' => __( 'Tierra del Fuego', 'stripe' ), + 'T' => __( 'Tucumán', 'stripe' ), + ), + 'AT' => array(), + 'AU' => array( // Australian states. + 'ACT' => __( 'Australian Capital Territory', 'stripe' ), + 'NSW' => __( 'New South Wales', 'stripe' ), + 'NT' => __( 'Northern Territory', 'stripe' ), + 'QLD' => __( 'Queensland', 'stripe' ), + 'SA' => __( 'South Australia', 'stripe' ), + 'TAS' => __( 'Tasmania', 'stripe' ), + 'VIC' => __( 'Victoria', 'stripe' ), + 'WA' => __( 'Western Australia', 'stripe' ), + ), + 'AX' => array(), + 'BD' => array( // Bangladeshi districts. + 'BD-05' => __( 'Bagerhat', 'stripe' ), + 'BD-01' => __( 'Bandarban', 'stripe' ), + 'BD-02' => __( 'Barguna', 'stripe' ), + 'BD-06' => __( 'Barishal', 'stripe' ), + 'BD-07' => __( 'Bhola', 'stripe' ), + 'BD-03' => __( 'Bogura', 'stripe' ), + 'BD-04' => __( 'Brahmanbaria', 'stripe' ), + 'BD-09' => __( 'Chandpur', 'stripe' ), + 'BD-10' => __( 'Chattogram', 'stripe' ), + 'BD-12' => __( 'Chuadanga', 'stripe' ), + 'BD-11' => __( "Cox's Bazar", 'stripe' ), + 'BD-08' => __( 'Cumilla', 'stripe' ), + 'BD-13' => __( 'Dhaka', 'stripe' ), + 'BD-14' => __( 'Dinajpur', 'stripe' ), + 'BD-15' => __( 'Faridpur ', 'stripe' ), + 'BD-16' => __( 'Feni', 'stripe' ), + 'BD-19' => __( 'Gaibandha', 'stripe' ), + 'BD-18' => __( 'Gazipur', 'stripe' ), + 'BD-17' => __( 'Gopalganj', 'stripe' ), + 'BD-20' => __( 'Habiganj', 'stripe' ), + 'BD-21' => __( 'Jamalpur', 'stripe' ), + 'BD-22' => __( 'Jashore', 'stripe' ), + 'BD-25' => __( 'Jhalokati', 'stripe' ), + 'BD-23' => __( 'Jhenaidah', 'stripe' ), + 'BD-24' => __( 'Joypurhat', 'stripe' ), + 'BD-29' => __( 'Khagrachhari', 'stripe' ), + 'BD-27' => __( 'Khulna', 'stripe' ), + 'BD-26' => __( 'Kishoreganj', 'stripe' ), + 'BD-28' => __( 'Kurigram', 'stripe' ), + 'BD-30' => __( 'Kushtia', 'stripe' ), + 'BD-31' => __( 'Lakshmipur', 'stripe' ), + 'BD-32' => __( 'Lalmonirhat', 'stripe' ), + 'BD-36' => __( 'Madaripur', 'stripe' ), + 'BD-37' => __( 'Magura', 'stripe' ), + 'BD-33' => __( 'Manikganj ', 'stripe' ), + 'BD-39' => __( 'Meherpur', 'stripe' ), + 'BD-38' => __( 'Moulvibazar', 'stripe' ), + 'BD-35' => __( 'Munshiganj', 'stripe' ), + 'BD-34' => __( 'Mymensingh', 'stripe' ), + 'BD-48' => __( 'Naogaon', 'stripe' ), + 'BD-43' => __( 'Narail', 'stripe' ), + 'BD-40' => __( 'Narayanganj', 'stripe' ), + 'BD-42' => __( 'Narsingdi', 'stripe' ), + 'BD-44' => __( 'Natore', 'stripe' ), + 'BD-45' => __( 'Nawabganj', 'stripe' ), + 'BD-41' => __( 'Netrakona', 'stripe' ), + 'BD-46' => __( 'Nilphamari', 'stripe' ), + 'BD-47' => __( 'Noakhali', 'stripe' ), + 'BD-49' => __( 'Pabna', 'stripe' ), + 'BD-52' => __( 'Panchagarh', 'stripe' ), + 'BD-51' => __( 'Patuakhali', 'stripe' ), + 'BD-50' => __( 'Pirojpur', 'stripe' ), + 'BD-53' => __( 'Rajbari', 'stripe' ), + 'BD-54' => __( 'Rajshahi', 'stripe' ), + 'BD-56' => __( 'Rangamati', 'stripe' ), + 'BD-55' => __( 'Rangpur', 'stripe' ), + 'BD-58' => __( 'Satkhira', 'stripe' ), + 'BD-62' => __( 'Shariatpur', 'stripe' ), + 'BD-57' => __( 'Sherpur', 'stripe' ), + 'BD-59' => __( 'Sirajganj', 'stripe' ), + 'BD-61' => __( 'Sunamganj', 'stripe' ), + 'BD-60' => __( 'Sylhet', 'stripe' ), + 'BD-63' => __( 'Tangail', 'stripe' ), + 'BD-64' => __( 'Thakurgaon', 'stripe' ), + ), + 'BE' => array(), + 'BG' => array( // Bulgarian states. + 'BG-01' => __( 'Blagoevgrad', 'stripe' ), + 'BG-02' => __( 'Burgas', 'stripe' ), + 'BG-08' => __( 'Dobrich', 'stripe' ), + 'BG-07' => __( 'Gabrovo', 'stripe' ), + 'BG-26' => __( 'Haskovo', 'stripe' ), + 'BG-09' => __( 'Kardzhali', 'stripe' ), + 'BG-10' => __( 'Kyustendil', 'stripe' ), + 'BG-11' => __( 'Lovech', 'stripe' ), + 'BG-12' => __( 'Montana', 'stripe' ), + 'BG-13' => __( 'Pazardzhik', 'stripe' ), + 'BG-14' => __( 'Pernik', 'stripe' ), + 'BG-15' => __( 'Pleven', 'stripe' ), + 'BG-16' => __( 'Plovdiv', 'stripe' ), + 'BG-17' => __( 'Razgrad', 'stripe' ), + 'BG-18' => __( 'Ruse', 'stripe' ), + 'BG-27' => __( 'Shumen', 'stripe' ), + 'BG-19' => __( 'Silistra', 'stripe' ), + 'BG-20' => __( 'Sliven', 'stripe' ), + 'BG-21' => __( 'Smolyan', 'stripe' ), + 'BG-23' => __( 'Sofia District', 'stripe' ), + 'BG-22' => __( 'Sofia', 'stripe' ), + 'BG-24' => __( 'Stara Zagora', 'stripe' ), + 'BG-25' => __( 'Targovishte', 'stripe' ), + 'BG-03' => __( 'Varna', 'stripe' ), + 'BG-04' => __( 'Veliko Tarnovo', 'stripe' ), + 'BG-05' => __( 'Vidin', 'stripe' ), + 'BG-06' => __( 'Vratsa', 'stripe' ), + 'BG-28' => __( 'Yambol', 'stripe' ), + ), + 'BH' => array(), + 'BI' => array(), + 'BJ' => array( // Beninese states. + 'AL' => __( 'Alibori', 'stripe' ), + 'AK' => __( 'Atakora', 'stripe' ), + 'AQ' => __( 'Atlantique', 'stripe' ), + 'BO' => __( 'Borgou', 'stripe' ), + 'CO' => __( 'Collines', 'stripe' ), + 'KO' => __( 'Kouffo', 'stripe' ), + 'DO' => __( 'Donga', 'stripe' ), + 'LI' => __( 'Littoral', 'stripe' ), + 'MO' => __( 'Mono', 'stripe' ), + 'OU' => __( 'Ouémé', 'stripe' ), + 'PL' => __( 'Plateau', 'stripe' ), + 'ZO' => __( 'Zou', 'stripe' ), + ), + 'BO' => array( // Bolivian states. + 'BO-B' => __( 'Beni', 'stripe' ), + 'BO-H' => __( 'Chuquisaca', 'stripe' ), + 'BO-C' => __( 'Cochabamba', 'stripe' ), + 'BO-L' => __( 'La Paz', 'stripe' ), + 'BO-O' => __( 'Oruro', 'stripe' ), + 'BO-N' => __( 'Pando', 'stripe' ), + 'BO-P' => __( 'Potosí', 'stripe' ), + 'BO-S' => __( 'Santa Cruz', 'stripe' ), + 'BO-T' => __( 'Tarija', 'stripe' ), + ), + 'BR' => array( // Brazilian states. + 'AC' => __( 'Acre', 'stripe' ), + 'AL' => __( 'Alagoas', 'stripe' ), + 'AP' => __( 'Amapá', 'stripe' ), + 'AM' => __( 'Amazonas', 'stripe' ), + 'BA' => __( 'Bahia', 'stripe' ), + 'CE' => __( 'Ceará', 'stripe' ), + 'DF' => __( 'Distrito Federal', 'stripe' ), + 'ES' => __( 'Espírito Santo', 'stripe' ), + 'GO' => __( 'Goiás', 'stripe' ), + 'MA' => __( 'Maranhão', 'stripe' ), + 'MT' => __( 'Mato Grosso', 'stripe' ), + 'MS' => __( 'Mato Grosso do Sul', 'stripe' ), + 'MG' => __( 'Minas Gerais', 'stripe' ), + 'PA' => __( 'Pará', 'stripe' ), + 'PB' => __( 'Paraíba', 'stripe' ), + 'PR' => __( 'Paraná', 'stripe' ), + 'PE' => __( 'Pernambuco', 'stripe' ), + 'PI' => __( 'Piauí', 'stripe' ), + 'RJ' => __( 'Rio de Janeiro', 'stripe' ), + 'RN' => __( 'Rio Grande do Norte', 'stripe' ), + 'RS' => __( 'Rio Grande do Sul', 'stripe' ), + 'RO' => __( 'Rondônia', 'stripe' ), + 'RR' => __( 'Roraima', 'stripe' ), + 'SC' => __( 'Santa Catarina', 'stripe' ), + 'SP' => __( 'São Paulo', 'stripe' ), + 'SE' => __( 'Sergipe', 'stripe' ), + 'TO' => __( 'Tocantins', 'stripe' ), + ), + 'CA' => array( // Canadian states. + 'AB' => __( 'Alberta', 'stripe' ), + 'BC' => __( 'British Columbia', 'stripe' ), + 'MB' => __( 'Manitoba', 'stripe' ), + 'NB' => __( 'New Brunswick', 'stripe' ), + 'NL' => __( 'Newfoundland and Labrador', 'stripe' ), + 'NT' => __( 'Northwest Territories', 'stripe' ), + 'NS' => __( 'Nova Scotia', 'stripe' ), + 'NU' => __( 'Nunavut', 'stripe' ), + 'ON' => __( 'Ontario', 'stripe' ), + 'PE' => __( 'Prince Edward Island', 'stripe' ), + 'QC' => __( 'Quebec', 'stripe' ), + 'SK' => __( 'Saskatchewan', 'stripe' ), + 'YT' => __( 'Yukon Territory', 'stripe' ), + ), + 'CH' => array( // Swiss cantons. + 'AG' => __( 'Aargau', 'stripe' ), + 'AR' => __( 'Appenzell Ausserrhoden', 'stripe' ), + 'AI' => __( 'Appenzell Innerrhoden', 'stripe' ), + 'BL' => __( 'Basel-Landschaft', 'stripe' ), + 'BS' => __( 'Basel-Stadt', 'stripe' ), + 'BE' => __( 'Bern', 'stripe' ), + 'FR' => __( 'Fribourg', 'stripe' ), + 'GE' => __( 'Geneva', 'stripe' ), + 'GL' => __( 'Glarus', 'stripe' ), + 'GR' => __( 'Graubünden', 'stripe' ), + 'JU' => __( 'Jura', 'stripe' ), + 'LU' => __( 'Luzern', 'stripe' ), + 'NE' => __( 'Neuchâtel', 'stripe' ), + 'NW' => __( 'Nidwalden', 'stripe' ), + 'OW' => __( 'Obwalden', 'stripe' ), + 'SH' => __( 'Schaffhausen', 'stripe' ), + 'SZ' => __( 'Schwyz', 'stripe' ), + 'SO' => __( 'Solothurn', 'stripe' ), + 'SG' => __( 'St. Gallen', 'stripe' ), + 'TG' => __( 'Thurgau', 'stripe' ), + 'TI' => __( 'Ticino', 'stripe' ), + 'UR' => __( 'Uri', 'stripe' ), + 'VS' => __( 'Valais', 'stripe' ), + 'VD' => __( 'Vaud', 'stripe' ), + 'ZG' => __( 'Zug', 'stripe' ), + 'ZH' => __( 'Zürich', 'stripe' ), + ), + 'CL' => array( // Chilean states. + 'CL-AI' => __( 'Aisén del General Carlos Ibañez del Campo', 'stripe' ), + 'CL-AN' => __( 'Antofagasta', 'stripe' ), + 'CL-AP' => __( 'Arica y Parinacota', 'stripe' ), + 'CL-AR' => __( 'La Araucanía', 'stripe' ), + 'CL-AT' => __( 'Atacama', 'stripe' ), + 'CL-BI' => __( 'Biobío', 'stripe' ), + 'CL-CO' => __( 'Coquimbo', 'stripe' ), + 'CL-LI' => __( 'Libertador General Bernardo O\'Higgins', 'stripe' ), + 'CL-LL' => __( 'Los Lagos', 'stripe' ), + 'CL-LR' => __( 'Los Ríos', 'stripe' ), + 'CL-MA' => __( 'Magallanes', 'stripe' ), + 'CL-ML' => __( 'Maule', 'stripe' ), + 'CL-NB' => __( 'Ñuble', 'stripe' ), + 'CL-RM' => __( 'Región Metropolitana de Santiago', 'stripe' ), + 'CL-TA' => __( 'Tarapacá', 'stripe' ), + 'CL-VS' => __( 'Valparaíso', 'stripe' ), + ), + 'CN' => array( // Chinese states. + 'CN1' => __( 'Yunnan / 云南', 'stripe' ), + 'CN2' => __( 'Beijing / 北京', 'stripe' ), + 'CN3' => __( 'Tianjin / 天津', 'stripe' ), + 'CN4' => __( 'Hebei / 河北', 'stripe' ), + 'CN5' => __( 'Shanxi / 山西', 'stripe' ), + 'CN6' => __( 'Inner Mongolia / 內蒙古', 'stripe' ), + 'CN7' => __( 'Liaoning / 辽宁', 'stripe' ), + 'CN8' => __( 'Jilin / 吉林', 'stripe' ), + 'CN9' => __( 'Heilongjiang / 黑龙江', 'stripe' ), + 'CN10' => __( 'Shanghai / 上海', 'stripe' ), + 'CN11' => __( 'Jiangsu / 江苏', 'stripe' ), + 'CN12' => __( 'Zhejiang / 浙江', 'stripe' ), + 'CN13' => __( 'Anhui / 安徽', 'stripe' ), + 'CN14' => __( 'Fujian / 福建', 'stripe' ), + 'CN15' => __( 'Jiangxi / 江西', 'stripe' ), + 'CN16' => __( 'Shandong / 山东', 'stripe' ), + 'CN17' => __( 'Henan / 河南', 'stripe' ), + 'CN18' => __( 'Hubei / 湖北', 'stripe' ), + 'CN19' => __( 'Hunan / 湖南', 'stripe' ), + 'CN20' => __( 'Guangdong / 广东', 'stripe' ), + 'CN21' => __( 'Guangxi Zhuang / 广西壮族', 'stripe' ), + 'CN22' => __( 'Hainan / 海南', 'stripe' ), + 'CN23' => __( 'Chongqing / 重庆', 'stripe' ), + 'CN24' => __( 'Sichuan / 四川', 'stripe' ), + 'CN25' => __( 'Guizhou / 贵州', 'stripe' ), + 'CN26' => __( 'Shaanxi / 陕西', 'stripe' ), + 'CN27' => __( 'Gansu / 甘肃', 'stripe' ), + 'CN28' => __( 'Qinghai / 青海', 'stripe' ), + 'CN29' => __( 'Ningxia Hui / 宁夏', 'stripe' ), + 'CN30' => __( 'Macao / 澳门', 'stripe' ), + 'CN31' => __( 'Tibet / 西藏', 'stripe' ), + 'CN32' => __( 'Xinjiang / 新疆', 'stripe' ), + ), + 'CO' => array( // Colombian states. + 'CO-AMA' => __( 'Amazonas', 'stripe' ), + 'CO-ANT' => __( 'Antioquia', 'stripe' ), + 'CO-ARA' => __( 'Arauca', 'stripe' ), + 'CO-ATL' => __( 'Atlántico', 'stripe' ), + 'CO-BOL' => __( 'Bolívar', 'stripe' ), + 'CO-BOY' => __( 'Boyacá', 'stripe' ), + 'CO-CAL' => __( 'Caldas', 'stripe' ), + 'CO-CAQ' => __( 'Caquetá', 'stripe' ), + 'CO-CAS' => __( 'Casanare', 'stripe' ), + 'CO-CAU' => __( 'Cauca', 'stripe' ), + 'CO-CES' => __( 'Cesar', 'stripe' ), + 'CO-CHO' => __( 'Chocó', 'stripe' ), + 'CO-COR' => __( 'Córdoba', 'stripe' ), + 'CO-CUN' => __( 'Cundinamarca', 'stripe' ), + 'CO-DC' => __( 'Capital District', 'stripe' ), + 'CO-GUA' => __( 'Guainía', 'stripe' ), + 'CO-GUV' => __( 'Guaviare', 'stripe' ), + 'CO-HUI' => __( 'Huila', 'stripe' ), + 'CO-LAG' => __( 'La Guajira', 'stripe' ), + 'CO-MAG' => __( 'Magdalena', 'stripe' ), + 'CO-MET' => __( 'Meta', 'stripe' ), + 'CO-NAR' => __( 'Nariño', 'stripe' ), + 'CO-NSA' => __( 'Norte de Santander', 'stripe' ), + 'CO-PUT' => __( 'Putumayo', 'stripe' ), + 'CO-QUI' => __( 'Quindío', 'stripe' ), + 'CO-RIS' => __( 'Risaralda', 'stripe' ), + 'CO-SAN' => __( 'Santander', 'stripe' ), + 'CO-SAP' => __( 'San Andrés & Providencia', 'stripe' ), + 'CO-SUC' => __( 'Sucre', 'stripe' ), + 'CO-TOL' => __( 'Tolima', 'stripe' ), + 'CO-VAC' => __( 'Valle del Cauca', 'stripe' ), + 'CO-VAU' => __( 'Vaupés', 'stripe' ), + 'CO-VID' => __( 'Vichada', 'stripe' ), + ), + 'CR' => array( // Costa Rican states. + 'CR-A' => __( 'Alajuela', 'stripe' ), + 'CR-C' => __( 'Cartago', 'stripe' ), + 'CR-G' => __( 'Guanacaste', 'stripe' ), + 'CR-H' => __( 'Heredia', 'stripe' ), + 'CR-L' => __( 'Limón', 'stripe' ), + 'CR-P' => __( 'Puntarenas', 'stripe' ), + 'CR-SJ' => __( 'San José', 'stripe' ), + ), + 'CZ' => array(), + 'DE' => array( // German states. + 'DE-BW' => __( 'Baden-Württemberg', 'stripe' ), + 'DE-BY' => __( 'Bavaria', 'stripe' ), + 'DE-BE' => __( 'Berlin', 'stripe' ), + 'DE-BB' => __( 'Brandenburg', 'stripe' ), + 'DE-HB' => __( 'Bremen', 'stripe' ), + 'DE-HH' => __( 'Hamburg', 'stripe' ), + 'DE-HE' => __( 'Hesse', 'stripe' ), + 'DE-MV' => __( 'Mecklenburg-Vorpommern', 'stripe' ), + 'DE-NI' => __( 'Lower Saxony', 'stripe' ), + 'DE-NW' => __( 'North Rhine-Westphalia', 'stripe' ), + 'DE-RP' => __( 'Rhineland-Palatinate', 'stripe' ), + 'DE-SL' => __( 'Saarland', 'stripe' ), + 'DE-SN' => __( 'Saxony', 'stripe' ), + 'DE-ST' => __( 'Saxony-Anhalt', 'stripe' ), + 'DE-SH' => __( 'Schleswig-Holstein', 'stripe' ), + 'DE-TH' => __( 'Thuringia', 'stripe' ), + ), + 'DK' => array(), + 'DO' => array( // Dominican states. + 'DO-01' => __( 'Distrito Nacional', 'stripe' ), + 'DO-02' => __( 'Azua', 'stripe' ), + 'DO-03' => __( 'Baoruco', 'stripe' ), + 'DO-04' => __( 'Barahona', 'stripe' ), + 'DO-33' => __( 'Cibao Nordeste', 'stripe' ), + 'DO-34' => __( 'Cibao Noroeste', 'stripe' ), + 'DO-35' => __( 'Cibao Norte', 'stripe' ), + 'DO-36' => __( 'Cibao Sur', 'stripe' ), + 'DO-05' => __( 'Dajabón', 'stripe' ), + 'DO-06' => __( 'Duarte', 'stripe' ), + 'DO-08' => __( 'El Seibo', 'stripe' ), + 'DO-37' => __( 'El Valle', 'stripe' ), + 'DO-07' => __( 'Elías Piña', 'stripe' ), + 'DO-38' => __( 'Enriquillo', 'stripe' ), + 'DO-09' => __( 'Espaillat', 'stripe' ), + 'DO-30' => __( 'Hato Mayor', 'stripe' ), + 'DO-19' => __( 'Hermanas Mirabal', 'stripe' ), + 'DO-39' => __( 'Higüamo', 'stripe' ), + 'DO-10' => __( 'Independencia', 'stripe' ), + 'DO-11' => __( 'La Altagracia', 'stripe' ), + 'DO-12' => __( 'La Romana', 'stripe' ), + 'DO-13' => __( 'La Vega', 'stripe' ), + 'DO-14' => __( 'María Trinidad Sánchez', 'stripe' ), + 'DO-28' => __( 'Monseñor Nouel', 'stripe' ), + 'DO-15' => __( 'Monte Cristi', 'stripe' ), + 'DO-29' => __( 'Monte Plata', 'stripe' ), + 'DO-40' => __( 'Ozama', 'stripe' ), + 'DO-16' => __( 'Pedernales', 'stripe' ), + 'DO-17' => __( 'Peravia', 'stripe' ), + 'DO-18' => __( 'Puerto Plata', 'stripe' ), + 'DO-20' => __( 'Samaná', 'stripe' ), + 'DO-21' => __( 'San Cristóbal', 'stripe' ), + 'DO-31' => __( 'San José de Ocoa', 'stripe' ), + 'DO-22' => __( 'San Juan', 'stripe' ), + 'DO-23' => __( 'San Pedro de Macorís', 'stripe' ), + 'DO-24' => __( 'Sánchez Ramírez', 'stripe' ), + 'DO-25' => __( 'Santiago', 'stripe' ), + 'DO-26' => __( 'Santiago Rodríguez', 'stripe' ), + 'DO-32' => __( 'Santo Domingo', 'stripe' ), + 'DO-41' => __( 'Valdesia', 'stripe' ), + 'DO-27' => __( 'Valverde', 'stripe' ), + 'DO-42' => __( 'Yuma', 'stripe' ), + ), + 'DZ' => array( // Algerian states. + 'DZ-01' => __( 'Adrar', 'stripe' ), + 'DZ-02' => __( 'Chlef', 'stripe' ), + 'DZ-03' => __( 'Laghouat', 'stripe' ), + 'DZ-04' => __( 'Oum El Bouaghi', 'stripe' ), + 'DZ-05' => __( 'Batna', 'stripe' ), + 'DZ-06' => __( 'Béjaïa', 'stripe' ), + 'DZ-07' => __( 'Biskra', 'stripe' ), + 'DZ-08' => __( 'Béchar', 'stripe' ), + 'DZ-09' => __( 'Blida', 'stripe' ), + 'DZ-10' => __( 'Bouira', 'stripe' ), + 'DZ-11' => __( 'Tamanghasset', 'stripe' ), + 'DZ-12' => __( 'Tébessa', 'stripe' ), + 'DZ-13' => __( 'Tlemcen', 'stripe' ), + 'DZ-14' => __( 'Tiaret', 'stripe' ), + 'DZ-15' => __( 'Tizi Ouzou', 'stripe' ), + 'DZ-16' => __( 'Algiers', 'stripe' ), + 'DZ-17' => __( 'Djelfa', 'stripe' ), + 'DZ-18' => __( 'Jijel', 'stripe' ), + 'DZ-19' => __( 'Sétif', 'stripe' ), + 'DZ-20' => __( 'Saïda', 'stripe' ), + 'DZ-21' => __( 'Skikda', 'stripe' ), + 'DZ-22' => __( 'Sidi Bel Abbès', 'stripe' ), + 'DZ-23' => __( 'Annaba', 'stripe' ), + 'DZ-24' => __( 'Guelma', 'stripe' ), + 'DZ-25' => __( 'Constantine', 'stripe' ), + 'DZ-26' => __( 'Médéa', 'stripe' ), + 'DZ-27' => __( 'Mostaganem', 'stripe' ), + 'DZ-28' => __( 'M’Sila', 'stripe' ), + 'DZ-29' => __( 'Mascara', 'stripe' ), + 'DZ-30' => __( 'Ouargla', 'stripe' ), + 'DZ-31' => __( 'Oran', 'stripe' ), + 'DZ-32' => __( 'El Bayadh', 'stripe' ), + 'DZ-33' => __( 'Illizi', 'stripe' ), + 'DZ-34' => __( 'Bordj Bou Arréridj', 'stripe' ), + 'DZ-35' => __( 'Boumerdès', 'stripe' ), + 'DZ-36' => __( 'El Tarf', 'stripe' ), + 'DZ-37' => __( 'Tindouf', 'stripe' ), + 'DZ-38' => __( 'Tissemsilt', 'stripe' ), + 'DZ-39' => __( 'El Oued', 'stripe' ), + 'DZ-40' => __( 'Khenchela', 'stripe' ), + 'DZ-41' => __( 'Souk Ahras', 'stripe' ), + 'DZ-42' => __( 'Tipasa', 'stripe' ), + 'DZ-43' => __( 'Mila', 'stripe' ), + 'DZ-44' => __( 'Aïn Defla', 'stripe' ), + 'DZ-45' => __( 'Naama', 'stripe' ), + 'DZ-46' => __( 'Aïn Témouchent', 'stripe' ), + 'DZ-47' => __( 'Ghardaïa', 'stripe' ), + 'DZ-48' => __( 'Relizane', 'stripe' ), + ), + 'EE' => array(), + 'EC' => array( // Ecuadorian states. + 'EC-A' => __( 'Azuay', 'stripe' ), + 'EC-B' => __( 'Bolívar', 'stripe' ), + 'EC-F' => __( 'Cañar', 'stripe' ), + 'EC-C' => __( 'Carchi', 'stripe' ), + 'EC-H' => __( 'Chimborazo', 'stripe' ), + 'EC-X' => __( 'Cotopaxi', 'stripe' ), + 'EC-O' => __( 'El Oro', 'stripe' ), + 'EC-E' => __( 'Esmeraldas', 'stripe' ), + 'EC-W' => __( 'Galápagos', 'stripe' ), + 'EC-G' => __( 'Guayas', 'stripe' ), + 'EC-I' => __( 'Imbabura', 'stripe' ), + 'EC-L' => __( 'Loja', 'stripe' ), + 'EC-R' => __( 'Los Ríos', 'stripe' ), + 'EC-M' => __( 'Manabí', 'stripe' ), + 'EC-S' => __( 'Morona-Santiago', 'stripe' ), + 'EC-N' => __( 'Napo', 'stripe' ), + 'EC-D' => __( 'Orellana', 'stripe' ), + 'EC-Y' => __( 'Pastaza', 'stripe' ), + 'EC-P' => __( 'Pichincha', 'stripe' ), + 'EC-SE' => __( 'Santa Elena', 'stripe' ), + 'EC-SD' => __( 'Santo Domingo de los Tsáchilas', 'stripe' ), + 'EC-U' => __( 'Sucumbíos', 'stripe' ), + 'EC-T' => __( 'Tungurahua', 'stripe' ), + 'EC-Z' => __( 'Zamora-Chinchipe', 'stripe' ), + ), + 'EG' => array( // Egyptian states. + 'EGALX' => __( 'Alexandria', 'stripe' ), + 'EGASN' => __( 'Aswan', 'stripe' ), + 'EGAST' => __( 'Asyut', 'stripe' ), + 'EGBA' => __( 'Red Sea', 'stripe' ), + 'EGBH' => __( 'Beheira', 'stripe' ), + 'EGBNS' => __( 'Beni Suef', 'stripe' ), + 'EGC' => __( 'Cairo', 'stripe' ), + 'EGDK' => __( 'Dakahlia', 'stripe' ), + 'EGDT' => __( 'Damietta', 'stripe' ), + 'EGFYM' => __( 'Faiyum', 'stripe' ), + 'EGGH' => __( 'Gharbia', 'stripe' ), + 'EGGZ' => __( 'Giza', 'stripe' ), + 'EGIS' => __( 'Ismailia', 'stripe' ), + 'EGJS' => __( 'South Sinai', 'stripe' ), + 'EGKB' => __( 'Qalyubia', 'stripe' ), + 'EGKFS' => __( 'Kafr el-Sheikh', 'stripe' ), + 'EGKN' => __( 'Qena', 'stripe' ), + 'EGLX' => __( 'Luxor', 'stripe' ), + 'EGMN' => __( 'Minya', 'stripe' ), + 'EGMNF' => __( 'Monufia', 'stripe' ), + 'EGMT' => __( 'Matrouh', 'stripe' ), + 'EGPTS' => __( 'Port Said', 'stripe' ), + 'EGSHG' => __( 'Sohag', 'stripe' ), + 'EGSHR' => __( 'Al Sharqia', 'stripe' ), + 'EGSIN' => __( 'North Sinai', 'stripe' ), + 'EGSUZ' => __( 'Suez', 'stripe' ), + 'EGWAD' => __( 'New Valley', 'stripe' ), + ), + 'ES' => array( // Spanish states. + 'C' => __( 'A Coruña', 'stripe' ), + 'VI' => __( 'Araba/Álava', 'stripe' ), + 'AB' => __( 'Albacete', 'stripe' ), + 'A' => __( 'Alicante', 'stripe' ), + 'AL' => __( 'Almería', 'stripe' ), + 'O' => __( 'Asturias', 'stripe' ), + 'AV' => __( 'Ávila', 'stripe' ), + 'BA' => __( 'Badajoz', 'stripe' ), + 'PM' => __( 'Baleares', 'stripe' ), + 'B' => __( 'Barcelona', 'stripe' ), + 'BU' => __( 'Burgos', 'stripe' ), + 'CC' => __( 'Cáceres', 'stripe' ), + 'CA' => __( 'Cádiz', 'stripe' ), + 'S' => __( 'Cantabria', 'stripe' ), + 'CS' => __( 'Castellón', 'stripe' ), + 'CE' => __( 'Ceuta', 'stripe' ), + 'CR' => __( 'Ciudad Real', 'stripe' ), + 'CO' => __( 'Córdoba', 'stripe' ), + 'CU' => __( 'Cuenca', 'stripe' ), + 'GI' => __( 'Girona', 'stripe' ), + 'GR' => __( 'Granada', 'stripe' ), + 'GU' => __( 'Guadalajara', 'stripe' ), + 'SS' => __( 'Gipuzkoa', 'stripe' ), + 'H' => __( 'Huelva', 'stripe' ), + 'HU' => __( 'Huesca', 'stripe' ), + 'J' => __( 'Jaén', 'stripe' ), + 'LO' => __( 'La Rioja', 'stripe' ), + 'GC' => __( 'Las Palmas', 'stripe' ), + 'LE' => __( 'León', 'stripe' ), + 'L' => __( 'Lleida', 'stripe' ), + 'LU' => __( 'Lugo', 'stripe' ), + 'M' => __( 'Madrid', 'stripe' ), + 'MA' => __( 'Málaga', 'stripe' ), + 'ML' => __( 'Melilla', 'stripe' ), + 'MU' => __( 'Murcia', 'stripe' ), + 'NA' => __( 'Navarra', 'stripe' ), + 'OR' => __( 'Ourense', 'stripe' ), + 'P' => __( 'Palencia', 'stripe' ), + 'PO' => __( 'Pontevedra', 'stripe' ), + 'SA' => __( 'Salamanca', 'stripe' ), + 'TF' => __( 'Santa Cruz de Tenerife', 'stripe' ), + 'SG' => __( 'Segovia', 'stripe' ), + 'SE' => __( 'Sevilla', 'stripe' ), + 'SO' => __( 'Soria', 'stripe' ), + 'T' => __( 'Tarragona', 'stripe' ), + 'TE' => __( 'Teruel', 'stripe' ), + 'TO' => __( 'Toledo', 'stripe' ), + 'V' => __( 'Valencia', 'stripe' ), + 'VA' => __( 'Valladolid', 'stripe' ), + 'BI' => __( 'Biscay', 'stripe' ), + 'ZA' => __( 'Zamora', 'stripe' ), + 'Z' => __( 'Zaragoza', 'stripe' ), + ), + 'FI' => array(), + 'FR' => array(), + 'GF' => array(), + 'GH' => array( // Ghanaian regions. + 'AF' => __( 'Ahafo', 'stripe' ), + 'AH' => __( 'Ashanti', 'stripe' ), + 'BA' => __( 'Brong-Ahafo', 'stripe' ), + 'BO' => __( 'Bono', 'stripe' ), + 'BE' => __( 'Bono East', 'stripe' ), + 'CP' => __( 'Central', 'stripe' ), + 'EP' => __( 'Eastern', 'stripe' ), + 'AA' => __( 'Greater Accra', 'stripe' ), + 'NE' => __( 'North East', 'stripe' ), + 'NP' => __( 'Northern', 'stripe' ), + 'OT' => __( 'Oti', 'stripe' ), + 'SV' => __( 'Savannah', 'stripe' ), + 'UE' => __( 'Upper East', 'stripe' ), + 'UW' => __( 'Upper West', 'stripe' ), + 'TV' => __( 'Volta', 'stripe' ), + 'WP' => __( 'Western', 'stripe' ), + 'WN' => __( 'Western North', 'stripe' ), + ), + 'GP' => array(), + 'GR' => array( // Greek regions. + 'I' => __( 'Attica', 'stripe' ), + 'A' => __( 'East Macedonia and Thrace', 'stripe' ), + 'B' => __( 'Central Macedonia', 'stripe' ), + 'C' => __( 'West Macedonia', 'stripe' ), + 'D' => __( 'Epirus', 'stripe' ), + 'E' => __( 'Thessaly', 'stripe' ), + 'F' => __( 'Ionian Islands', 'stripe' ), + 'G' => __( 'West Greece', 'stripe' ), + 'H' => __( 'Central Greece', 'stripe' ), + 'J' => __( 'Peloponnese', 'stripe' ), + 'K' => __( 'North Aegean', 'stripe' ), + 'L' => __( 'South Aegean', 'stripe' ), + 'M' => __( 'Crete', 'stripe' ), + ), + 'GT' => array( // Guatemalan states. + 'GT-AV' => __( 'Alta Verapaz', 'stripe' ), + 'GT-BV' => __( 'Baja Verapaz', 'stripe' ), + 'GT-CM' => __( 'Chimaltenango', 'stripe' ), + 'GT-CQ' => __( 'Chiquimula', 'stripe' ), + 'GT-PR' => __( 'El Progreso', 'stripe' ), + 'GT-ES' => __( 'Escuintla', 'stripe' ), + 'GT-GU' => __( 'Guatemala', 'stripe' ), + 'GT-HU' => __( 'Huehuetenango', 'stripe' ), + 'GT-IZ' => __( 'Izabal', 'stripe' ), + 'GT-JA' => __( 'Jalapa', 'stripe' ), + 'GT-JU' => __( 'Jutiapa', 'stripe' ), + 'GT-PE' => __( 'Petén', 'stripe' ), + 'GT-QZ' => __( 'Quetzaltenango', 'stripe' ), + 'GT-QC' => __( 'Quiché', 'stripe' ), + 'GT-RE' => __( 'Retalhuleu', 'stripe' ), + 'GT-SA' => __( 'Sacatepéquez', 'stripe' ), + 'GT-SM' => __( 'San Marcos', 'stripe' ), + 'GT-SR' => __( 'Santa Rosa', 'stripe' ), + 'GT-SO' => __( 'Sololá', 'stripe' ), + 'GT-SU' => __( 'Suchitepéquez', 'stripe' ), + 'GT-TO' => __( 'Totonicapán', 'stripe' ), + 'GT-ZA' => __( 'Zacapa', 'stripe' ), + ), + 'HK' => array( // Hong Kong states. + 'HONG KONG' => __( 'Hong Kong Island', 'stripe' ), + 'KOWLOON' => __( 'Kowloon', 'stripe' ), + 'NEW TERRITORIES' => __( 'New Territories', 'stripe' ), + ), + 'HN' => array( // Honduran states. + 'HN-AT' => __( 'Atlántida', 'stripe' ), + 'HN-IB' => __( 'Bay Islands', 'stripe' ), + 'HN-CH' => __( 'Choluteca', 'stripe' ), + 'HN-CL' => __( 'Colón', 'stripe' ), + 'HN-CM' => __( 'Comayagua', 'stripe' ), + 'HN-CP' => __( 'Copán', 'stripe' ), + 'HN-CR' => __( 'Cortés', 'stripe' ), + 'HN-EP' => __( 'El Paraíso', 'stripe' ), + 'HN-FM' => __( 'Francisco Morazán', 'stripe' ), + 'HN-GD' => __( 'Gracias a Dios', 'stripe' ), + 'HN-IN' => __( 'Intibucá', 'stripe' ), + 'HN-LE' => __( 'Lempira', 'stripe' ), + 'HN-LP' => __( 'La Paz', 'stripe' ), + 'HN-OC' => __( 'Ocotepeque', 'stripe' ), + 'HN-OL' => __( 'Olancho', 'stripe' ), + 'HN-SB' => __( 'Santa Bárbara', 'stripe' ), + 'HN-VA' => __( 'Valle', 'stripe' ), + 'HN-YO' => __( 'Yoro', 'stripe' ), + ), + 'HU' => array( // Hungarian states. + 'BK' => __( 'Bács-Kiskun', 'stripe' ), + 'BE' => __( 'Békés', 'stripe' ), + 'BA' => __( 'Baranya', 'stripe' ), + 'BZ' => __( 'Borsod-Abaúj-Zemplén', 'stripe' ), + 'BU' => __( 'Budapest', 'stripe' ), + 'CS' => __( 'Csongrád-Csanád', 'stripe' ), + 'FE' => __( 'Fejér', 'stripe' ), + 'GS' => __( 'Győr-Moson-Sopron', 'stripe' ), + 'HB' => __( 'Hajdú-Bihar', 'stripe' ), + 'HE' => __( 'Heves', 'stripe' ), + 'JN' => __( 'Jász-Nagykun-Szolnok', 'stripe' ), + 'KE' => __( 'Komárom-Esztergom', 'stripe' ), + 'NO' => __( 'Nógrád', 'stripe' ), + 'PE' => __( 'Pest', 'stripe' ), + 'SO' => __( 'Somogy', 'stripe' ), + 'SZ' => __( 'Szabolcs-Szatmár-Bereg', 'stripe' ), + 'TO' => __( 'Tolna', 'stripe' ), + 'VA' => __( 'Vas', 'stripe' ), + 'VE' => __( 'Veszprém', 'stripe' ), + 'ZA' => __( 'Zala', 'stripe' ), + ), + 'ID' => array( // Indonesian provinces. + 'AC' => __( 'Daerah Istimewa Aceh', 'stripe' ), + 'SU' => __( 'Sumatera Utara', 'stripe' ), + 'SB' => __( 'Sumatera Barat', 'stripe' ), + 'RI' => __( 'Riau', 'stripe' ), + 'KR' => __( 'Kepulauan Riau', 'stripe' ), + 'JA' => __( 'Jambi', 'stripe' ), + 'SS' => __( 'Sumatera Selatan', 'stripe' ), + 'BB' => __( 'Bangka Belitung', 'stripe' ), + 'BE' => __( 'Bengkulu', 'stripe' ), + 'LA' => __( 'Lampung', 'stripe' ), + 'JK' => __( 'DKI Jakarta', 'stripe' ), + 'JB' => __( 'Jawa Barat', 'stripe' ), + 'BT' => __( 'Banten', 'stripe' ), + 'JT' => __( 'Jawa Tengah', 'stripe' ), + 'JI' => __( 'Jawa Timur', 'stripe' ), + 'YO' => __( 'Daerah Istimewa Yogyakarta', 'stripe' ), + 'BA' => __( 'Bali', 'stripe' ), + 'NB' => __( 'Nusa Tenggara Barat', 'stripe' ), + 'NT' => __( 'Nusa Tenggara Timur', 'stripe' ), + 'KB' => __( 'Kalimantan Barat', 'stripe' ), + 'KT' => __( 'Kalimantan Tengah', 'stripe' ), + 'KI' => __( 'Kalimantan Timur', 'stripe' ), + 'KS' => __( 'Kalimantan Selatan', 'stripe' ), + 'KU' => __( 'Kalimantan Utara', 'stripe' ), + 'SA' => __( 'Sulawesi Utara', 'stripe' ), + 'ST' => __( 'Sulawesi Tengah', 'stripe' ), + 'SG' => __( 'Sulawesi Tenggara', 'stripe' ), + 'SR' => __( 'Sulawesi Barat', 'stripe' ), + 'SN' => __( 'Sulawesi Selatan', 'stripe' ), + 'GO' => __( 'Gorontalo', 'stripe' ), + 'MA' => __( 'Maluku', 'stripe' ), + 'MU' => __( 'Maluku Utara', 'stripe' ), + 'PA' => __( 'Papua', 'stripe' ), + 'PB' => __( 'Papua Barat', 'stripe' ), + ), + 'IE' => array( // Irish states. + 'CW' => __( 'Carlow', 'stripe' ), + 'CN' => __( 'Cavan', 'stripe' ), + 'CE' => __( 'Clare', 'stripe' ), + 'CO' => __( 'Cork', 'stripe' ), + 'DL' => __( 'Donegal', 'stripe' ), + 'D' => __( 'Dublin', 'stripe' ), + 'G' => __( 'Galway', 'stripe' ), + 'KY' => __( 'Kerry', 'stripe' ), + 'KE' => __( 'Kildare', 'stripe' ), + 'KK' => __( 'Kilkenny', 'stripe' ), + 'LS' => __( 'Laois', 'stripe' ), + 'LM' => __( 'Leitrim', 'stripe' ), + 'LK' => __( 'Limerick', 'stripe' ), + 'LD' => __( 'Longford', 'stripe' ), + 'LH' => __( 'Louth', 'stripe' ), + 'MO' => __( 'Mayo', 'stripe' ), + 'MH' => __( 'Meath', 'stripe' ), + 'MN' => __( 'Monaghan', 'stripe' ), + 'OY' => __( 'Offaly', 'stripe' ), + 'RN' => __( 'Roscommon', 'stripe' ), + 'SO' => __( 'Sligo', 'stripe' ), + 'TA' => __( 'Tipperary', 'stripe' ), + 'WD' => __( 'Waterford', 'stripe' ), + 'WH' => __( 'Westmeath', 'stripe' ), + 'WX' => __( 'Wexford', 'stripe' ), + 'WW' => __( 'Wicklow', 'stripe' ), + ), + 'IN' => array( // Indian states. + 'AP' => __( 'Andhra Pradesh', 'stripe' ), + 'AR' => __( 'Arunachal Pradesh', 'stripe' ), + 'AS' => __( 'Assam', 'stripe' ), + 'BR' => __( 'Bihar', 'stripe' ), + 'CT' => __( 'Chhattisgarh', 'stripe' ), + 'GA' => __( 'Goa', 'stripe' ), + 'GJ' => __( 'Gujarat', 'stripe' ), + 'HR' => __( 'Haryana', 'stripe' ), + 'HP' => __( 'Himachal Pradesh', 'stripe' ), + 'JK' => __( 'Jammu and Kashmir', 'stripe' ), + 'JH' => __( 'Jharkhand', 'stripe' ), + 'KA' => __( 'Karnataka', 'stripe' ), + 'KL' => __( 'Kerala', 'stripe' ), + 'LA' => __( 'Ladakh', 'stripe' ), + 'MP' => __( 'Madhya Pradesh', 'stripe' ), + 'MH' => __( 'Maharashtra', 'stripe' ), + 'MN' => __( 'Manipur', 'stripe' ), + 'ML' => __( 'Meghalaya', 'stripe' ), + 'MZ' => __( 'Mizoram', 'stripe' ), + 'NL' => __( 'Nagaland', 'stripe' ), + 'OR' => __( 'Odisha', 'stripe' ), + 'PB' => __( 'Punjab', 'stripe' ), + 'RJ' => __( 'Rajasthan', 'stripe' ), + 'SK' => __( 'Sikkim', 'stripe' ), + 'TN' => __( 'Tamil Nadu', 'stripe' ), + 'TS' => __( 'Telangana', 'stripe' ), + 'TR' => __( 'Tripura', 'stripe' ), + 'UK' => __( 'Uttarakhand', 'stripe' ), + 'UP' => __( 'Uttar Pradesh', 'stripe' ), + 'WB' => __( 'West Bengal', 'stripe' ), + 'AN' => __( 'Andaman and Nicobar Islands', 'stripe' ), + 'CH' => __( 'Chandigarh', 'stripe' ), + 'DN' => __( 'Dadra and Nagar Haveli', 'stripe' ), + 'DD' => __( 'Daman and Diu', 'stripe' ), + 'DL' => __( 'Delhi', 'stripe' ), + 'LD' => __( 'Lakshadeep', 'stripe' ), + 'PY' => __( 'Pondicherry (Puducherry)', 'stripe' ), + ), + 'IR' => array( // Irania states. + 'KHZ' => __( 'Khuzestan (خوزستان)', 'stripe' ), + 'THR' => __( 'Tehran (تهران)', 'stripe' ), + 'ILM' => __( 'Ilaam (ایلام)', 'stripe' ), + 'BHR' => __( 'Bushehr (بوشهر)', 'stripe' ), + 'ADL' => __( 'Ardabil (اردبیل)', 'stripe' ), + 'ESF' => __( 'Isfahan (اصفهان)', 'stripe' ), + 'YZD' => __( 'Yazd (یزد)', 'stripe' ), + 'KRH' => __( 'Kermanshah (کرمانشاه)', 'stripe' ), + 'KRN' => __( 'Kerman (کرمان)', 'stripe' ), + 'HDN' => __( 'Hamadan (همدان)', 'stripe' ), + 'GZN' => __( 'Ghazvin (قزوین)', 'stripe' ), + 'ZJN' => __( 'Zanjan (زنجان)', 'stripe' ), + 'LRS' => __( 'Luristan (لرستان)', 'stripe' ), + 'ABZ' => __( 'Alborz (البرز)', 'stripe' ), + 'EAZ' => __( 'East Azarbaijan (آذربایجان شرقی)', 'stripe' ), + 'WAZ' => __( 'West Azarbaijan (آذربایجان غربی)', 'stripe' ), + 'CHB' => __( 'Chaharmahal and Bakhtiari (چهارمحال و بختیاری)', 'stripe' ), + 'SKH' => __( 'South Khorasan (خراسان جنوبی)', 'stripe' ), + 'RKH' => __( 'Razavi Khorasan (خراسان رضوی)', 'stripe' ), + 'NKH' => __( 'North Khorasan (خراسان شمالی)', 'stripe' ), + 'SMN' => __( 'Semnan (سمنان)', 'stripe' ), + 'FRS' => __( 'Fars (فارس)', 'stripe' ), + 'QHM' => __( 'Qom (قم)', 'stripe' ), + 'KRD' => __( 'Kurdistan / کردستان)', 'stripe' ), + 'KBD' => __( 'Kohgiluyeh and BoyerAhmad (کهگیلوییه و بویراحمد)', 'stripe' ), + 'GLS' => __( 'Golestan (گلستان)', 'stripe' ), + 'GIL' => __( 'Gilan (گیلان)', 'stripe' ), + 'MZN' => __( 'Mazandaran (مازندران)', 'stripe' ), + 'MKZ' => __( 'Markazi (مرکزی)', 'stripe' ), + 'HRZ' => __( 'Hormozgan (هرمزگان)', 'stripe' ), + 'SBN' => __( 'Sistan and Baluchestan (سیستان و بلوچستان)', 'stripe' ), + ), + 'IS' => array(), + 'IT' => array( // Italian provinces. + 'AG' => __( 'Agrigento', 'stripe' ), + 'AL' => __( 'Alessandria', 'stripe' ), + 'AN' => __( 'Ancona', 'stripe' ), + 'AO' => __( 'Aosta', 'stripe' ), + 'AR' => __( 'Arezzo', 'stripe' ), + 'AP' => __( 'Ascoli Piceno', 'stripe' ), + 'AT' => __( 'Asti', 'stripe' ), + 'AV' => __( 'Avellino', 'stripe' ), + 'BA' => __( 'Bari', 'stripe' ), + 'BT' => __( 'Barletta-Andria-Trani', 'stripe' ), + 'BL' => __( 'Belluno', 'stripe' ), + 'BN' => __( 'Benevento', 'stripe' ), + 'BG' => __( 'Bergamo', 'stripe' ), + 'BI' => __( 'Biella', 'stripe' ), + 'BO' => __( 'Bologna', 'stripe' ), + 'BZ' => __( 'Bolzano', 'stripe' ), + 'BS' => __( 'Brescia', 'stripe' ), + 'BR' => __( 'Brindisi', 'stripe' ), + 'CA' => __( 'Cagliari', 'stripe' ), + 'CL' => __( 'Caltanissetta', 'stripe' ), + 'CB' => __( 'Campobasso', 'stripe' ), + 'CE' => __( 'Caserta', 'stripe' ), + 'CT' => __( 'Catania', 'stripe' ), + 'CZ' => __( 'Catanzaro', 'stripe' ), + 'CH' => __( 'Chieti', 'stripe' ), + 'CO' => __( 'Como', 'stripe' ), + 'CS' => __( 'Cosenza', 'stripe' ), + 'CR' => __( 'Cremona', 'stripe' ), + 'KR' => __( 'Crotone', 'stripe' ), + 'CN' => __( 'Cuneo', 'stripe' ), + 'EN' => __( 'Enna', 'stripe' ), + 'FM' => __( 'Fermo', 'stripe' ), + 'FE' => __( 'Ferrara', 'stripe' ), + 'FI' => __( 'Firenze', 'stripe' ), + 'FG' => __( 'Foggia', 'stripe' ), + 'FC' => __( 'Forlì-Cesena', 'stripe' ), + 'FR' => __( 'Frosinone', 'stripe' ), + 'GE' => __( 'Genova', 'stripe' ), + 'GO' => __( 'Gorizia', 'stripe' ), + 'GR' => __( 'Grosseto', 'stripe' ), + 'IM' => __( 'Imperia', 'stripe' ), + 'IS' => __( 'Isernia', 'stripe' ), + 'SP' => __( 'La Spezia', 'stripe' ), + 'AQ' => __( "L'Aquila", 'stripe' ), + 'LT' => __( 'Latina', 'stripe' ), + 'LE' => __( 'Lecce', 'stripe' ), + 'LC' => __( 'Lecco', 'stripe' ), + 'LI' => __( 'Livorno', 'stripe' ), + 'LO' => __( 'Lodi', 'stripe' ), + 'LU' => __( 'Lucca', 'stripe' ), + 'MC' => __( 'Macerata', 'stripe' ), + 'MN' => __( 'Mantova', 'stripe' ), + 'MS' => __( 'Massa-Carrara', 'stripe' ), + 'MT' => __( 'Matera', 'stripe' ), + 'ME' => __( 'Messina', 'stripe' ), + 'MI' => __( 'Milano', 'stripe' ), + 'MO' => __( 'Modena', 'stripe' ), + 'MB' => __( 'Monza e della Brianza', 'stripe' ), + 'NA' => __( 'Napoli', 'stripe' ), + 'NO' => __( 'Novara', 'stripe' ), + 'NU' => __( 'Nuoro', 'stripe' ), + 'OR' => __( 'Oristano', 'stripe' ), + 'PD' => __( 'Padova', 'stripe' ), + 'PA' => __( 'Palermo', 'stripe' ), + 'PR' => __( 'Parma', 'stripe' ), + 'PV' => __( 'Pavia', 'stripe' ), + 'PG' => __( 'Perugia', 'stripe' ), + 'PU' => __( 'Pesaro e Urbino', 'stripe' ), + 'PE' => __( 'Pescara', 'stripe' ), + 'PC' => __( 'Piacenza', 'stripe' ), + 'PI' => __( 'Pisa', 'stripe' ), + 'PT' => __( 'Pistoia', 'stripe' ), + 'PN' => __( 'Pordenone', 'stripe' ), + 'PZ' => __( 'Potenza', 'stripe' ), + 'PO' => __( 'Prato', 'stripe' ), + 'RG' => __( 'Ragusa', 'stripe' ), + 'RA' => __( 'Ravenna', 'stripe' ), + 'RC' => __( 'Reggio Calabria', 'stripe' ), + 'RE' => __( 'Reggio Emilia', 'stripe' ), + 'RI' => __( 'Rieti', 'stripe' ), + 'RN' => __( 'Rimini', 'stripe' ), + 'RM' => __( 'Roma', 'stripe' ), + 'RO' => __( 'Rovigo', 'stripe' ), + 'SA' => __( 'Salerno', 'stripe' ), + 'SS' => __( 'Sassari', 'stripe' ), + 'SV' => __( 'Savona', 'stripe' ), + 'SI' => __( 'Siena', 'stripe' ), + 'SR' => __( 'Siracusa', 'stripe' ), + 'SO' => __( 'Sondrio', 'stripe' ), + 'SU' => __( 'Sud Sardegna', 'stripe' ), + 'TA' => __( 'Taranto', 'stripe' ), + 'TE' => __( 'Teramo', 'stripe' ), + 'TR' => __( 'Terni', 'stripe' ), + 'TO' => __( 'Torino', 'stripe' ), + 'TP' => __( 'Trapani', 'stripe' ), + 'TN' => __( 'Trento', 'stripe' ), + 'TV' => __( 'Treviso', 'stripe' ), + 'TS' => __( 'Trieste', 'stripe' ), + 'UD' => __( 'Udine', 'stripe' ), + 'VA' => __( 'Varese', 'stripe' ), + 'VE' => __( 'Venezia', 'stripe' ), + 'VB' => __( 'Verbano-Cusio-Ossola', 'stripe' ), + 'VC' => __( 'Vercelli', 'stripe' ), + 'VR' => __( 'Verona', 'stripe' ), + 'VV' => __( 'Vibo Valentia', 'stripe' ), + 'VI' => __( 'Vicenza', 'stripe' ), + 'VT' => __( 'Viterbo', 'stripe' ), + ), + 'IL' => array(), + 'IM' => array(), + 'JM' => array( // Jamaican parishes. + 'JM-01' => __( 'Kingston', 'stripe' ), + 'JM-02' => __( 'Saint Andrew', 'stripe' ), + 'JM-03' => __( 'Saint Thomas', 'stripe' ), + 'JM-04' => __( 'Portland', 'stripe' ), + 'JM-05' => __( 'Saint Mary', 'stripe' ), + 'JM-06' => __( 'Saint Ann', 'stripe' ), + 'JM-07' => __( 'Trelawny', 'stripe' ), + 'JM-08' => __( 'Saint James', 'stripe' ), + 'JM-09' => __( 'Hanover', 'stripe' ), + 'JM-10' => __( 'Westmoreland', 'stripe' ), + 'JM-11' => __( 'Saint Elizabeth', 'stripe' ), + 'JM-12' => __( 'Manchester', 'stripe' ), + 'JM-13' => __( 'Clarendon', 'stripe' ), + 'JM-14' => __( 'Saint Catherine', 'stripe' ), + ), + + /** + * Japanese states. + * + * English notation of prefectures conform to the notation of Japan Post. + * The suffix corresponds with the Japanese translation file. + */ + 'JP' => array( + 'JP01' => __( 'Hokkaido', 'stripe' ), + 'JP02' => __( 'Aomori', 'stripe' ), + 'JP03' => __( 'Iwate', 'stripe' ), + 'JP04' => __( 'Miyagi', 'stripe' ), + 'JP05' => __( 'Akita', 'stripe' ), + 'JP06' => __( 'Yamagata', 'stripe' ), + 'JP07' => __( 'Fukushima', 'stripe' ), + 'JP08' => __( 'Ibaraki', 'stripe' ), + 'JP09' => __( 'Tochigi', 'stripe' ), + 'JP10' => __( 'Gunma', 'stripe' ), + 'JP11' => __( 'Saitama', 'stripe' ), + 'JP12' => __( 'Chiba', 'stripe' ), + 'JP13' => __( 'Tokyo', 'stripe' ), + 'JP14' => __( 'Kanagawa', 'stripe' ), + 'JP15' => __( 'Niigata', 'stripe' ), + 'JP16' => __( 'Toyama', 'stripe' ), + 'JP17' => __( 'Ishikawa', 'stripe' ), + 'JP18' => __( 'Fukui', 'stripe' ), + 'JP19' => __( 'Yamanashi', 'stripe' ), + 'JP20' => __( 'Nagano', 'stripe' ), + 'JP21' => __( 'Gifu', 'stripe' ), + 'JP22' => __( 'Shizuoka', 'stripe' ), + 'JP23' => __( 'Aichi', 'stripe' ), + 'JP24' => __( 'Mie', 'stripe' ), + 'JP25' => __( 'Shiga', 'stripe' ), + 'JP26' => __( 'Kyoto', 'stripe' ), + 'JP27' => __( 'Osaka', 'stripe' ), + 'JP28' => __( 'Hyogo', 'stripe' ), + 'JP29' => __( 'Nara', 'stripe' ), + 'JP30' => __( 'Wakayama', 'stripe' ), + 'JP31' => __( 'Tottori', 'stripe' ), + 'JP32' => __( 'Shimane', 'stripe' ), + 'JP33' => __( 'Okayama', 'stripe' ), + 'JP34' => __( 'Hiroshima', 'stripe' ), + 'JP35' => __( 'Yamaguchi', 'stripe' ), + 'JP36' => __( 'Tokushima', 'stripe' ), + 'JP37' => __( 'Kagawa', 'stripe' ), + 'JP38' => __( 'Ehime', 'stripe' ), + 'JP39' => __( 'Kochi', 'stripe' ), + 'JP40' => __( 'Fukuoka', 'stripe' ), + 'JP41' => __( 'Saga', 'stripe' ), + 'JP42' => __( 'Nagasaki', 'stripe' ), + 'JP43' => __( 'Kumamoto', 'stripe' ), + 'JP44' => __( 'Oita', 'stripe' ), + 'JP45' => __( 'Miyazaki', 'stripe' ), + 'JP46' => __( 'Kagoshima', 'stripe' ), + 'JP47' => __( 'Okinawa', 'stripe' ), + ), + 'KE' => array( // Kenyan counties. + 'KE01' => __( 'Baringo', 'stripe' ), + 'KE02' => __( 'Bomet', 'stripe' ), + 'KE03' => __( 'Bungoma', 'stripe' ), + 'KE04' => __( 'Busia', 'stripe' ), + 'KE05' => __( 'Elgeyo-Marakwet', 'stripe' ), + 'KE06' => __( 'Embu', 'stripe' ), + 'KE07' => __( 'Garissa', 'stripe' ), + 'KE08' => __( 'Homa Bay', 'stripe' ), + 'KE09' => __( 'Isiolo', 'stripe' ), + 'KE10' => __( 'Kajiado', 'stripe' ), + 'KE11' => __( 'Kakamega', 'stripe' ), + 'KE12' => __( 'Kericho', 'stripe' ), + 'KE13' => __( 'Kiambu', 'stripe' ), + 'KE14' => __( 'Kilifi', 'stripe' ), + 'KE15' => __( 'Kirinyaga', 'stripe' ), + 'KE16' => __( 'Kisii', 'stripe' ), + 'KE17' => __( 'Kisumu', 'stripe' ), + 'KE18' => __( 'Kitui', 'stripe' ), + 'KE19' => __( 'Kwale', 'stripe' ), + 'KE20' => __( 'Laikipia', 'stripe' ), + 'KE21' => __( 'Lamu', 'stripe' ), + 'KE22' => __( 'Machakos', 'stripe' ), + 'KE23' => __( 'Makueni', 'stripe' ), + 'KE24' => __( 'Mandera', 'stripe' ), + 'KE25' => __( 'Marsabit', 'stripe' ), + 'KE26' => __( 'Meru', 'stripe' ), + 'KE27' => __( 'Migori', 'stripe' ), + 'KE28' => __( 'Mombasa', 'stripe' ), + 'KE29' => __( 'Murang’a', 'stripe' ), + 'KE30' => __( 'Nairobi County', 'stripe' ), + 'KE31' => __( 'Nakuru', 'stripe' ), + 'KE32' => __( 'Nandi', 'stripe' ), + 'KE33' => __( 'Narok', 'stripe' ), + 'KE34' => __( 'Nyamira', 'stripe' ), + 'KE35' => __( 'Nyandarua', 'stripe' ), + 'KE36' => __( 'Nyeri', 'stripe' ), + 'KE37' => __( 'Samburu', 'stripe' ), + 'KE38' => __( 'Siaya', 'stripe' ), + 'KE39' => __( 'Taita-Taveta', 'stripe' ), + 'KE40' => __( 'Tana River', 'stripe' ), + 'KE41' => __( 'Tharaka-Nithi', 'stripe' ), + 'KE42' => __( 'Trans Nzoia', 'stripe' ), + 'KE43' => __( 'Turkana', 'stripe' ), + 'KE44' => __( 'Uasin Gishu', 'stripe' ), + 'KE45' => __( 'Vihiga', 'stripe' ), + 'KE46' => __( 'Wajir', 'stripe' ), + 'KE47' => __( 'West Pokot', 'stripe' ), + ), + 'KR' => array(), + 'KW' => array(), + 'LA' => array( // Laotian provinces. + 'AT' => __( 'Attapeu', 'stripe' ), + 'BK' => __( 'Bokeo', 'stripe' ), + 'BL' => __( 'Bolikhamsai', 'stripe' ), + 'CH' => __( 'Champasak', 'stripe' ), + 'HO' => __( 'Houaphanh', 'stripe' ), + 'KH' => __( 'Khammouane', 'stripe' ), + 'LM' => __( 'Luang Namtha', 'stripe' ), + 'LP' => __( 'Luang Prabang', 'stripe' ), + 'OU' => __( 'Oudomxay', 'stripe' ), + 'PH' => __( 'Phongsaly', 'stripe' ), + 'SL' => __( 'Salavan', 'stripe' ), + 'SV' => __( 'Savannakhet', 'stripe' ), + 'VI' => __( 'Vientiane Province', 'stripe' ), + 'VT' => __( 'Vientiane', 'stripe' ), + 'XA' => __( 'Sainyabuli', 'stripe' ), + 'XE' => __( 'Sekong', 'stripe' ), + 'XI' => __( 'Xiangkhouang', 'stripe' ), + 'XS' => __( 'Xaisomboun', 'stripe' ), + ), + 'LB' => array(), + 'LI' => array(), + 'LR' => array( // Liberian provinces. + 'BM' => __( 'Bomi', 'stripe' ), + 'BN' => __( 'Bong', 'stripe' ), + 'GA' => __( 'Gbarpolu', 'stripe' ), + 'GB' => __( 'Grand Bassa', 'stripe' ), + 'GC' => __( 'Grand Cape Mount', 'stripe' ), + 'GG' => __( 'Grand Gedeh', 'stripe' ), + 'GK' => __( 'Grand Kru', 'stripe' ), + 'LO' => __( 'Lofa', 'stripe' ), + 'MA' => __( 'Margibi', 'stripe' ), + 'MY' => __( 'Maryland', 'stripe' ), + 'MO' => __( 'Montserrado', 'stripe' ), + 'NM' => __( 'Nimba', 'stripe' ), + 'RV' => __( 'Rivercess', 'stripe' ), + 'RG' => __( 'River Gee', 'stripe' ), + 'SN' => __( 'Sinoe', 'stripe' ), + ), + 'LU' => array(), + 'MD' => array( // Moldovan states. + 'C' => __( 'Chișinău', 'stripe' ), + 'BL' => __( 'Bălți', 'stripe' ), + 'AN' => __( 'Anenii Noi', 'stripe' ), + 'BS' => __( 'Basarabeasca', 'stripe' ), + 'BR' => __( 'Briceni', 'stripe' ), + 'CH' => __( 'Cahul', 'stripe' ), + 'CT' => __( 'Cantemir', 'stripe' ), + 'CL' => __( 'Călărași', 'stripe' ), + 'CS' => __( 'Căușeni', 'stripe' ), + 'CM' => __( 'Cimișlia', 'stripe' ), + 'CR' => __( 'Criuleni', 'stripe' ), + 'DN' => __( 'Dondușeni', 'stripe' ), + 'DR' => __( 'Drochia', 'stripe' ), + 'DB' => __( 'Dubăsari', 'stripe' ), + 'ED' => __( 'Edineț', 'stripe' ), + 'FL' => __( 'Fălești', 'stripe' ), + 'FR' => __( 'Florești', 'stripe' ), + 'GE' => __( 'UTA Găgăuzia', 'stripe' ), + 'GL' => __( 'Glodeni', 'stripe' ), + 'HN' => __( 'Hîncești', 'stripe' ), + 'IL' => __( 'Ialoveni', 'stripe' ), + 'LV' => __( 'Leova', 'stripe' ), + 'NS' => __( 'Nisporeni', 'stripe' ), + 'OC' => __( 'Ocnița', 'stripe' ), + 'OR' => __( 'Orhei', 'stripe' ), + 'RZ' => __( 'Rezina', 'stripe' ), + 'RS' => __( 'Rîșcani', 'stripe' ), + 'SG' => __( 'Sîngerei', 'stripe' ), + 'SR' => __( 'Soroca', 'stripe' ), + 'ST' => __( 'Strășeni', 'stripe' ), + 'SD' => __( 'Șoldănești', 'stripe' ), + 'SV' => __( 'Ștefan Vodă', 'stripe' ), + 'TR' => __( 'Taraclia', 'stripe' ), + 'TL' => __( 'Telenești', 'stripe' ), + 'UN' => __( 'Ungheni', 'stripe' ), + ), + 'MF' => array(), + 'MQ' => array(), + 'MT' => array(), + 'MX' => array( // Mexican states. + 'DF' => __( 'Ciudad de México', 'stripe' ), + 'JA' => __( 'Jalisco', 'stripe' ), + 'NL' => __( 'Nuevo León', 'stripe' ), + 'AG' => __( 'Aguascalientes', 'stripe' ), + 'BC' => __( 'Baja California', 'stripe' ), + 'BS' => __( 'Baja California Sur', 'stripe' ), + 'CM' => __( 'Campeche', 'stripe' ), + 'CS' => __( 'Chiapas', 'stripe' ), + 'CH' => __( 'Chihuahua', 'stripe' ), + 'CO' => __( 'Coahuila', 'stripe' ), + 'CL' => __( 'Colima', 'stripe' ), + 'DG' => __( 'Durango', 'stripe' ), + 'GT' => __( 'Guanajuato', 'stripe' ), + 'GR' => __( 'Guerrero', 'stripe' ), + 'HG' => __( 'Hidalgo', 'stripe' ), + 'MX' => __( 'Estado de México', 'stripe' ), + 'MI' => __( 'Michoacán', 'stripe' ), + 'MO' => __( 'Morelos', 'stripe' ), + 'NA' => __( 'Nayarit', 'stripe' ), + 'OA' => __( 'Oaxaca', 'stripe' ), + 'PU' => __( 'Puebla', 'stripe' ), + 'QT' => __( 'Querétaro', 'stripe' ), + 'QR' => __( 'Quintana Roo', 'stripe' ), + 'SL' => __( 'San Luis Potosí', 'stripe' ), + 'SI' => __( 'Sinaloa', 'stripe' ), + 'SO' => __( 'Sonora', 'stripe' ), + 'TB' => __( 'Tabasco', 'stripe' ), + 'TM' => __( 'Tamaulipas', 'stripe' ), + 'TL' => __( 'Tlaxcala', 'stripe' ), + 'VE' => __( 'Veracruz', 'stripe' ), + 'YU' => __( 'Yucatán', 'stripe' ), + 'ZA' => __( 'Zacatecas', 'stripe' ), + ), + 'MY' => array( // Malaysian states. + 'JHR' => __( 'Johor', 'stripe' ), + 'KDH' => __( 'Kedah', 'stripe' ), + 'KTN' => __( 'Kelantan', 'stripe' ), + 'LBN' => __( 'Labuan', 'stripe' ), + 'MLK' => __( 'Malacca (Melaka)', 'stripe' ), + 'NSN' => __( 'Negeri Sembilan', 'stripe' ), + 'PHG' => __( 'Pahang', 'stripe' ), + 'PNG' => __( 'Penang (Pulau Pinang)', 'stripe' ), + 'PRK' => __( 'Perak', 'stripe' ), + 'PLS' => __( 'Perlis', 'stripe' ), + 'SBH' => __( 'Sabah', 'stripe' ), + 'SWK' => __( 'Sarawak', 'stripe' ), + 'SGR' => __( 'Selangor', 'stripe' ), + 'TRG' => __( 'Terengganu', 'stripe' ), + 'PJY' => __( 'Putrajaya', 'stripe' ), + 'KUL' => __( 'Kuala Lumpur', 'stripe' ), + ), + 'MZ' => array( // Mozambican provinces. + 'MZP' => __( 'Cabo Delgado', 'stripe' ), + 'MZG' => __( 'Gaza', 'stripe' ), + 'MZI' => __( 'Inhambane', 'stripe' ), + 'MZB' => __( 'Manica', 'stripe' ), + 'MZL' => __( 'Maputo Province', 'stripe' ), + 'MZMPM' => __( 'Maputo', 'stripe' ), + 'MZN' => __( 'Nampula', 'stripe' ), + 'MZA' => __( 'Niassa', 'stripe' ), + 'MZS' => __( 'Sofala', 'stripe' ), + 'MZT' => __( 'Tete', 'stripe' ), + 'MZQ' => __( 'Zambézia', 'stripe' ), + ), + 'NA' => array( // Namibian regions. + 'ER' => __( 'Erongo', 'stripe' ), + 'HA' => __( 'Hardap', 'stripe' ), + 'KA' => __( 'Karas', 'stripe' ), + 'KE' => __( 'Kavango East', 'stripe' ), + 'KW' => __( 'Kavango West', 'stripe' ), + 'KH' => __( 'Khomas', 'stripe' ), + 'KU' => __( 'Kunene', 'stripe' ), + 'OW' => __( 'Ohangwena', 'stripe' ), + 'OH' => __( 'Omaheke', 'stripe' ), + 'OS' => __( 'Omusati', 'stripe' ), + 'ON' => __( 'Oshana', 'stripe' ), + 'OT' => __( 'Oshikoto', 'stripe' ), + 'OD' => __( 'Otjozondjupa', 'stripe' ), + 'CA' => __( 'Zambezi', 'stripe' ), + ), + 'NG' => array( // Nigerian provinces. + 'AB' => __( 'Abia', 'stripe' ), + 'FC' => __( 'Abuja', 'stripe' ), + 'AD' => __( 'Adamawa', 'stripe' ), + 'AK' => __( 'Akwa Ibom', 'stripe' ), + 'AN' => __( 'Anambra', 'stripe' ), + 'BA' => __( 'Bauchi', 'stripe' ), + 'BY' => __( 'Bayelsa', 'stripe' ), + 'BE' => __( 'Benue', 'stripe' ), + 'BO' => __( 'Borno', 'stripe' ), + 'CR' => __( 'Cross River', 'stripe' ), + 'DE' => __( 'Delta', 'stripe' ), + 'EB' => __( 'Ebonyi', 'stripe' ), + 'ED' => __( 'Edo', 'stripe' ), + 'EK' => __( 'Ekiti', 'stripe' ), + 'EN' => __( 'Enugu', 'stripe' ), + 'GO' => __( 'Gombe', 'stripe' ), + 'IM' => __( 'Imo', 'stripe' ), + 'JI' => __( 'Jigawa', 'stripe' ), + 'KD' => __( 'Kaduna', 'stripe' ), + 'KN' => __( 'Kano', 'stripe' ), + 'KT' => __( 'Katsina', 'stripe' ), + 'KE' => __( 'Kebbi', 'stripe' ), + 'KO' => __( 'Kogi', 'stripe' ), + 'KW' => __( 'Kwara', 'stripe' ), + 'LA' => __( 'Lagos', 'stripe' ), + 'NA' => __( 'Nasarawa', 'stripe' ), + 'NI' => __( 'Niger', 'stripe' ), + 'OG' => __( 'Ogun', 'stripe' ), + 'ON' => __( 'Ondo', 'stripe' ), + 'OS' => __( 'Osun', 'stripe' ), + 'OY' => __( 'Oyo', 'stripe' ), + 'PL' => __( 'Plateau', 'stripe' ), + 'RI' => __( 'Rivers', 'stripe' ), + 'SO' => __( 'Sokoto', 'stripe' ), + 'TA' => __( 'Taraba', 'stripe' ), + 'YO' => __( 'Yobe', 'stripe' ), + 'ZA' => __( 'Zamfara', 'stripe' ), + ), + 'NL' => array(), + 'NO' => array(), + 'NP' => array( // Nepalese zones. + 'BAG' => __( 'Bagmati', 'stripe' ), + 'BHE' => __( 'Bheri', 'stripe' ), + 'DHA' => __( 'Dhaulagiri', 'stripe' ), + 'GAN' => __( 'Gandaki', 'stripe' ), + 'JAN' => __( 'Janakpur', 'stripe' ), + 'KAR' => __( 'Karnali', 'stripe' ), + 'KOS' => __( 'Koshi', 'stripe' ), + 'LUM' => __( 'Lumbini', 'stripe' ), + 'MAH' => __( 'Mahakali', 'stripe' ), + 'MEC' => __( 'Mechi', 'stripe' ), + 'NAR' => __( 'Narayani', 'stripe' ), + 'RAP' => __( 'Rapti', 'stripe' ), + 'SAG' => __( 'Sagarmatha', 'stripe' ), + 'SET' => __( 'Seti', 'stripe' ), + ), + 'NI' => array( // Nicaraguan states. + 'NI-AN' => __( 'Atlántico Norte', 'stripe' ), + 'NI-AS' => __( 'Atlántico Sur', 'stripe' ), + 'NI-BO' => __( 'Boaco', 'stripe' ), + 'NI-CA' => __( 'Carazo', 'stripe' ), + 'NI-CI' => __( 'Chinandega', 'stripe' ), + 'NI-CO' => __( 'Chontales', 'stripe' ), + 'NI-ES' => __( 'Estelí', 'stripe' ), + 'NI-GR' => __( 'Granada', 'stripe' ), + 'NI-JI' => __( 'Jinotega', 'stripe' ), + 'NI-LE' => __( 'León', 'stripe' ), + 'NI-MD' => __( 'Madriz', 'stripe' ), + 'NI-MN' => __( 'Managua', 'stripe' ), + 'NI-MS' => __( 'Masaya', 'stripe' ), + 'NI-MT' => __( 'Matagalpa', 'stripe' ), + 'NI-NS' => __( 'Nueva Segovia', 'stripe' ), + 'NI-RI' => __( 'Rivas', 'stripe' ), + 'NI-SJ' => __( 'Río San Juan', 'stripe' ), + ), + 'NZ' => array( // New Zealand states. + 'NL' => __( 'Northland', 'stripe' ), + 'AK' => __( 'Auckland', 'stripe' ), + 'WA' => __( 'Waikato', 'stripe' ), + 'BP' => __( 'Bay of Plenty', 'stripe' ), + 'TK' => __( 'Taranaki', 'stripe' ), + 'GI' => __( 'Gisborne', 'stripe' ), + 'HB' => __( 'Hawke’s Bay', 'stripe' ), + 'MW' => __( 'Manawatu-Wanganui', 'stripe' ), + 'WE' => __( 'Wellington', 'stripe' ), + 'NS' => __( 'Nelson', 'stripe' ), + 'MB' => __( 'Marlborough', 'stripe' ), + 'TM' => __( 'Tasman', 'stripe' ), + 'WC' => __( 'West Coast', 'stripe' ), + 'CT' => __( 'Canterbury', 'stripe' ), + 'OT' => __( 'Otago', 'stripe' ), + 'SL' => __( 'Southland', 'stripe' ), + ), + 'PA' => array( // Panamanian states. + 'PA-1' => __( 'Bocas del Toro', 'stripe' ), + 'PA-2' => __( 'Coclé', 'stripe' ), + 'PA-3' => __( 'Colón', 'stripe' ), + 'PA-4' => __( 'Chiriquí', 'stripe' ), + 'PA-5' => __( 'Darién', 'stripe' ), + 'PA-6' => __( 'Herrera', 'stripe' ), + 'PA-7' => __( 'Los Santos', 'stripe' ), + 'PA-8' => __( 'Panamá', 'stripe' ), + 'PA-9' => __( 'Veraguas', 'stripe' ), + 'PA-10' => __( 'West Panamá', 'stripe' ), + 'PA-EM' => __( 'Emberá', 'stripe' ), + 'PA-KY' => __( 'Guna Yala', 'stripe' ), + 'PA-NB' => __( 'Ngöbe-Buglé', 'stripe' ), + ), + 'PE' => array( // Peruvian states. + 'CAL' => __( 'El Callao', 'stripe' ), + 'LMA' => __( 'Municipalidad Metropolitana de Lima', 'stripe' ), + 'AMA' => __( 'Amazonas', 'stripe' ), + 'ANC' => __( 'Ancash', 'stripe' ), + 'APU' => __( 'Apurímac', 'stripe' ), + 'ARE' => __( 'Arequipa', 'stripe' ), + 'AYA' => __( 'Ayacucho', 'stripe' ), + 'CAJ' => __( 'Cajamarca', 'stripe' ), + 'CUS' => __( 'Cusco', 'stripe' ), + 'HUV' => __( 'Huancavelica', 'stripe' ), + 'HUC' => __( 'Huánuco', 'stripe' ), + 'ICA' => __( 'Ica', 'stripe' ), + 'JUN' => __( 'Junín', 'stripe' ), + 'LAL' => __( 'La Libertad', 'stripe' ), + 'LAM' => __( 'Lambayeque', 'stripe' ), + 'LIM' => __( 'Lima', 'stripe' ), + 'LOR' => __( 'Loreto', 'stripe' ), + 'MDD' => __( 'Madre de Dios', 'stripe' ), + 'MOQ' => __( 'Moquegua', 'stripe' ), + 'PAS' => __( 'Pasco', 'stripe' ), + 'PIU' => __( 'Piura', 'stripe' ), + 'PUN' => __( 'Puno', 'stripe' ), + 'SAM' => __( 'San Martín', 'stripe' ), + 'TAC' => __( 'Tacna', 'stripe' ), + 'TUM' => __( 'Tumbes', 'stripe' ), + 'UCA' => __( 'Ucayali', 'stripe' ), + ), + 'PH' => array( // Philippine provinces. + 'ABR' => __( 'Abra', 'stripe' ), + 'AGN' => __( 'Agusan del Norte', 'stripe' ), + 'AGS' => __( 'Agusan del Sur', 'stripe' ), + 'AKL' => __( 'Aklan', 'stripe' ), + 'ALB' => __( 'Albay', 'stripe' ), + 'ANT' => __( 'Antique', 'stripe' ), + 'APA' => __( 'Apayao', 'stripe' ), + 'AUR' => __( 'Aurora', 'stripe' ), + 'BAS' => __( 'Basilan', 'stripe' ), + 'BAN' => __( 'Bataan', 'stripe' ), + 'BTN' => __( 'Batanes', 'stripe' ), + 'BTG' => __( 'Batangas', 'stripe' ), + 'BEN' => __( 'Benguet', 'stripe' ), + 'BIL' => __( 'Biliran', 'stripe' ), + 'BOH' => __( 'Bohol', 'stripe' ), + 'BUK' => __( 'Bukidnon', 'stripe' ), + 'BUL' => __( 'Bulacan', 'stripe' ), + 'CAG' => __( 'Cagayan', 'stripe' ), + 'CAN' => __( 'Camarines Norte', 'stripe' ), + 'CAS' => __( 'Camarines Sur', 'stripe' ), + 'CAM' => __( 'Camiguin', 'stripe' ), + 'CAP' => __( 'Capiz', 'stripe' ), + 'CAT' => __( 'Catanduanes', 'stripe' ), + 'CAV' => __( 'Cavite', 'stripe' ), + 'CEB' => __( 'Cebu', 'stripe' ), + 'COM' => __( 'Compostela Valley', 'stripe' ), + 'NCO' => __( 'Cotabato', 'stripe' ), + 'DAV' => __( 'Davao del Norte', 'stripe' ), + 'DAS' => __( 'Davao del Sur', 'stripe' ), + 'DAC' => __( 'Davao Occidental', 'stripe' ), + 'DAO' => __( 'Davao Oriental', 'stripe' ), + 'DIN' => __( 'Dinagat Islands', 'stripe' ), + 'EAS' => __( 'Eastern Samar', 'stripe' ), + 'GUI' => __( 'Guimaras', 'stripe' ), + 'IFU' => __( 'Ifugao', 'stripe' ), + 'ILN' => __( 'Ilocos Norte', 'stripe' ), + 'ILS' => __( 'Ilocos Sur', 'stripe' ), + 'ILI' => __( 'Iloilo', 'stripe' ), + 'ISA' => __( 'Isabela', 'stripe' ), + 'KAL' => __( 'Kalinga', 'stripe' ), + 'LUN' => __( 'La Union', 'stripe' ), + 'LAG' => __( 'Laguna', 'stripe' ), + 'LAN' => __( 'Lanao del Norte', 'stripe' ), + 'LAS' => __( 'Lanao del Sur', 'stripe' ), + 'LEY' => __( 'Leyte', 'stripe' ), + 'MAG' => __( 'Maguindanao', 'stripe' ), + 'MAD' => __( 'Marinduque', 'stripe' ), + 'MAS' => __( 'Masbate', 'stripe' ), + 'MSC' => __( 'Misamis Occidental', 'stripe' ), + 'MSR' => __( 'Misamis Oriental', 'stripe' ), + 'MOU' => __( 'Mountain Province', 'stripe' ), + 'NEC' => __( 'Negros Occidental', 'stripe' ), + 'NER' => __( 'Negros Oriental', 'stripe' ), + 'NSA' => __( 'Northern Samar', 'stripe' ), + 'NUE' => __( 'Nueva Ecija', 'stripe' ), + 'NUV' => __( 'Nueva Vizcaya', 'stripe' ), + 'MDC' => __( 'Occidental Mindoro', 'stripe' ), + 'MDR' => __( 'Oriental Mindoro', 'stripe' ), + 'PLW' => __( 'Palawan', 'stripe' ), + 'PAM' => __( 'Pampanga', 'stripe' ), + 'PAN' => __( 'Pangasinan', 'stripe' ), + 'QUE' => __( 'Quezon', 'stripe' ), + 'QUI' => __( 'Quirino', 'stripe' ), + 'RIZ' => __( 'Rizal', 'stripe' ), + 'ROM' => __( 'Romblon', 'stripe' ), + 'WSA' => __( 'Samar', 'stripe' ), + 'SAR' => __( 'Sarangani', 'stripe' ), + 'SIQ' => __( 'Siquijor', 'stripe' ), + 'SOR' => __( 'Sorsogon', 'stripe' ), + 'SCO' => __( 'South Cotabato', 'stripe' ), + 'SLE' => __( 'Southern Leyte', 'stripe' ), + 'SUK' => __( 'Sultan Kudarat', 'stripe' ), + 'SLU' => __( 'Sulu', 'stripe' ), + 'SUN' => __( 'Surigao del Norte', 'stripe' ), + 'SUR' => __( 'Surigao del Sur', 'stripe' ), + 'TAR' => __( 'Tarlac', 'stripe' ), + 'TAW' => __( 'Tawi-Tawi', 'stripe' ), + 'ZMB' => __( 'Zambales', 'stripe' ), + 'ZAN' => __( 'Zamboanga del Norte', 'stripe' ), + 'ZAS' => __( 'Zamboanga del Sur', 'stripe' ), + 'ZSI' => __( 'Zamboanga Sibugay', 'stripe' ), + '00' => __( 'Metro Manila', 'stripe' ), + ), + 'PK' => array( // Pakistani states. + 'JK' => __( 'Azad Kashmir', 'stripe' ), + 'BA' => __( 'Balochistan', 'stripe' ), + 'TA' => __( 'FATA', 'stripe' ), + 'GB' => __( 'Gilgit Baltistan', 'stripe' ), + 'IS' => __( 'Islamabad Capital Territory', 'stripe' ), + 'KP' => __( 'Khyber Pakhtunkhwa', 'stripe' ), + 'PB' => __( 'Punjab', 'stripe' ), + 'SD' => __( 'Sindh', 'stripe' ), + ), + 'PL' => array(), + 'PR' => array(), + 'PT' => array(), + 'PY' => array( // Paraguayan states. + 'PY-ASU' => __( 'Asunción', 'stripe' ), + 'PY-1' => __( 'Concepción', 'stripe' ), + 'PY-2' => __( 'San Pedro', 'stripe' ), + 'PY-3' => __( 'Cordillera', 'stripe' ), + 'PY-4' => __( 'Guairá', 'stripe' ), + 'PY-5' => __( 'Caaguazú', 'stripe' ), + 'PY-6' => __( 'Caazapá', 'stripe' ), + 'PY-7' => __( 'Itapúa', 'stripe' ), + 'PY-8' => __( 'Misiones', 'stripe' ), + 'PY-9' => __( 'Paraguarí', 'stripe' ), + 'PY-10' => __( 'Alto Paraná', 'stripe' ), + 'PY-11' => __( 'Central', 'stripe' ), + 'PY-12' => __( 'Ñeembucú', 'stripe' ), + 'PY-13' => __( 'Amambay', 'stripe' ), + 'PY-14' => __( 'Canindeyú', 'stripe' ), + 'PY-15' => __( 'Presidente Hayes', 'stripe' ), + 'PY-16' => __( 'Alto Paraguay', 'stripe' ), + 'PY-17' => __( 'Boquerón', 'stripe' ), + ), + 'RE' => array(), + 'RO' => array( // Romanian states. + 'AB' => __( 'Alba', 'stripe' ), + 'AR' => __( 'Arad', 'stripe' ), + 'AG' => __( 'Argeș', 'stripe' ), + 'BC' => __( 'Bacău', 'stripe' ), + 'BH' => __( 'Bihor', 'stripe' ), + 'BN' => __( 'Bistrița-Năsăud', 'stripe' ), + 'BT' => __( 'Botoșani', 'stripe' ), + 'BR' => __( 'Brăila', 'stripe' ), + 'BV' => __( 'Brașov', 'stripe' ), + 'B' => __( 'București', 'stripe' ), + 'BZ' => __( 'Buzău', 'stripe' ), + 'CL' => __( 'Călărași', 'stripe' ), + 'CS' => __( 'Caraș-Severin', 'stripe' ), + 'CJ' => __( 'Cluj', 'stripe' ), + 'CT' => __( 'Constanța', 'stripe' ), + 'CV' => __( 'Covasna', 'stripe' ), + 'DB' => __( 'Dâmbovița', 'stripe' ), + 'DJ' => __( 'Dolj', 'stripe' ), + 'GL' => __( 'Galați', 'stripe' ), + 'GR' => __( 'Giurgiu', 'stripe' ), + 'GJ' => __( 'Gorj', 'stripe' ), + 'HR' => __( 'Harghita', 'stripe' ), + 'HD' => __( 'Hunedoara', 'stripe' ), + 'IL' => __( 'Ialomița', 'stripe' ), + 'IS' => __( 'Iași', 'stripe' ), + 'IF' => __( 'Ilfov', 'stripe' ), + 'MM' => __( 'Maramureș', 'stripe' ), + 'MH' => __( 'Mehedinți', 'stripe' ), + 'MS' => __( 'Mureș', 'stripe' ), + 'NT' => __( 'Neamț', 'stripe' ), + 'OT' => __( 'Olt', 'stripe' ), + 'PH' => __( 'Prahova', 'stripe' ), + 'SJ' => __( 'Sălaj', 'stripe' ), + 'SM' => __( 'Satu Mare', 'stripe' ), + 'SB' => __( 'Sibiu', 'stripe' ), + 'SV' => __( 'Suceava', 'stripe' ), + 'TR' => __( 'Teleorman', 'stripe' ), + 'TM' => __( 'Timiș', 'stripe' ), + 'TL' => __( 'Tulcea', 'stripe' ), + 'VL' => __( 'Vâlcea', 'stripe' ), + 'VS' => __( 'Vaslui', 'stripe' ), + 'VN' => __( 'Vrancea', 'stripe' ), + ), + 'SG' => array(), + 'SK' => array(), + 'SI' => array(), + 'SV' => array( // Salvadoran states. + 'SV-AH' => __( 'Ahuachapán', 'stripe' ), + 'SV-CA' => __( 'Cabañas', 'stripe' ), + 'SV-CH' => __( 'Chalatenango', 'stripe' ), + 'SV-CU' => __( 'Cuscatlán', 'stripe' ), + 'SV-LI' => __( 'La Libertad', 'stripe' ), + 'SV-MO' => __( 'Morazán', 'stripe' ), + 'SV-PA' => __( 'La Paz', 'stripe' ), + 'SV-SA' => __( 'Santa Ana', 'stripe' ), + 'SV-SM' => __( 'San Miguel', 'stripe' ), + 'SV-SO' => __( 'Sonsonate', 'stripe' ), + 'SV-SS' => __( 'San Salvador', 'stripe' ), + 'SV-SV' => __( 'San Vicente', 'stripe' ), + 'SV-UN' => __( 'La Unión', 'stripe' ), + 'SV-US' => __( 'Usulután', 'stripe' ), + ), + 'TH' => array( // Thai states. + 'TH-37' => __( 'Amnat Charoen', 'stripe' ), + 'TH-15' => __( 'Ang Thong', 'stripe' ), + 'TH-14' => __( 'Ayutthaya', 'stripe' ), + 'TH-10' => __( 'Bangkok', 'stripe' ), + 'TH-38' => __( 'Bueng Kan', 'stripe' ), + 'TH-31' => __( 'Buri Ram', 'stripe' ), + 'TH-24' => __( 'Chachoengsao', 'stripe' ), + 'TH-18' => __( 'Chai Nat', 'stripe' ), + 'TH-36' => __( 'Chaiyaphum', 'stripe' ), + 'TH-22' => __( 'Chanthaburi', 'stripe' ), + 'TH-50' => __( 'Chiang Mai', 'stripe' ), + 'TH-57' => __( 'Chiang Rai', 'stripe' ), + 'TH-20' => __( 'Chonburi', 'stripe' ), + 'TH-86' => __( 'Chumphon', 'stripe' ), + 'TH-46' => __( 'Kalasin', 'stripe' ), + 'TH-62' => __( 'Kamphaeng Phet', 'stripe' ), + 'TH-71' => __( 'Kanchanaburi', 'stripe' ), + 'TH-40' => __( 'Khon Kaen', 'stripe' ), + 'TH-81' => __( 'Krabi', 'stripe' ), + 'TH-52' => __( 'Lampang', 'stripe' ), + 'TH-51' => __( 'Lamphun', 'stripe' ), + 'TH-42' => __( 'Loei', 'stripe' ), + 'TH-16' => __( 'Lopburi', 'stripe' ), + 'TH-58' => __( 'Mae Hong Son', 'stripe' ), + 'TH-44' => __( 'Maha Sarakham', 'stripe' ), + 'TH-49' => __( 'Mukdahan', 'stripe' ), + 'TH-26' => __( 'Nakhon Nayok', 'stripe' ), + 'TH-73' => __( 'Nakhon Pathom', 'stripe' ), + 'TH-48' => __( 'Nakhon Phanom', 'stripe' ), + 'TH-30' => __( 'Nakhon Ratchasima', 'stripe' ), + 'TH-60' => __( 'Nakhon Sawan', 'stripe' ), + 'TH-80' => __( 'Nakhon Si Thammarat', 'stripe' ), + 'TH-55' => __( 'Nan', 'stripe' ), + 'TH-96' => __( 'Narathiwat', 'stripe' ), + 'TH-39' => __( 'Nong Bua Lam Phu', 'stripe' ), + 'TH-43' => __( 'Nong Khai', 'stripe' ), + 'TH-12' => __( 'Nonthaburi', 'stripe' ), + 'TH-13' => __( 'Pathum Thani', 'stripe' ), + 'TH-94' => __( 'Pattani', 'stripe' ), + 'TH-82' => __( 'Phang Nga', 'stripe' ), + 'TH-93' => __( 'Phatthalung', 'stripe' ), + 'TH-56' => __( 'Phayao', 'stripe' ), + 'TH-67' => __( 'Phetchabun', 'stripe' ), + 'TH-76' => __( 'Phetchaburi', 'stripe' ), + 'TH-66' => __( 'Phichit', 'stripe' ), + 'TH-65' => __( 'Phitsanulok', 'stripe' ), + 'TH-54' => __( 'Phrae', 'stripe' ), + 'TH-83' => __( 'Phuket', 'stripe' ), + 'TH-25' => __( 'Prachin Buri', 'stripe' ), + 'TH-77' => __( 'Prachuap Khiri Khan', 'stripe' ), + 'TH-85' => __( 'Ranong', 'stripe' ), + 'TH-70' => __( 'Ratchaburi', 'stripe' ), + 'TH-21' => __( 'Rayong', 'stripe' ), + 'TH-45' => __( 'Roi Et', 'stripe' ), + 'TH-27' => __( 'Sa Kaeo', 'stripe' ), + 'TH-47' => __( 'Sakon Nakhon', 'stripe' ), + 'TH-11' => __( 'Samut Prakan', 'stripe' ), + 'TH-74' => __( 'Samut Sakhon', 'stripe' ), + 'TH-75' => __( 'Samut Songkhram', 'stripe' ), + 'TH-19' => __( 'Saraburi', 'stripe' ), + 'TH-91' => __( 'Satun', 'stripe' ), + 'TH-17' => __( 'Sing Buri', 'stripe' ), + 'TH-33' => __( 'Sisaket', 'stripe' ), + 'TH-90' => __( 'Songkhla', 'stripe' ), + 'TH-64' => __( 'Sukhothai', 'stripe' ), + 'TH-72' => __( 'Suphan Buri', 'stripe' ), + 'TH-84' => __( 'Surat Thani', 'stripe' ), + 'TH-32' => __( 'Surin', 'stripe' ), + 'TH-63' => __( 'Tak', 'stripe' ), + 'TH-92' => __( 'Trang', 'stripe' ), + 'TH-23' => __( 'Trat', 'stripe' ), + 'TH-34' => __( 'Ubon Ratchathani', 'stripe' ), + 'TH-41' => __( 'Udon Thani', 'stripe' ), + 'TH-61' => __( 'Uthai Thani', 'stripe' ), + 'TH-53' => __( 'Uttaradit', 'stripe' ), + 'TH-95' => __( 'Yala', 'stripe' ), + 'TH-35' => __( 'Yasothon', 'stripe' ), + ), + 'TR' => array( // Turkish states. + 'TR01' => __( 'Adana', 'stripe' ), + 'TR02' => __( 'Adıyaman', 'stripe' ), + 'TR03' => __( 'Afyon', 'stripe' ), + 'TR04' => __( 'Ağrı', 'stripe' ), + 'TR05' => __( 'Amasya', 'stripe' ), + 'TR06' => __( 'Ankara', 'stripe' ), + 'TR07' => __( 'Antalya', 'stripe' ), + 'TR08' => __( 'Artvin', 'stripe' ), + 'TR09' => __( 'Aydın', 'stripe' ), + 'TR10' => __( 'Balıkesir', 'stripe' ), + 'TR11' => __( 'Bilecik', 'stripe' ), + 'TR12' => __( 'Bingöl', 'stripe' ), + 'TR13' => __( 'Bitlis', 'stripe' ), + 'TR14' => __( 'Bolu', 'stripe' ), + 'TR15' => __( 'Burdur', 'stripe' ), + 'TR16' => __( 'Bursa', 'stripe' ), + 'TR17' => __( 'Çanakkale', 'stripe' ), + 'TR18' => __( 'Çankırı', 'stripe' ), + 'TR19' => __( 'Çorum', 'stripe' ), + 'TR20' => __( 'Denizli', 'stripe' ), + 'TR21' => __( 'Diyarbakır', 'stripe' ), + 'TR22' => __( 'Edirne', 'stripe' ), + 'TR23' => __( 'Elazığ', 'stripe' ), + 'TR24' => __( 'Erzincan', 'stripe' ), + 'TR25' => __( 'Erzurum', 'stripe' ), + 'TR26' => __( 'Eskişehir', 'stripe' ), + 'TR27' => __( 'Gaziantep', 'stripe' ), + 'TR28' => __( 'Giresun', 'stripe' ), + 'TR29' => __( 'Gümüşhane', 'stripe' ), + 'TR30' => __( 'Hakkari', 'stripe' ), + 'TR31' => __( 'Hatay', 'stripe' ), + 'TR32' => __( 'Isparta', 'stripe' ), + 'TR33' => __( 'İçel', 'stripe' ), + 'TR34' => __( 'İstanbul', 'stripe' ), + 'TR35' => __( 'İzmir', 'stripe' ), + 'TR36' => __( 'Kars', 'stripe' ), + 'TR37' => __( 'Kastamonu', 'stripe' ), + 'TR38' => __( 'Kayseri', 'stripe' ), + 'TR39' => __( 'Kırklareli', 'stripe' ), + 'TR40' => __( 'Kırşehir', 'stripe' ), + 'TR41' => __( 'Kocaeli', 'stripe' ), + 'TR42' => __( 'Konya', 'stripe' ), + 'TR43' => __( 'Kütahya', 'stripe' ), + 'TR44' => __( 'Malatya', 'stripe' ), + 'TR45' => __( 'Manisa', 'stripe' ), + 'TR46' => __( 'Kahramanmaraş', 'stripe' ), + 'TR47' => __( 'Mardin', 'stripe' ), + 'TR48' => __( 'Muğla', 'stripe' ), + 'TR49' => __( 'Muş', 'stripe' ), + 'TR50' => __( 'Nevşehir', 'stripe' ), + 'TR51' => __( 'Niğde', 'stripe' ), + 'TR52' => __( 'Ordu', 'stripe' ), + 'TR53' => __( 'Rize', 'stripe' ), + 'TR54' => __( 'Sakarya', 'stripe' ), + 'TR55' => __( 'Samsun', 'stripe' ), + 'TR56' => __( 'Siirt', 'stripe' ), + 'TR57' => __( 'Sinop', 'stripe' ), + 'TR58' => __( 'Sivas', 'stripe' ), + 'TR59' => __( 'Tekirdağ', 'stripe' ), + 'TR60' => __( 'Tokat', 'stripe' ), + 'TR61' => __( 'Trabzon', 'stripe' ), + 'TR62' => __( 'Tunceli', 'stripe' ), + 'TR63' => __( 'Şanlıurfa', 'stripe' ), + 'TR64' => __( 'Uşak', 'stripe' ), + 'TR65' => __( 'Van', 'stripe' ), + 'TR66' => __( 'Yozgat', 'stripe' ), + 'TR67' => __( 'Zonguldak', 'stripe' ), + 'TR68' => __( 'Aksaray', 'stripe' ), + 'TR69' => __( 'Bayburt', 'stripe' ), + 'TR70' => __( 'Karaman', 'stripe' ), + 'TR71' => __( 'Kırıkkale', 'stripe' ), + 'TR72' => __( 'Batman', 'stripe' ), + 'TR73' => __( 'Şırnak', 'stripe' ), + 'TR74' => __( 'Bartın', 'stripe' ), + 'TR75' => __( 'Ardahan', 'stripe' ), + 'TR76' => __( 'Iğdır', 'stripe' ), + 'TR77' => __( 'Yalova', 'stripe' ), + 'TR78' => __( 'Karabük', 'stripe' ), + 'TR79' => __( 'Kilis', 'stripe' ), + 'TR80' => __( 'Osmaniye', 'stripe' ), + 'TR81' => __( 'Düzce', 'stripe' ), + ), + 'TZ' => array( // Tanzanian states. + 'TZ01' => __( 'Arusha', 'stripe' ), + 'TZ02' => __( 'Dar es Salaam', 'stripe' ), + 'TZ03' => __( 'Dodoma', 'stripe' ), + 'TZ04' => __( 'Iringa', 'stripe' ), + 'TZ05' => __( 'Kagera', 'stripe' ), + 'TZ06' => __( 'Pemba North', 'stripe' ), + 'TZ07' => __( 'Zanzibar North', 'stripe' ), + 'TZ08' => __( 'Kigoma', 'stripe' ), + 'TZ09' => __( 'Kilimanjaro', 'stripe' ), + 'TZ10' => __( 'Pemba South', 'stripe' ), + 'TZ11' => __( 'Zanzibar South', 'stripe' ), + 'TZ12' => __( 'Lindi', 'stripe' ), + 'TZ13' => __( 'Mara', 'stripe' ), + 'TZ14' => __( 'Mbeya', 'stripe' ), + 'TZ15' => __( 'Zanzibar West', 'stripe' ), + 'TZ16' => __( 'Morogoro', 'stripe' ), + 'TZ17' => __( 'Mtwara', 'stripe' ), + 'TZ18' => __( 'Mwanza', 'stripe' ), + 'TZ19' => __( 'Coast', 'stripe' ), + 'TZ20' => __( 'Rukwa', 'stripe' ), + 'TZ21' => __( 'Ruvuma', 'stripe' ), + 'TZ22' => __( 'Shinyanga', 'stripe' ), + 'TZ23' => __( 'Singida', 'stripe' ), + 'TZ24' => __( 'Tabora', 'stripe' ), + 'TZ25' => __( 'Tanga', 'stripe' ), + 'TZ26' => __( 'Manyara', 'stripe' ), + 'TZ27' => __( 'Geita', 'stripe' ), + 'TZ28' => __( 'Katavi', 'stripe' ), + 'TZ29' => __( 'Njombe', 'stripe' ), + 'TZ30' => __( 'Simiyu', 'stripe' ), + ), + 'LK' => array(), + 'RS' => array( // Serbian districts. + 'RS00' => _x( 'Belgrade', 'district', 'stripe' ), + 'RS14' => _x( 'Bor', 'district', 'stripe' ), + 'RS11' => _x( 'Braničevo', 'district', 'stripe' ), + 'RS02' => _x( 'Central Banat', 'district', 'stripe' ), + 'RS10' => _x( 'Danube', 'district', 'stripe' ), + 'RS23' => _x( 'Jablanica', 'district', 'stripe' ), + 'RS09' => _x( 'Kolubara', 'district', 'stripe' ), + 'RS08' => _x( 'Mačva', 'district', 'stripe' ), + 'RS17' => _x( 'Morava', 'district', 'stripe' ), + 'RS20' => _x( 'Nišava', 'district', 'stripe' ), + 'RS01' => _x( 'North Bačka', 'district', 'stripe' ), + 'RS03' => _x( 'North Banat', 'district', 'stripe' ), + 'RS24' => _x( 'Pčinja', 'district', 'stripe' ), + 'RS22' => _x( 'Pirot', 'district', 'stripe' ), + 'RS13' => _x( 'Pomoravlje', 'district', 'stripe' ), + 'RS19' => _x( 'Rasina', 'district', 'stripe' ), + 'RS18' => _x( 'Raška', 'district', 'stripe' ), + 'RS06' => _x( 'South Bačka', 'district', 'stripe' ), + 'RS04' => _x( 'South Banat', 'district', 'stripe' ), + 'RS07' => _x( 'Srem', 'district', 'stripe' ), + 'RS12' => _x( 'Šumadija', 'district', 'stripe' ), + 'RS21' => _x( 'Toplica', 'district', 'stripe' ), + 'RS05' => _x( 'West Bačka', 'district', 'stripe' ), + 'RS15' => _x( 'Zaječar', 'district', 'stripe' ), + 'RS16' => _x( 'Zlatibor', 'district', 'stripe' ), + 'RS25' => _x( 'Kosovo', 'district', 'stripe' ), + 'RS26' => _x( 'Peć', 'district', 'stripe' ), + 'RS27' => _x( 'Prizren', 'district', 'stripe' ), + 'RS28' => _x( 'Kosovska Mitrovica', 'district', 'stripe' ), + 'RS29' => _x( 'Kosovo-Pomoravlje', 'district', 'stripe' ), + 'RSKM' => _x( 'Kosovo-Metohija', 'district', 'stripe' ), + 'RSVO' => _x( 'Vojvodina', 'district', 'stripe' ), + ), + 'SE' => array(), + 'UA' => array( // Ukrainian oblasts. + 'VN' => __( 'Vinnytsia Oblast', 'stripe' ), + 'VL' => __( 'Volyn Oblast', 'stripe' ), + 'DP' => __( 'Dnipropetrovsk Oblast', 'stripe' ), + 'DT' => __( 'Donetsk Oblast', 'stripe' ), + 'ZT' => __( 'Zhytomyr Oblast', 'stripe' ), + 'ZK' => __( 'Zakarpattia Oblast', 'stripe' ), + 'ZP' => __( 'Zaporizhzhia Oblast', 'stripe' ), + 'IF' => __( 'Ivano-Frankivsk Oblast', 'stripe' ), + 'KV' => __( 'Kyiv Oblast', 'stripe' ), + 'KH' => __( 'Kirovohrad Oblast', 'stripe' ), + 'LH' => __( 'Luhansk Oblast', 'stripe' ), + 'LV' => __( 'Lviv Oblast', 'stripe' ), + 'MY' => __( 'Mykolaiv Oblast', 'stripe' ), + 'OD' => __( 'Odessa Oblast', 'stripe' ), + 'PL' => __( 'Poltava Oblast', 'stripe' ), + 'RV' => __( 'Rivne Oblast', 'stripe' ), + 'SM' => __( 'Sumy Oblast', 'stripe' ), + 'TP' => __( 'Ternopil Oblast', 'stripe' ), + 'KK' => __( 'Kharkiv Oblast', 'stripe' ), + 'KS' => __( 'Kherson Oblast', 'stripe' ), + 'KM' => __( 'Khmelnytskyi Oblast', 'stripe' ), + 'CK' => __( 'Cherkasy Oblast', 'stripe' ), + 'CH' => __( 'Chernihiv Oblast', 'stripe' ), + 'CV' => __( 'Chernivtsi Oblast', 'stripe' ), + ), + 'UG' => array( // Ugandan districts. + 'UG314' => __( 'Abim', 'stripe' ), + 'UG301' => __( 'Adjumani', 'stripe' ), + 'UG322' => __( 'Agago', 'stripe' ), + 'UG323' => __( 'Alebtong', 'stripe' ), + 'UG315' => __( 'Amolatar', 'stripe' ), + 'UG324' => __( 'Amudat', 'stripe' ), + 'UG216' => __( 'Amuria', 'stripe' ), + 'UG316' => __( 'Amuru', 'stripe' ), + 'UG302' => __( 'Apac', 'stripe' ), + 'UG303' => __( 'Arua', 'stripe' ), + 'UG217' => __( 'Budaka', 'stripe' ), + 'UG218' => __( 'Bududa', 'stripe' ), + 'UG201' => __( 'Bugiri', 'stripe' ), + 'UG235' => __( 'Bugweri', 'stripe' ), + 'UG420' => __( 'Buhweju', 'stripe' ), + 'UG117' => __( 'Buikwe', 'stripe' ), + 'UG219' => __( 'Bukedea', 'stripe' ), + 'UG118' => __( 'Bukomansimbi', 'stripe' ), + 'UG220' => __( 'Bukwa', 'stripe' ), + 'UG225' => __( 'Bulambuli', 'stripe' ), + 'UG416' => __( 'Buliisa', 'stripe' ), + 'UG401' => __( 'Bundibugyo', 'stripe' ), + 'UG430' => __( 'Bunyangabu', 'stripe' ), + 'UG402' => __( 'Bushenyi', 'stripe' ), + 'UG202' => __( 'Busia', 'stripe' ), + 'UG221' => __( 'Butaleja', 'stripe' ), + 'UG119' => __( 'Butambala', 'stripe' ), + 'UG233' => __( 'Butebo', 'stripe' ), + 'UG120' => __( 'Buvuma', 'stripe' ), + 'UG226' => __( 'Buyende', 'stripe' ), + 'UG317' => __( 'Dokolo', 'stripe' ), + 'UG121' => __( 'Gomba', 'stripe' ), + 'UG304' => __( 'Gulu', 'stripe' ), + 'UG403' => __( 'Hoima', 'stripe' ), + 'UG417' => __( 'Ibanda', 'stripe' ), + 'UG203' => __( 'Iganga', 'stripe' ), + 'UG418' => __( 'Isingiro', 'stripe' ), + 'UG204' => __( 'Jinja', 'stripe' ), + 'UG318' => __( 'Kaabong', 'stripe' ), + 'UG404' => __( 'Kabale', 'stripe' ), + 'UG405' => __( 'Kabarole', 'stripe' ), + 'UG213' => __( 'Kaberamaido', 'stripe' ), + 'UG427' => __( 'Kagadi', 'stripe' ), + 'UG428' => __( 'Kakumiro', 'stripe' ), + 'UG101' => __( 'Kalangala', 'stripe' ), + 'UG222' => __( 'Kaliro', 'stripe' ), + 'UG122' => __( 'Kalungu', 'stripe' ), + 'UG102' => __( 'Kampala', 'stripe' ), + 'UG205' => __( 'Kamuli', 'stripe' ), + 'UG413' => __( 'Kamwenge', 'stripe' ), + 'UG414' => __( 'Kanungu', 'stripe' ), + 'UG206' => __( 'Kapchorwa', 'stripe' ), + 'UG236' => __( 'Kapelebyong', 'stripe' ), + 'UG126' => __( 'Kasanda', 'stripe' ), + 'UG406' => __( 'Kasese', 'stripe' ), + 'UG207' => __( 'Katakwi', 'stripe' ), + 'UG112' => __( 'Kayunga', 'stripe' ), + 'UG407' => __( 'Kibaale', 'stripe' ), + 'UG103' => __( 'Kiboga', 'stripe' ), + 'UG227' => __( 'Kibuku', 'stripe' ), + 'UG432' => __( 'Kikuube', 'stripe' ), + 'UG419' => __( 'Kiruhura', 'stripe' ), + 'UG421' => __( 'Kiryandongo', 'stripe' ), + 'UG408' => __( 'Kisoro', 'stripe' ), + 'UG305' => __( 'Kitgum', 'stripe' ), + 'UG319' => __( 'Koboko', 'stripe' ), + 'UG325' => __( 'Kole', 'stripe' ), + 'UG306' => __( 'Kotido', 'stripe' ), + 'UG208' => __( 'Kumi', 'stripe' ), + 'UG333' => __( 'Kwania', 'stripe' ), + 'UG228' => __( 'Kween', 'stripe' ), + 'UG123' => __( 'Kyankwanzi', 'stripe' ), + 'UG422' => __( 'Kyegegwa', 'stripe' ), + 'UG415' => __( 'Kyenjojo', 'stripe' ), + 'UG125' => __( 'Kyotera', 'stripe' ), + 'UG326' => __( 'Lamwo', 'stripe' ), + 'UG307' => __( 'Lira', 'stripe' ), + 'UG229' => __( 'Luuka', 'stripe' ), + 'UG104' => __( 'Luwero', 'stripe' ), + 'UG124' => __( 'Lwengo', 'stripe' ), + 'UG114' => __( 'Lyantonde', 'stripe' ), + 'UG223' => __( 'Manafwa', 'stripe' ), + 'UG320' => __( 'Maracha', 'stripe' ), + 'UG105' => __( 'Masaka', 'stripe' ), + 'UG409' => __( 'Masindi', 'stripe' ), + 'UG214' => __( 'Mayuge', 'stripe' ), + 'UG209' => __( 'Mbale', 'stripe' ), + 'UG410' => __( 'Mbarara', 'stripe' ), + 'UG423' => __( 'Mitooma', 'stripe' ), + 'UG115' => __( 'Mityana', 'stripe' ), + 'UG308' => __( 'Moroto', 'stripe' ), + 'UG309' => __( 'Moyo', 'stripe' ), + 'UG106' => __( 'Mpigi', 'stripe' ), + 'UG107' => __( 'Mubende', 'stripe' ), + 'UG108' => __( 'Mukono', 'stripe' ), + 'UG334' => __( 'Nabilatuk', 'stripe' ), + 'UG311' => __( 'Nakapiripirit', 'stripe' ), + 'UG116' => __( 'Nakaseke', 'stripe' ), + 'UG109' => __( 'Nakasongola', 'stripe' ), + 'UG230' => __( 'Namayingo', 'stripe' ), + 'UG234' => __( 'Namisindwa', 'stripe' ), + 'UG224' => __( 'Namutumba', 'stripe' ), + 'UG327' => __( 'Napak', 'stripe' ), + 'UG310' => __( 'Nebbi', 'stripe' ), + 'UG231' => __( 'Ngora', 'stripe' ), + 'UG424' => __( 'Ntoroko', 'stripe' ), + 'UG411' => __( 'Ntungamo', 'stripe' ), + 'UG328' => __( 'Nwoya', 'stripe' ), + 'UG331' => __( 'Omoro', 'stripe' ), + 'UG329' => __( 'Otuke', 'stripe' ), + 'UG321' => __( 'Oyam', 'stripe' ), + 'UG312' => __( 'Pader', 'stripe' ), + 'UG332' => __( 'Pakwach', 'stripe' ), + 'UG210' => __( 'Pallisa', 'stripe' ), + 'UG110' => __( 'Rakai', 'stripe' ), + 'UG429' => __( 'Rubanda', 'stripe' ), + 'UG425' => __( 'Rubirizi', 'stripe' ), + 'UG431' => __( 'Rukiga', 'stripe' ), + 'UG412' => __( 'Rukungiri', 'stripe' ), + 'UG111' => __( 'Sembabule', 'stripe' ), + 'UG232' => __( 'Serere', 'stripe' ), + 'UG426' => __( 'Sheema', 'stripe' ), + 'UG215' => __( 'Sironko', 'stripe' ), + 'UG211' => __( 'Soroti', 'stripe' ), + 'UG212' => __( 'Tororo', 'stripe' ), + 'UG113' => __( 'Wakiso', 'stripe' ), + 'UG313' => __( 'Yumbe', 'stripe' ), + 'UG330' => __( 'Zombo', 'stripe' ), + ), + 'UM' => array( + '81' => __( 'Baker Island', 'stripe' ), + '84' => __( 'Howland Island', 'stripe' ), + '86' => __( 'Jarvis Island', 'stripe' ), + '67' => __( 'Johnston Atoll', 'stripe' ), + '89' => __( 'Kingman Reef', 'stripe' ), + '71' => __( 'Midway Atoll', 'stripe' ), + '76' => __( 'Navassa Island', 'stripe' ), + '95' => __( 'Palmyra Atoll', 'stripe' ), + '79' => __( 'Wake Island', 'stripe' ), + ), + 'US' => array( // U.S. states. + 'AL' => __( 'Alabama', 'stripe' ), + 'AK' => __( 'Alaska', 'stripe' ), + 'AZ' => __( 'Arizona', 'stripe' ), + 'AR' => __( 'Arkansas', 'stripe' ), + 'CA' => __( 'California', 'stripe' ), + 'CO' => __( 'Colorado', 'stripe' ), + 'CT' => __( 'Connecticut', 'stripe' ), + 'DE' => __( 'Delaware', 'stripe' ), + 'DC' => __( 'District Of Columbia', 'stripe' ), + 'FL' => __( 'Florida', 'stripe' ), + 'GA' => _x( 'Georgia', 'US state of Georgia', 'stripe' ), + 'HI' => __( 'Hawaii', 'stripe' ), + 'ID' => __( 'Idaho', 'stripe' ), + 'IL' => __( 'Illinois', 'stripe' ), + 'IN' => __( 'Indiana', 'stripe' ), + 'IA' => __( 'Iowa', 'stripe' ), + 'KS' => __( 'Kansas', 'stripe' ), + 'KY' => __( 'Kentucky', 'stripe' ), + 'LA' => __( 'Louisiana', 'stripe' ), + 'ME' => __( 'Maine', 'stripe' ), + 'MD' => __( 'Maryland', 'stripe' ), + 'MA' => __( 'Massachusetts', 'stripe' ), + 'MI' => __( 'Michigan', 'stripe' ), + 'MN' => __( 'Minnesota', 'stripe' ), + 'MS' => __( 'Mississippi', 'stripe' ), + 'MO' => __( 'Missouri', 'stripe' ), + 'MT' => __( 'Montana', 'stripe' ), + 'NE' => __( 'Nebraska', 'stripe' ), + 'NV' => __( 'Nevada', 'stripe' ), + 'NH' => __( 'New Hampshire', 'stripe' ), + 'NJ' => __( 'New Jersey', 'stripe' ), + 'NM' => __( 'New Mexico', 'stripe' ), + 'NY' => __( 'New York', 'stripe' ), + 'NC' => __( 'North Carolina', 'stripe' ), + 'ND' => __( 'North Dakota', 'stripe' ), + 'OH' => __( 'Ohio', 'stripe' ), + 'OK' => __( 'Oklahoma', 'stripe' ), + 'OR' => __( 'Oregon', 'stripe' ), + 'PA' => __( 'Pennsylvania', 'stripe' ), + 'RI' => __( 'Rhode Island', 'stripe' ), + 'SC' => __( 'South Carolina', 'stripe' ), + 'SD' => __( 'South Dakota', 'stripe' ), + 'TN' => __( 'Tennessee', 'stripe' ), + 'TX' => __( 'Texas', 'stripe' ), + 'UT' => __( 'Utah', 'stripe' ), + 'VT' => __( 'Vermont', 'stripe' ), + 'VA' => __( 'Virginia', 'stripe' ), + 'WA' => __( 'Washington', 'stripe' ), + 'WV' => __( 'West Virginia', 'stripe' ), + 'WI' => __( 'Wisconsin', 'stripe' ), + 'WY' => __( 'Wyoming', 'stripe' ), + 'AA' => __( 'Armed Forces (AA)', 'stripe' ), + 'AE' => __( 'Armed Forces (AE)', 'stripe' ), + 'AP' => __( 'Armed Forces (AP)', 'stripe' ), + ), + 'UY' => array( // Uruguayan states. + 'UY-AR' => __( 'Artigas', 'stripe' ), + 'UY-CA' => __( 'Canelones', 'stripe' ), + 'UY-CL' => __( 'Cerro Largo', 'stripe' ), + 'UY-CO' => __( 'Colonia', 'stripe' ), + 'UY-DU' => __( 'Durazno', 'stripe' ), + 'UY-FS' => __( 'Flores', 'stripe' ), + 'UY-FD' => __( 'Florida', 'stripe' ), + 'UY-LA' => __( 'Lavalleja', 'stripe' ), + 'UY-MA' => __( 'Maldonado', 'stripe' ), + 'UY-MO' => __( 'Montevideo', 'stripe' ), + 'UY-PA' => __( 'Paysandú', 'stripe' ), + 'UY-RN' => __( 'Río Negro', 'stripe' ), + 'UY-RV' => __( 'Rivera', 'stripe' ), + 'UY-RO' => __( 'Rocha', 'stripe' ), + 'UY-SA' => __( 'Salto', 'stripe' ), + 'UY-SJ' => __( 'San José', 'stripe' ), + 'UY-SO' => __( 'Soriano', 'stripe' ), + 'UY-TA' => __( 'Tacuarembó', 'stripe' ), + 'UY-TT' => __( 'Treinta y Tres', 'stripe' ), + ), + 'VE' => array( // Venezuelan states. + 'VE-A' => __( 'Capital', 'stripe' ), + 'VE-B' => __( 'Anzoátegui', 'stripe' ), + 'VE-C' => __( 'Apure', 'stripe' ), + 'VE-D' => __( 'Aragua', 'stripe' ), + 'VE-E' => __( 'Barinas', 'stripe' ), + 'VE-F' => __( 'Bolívar', 'stripe' ), + 'VE-G' => __( 'Carabobo', 'stripe' ), + 'VE-H' => __( 'Cojedes', 'stripe' ), + 'VE-I' => __( 'Falcón', 'stripe' ), + 'VE-J' => __( 'Guárico', 'stripe' ), + 'VE-K' => __( 'Lara', 'stripe' ), + 'VE-L' => __( 'Mérida', 'stripe' ), + 'VE-M' => __( 'Miranda', 'stripe' ), + 'VE-N' => __( 'Monagas', 'stripe' ), + 'VE-O' => __( 'Nueva Esparta', 'stripe' ), + 'VE-P' => __( 'Portuguesa', 'stripe' ), + 'VE-R' => __( 'Sucre', 'stripe' ), + 'VE-S' => __( 'Táchira', 'stripe' ), + 'VE-T' => __( 'Trujillo', 'stripe' ), + 'VE-U' => __( 'Yaracuy', 'stripe' ), + 'VE-V' => __( 'Zulia', 'stripe' ), + 'VE-W' => __( 'Federal Dependencies', 'stripe' ), + 'VE-X' => __( 'La Guaira (Vargas)', 'stripe' ), + 'VE-Y' => __( 'Delta Amacuro', 'stripe' ), + 'VE-Z' => __( 'Amazonas', 'stripe' ), + ), + 'VN' => array(), + 'YT' => array(), + 'ZA' => array( // South African states. + 'EC' => __( 'Eastern Cape', 'stripe' ), + 'FS' => __( 'Free State', 'stripe' ), + 'GP' => __( 'Gauteng', 'stripe' ), + 'KZN' => __( 'KwaZulu-Natal', 'stripe' ), + 'LP' => __( 'Limpopo', 'stripe' ), + 'MP' => __( 'Mpumalanga', 'stripe' ), + 'NC' => __( 'Northern Cape', 'stripe' ), + 'NW' => __( 'North West', 'stripe' ), + 'WC' => __( 'Western Cape', 'stripe' ), + ), + 'ZM' => array( // Zambian provinces. + 'ZM-01' => __( 'Western', 'stripe' ), + 'ZM-02' => __( 'Central', 'stripe' ), + 'ZM-03' => __( 'Eastern', 'stripe' ), + 'ZM-04' => __( 'Luapula', 'stripe' ), + 'ZM-05' => __( 'Northern', 'stripe' ), + 'ZM-06' => __( 'North-Western', 'stripe' ), + 'ZM-07' => __( 'Southern', 'stripe' ), + 'ZM-08' => __( 'Copperbelt', 'stripe' ), + 'ZM-09' => __( 'Lusaka', 'stripe' ), + 'ZM-10' => __( 'Muchinga', 'stripe' ), + ), +); diff --git a/includes/core/i18n/stripe.php b/includes/core/i18n/stripe.php index a225eccc..ee2cf03c 100644 --- a/includes/core/i18n/stripe.php +++ b/includes/core/i18n/stripe.php @@ -30,7 +30,7 @@ function get_stripe_countries() { 'BR' => __( 'Brazil', 'stripe' ), 'BG' => __( 'Bulgaria', 'stripe' ), 'CA' => __( 'Canada', 'stripe' ), - 'HR' => __( 'Croatia', 'stripe' ), + 'HR' => __( 'Croatia', 'stripe' ), 'CY' => __( 'Cyprus', 'stripe' ), 'CZ' => __( 'Czech Republic', 'stripe' ), 'DK' => __( 'Denmark', 'stripe' ), @@ -38,16 +38,16 @@ function get_stripe_countries() { 'FI' => __( 'Finland', 'stripe' ), 'FR' => __( 'France', 'stripe' ), 'DE' => __( 'Germany', 'stripe' ), - 'GI' => __( 'Gibraltar', 'stripe' ), + 'GI' => __( 'Gibraltar', 'stripe' ), 'GR' => __( 'Greece', 'stripe' ), 'HK' => __( 'Hong Kong', 'stripe' ), - 'HU' => __( 'Hungary', 'stripe' ), + 'HU' => __( 'Hungary', 'stripe' ), 'IN' => __( 'India', 'stripe' ), 'IE' => __( 'Ireland', 'stripe' ), 'IT' => __( 'Italy', 'stripe' ), 'JP' => __( 'Japan', 'stripe' ), 'LV' => __( 'Latvia', 'stripe' ), - 'LI' => __( 'Liechtenstein', 'stripe' ), + 'LI' => __( 'Liechtenstein', 'stripe' ), 'LT' => __( 'Lithuania', 'stripe' ), 'LU' => __( 'Luxembourg', 'stripe' ), 'MY' => __( 'Malaysia', 'stripe' ), @@ -65,6 +65,7 @@ function get_stripe_countries() { 'ES' => __( 'Spain', 'stripe' ), 'SE' => __( 'Sweden', 'stripe' ), 'CH' => __( 'Switzerland', 'stripe' ), + 'TH' => __( 'Thailand', 'stripe' ), 'AE' => __( 'United Arab Emirates', 'stripe' ), 'GB' => __( 'United Kingdom', 'stripe' ), 'US' => __( 'United States', 'stripe' ), diff --git a/includes/core/payments/class-stripe-api.php b/includes/core/payments/class-stripe-api.php index 9c6e8980..09611a93 100644 --- a/includes/core/payments/class-stripe-api.php +++ b/includes/core/payments/class-stripe-api.php @@ -159,11 +159,48 @@ public static function request( delete_transient( $cache_key ); } - return call_user_func( - array( '\SimplePay\Vendor\Stripe\\' . $class, $function ), - $id_or_args, - $args, - $opts - ); + // Special handling for submitting an order, which cannot use the legacy static handling. + // https://github.com/stripe/stripe-php#clientservice-patterns-vs-legacy-patterns + if ( 'Order' === $class ) { + $stripe = new \SimplePay\Vendor\Stripe\StripeClient( + array( + 'stripe_version' => SIMPLE_PAY_STRIPE_API_VERSION, + ) + ); + + switch ( $function ) { + case 'reopen': + return $stripe->orders->reopen( + $id_or_args, + array(), + $args + ); + + break; + case 'submit': + return $stripe->orders->submit( + $id_or_args, + $args, + $opts + ); + + break; + default: + return call_user_func( + array( '\SimplePay\Vendor\Stripe\\' . $class, $function ), + $id_or_args, + $args, + $opts + ); + } + + } else { + return call_user_func( + array( '\SimplePay\Vendor\Stripe\\' . $class, $function ), + $id_or_args, + $args, + $opts + ); + } } } diff --git a/includes/core/payments/customer.php b/includes/core/payments/customer.php index f3987fe5..cc762238 100644 --- a/includes/core/payments/customer.php +++ b/includes/core/payments/customer.php @@ -13,6 +13,7 @@ use SimplePay\Core\i18n; use SimplePay\Core\Legacy; use SimplePay\Core\API\Customers; +use SimplePay\Core\Utils; use Exception; @@ -159,6 +160,9 @@ function get_args_from_payment_form_request( $form, $form_data, $form_values ) { 'phone' => null, 'email' => null, 'metadata' => null, + 'tax' => array( + 'ip_address' => Utils\get_current_ip_address(), + ), ); $customer_args = wp_parse_args( $customer_args, $defaults ); diff --git a/includes/core/payments/payment-confirmation-template-tags.php b/includes/core/payments/payment-confirmation-template-tags.php index 9dd9eee1..ef6901fa 100644 --- a/includes/core/payments/payment-confirmation-template-tags.php +++ b/includes/core/payments/payment-confirmation-template-tags.php @@ -486,19 +486,11 @@ function charge_amount( $value, $payment_confirmation_data ) { return $value; } - $charges = current( $payment_confirmation_data['paymentintents'] )->charges; - - // Do nothing if there are no charges available in the PaymentIntent. - if ( empty( $charges ) ) { - return $value; - } - - // Assume and use the first charge in the list. - $first_charge = current( $charges->data ); + $paymentintent = current( $payment_confirmation_data['paymentintents'] ); $value = simpay_format_currency( - $first_charge->amount, - $first_charge->currency + $paymentintent->amount, + $paymentintent->currency ); return esc_html( $value ); diff --git a/includes/core/payments/paymentintent.php b/includes/core/payments/paymentintent.php index 369ff172..089af872 100644 --- a/includes/core/payments/paymentintent.php +++ b/includes/core/payments/paymentintent.php @@ -266,7 +266,7 @@ function get_args_from_payment_form_request( * @param SimplePay\Core\Abstracts\Form $form Form instance. * @param array $form_data Form data generated by the client. * @param array $form_values Values of named fields in the Payment Porm. - * @param int $customer_id Stripe Customer ID. + * @param string|null $customer_id Stripe Customer ID. * @param \SimplePay\Core\PaymentForm\PriceOption $price Price option. * @return array */ @@ -319,7 +319,11 @@ function get_payment_args_from_form_request( $unit_amount = $unit_amount * $quantity; // Calculate coupon discount. - if ( isset( $form_data['coupon'] ) && false !== $form_data['coupon'] ) { + if ( + isset( $form_data['coupon'] ) && + false !== $form_data['coupon'] && + null !== $customer_id + ) { // Validate the coupon by ensuring it is attached to the Customer. $customer = API\Customers\retrieve( $customer_id, @@ -341,7 +345,12 @@ function get_payment_args_from_form_request( } // Add taxes if available. Done in Lite to avoid introducing a filter. - if ( function_exists( 'simpay_get_payment_form_tax_rates' ) ) { + $tax_status = get_post_meta( $form->id, '_tax_status', true ); + + if ( + function_exists( 'simpay_get_payment_form_tax_rates' ) && + 'fixed-global' === $tax_status + ) { // Legacy tax percentage. if ( has_filter( 'simpay_form_' . $form->id . '_tax_percent' ) ) { @@ -404,51 +413,3 @@ function( $tax, $tax_rate ) use ( $post_inclusive_unit_amount ) { 'currency' => $currency, ); } - -/** - * Sets the customer's default payment method to the card used to make the payment. - * - * Only applies to card payments made on-site. This is to maintain backwards compatibility - * with previous versions that force-set the default payment method on customer creation. - * - * @since 4.4.4 - * - * @param \SimplePay\Vendor\Stripe\Event $event Webhook event. - * @param \SimplePay\Vendor\Stripe\PaymentIntent $paymentintent PaymentIntent. - * @return void - */ -function set_card_default_payment_method( $event, $payment_intent ) { - $form_id = isset( $payment_intent->metadata->simpay_form_id ) - ? $payment_intent->metadata->simpay_form_id - : 0; - $form = simpay_get_form( $form_id ); - - if ( false === $form ) { - return; - } - - $pm_types = $payment_intent->payment_method_types; - - if ( - 'stripe_checkout' === $form->get_display_type() || - ! in_array( 'card', $pm_types, true ) - ) { - return; - } - - API\Customers\update( - $payment_intent->customer->id, - array( - 'invoice_settings' => array( - 'default_payment_method' => $payment_intent->payment_method, - ), - ), - $form->get_api_request_args() - ); -} -add_action( - 'simpay_webhook_payment_intent_succeeded', - __NAMESPACE__ . '\\set_card_default_payment_method', - 5, - 2 -); diff --git a/includes/core/post-types/simple-pay/actions.php b/includes/core/post-types/simple-pay/actions.php index 8d9889cc..5d17434b 100644 --- a/includes/core/post-types/simple-pay/actions.php +++ b/includes/core/post-types/simple-pay/actions.php @@ -240,6 +240,14 @@ function save_product( $post_id, $post, $form ) { ); } + // Tax code for automatic tax calculation. + $tax_status = get_post_meta( $form->id, '_tax_status', true ); + + if ( 'automatic' === $tax_status ) { + $tax_code = get_post_meta( $form->id, '_tax_code', true ); + $product_args['tax_code'] = $tax_code; + } + try { if ( empty( $form_product ) ) { if ( ! empty( $description ) ) { @@ -498,6 +506,38 @@ function save_prices( $post_id, $post, $form ) { if ( simpay_payment_form_prices_is_defined_price( $price['id'] ) ) { $price_args['id'] = $price['id']; + // Update tax_behavior if not previously set, and using automatic taxes. + $tax_status = get_post_meta( $form->id, '_tax_status', true ); + + if ( 'automatic' === $tax_status ) { + try { + $existing_price = API\Prices\retrieve( + $price_args['id'], + $form->get_api_request_args() + ); + + if ( 'unspecified' === $existing_price->tax_behavior ) { + $tax_behavior = get_post_meta( + $form->id, + '_tax_behavior', + true + ); + + if ( ! empty( $tax_behavior ) ) { + API\Prices\update( + $price_args['id'], + array( + 'tax_behavior' => $tax_behavior, + ), + $form->get_api_request_args() + ); + } + } + } catch ( Exception $e ) { + // Do nothing, it can't be changed if already set. + } + } + // Create a new Price. } else { $stripe_price_args = array( @@ -513,6 +553,20 @@ function save_prices( $post_id, $post, $form ) { ); } + $tax_status = get_post_meta( $form->id, '_tax_status', true ); + + if ( 'automatic' === $tax_status ) { + $tax_behavior = get_post_meta( + $form->id, + '_tax_behavior', + true + ); + + if ( ! empty( $tax_behavior ) ) { + $stripe_price_args['tax_behavior'] = $tax_behavior; + } + } + try { $stripe_price = API\Prices\create( $stripe_price_args, diff --git a/includes/core/post-types/simple-pay/edit-form-payment-options.php b/includes/core/post-types/simple-pay/edit-form-payment-options.php index c44e925c..49725bb5 100644 --- a/includes/core/post-types/simple-pay/edit-form-payment-options.php +++ b/includes/core/post-types/simple-pay/edit-form-payment-options.php @@ -742,64 +742,92 @@ class="simpay-panel-field-payment-method__help" /** * Adds "Tax Rates" upgrade placeholder setting. * - * @since 4.4.0 + * @since 4.6.0 * * @return void */ -function __add_tax_rates_upsell() { - if ( class_exists( '\SimplePay\Pro\Lite_Helper', false ) ) { - return; - } +function __unstable_add_tax_upsell() { + $upgrade_fixed_title = esc_html__( + 'Unlock "Fixed Rate" Tax Calculation', + 'stripe' + ); + + $upgrade_fixed_description = esc_html__( + 'We\'re sorry, collecting fixed rate taxes is not available in WP Simple Pay Lite. Please upgrade to WP Simple Pay Pro to unlock this and other awesome features.', + 'stripe' + ); + + $upgrade_fixed_url = simpay_pro_upgrade_url( + 'form-tax-settings', + 'Fixed Rate Taxes' + ); + + $upgrade_fixed_purchased_url = simpay_docs_link( + 'Fixed Rate Taxes (already purchased)', + 'upgrading-wp-simple-pay-lite-to-pro', + 'form-tax-settings', + true + ); + + $upgrade_automatic_title = esc_html__( + 'Unlock Automatically Calculated Tax Amounts', + 'stripe' + ); + + $upgrade_automatic_description = esc_html__( + 'We\'re sorry, automatically calculating and collecting taxes is not available in WP Simple Pay Lite. Please upgrade to WP Simple Pay Pro to unlock this and other awesome features.', + 'stripe' + ); + + $upgrade_automatic_url = simpay_pro_upgrade_url( + 'form-tax-settings', + 'Automatic Rate Taxes' + ); + + $upgrade_automatic_purchased_url = simpay_docs_link( + 'Automatic Rate Taxes (already purchased)', + 'upgrading-wp-simple-pay-lite-to-pro', + 'form-tax-settings', + true + ); ?>
- - %s - ', - __( 'Disabled', 'stripe' ) - ), - array( - 'span' => array( - 'class' => true, - ), - ) - ); - - echo wp_kses( - sprintf( - /* translators: %1$s Opening anchor tag, do not translate. %2$s Closing anchor tag, do not translate. */ - __( - '%1$sUpgrade to WP Simple Pay Pro%2$s to collect taxes or additional fees on payments.', - 'stripe' - ), - '', - '' - ), - array( - 'a' => array( - 'href' => true, - 'target' => true, - 'rel' => true, - ), - 'span' => array( - 'class' => true, - ), - ) - ); - ?> +
@@ -808,6 +836,6 @@ function __add_tax_rates_upsell() { } add_action( 'simpay_form_settings_meta_payment_options_panel', - __NAMESPACE__ . '\\__add_tax_rates_upsell', + __NAMESPACE__ . '\\__unstable_add_tax_upsell', 10.5 ); diff --git a/includes/core/post-types/simple-pay/edit-form.php b/includes/core/post-types/simple-pay/edit-form.php index a8114164..3f6b6ff2 100644 --- a/includes/core/post-types/simple-pay/edit-form.php +++ b/includes/core/post-types/simple-pay/edit-form.php @@ -891,10 +891,10 @@ function __unstable_add_recaptcha() { - + id, + 'order_preview' + ) + ); + + if ( false === $valid ) { + throw new \Exception( __( 'Invalid reCAPTCHA. Please try again.', 'stripe' ) ); + } +} +add_action( + 'simpay_before_order_preview_from_payment_form_request', + __NAMESPACE__ . '\\validate_recaptcha_order_preview', + 10, + 2 +); + +/** + * Validates reCAPTCHA before Order submission. + * + * @since 4.6.0 + * + * @param \WP_REST_Request $request Incoming REST API request data. + * @param SimplePay\Core\Abstracts\Form $form Form instance. + * @throws \Exception If reCAPTCHA cannot be validated. + */ +function validate_recaptcha_order_submit( $request, $form ) { + // Do nothing if no keys set. + if ( ! has_keys() ) { + return; + } + + $recaptcha_token = isset( $request['captcha'], $request['captcha']['recaptcha'] ) + ? sanitize_text_field( $request['captcha']['recaptcha'] ) + : false; + + // Ensure a token exists. + if ( false === $recaptcha_token ) { + throw new \Exception( __( 'Invalid reCAPTCHA. Please try again.', 'stripe' ) ); + } + + // Validate token. + $valid = validate_recaptcha( + $recaptcha_token, + sprintf( + 'simple_pay_form_%s_%s', + $form->id, + 'order_submit' + ) + ); + + if ( false === $valid ) { + throw new \Exception( __( 'Invalid reCAPTCHA. Please try again.', 'stripe' ) ); + } +} +add_action( + 'simpay_before_order_submit_from_payment_form_request', + __NAMESPACE__ . '\\validate_recaptcha_order_submit', + 10, + 2 +); diff --git a/includes/core/recaptcha/settings.php b/includes/core/recaptcha/settings.php index b9b705b5..1a3740f5 100644 --- a/includes/core/recaptcha/settings.php +++ b/includes/core/recaptcha/settings.php @@ -34,7 +34,11 @@ function register_settings_subsection( $subsections ) { array( 'id' => 'recaptcha', 'section' => 'general', - 'label' => esc_html_x( 'reCAPTCHA', 'settings subsection label', 'stripe' ), + 'label' => esc_html_x( + '🛡️ Anti-Spam', + 'settings subsection label', + 'stripe' + ), 'priority' => 30, ) ) @@ -60,7 +64,11 @@ function register_settings( $settings ) { 'id' => 'recaptcha_setup', 'section' => 'general', 'subsection' => 'recaptcha', - 'label' => esc_html_x( 'Setup', 'recaptcha setup setting label', 'stripe' ), + 'label' => esc_html_x( + 'Google reCAPTCHA v3', + 'recaptcha setup setting label', + 'stripe' + ), 'output' => __NAMESPACE__ . '\\setup_description', 'priority' => 10, ) @@ -74,7 +82,11 @@ function register_settings( $settings ) { 'id' => 'recaptcha_site_key', 'section' => 'general', 'subsection' => 'recaptcha', - 'label' => esc_html_x( 'Site Key', 'recaptcha setting label', 'stripe' ), + 'label' => esc_html_x( + 'Site Key', + 'recaptcha setting label', + 'stripe' + ), 'value' => simpay_get_setting( 'recaptcha_site_key', '' ), 'classes' => array( 'regular-text', @@ -94,7 +106,11 @@ function register_settings( $settings ) { 'id' => 'recaptcha_secret_key', 'section' => 'general', 'subsection' => 'recaptcha', - 'label' => esc_html_x( 'Secret Key', 'recaptcha setting label', 'stripe' ), + 'label' => esc_html_x( + 'Secret Key', + 'recaptcha setting label', + 'stripe' + ), 'value' => simpay_get_setting( 'recaptcha_secret_key', '' ), 'classes' => array( 'regular-text', @@ -161,7 +177,7 @@ function setup_description() { echo wp_kses_post( sprintf( /* translators: %1$s Opening anchor tag, do not translate. %2$s Closing anchor tag, do not translate. */ - __( 'reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease. To enable reCAPTCHA %1$sregister your site with Google%2$s with reCAPTCHA v3 to retrieve the necessary credentials.', 'stripe' ), + __( 'Google reCAPTCHA is a free anti-spam service from Google which helps to protect your website from spam and abuse while letting real people pass through with ease. To enable reCAPTCHA %1$sregister your site with Google%2$s with reCAPTCHA v3 to retrieve the necessary credentials.', 'stripe' ), '
', Utils\get_external_link_markup() . '' ) @@ -174,7 +190,7 @@ function setup_description() {

diff --git a/includes/core/rest-api/class-controller.php b/includes/core/rest-api/class-controller.php index 2fed1f46..1e97a684 100644 --- a/includes/core/rest-api/class-controller.php +++ b/includes/core/rest-api/class-controller.php @@ -76,6 +76,45 @@ protected function permission_checks( $checks, $request ) { return true; } + /** + * Ensures the Stripe cookie has been set by stripe.js. + * + * @since 4.6.0 + * @param \WP_REST_Request $request REST API request data. + * @return \WP_Error|true Error if the rate limit has been exceeded. + */ + protected function check_stripe_cookie( $request ) { + $check_stripe_cookie = is_ssl(); + + /** + * Determines if the Stripe __stripe_sid cookie is required to proceed. + * + * @since 4.6.0 + * + * @param bool $check_stripe_cookie Whether to check for the __stripe_sid cookie. + */ + $check_stripe_cookie = apply_filters( + 'simpay_rest_api_check_stripe_cookie', + $check_stripe_cookie + ); + + if ( + true === $check_stripe_cookie && + ! isset( $_COOKIE['__stripe_sid'] ) + ) { + return new \WP_Error( + 'rest_forbidden', + __( + 'Invalid request. Please refresh the page and try again.', + 'stripe' + ), + array( + 'status' => rest_authorization_required_code(), + ) + ); + } + } + /** * Determines if the REST API request is valid based on the current rate limit. * @@ -199,7 +238,13 @@ protected function check_required_fields( $request ) { $meta_key = $field['metadata']; } - if ( empty( $form_values['simpay_field'][ $meta_key ] ) ) { + if ( ! isset( $form_values['simpay_field'][ $meta_key ] ) ) { + return $invalid_request; + } + + $value = trim( $form_values['simpay_field'][ $meta_key ] ); + + if ( empty( $value ) ) { return $invalid_request; } } @@ -216,7 +261,15 @@ protected function check_required_fields( $request ) { ); foreach ( $address_parts as $address_part ) { - if ( empty( $form_values[ 'simpay_billing_address_' . $address_part ] ) ) { + if ( ! isset( $form_values[ 'simpay_billing_address_' . $address_part ] ) ) { + return $invalid_request; + } + + $value = trim( + $form_values[ 'simpay_billing_address_' . $address_part ] + ); + + if ( empty( $value ) ) { return $invalid_request; } } @@ -224,19 +277,36 @@ protected function check_required_fields( $request ) { break; case 'tax_id': if ( - empty( $form_values['simpay_tax_id'] ) || - empty( $form_values['simpay_tax_id_type'] ) + ! isset( $form_values['simpay_tax_id'] ) || + ! isset( $form_values['simpay_tax_id_type'] ) ) { return $invalid_request; } + $tax_id = trim( $form_values['simpay_tax_id'] ); + $tax_type = trim( $form_values['simpay_tax_id_type'] ); + + if ( empty( $tax_id ) || empty( $tax_type ) ) { + return $invalid_request; + } + break; case 'customer_name': case 'telephone': case 'email': - if ( empty( $form_values[ 'simpay_' . $custom_field_type ] ) ) { + if ( ! isset( $form_values[ 'simpay_' . $custom_field_type ] ) ) { return $invalid_request; } + + $value = trim( + $form_values[ 'simpay_' . $custom_field_type ] + ); + + if ( empty( $value ) ) { + return $invalid_request; + } + + break; } } } diff --git a/includes/core/rest-api/v2/class-checkout-session-controller.php b/includes/core/rest-api/v2/class-checkout-session-controller.php index 5cae23ef..3448678d 100644 --- a/includes/core/rest-api/v2/class-checkout-session-controller.php +++ b/includes/core/rest-api/v2/class-checkout-session-controller.php @@ -71,6 +71,7 @@ public function register_routes() { */ public function create_item_permissions_check( $request ) { $checks = array( + 'stripe_cookie', 'rate_limit', 'form_nonce', 'required_fields', @@ -97,6 +98,11 @@ public function create_item_permissions_check( $request ) { */ public function create_item( $request ) { try { + // Payment Method type. + $payment_method_type = isset( $request['payment_method_type'] ) + ? sanitize_text_field( $request['payment_method_type'] ) + : false; + // Gather customer information. $customer_id = isset( $request['customer_id'] ) ? $request['customer_id'] : ''; @@ -121,7 +127,17 @@ public function create_item( $request ) { // Handle legacy form processing. Legacy\Hooks\simpay_process_form( $form, $form_data, $form_values, $customer_id ); - $session_args = $this->get_args_from_payment_form_request( $form, $form_data, $form_values, $customer_id ); + $session_args = $this->get_args_from_payment_form_request( + $form, + $form_data, + array_merge( + $form_values, + array( + 'payment_method_type' => $payment_method_type, + ) + ), + $customer_id + ); /** * Allows processing before a Checkout\Session is created from a payment form request. @@ -253,8 +269,15 @@ function get_args_from_payment_form_request( $session_args['success_url'] = esc_url_raw( $form->payment_success_page ); // Ensure a valid base URL exists. - if ( empty( $session_args['success_url'] ) ) { - $session_args['success_url'] = esc_url_raw( home_url() ); + if ( ! wp_http_validate_url( $session_args['success_url'] ) ) { + $url = add_query_arg( + array( + 'form_id' => $form->id, + ), + esc_url_raw( home_url() ) + ); + + $session_args['success_url'] = $url; } // Avoid escaping the {CHECKOUT_SESSION_ID} tag. @@ -324,6 +347,13 @@ function get_args_from_payment_form_request( 'product' => $price->product_id, ); + // Tax behavior. + $tax_behavior = get_post_meta( $form->id, '_tax_behavior', true ); + + if ( ! empty( $tax_behavior ) && 'unspecified' !== $tax_behavior ) { + $price_data['tax_behavior'] = $tax_behavior; + } + $item['price_data'] = $price_data; // Defined Price. @@ -414,8 +444,18 @@ function get_args_from_payment_form_request( // Remove unsupported parameters for Checkout. unset( $payment_intent_data['currency'] ); unset( $payment_intent_data['amount'] ); + unset( $payment_intent_data['amount'] ); + + // Payment Method types are only added to the PaymentIntent in Pro. + if ( isset( $payment_intent_data['payment_method_types'] ) ) { + $payment_method_types = $payment_intent_data['payment_method_types']; + unset( $payment_intent_data['payment_method_types'] ); + } else { + $payment_method_types = array( 'card' ); + } - $session_args['payment_intent_data'] = $payment_intent_data; + $session_args['payment_intent_data'] = $payment_intent_data; + $session_args['payment_method_types'] = $payment_method_types; /** * Filters arguments used to create a Checkout Session from a payment form request. diff --git a/includes/core/rest-api/v2/class-customer-controller.php b/includes/core/rest-api/v2/class-customer-controller.php index 38a65294..7f81ddd3 100644 --- a/includes/core/rest-api/v2/class-customer-controller.php +++ b/includes/core/rest-api/v2/class-customer-controller.php @@ -76,6 +76,7 @@ public function register_routes() { */ public function create_item_permissions_check( $request ) { $checks = array( + 'stripe_cookie', 'rate_limit', 'form_nonce', 'required_fields', @@ -162,10 +163,32 @@ public function create_item( $request ) { $form_values ); - $customer = API\Customers\create( - $customer_args, - $form->get_api_request_args() - ); + $object_id = ! empty( $request['object_id'] ) + ? sanitize_text_field( $request['object_id'] ) + : false; + + if ( false === $object_id ) { + $customer = API\Customers\create( + $customer_args, + $form->get_api_request_args() + ); + + add_filter( 'nonce_life', 'simpay_nonce_life_2_min' ); + + $nonce = wp_create_nonce( + 'simpay_payment_form_customer_' . $customer->id + ); + + remove_filter( 'nonce_life', 'simpay_nonce_life_2_min' ); + } else { + $customer = API\Customers\update( + $object_id, + $customer_args, + $form->get_api_request_args() + ); + + $nonce = ''; + } /** * Allow further processing after a Customer is created from a posted form. @@ -185,14 +208,6 @@ public function create_item( $request ) { $form_values ); - add_filter( 'nonce_life', 'simpay_nonce_life_2_min' ); - - $nonce = wp_create_nonce( - 'simpay_payment_form_customer_' . $customer->id - ); - - remove_filter( 'nonce_life', 'simpay_nonce_life_2_min' ); - return new \WP_REST_Response( array( 'customer' => $customer, diff --git a/includes/core/rest-api/v2/class-paymentintent-controller.php b/includes/core/rest-api/v2/class-paymentintent-controller.php index 8cc5d771..07f9c377 100644 --- a/includes/core/rest-api/v2/class-paymentintent-controller.php +++ b/includes/core/rest-api/v2/class-paymentintent-controller.php @@ -70,6 +70,7 @@ public function register_routes() { */ public function create_item_permissions_check( $request ) { $checks = array( + 'stripe_cookie', 'rate_limit', 'form_nonce', 'required_fields', @@ -99,8 +100,8 @@ public function create_item( $request ) { try { // Payment Method type. $payment_method_type = isset( $request['payment_method_type'] ) - ? $request['payment_method_type'] - : 'card'; + ? sanitize_text_field( $request['payment_method_type'] ) + : false; // Gather customer information. $customer_id = isset( $request['customer_id'] ) @@ -143,15 +144,19 @@ public function create_item( $request ) { Payments\PaymentIntent\get_args_from_payment_form_request( $form, $form_data, - $form_values, + array_merge( + array( + 'payment_method_type' => $payment_method_type, + ), + $form_values + ), $customer_id ), array( - 'customer' => $customer_id, - 'expand' => array( + 'customer' => $customer_id, + 'expand' => array( 'customer', ), - 'payment_method_types' => array( $payment_method_type ), ) ); diff --git a/includes/core/utils/class-rate-limiting.php b/includes/core/utils/class-rate-limiting.php index 4ac4bed2..b320f1ba 100644 --- a/includes/core/utils/class-rate-limiting.php +++ b/includes/core/utils/class-rate-limiting.php @@ -307,9 +307,20 @@ public function rate_limiting_enabled() { * @return string */ public function get_rate_limit_id() { - return isset( $_COOKIE['__stripe_mid'] ) + $id = isset( $_COOKIE['__stripe_mid'] ) ? sanitize_text_field( $_COOKIE['__stripe_mid'] ) : get_current_ip_address(); + + /** + * Filters the rate limiting tracking ID. + * + * @since 4.6.0 + * + * @param string $id The rate limiting tracking ID. + */ + $id = apply_filters( 'simpay_rate_limiting_id', $id ); + + return $id; } /** diff --git a/lib/Stripe/CHANGELOG.md b/lib/Stripe/CHANGELOG.md index b2f7a257..62308ec5 100644 --- a/lib/Stripe/CHANGELOG.md +++ b/lib/Stripe/CHANGELOG.md @@ -1,5 +1,106 @@ # Changelog +## 9.0.0 - 2022-08-02 + +Breaking changes that arose during code generation of the library that we postponed for the next major version. For changes to the SDK, read more detailed description at https://github.com/stripe/stripe-php/wiki/Migration-guide-for-v9. For changes to the Stripe products, read more at https://stripe.com/docs/upgrades#2022-08-01. + +"⚠️" symbol highlights breaking changes. + +* [#1344](https://github.com/stripe/stripe-php/pull/1344) API Updates +* [#1337](https://github.com/stripe/stripe-php/pull/1337) API Updates +* [#1273](https://github.com/stripe/stripe-php/pull/1273) Add some PHPDoc return types and fixes +* [#1341](https://github.com/stripe/stripe-php/pull/1341) Next major release changes + +### Added +* Add `alternate_statement_descriptors`, `authorization_code`, and `level3` properties to `Charge` resource. +* Add `previewLines` method to `CreditNote` resource. +* Add `transfer_data` property to `Subscription` resource. +* Add `SOURCE_TYPE_FPX` constant to `Transfer` resource. +* Add new error code constants to `ErrorObject`. +* Add support for `shipping_cost` and `shipping_details` on `Checkout.Session` + +### ⚠️ Changed +* Updated certificate bundle ([#1314](https://github.com/stripe/stripe-php/pull/1314)) +* Add `params` parameter to `close` method in `Dispute` resource. + +### ⚠️ Removed +* Remove deprecated `AlipayAccount`, `BitcoinReceiver`, `BitcoinTransaction`, `Recipient`, `RecipientTransfer`, and `ThreeDSecure` resources. +* Remove `CAPABILITY_CARD_PAYMENTS`, `CAPABILITY_LEGACY_PAYMENTS`, `CAPABILITY_PLATFORM_PAYMENTS`, `CAPABILITY_TRANSFERS`, `CAPABILITY_STATUS_ACTIVE`, `CAPABILITY_STATUS_INACTIVE`, and `CAPABILITY_STATUS_PENDING` constants from `Account` resource. Please use up-to-date values from https://stripe.com/docs/connect/account-capabilities. +* Remove `AssociatedObjects` array property from `EphemeralKey` resource. The field was undocumented and unsupported. +* Remove `details` method from `Card` resource. The endpoint was deprecated and no longer exists. +* Remove `recipient` property from `Card` resource. The property was deprecated. +* Remove ability to list `Card` resources for a particular `Recipient`. +* Remove `sources` property from `Card` resource. The property was deprecated. +* Remove `FAILURE_REASON` constant from `Refund` resource. The value was deprecated. +* Remove `Recipient` resource. The resource was deprecated. +* Remove `OrderItem` resource. The resource was deprecated. +* Remove `all` method from `LineItem`. +* Remove `cancel` method from `Transfer` and `TransferService`. This method is deprecated. +* Remove `allTransactions` method from `SourceService` service. Please use `allSourceTransactions` method instead. +* Remove `persons` method from `Account` resource. Please use `allPersons` method instead. +* Remove `sourceTransactions` method from `Source` resource. Please use `allSourceTransactions` method instead. +* Remove `usageRecordSummaries` method from `SubscriptionItem` resource. Please use `allUsageRecordSummaries` method instead. +* Remove `SOURCE_TYPE_ALIPAY_ACCOUNT` and `SOURCE_TYPE_FINANCING` constants from `Transfer` resource. The values were deprecated and are no longer in use. +* Remove deprecated error code constants from `ErrorObject`: `CODE_ACCOUNT_ALREADY_EXISTS`, `CODE_ORDER_CREATION_FAILED`, `CODE_ORDER_REQUIRED_SETTINGS`, `CODE_ORDER_STATUS_INVALID`, `CODE_ORDER_UPSTREAM_TIMEOUT`, and `CODE_UPSTREAM_ORDER_CREATION_FAILED`. +* Remove deprecated event constants from `Webhook`: `ISSUER_FRAUD_RECORD_CREATED`, ` ORDER_PAYMENT_FAILED`, `ORDER_PAYMENT_SUCCEEDED`, `ORDER_UPDATED`, `ORDER_RETURN_CREATED`, `PAYMENT_METHOD_CARD_AUTOMATICALLY_UPDATED`, `PING`, `PROMOTION_CODE_DELETED`, and `TREASURY_RECEIVED_CREDIT_REVERSED`. The events are deprecated and no longer sent by Stripe. + +## 8.12.0 - 2022-07-25 +* [#1332](https://github.com/stripe/stripe-php/pull/1332) API Updates + * Add support for `default_currency` and `invoice_credit_balance` on `Customer` + + +## 8.11.0 - 2022-07-18 +* [#1324](https://github.com/stripe/stripe-php/pull/1324) API Updates + * Add support for new value `blik` on enum `PaymentLink.payment_method_types[]` + * Add support for `blik` on `PaymentMethod` + * Add support for new value `blik` on enum `PaymentMethod.type` + * Add `Invoice.upcomingLines` method. + * Add `SourceService.allSourceTransactions` method. +* [#1322](https://github.com/stripe/stripe-php/pull/1322) API Updates + * Change type of `source_type` on `Transfer` from nullable string to string (comment-only change) + +## 8.10.0 - 2022-07-07 +* [#1319](https://github.com/stripe/stripe-php/pull/1319) API Updates + * Add support for `currency_options` on `Coupon` and `Price` + * Add support for `currency` on `Subscription` +* [#1318](https://github.com/stripe/stripe-php/pull/1318) API Updates + * Add support for new values financial_connections.account.created, financial_connections.account.deactivated, financial_connections.account.disconnected, financial_connections.account.reactivated, and financial_connections.account.refreshed_balance on `Event`. + +## 8.9.0 - 2022-06-29 +* [#1316](https://github.com/stripe/stripe-php/pull/1316) API Updates + * Add support for `deliver_card`, `fail_card`, `return_card`, and `ship_card` test helper methods on resource `Issuing.Card` + * Add support for `subtotal_excluding_tax` on `CreditNote` and `Invoice` + * Add support for `amount_excluding_tax` and `unit_amount_excluding_tax` on `CreditNoteLineItem` and `InvoiceLineItem` + * Add support for `total_excluding_tax` on `Invoice` + * Change type of `PaymentLink.payment_method_types[]` from `literal('card')` to `enum` + * Add support for `promptpay` on `PaymentMethod` + * Add support for new value `promptpay` on enum `PaymentMethod.type` + * Add support for `hosted_regulatory_receipt_url` and `reversal_details` on `Treasury.ReceivedCredit` and `Treasury.ReceivedDebit` + +## 8.8.0 - 2022-06-23 +* [#1302](https://github.com/stripe/stripe-php/pull/1302) API Updates + * Add support for `custom_unit_amount` on `Price` +* [#1301](https://github.com/stripe/stripe-php/pull/1301) API Updates + + Documentation updates. + +## 8.7.0 - 2022-06-17 +* [#1306](https://github.com/stripe/stripe-php/pull/1306) API Updates + * Add support for `fund_cash_balance` test helper method on resource `Customer` + * Add support for `total_excluding_tax` on `CreditNote` + * Add support for `rendering_options` on `Invoice` +* [#1307](https://github.com/stripe/stripe-php/pull/1307) Support updating pre-release versions +* [#1305](https://github.com/stripe/stripe-php/pull/1305) Trigger workflows on beta branches +* [#1302](https://github.com/stripe/stripe-php/pull/1302) API Updates + * Add support for `custom_unit_amount` on `Price` +* [#1301](https://github.com/stripe/stripe-php/pull/1301) API Updates + + Documentation updates. + +## 8.6.0 - 2022-06-08 +* [#1300](https://github.com/stripe/stripe-php/pull/1300) API Updates + * Add support for `attach_to_self` and `flow_directions` on `SetupAttempt` + ## 8.5.0 - 2022-06-01 * [#1298](https://github.com/stripe/stripe-php/pull/1298) API Updates * Add support for `radar_options` on `Charge` and `PaymentMethod` @@ -22,13 +123,13 @@ ## 8.2.0 - 2022-05-19 * [#1286](https://github.com/stripe/stripe-php/pull/1286) API Updates - * Add support for new resources `Treasury.CreditReversal`, `Treasury.DebitReversal`, `Treasury.FinancialAccountFeatures`, `Treasury.FinancialAccount`, `Treasury.FlowDetails`, `Treasury.InboundTransfer`, `Treasury.OutboundPayment`, `Treasury.OutboundTransfer`, `Treasury.ReceivedCredit`, `Treasury.ReceivedDebit`, `Treasury.TransactionEntry`, and `Treasury.Transaction` - * Add support for `retrieve_payment_method` method on resource `Customer` - * Add support for `all` and `list_owners` methods on resource `FinancialConnections.Account` - * Add support for `treasury` on `Issuing.Authorization`, `Issuing.Dispute`, and `Issuing.Transaction` - * Add support for `financial_account` on `Issuing.Card` - * Add support for `client_secret` on `Order` - * Add support for `attach_to_self` and `flow_directions` on `SetupIntent` + * Add support for new resources `Treasury.CreditReversal`, `Treasury.DebitReversal`, `Treasury.FinancialAccountFeatures`, `Treasury.FinancialAccount`, `Treasury.FlowDetails`, `Treasury.InboundTransfer`, `Treasury.OutboundPayment`, `Treasury.OutboundTransfer`, `Treasury.ReceivedCredit`, `Treasury.ReceivedDebit`, `Treasury.TransactionEntry`, and `Treasury.Transaction` + * Add support for `retrieve_payment_method` method on resource `Customer` + * Add support for `all` and `list_owners` methods on resource `FinancialConnections.Account` + * Add support for `treasury` on `Issuing.Authorization`, `Issuing.Dispute`, and `Issuing.Transaction` + * Add support for `financial_account` on `Issuing.Card` + * Add support for `client_secret` on `Order` + * Add support for `attach_to_self` and `flow_directions` on `SetupIntent` ## 8.1.0 - 2022-05-11 * [#1284](https://github.com/stripe/stripe-php/pull/1284) API Updates @@ -51,7 +152,7 @@ * [#1282](https://github.com/stripe/stripe-php/pull/1282) API Updates * Add support for `default_price` on `Product` * Add support for `instructions_email` on `Refund` - + ## 7.127.0 - 2022-05-05 * [#1281](https://github.com/stripe/stripe-php/pull/1281) API Updates @@ -95,7 +196,7 @@ * [#1261](https://github.com/stripe/stripe-php/pull/1261) API Updates * Add support for `apply_customer_balance` method on resource `PaymentIntent` * [#1259](https://github.com/stripe/stripe-php/pull/1259) API Updates - + * Add `payment_intent.partially_funded`, `terminal.reader.action_failed`, and `terminal.reader.action_succeeded` events. ## 7.121.0 - 2022-03-30 diff --git a/lib/Stripe/Makefile b/lib/Stripe/Makefile index 88673387..04a4dce9 100644 --- a/lib/Stripe/Makefile +++ b/lib/Stripe/Makefile @@ -32,7 +32,7 @@ phpstan-baseline: vendor/bin/phpstan update-version: @echo "$(VERSION)" > VERSION - @perl -pi -e 's|VERSION = '\''[.\d]+'\''|VERSION = '\''$(VERSION)'\''|' lib/Stripe.php + @perl -pi -e 's|VERSION = '\''[.\-\w\d]+'\''|VERSION = '\''$(VERSION)'\''|' lib/Stripe.php .PHONY: update-version codegen-format: fmt diff --git a/lib/Stripe/OPENAPI_VERSION b/lib/Stripe/OPENAPI_VERSION index fff14d8c..714ead97 100644 --- a/lib/Stripe/OPENAPI_VERSION +++ b/lib/Stripe/OPENAPI_VERSION @@ -1 +1 @@ -v150 \ No newline at end of file +v174 \ No newline at end of file diff --git a/lib/Stripe/README.md b/lib/Stripe/README.md index e9d25ad9..41c20216 100644 --- a/lib/Stripe/README.md +++ b/lib/Stripe/README.md @@ -1,6 +1,6 @@ # Stripe PHP bindings -[![Build Status](https://travis-ci.org/stripe/stripe-php.svg?branch=master)](https://travis-ci.org/stripe/stripe-php) +[![Build Status](https://github.com/stripe/stripe-php/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/stripe/stripe-php/actions?query=branch%3Amaster) [![Latest Stable Version](https://poser.pugx.org/stripe/stripe-php/v/stable.svg)](https://packagist.org/packages/stripe/stripe-php) [![Total Downloads](https://poser.pugx.org/stripe/stripe-php/downloads.svg)](https://packagist.org/packages/stripe/stripe-php) [![License](https://poser.pugx.org/stripe/stripe-php/license.svg)](https://packagist.org/packages/stripe/stripe-php) diff --git a/lib/Stripe/VERSION b/lib/Stripe/VERSION index 6d289079..f7ee0669 100644 --- a/lib/Stripe/VERSION +++ b/lib/Stripe/VERSION @@ -1 +1 @@ -8.5.0 +9.0.0 diff --git a/lib/Stripe/data/ca-certificates.crt b/lib/Stripe/data/ca-certificates.crt index 65be2181..26f13504 100644 --- a/lib/Stripe/data/ca-certificates.crt +++ b/lib/Stripe/data/ca-certificates.crt @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Wed Aug 28 03:12:10 2019 GMT +## Certificate data from Mozilla as of: Tue Apr 26 03:12:05 2022 GMT ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates @@ -13,8 +13,8 @@ ## an Apache+mod_ssl webserver for SSL client authentication. ## Just configure this file as the SSLCACertificateFile. ## -## Conversion done with mk-ca-bundle.pl version 1.27. -## SHA256: fffa309937c3be940649293f749b8207fabc6eb224e50e4bb3f2c5e44e0d6a6b +## Conversion done with mk-ca-bundle.pl version 1.29. +## SHA256: 34a54d5191775c1bd37be6cfd3f09e831e072555dc3a2e51f4a2c4b0f8ada5cc ## @@ -39,52 +39,6 @@ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE----- -GlobalSign Root CA - R2 -======================= ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv -YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh -bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT -aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln -bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 -ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp -s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN -S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL -TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C -ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i -YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN -BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp -9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu -01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 -9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- - -Verisign Class 3 Public Primary Certification Authority - G3 -============================================================ ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy -dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 -EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc -cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw -EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj -055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA -ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f -j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 -xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa -t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- - Entrust.net Premium 2048 Secure Server CA ========================================= -----BEGIN CERTIFICATE----- @@ -130,30 +84,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- -AddTrust External Root -====================== ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD -VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw -NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU -cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg -Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 -+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw -Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo -aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy -2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 -7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P -BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL -VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk -VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl -j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 -e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u -G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - Entrust Root Certification Authority ==================================== -----BEGIN CERTIFICATE----- @@ -180,87 +110,6 @@ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- -GeoTrust Global CA -================== ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK -Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw -MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j -LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo -BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet -8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc -T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU -vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD -AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk -DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q -zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 -d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 -mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p -XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm -Mw== ------END CERTIFICATE----- - -GeoTrust Universal CA -===================== ------BEGIN CERTIFICATE----- -MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 -MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu -Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t -JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e -RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs -7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d -8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V -qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga -Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB -Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu -KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 -ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 -XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB -hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc -aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 -qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL -oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK -xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF -KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 -DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK -xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU -p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI -P/rmMuGNG2+k5o7Y+SlIis5z/iw= ------END CERTIFICATE----- - -GeoTrust Universal CA 2 -======================= ------BEGIN CERTIFICATE----- -MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN -R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 -MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg -SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 -DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 -j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q -JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a -QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 -WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP -20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn -ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC -SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG -8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 -+/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E -BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z -dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ -4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ -mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq -A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg -Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP -pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d -FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp -gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm -X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS ------END CERTIFICATE----- - Comodo AAA Services root ======================== -----BEGIN CERTIFICATE----- @@ -285,38 +134,6 @@ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- -QuoVadis Root CA -================ ------BEGIN CERTIFICATE----- -MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE -ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz -MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp -cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD -EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk -J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL -F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL -YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen -AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w -PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y -ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 -MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj -YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs -ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh -Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW -Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu -BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw -FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 -tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo -fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul -LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x -gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi -5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi -5nrQNiOKSnQ2+Q== ------END CERTIFICATE----- - QuoVadis Root CA 2 ================== -----BEGIN CERTIFICATE----- @@ -404,26 +221,6 @@ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ FL39vmwLAw== -----END CERTIFICATE----- -Sonera Class 2 Root CA -====================== ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG -U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw -NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh -IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 -/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT -dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG -f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P -tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH -nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT -XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt -0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI -cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph -Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx -EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH -llpwrN9M ------END CERTIFICATE----- - XRamp Global CA Root ==================== -----BEGIN CERTIFICATE----- @@ -496,36 +293,6 @@ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- -Taiwan GRCA -=========== ------BEGIN CERTIFICATE----- -MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG -EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X -DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv -dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN -w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 -BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O -1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO -htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov -J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 -Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t -B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB -O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 -lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV -HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 -09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ -TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj -Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 -Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU -D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz -DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk -Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk -7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ -CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy -+fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS ------END CERTIFICATE----- - DigiCert Assured ID Root CA =========================== -----BEGIN CERTIFICATE----- @@ -592,48 +359,6 @@ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K -----END CERTIFICATE----- -Certplus Class 2 Primary CA -=========================== ------BEGIN CERTIFICATE----- -MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE -BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN -OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy -dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR -5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ -Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO -YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e -e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME -CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ -YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t -L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD -P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R -TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ -7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW -//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 -l7+ijrRU ------END CERTIFICATE----- - -DST Root CA X3 -============== ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK -ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X -DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 -cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT -rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 -UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy -xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d -utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ -MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug -dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE -GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw -RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS -fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ ------END CERTIFICATE----- - SwissSign Gold CA - G2 ====================== -----BEGIN CERTIFICATE----- @@ -696,78 +421,6 @@ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u -----END CERTIFICATE----- -GeoTrust Primary Certification Authority -======================================== ------BEGIN CERTIFICATE----- -MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx -CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ -cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB -CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN -b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 -nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge -RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt -tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD -AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI -hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K -Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN -NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa -Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG -1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= ------END CERTIFICATE----- - -thawte Primary Root CA -====================== ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 -MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg -SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv -KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT -FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs -oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ -1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc -q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K -aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p -afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD -VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF -AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE -uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX -xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 -jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH -z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G5 -============================================================ ------BEGIN CERTIFICATE----- -MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB -yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln -biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh -dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw -ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz -j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD -Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ -Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r -fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv -Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy -aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG -SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ -X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE -KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC -Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE -ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq ------END CERTIFICATE----- - SecureTrust CA ============== -----BEGIN CERTIFICATE----- @@ -876,29 +529,6 @@ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- -OISTE WISeKey Global Root GA CA -=============================== ------BEGIN CERTIFICATE----- -MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE -BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG -A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH -bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD -VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw -IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 -IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 -Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg -Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD -d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ -/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R -LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ -KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm -MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 -+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa -hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY -okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= ------END CERTIFICATE----- - Certigna ======== -----BEGIN CERTIFICATE----- @@ -921,50 +551,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- -Deutsche Telekom Root CA 2 -========================== ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT -RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG -A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 -MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G -A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS -b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 -bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI -KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY -AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK -Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV -jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV -HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr -E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy -zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 -rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G -dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- - -Cybertrust Global Root -====================== ------BEGIN CERTIFICATE----- -MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li -ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 -MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD -ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA -+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW -0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL -AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin -89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT -8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 -MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G -A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO -lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi -5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 -hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T -X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW -WL1WMRJOEcgh4LMRkWXbtKaIOM5V ------END CERTIFICATE----- - ePKI Root Certification Authority ================================= -----BEGIN CERTIFICATE----- @@ -1016,136 +602,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD -----END CERTIFICATE----- -GeoTrust Primary Certification Authority - G3 -============================================= ------BEGIN CERTIFICATE----- -MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE -BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy -eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz -NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo -YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT -LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j -K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE -c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C -IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu -dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr -2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 -cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE -Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD -AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s -t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt ------END CERTIFICATE----- - -thawte Primary Root CA - G2 -=========================== ------BEGIN CERTIFICATE----- -MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC -VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu -IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg -Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV -MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG -b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt -IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS -LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 -8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU -mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN -G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K -rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== ------END CERTIFICATE----- - -thawte Primary Root CA - G3 -=========================== ------BEGIN CERTIFICATE----- -MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE -BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 -aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv -cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w -ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh -d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD -VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG -A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A -MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At -P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC -+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY -7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW -vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ -KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK -A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu -t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC -8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm -er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= ------END CERTIFICATE----- - -GeoTrust Primary Certification Authority - G2 -============================================= ------BEGIN CERTIFICATE----- -MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC -VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD -ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 -OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg -MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl -b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG -BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc -KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ -EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m -ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 -npaqBA+K ------END CERTIFICATE----- - -VeriSign Universal Root Certification Authority -=============================================== ------BEGIN CERTIFICATE----- -MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE -BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO -ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk -IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u -IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV -UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv -cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl -IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 -aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj -1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP -MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 -9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I -AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR -tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G -CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O -a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud -DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 -Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx -Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx -P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P -wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 -mJO37M2CYfE45k+XmCpajQ== ------END CERTIFICATE----- - -VeriSign Class 3 Public Primary Certification Authority - G4 -============================================================ ------BEGIN CERTIFICATE----- -MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC -VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 -b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz -ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL -MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU -cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo -b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 -IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 -Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz -rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB -/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw -HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u -Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD -A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx -AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== ------END CERTIFICATE----- - NetLock Arany (Class Gold) Főtanúsítvány ======================================== -----BEGIN CERTIFICATE----- @@ -1170,38 +626,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- -Staat der Nederlanden Root CA - G2 -================================== ------BEGIN CERTIFICATE----- -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 -66+KAQ== ------END CERTIFICATE----- - Hongkong Post Root CA 1 ======================= -----BEGIN CERTIFICATE----- @@ -1353,82 +777,6 @@ Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- -Chambers of Commerce Root - 2008 -================================ ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy -Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl -ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF -EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl -cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC -AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA -XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj -h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ -ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk -NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g -D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 -lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ -0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 -EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI -G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ -BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh -bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh -bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC -CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH -AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 -wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH -3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU -RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 -M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 -YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF -9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK -zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG -nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ ------END CERTIFICATE----- - -Global Chambersign Root - 2008 -============================== ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD -MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv -bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu -QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx -NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg -Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ -QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf -VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf -XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 -ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB -/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA -TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M -H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe -Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF -HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB -AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT -BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE -BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm -aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm -aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp -1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 -dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG -/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 -ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s -dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg -9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH -foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du -qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr -P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq -c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- - Go Daddy Root Certificate Authority - G2 ======================================== -----BEGIN CERTIFICATE----- @@ -1645,36 +993,6 @@ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 -----END CERTIFICATE----- -EC-ACC -====== ------BEGIN CERTIFICATE----- -MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE -BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w -ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD -VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE -CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT -BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 -MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt -SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl -Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh -cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK -w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT -ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 -HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a -E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw -0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E -BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD -VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 -Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l -dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ -lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa -Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe -l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 -E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D -5EI= ------END CERTIFICATE----- - Hellenic Academic and Research Institutions RootCA 2011 ======================================================= -----BEGIN CERTIFICATE----- @@ -1730,27 +1048,6 @@ OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- -Trustis FPS Root CA -=================== ------BEGIN CERTIFICATE----- -MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG -EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 -IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV -BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ -KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ -RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk -H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa -cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt -o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA -AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd -BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c -GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC -yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P -8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV -l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl -iB6XzCGcKQENZetX2fNXlrtIzYE= ------END CERTIFICATE----- - Buypass Class 2 Root CA ======================= -----BEGIN CERTIFICATE----- @@ -1833,30 +1130,6 @@ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== -----END CERTIFICATE----- -EE Certification Centre Root CA -=============================== ------BEGIN CERTIFICATE----- -MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG -EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy -dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw -MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB -UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy -ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM -TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 -rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw -93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN -P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T -AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ -MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF -BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj -xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM -lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u -uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU -3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM -dcGWxZ0= ------END CERTIFICATE----- - D-TRUST Root Class 3 CA 2 2009 ============================== -----BEGIN CERTIFICATE----- @@ -2390,20 +1663,6 @@ HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg= -----END CERTIFICATE----- -GlobalSign ECC Root CA - R4 -=========================== ------BEGIN CERTIFICATE----- -MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb -R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD -EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl -OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P -AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV -MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF -JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q= ------END CERTIFICATE----- - GlobalSign ECC Root CA - R5 =========================== -----BEGIN CERTIFICATE----- @@ -2419,36 +1678,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- -Staat der Nederlanden Root CA - G3 -================================== ------BEGIN CERTIFICATE----- -MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC -TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l -ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y -olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t -x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy -EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K -Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur -mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5 -1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp -07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo -FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE -41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB -AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu -yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD -U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq -KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1 -v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA -8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b -8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r -mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq -1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI -JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV -tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk= ------END CERTIFICATE----- - Staat der Nederlanden EV Root CA ================================ -----BEGIN CERTIFICATE----- @@ -2875,37 +2104,6 @@ MGUCMDqLIfG9fhGt0O9Yli/W651+kI0rz2ZVwyzjKKlwCkcO8DdZEv8tmZQoTipPNU0zWgIxAOp1 AE47xDqUEpHJWEadIRNyp4iciuRMStuW1KyLa2tJElMzrdfkviT8tQp21KW8EA== -----END CERTIFICATE----- -LuxTrust Global Root 2 -====================== ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- - TUBITAK Kamu SM SSL Kok Sertifikasi - Surum 1 ============================================= -----BEGIN CERTIFICATE----- @@ -3186,96 +2384,6 @@ AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9 -----END CERTIFICATE----- -GTS Root R1 -=========== ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG -EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv -b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG -A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx -9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r -aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW -r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM -LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly -4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr -06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92 -wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om -3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu -JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM -BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1 -d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv -fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm -ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b -gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq -4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr -tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo -pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0 -sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql -CFF1pkgl ------END CERTIFICATE----- - -GTS Root R2 -=========== ------BEGIN CERTIFICATE----- -MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG -EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv -b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG -A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi -MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk -k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo -7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI -m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm -dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu -ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz -cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW -Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl -aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy -5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD -VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM -BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT -vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ -+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw -c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da -WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r -n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu -Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ -7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs -gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld -o/DUhgkC ------END CERTIFICATE----- - -GTS Root R3 -=========== ------BEGIN CERTIFICATE----- -MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV -UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg -UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE -ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU -Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej -QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP -0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0 -glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa -KaqW04MjyaR7YbPMAuhd ------END CERTIFICATE----- - -GTS Root R4 -=========== ------BEGIN CERTIFICATE----- -MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV -UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg -UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE -ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq -hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa -6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj -QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV -2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI -N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x -zPKwTdb+mciUqXWi4w== ------END CERTIFICATE----- - UCA Global G2 Root ================== -----BEGIN CERTIFICATE----- @@ -3474,3 +2582,766 @@ hcErulWuBurQB7Lcq9CClnXO0lD+mefPL5/ndtFhKvshuzHQqp9HpLIiyhY6UFfEW0NnxWViA0kB 60PZ2Pierc+xYw5F9KBaLJstxabArahH9CdMOA0uG0k7UvToiIMrVCjU8jVStDKDYmlkDJGcn5fq dBb9HxEGmpv0 -----END CERTIFICATE----- + +Entrust Root Certification Authority - G4 +========================================= +-----BEGIN CERTIFICATE----- +MIIGSzCCBDOgAwIBAgIRANm1Q3+vqTkPAAAAAFVlrVgwDQYJKoZIhvcNAQELBQAwgb4xCzAJBgNV +BAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3Qu +bmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1 +dGhvcml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSAtIEc0MB4XDTE1MDUyNzExMTExNloXDTM3MTIyNzExNDExNlowgb4xCzAJBgNVBAYT +AlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0 +L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxNSBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxMjAwBgNVBAMTKUVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eSAtIEc0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsewsQu7i0TD/pZJH4i3D +umSXbcr3DbVZwbPLqGgZ2K+EbTBwXX7zLtJTmeH+H17ZSK9dE43b/2MzTdMAArzE+NEGCJR5WIoV +3imz/f3ET+iq4qA7ec2/a0My3dl0ELn39GjUu9CH1apLiipvKgS1sqbHoHrmSKvS0VnM1n4j5pds +8ELl3FFLFUHtSUrJ3hCX1nbB76W1NhSXNdh4IjVS70O92yfbYVaCNNzLiGAMC1rlLAHGVK/XqsEQ +e9IFWrhAnoanw5CGAlZSCXqc0ieCU0plUmr1POeo8pyvi73TDtTUXm6Hnmo9RR3RXRv06QqsYJn7 +ibT/mCzPfB3pAqoEmh643IhuJbNsZvc8kPNXwbMv9W3y+8qh+CmdRouzavbmZwe+LGcKKh9asj5X +xNMhIWNlUpEbsZmOeX7m640A2Vqq6nPopIICR5b+W45UYaPrL0swsIsjdXJ8ITzI9vF01Bx7owVV +7rtNOzK+mndmnqxpkCIHH2E6lr7lmk/MBTwoWdPBDFSoWWG9yHJM6Nyfh3+9nEg2XpWjDrk4JFX8 +dWbrAuMINClKxuMrLzOg2qOGpRKX/YAr2hRC45K9PvJdXmd0LhyIRyk0X+IyqJwlN4y6mACXi0mW +Hv0liqzc2thddG5msP9E36EYxr5ILzeUePiVSj9/E15dWf10hkNjc0kCAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJ84xFYjwznooHFs6FRM5Og6sb9n +MA0GCSqGSIb3DQEBCwUAA4ICAQAS5UKme4sPDORGpbZgQIeMJX6tuGguW8ZAdjwD+MlZ9POrYs4Q +jbRaZIxowLByQzTSGwv2LFPSypBLhmb8qoMi9IsabyZIrHZ3CL/FmFz0Jomee8O5ZDIBf9PD3Vht +7LGrhFV0d4QEJ1JrhkzO3bll/9bGXp+aEJlLdWr+aumXIOTkdnrG0CSqkM0gkLpHZPt/B7NTeLUK +YvJzQ85BK4FqLoUWlFPUa19yIqtRLULVAJyZv967lDtX/Zr1hstWO1uIAeV8KEsD+UmDfLJ/fOPt +jqF/YFOOVZ1QNBIPt5d7bIdKROf1beyAN/BYGW5KaHbwH5Lk6rWS02FREAutp9lfx1/cH6NcjKF+ +m7ee01ZvZl4HliDtC3T7Zk6LERXpgUl+b7DUUH8i119lAg2m9IUe2K4GS0qn0jFmwvjO5QimpAKW +RGhXxNUzzxkvFMSUHHuk2fCfDrGA4tGeEWSpiBE6doLlYsKA2KSD7ZPvfC+QsDJMlhVoSFLUmQjA +JOgc47OlIQ6SwJAfzyBfyjs4x7dtOvPmRLgOMWuIjnDrnBdSqEGULoe256YSxXXfW8AKbnuk5F6G ++TaU33fD6Q3AOfF5u0aOq0NZJ7cguyPpVkAh7DE9ZapD8j3fcEThuk0mEDuYn/PIjhs4ViFqUZPT +kcpG2om3PVODLAgfi49T3f+sHw== +-----END CERTIFICATE----- + +Microsoft ECC Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV +UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQgRUND +IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4 +MjMxNjA0WjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw +NAYDVQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQ +BgcqhkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZRogPZnZH6 +thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYbhGBKia/teQ87zvH2RPUB +eMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTIy5lycFIM ++Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlf +Xu5gKcs68tvWMoQZP3zVL8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaR +eNtUjGUBiudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M= +-----END CERTIFICATE----- + +Microsoft RSA Root Certificate Authority 2017 +============================================= +-----BEGIN CERTIFICATE----- +MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBlMQswCQYDVQQG +EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNyb3NvZnQg +UlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIw +NzE4MjMwMDIzWjBlMQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9u +MTYwNAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcw +ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZNt9GkMml +7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0ZdDMbRnMlfl7rEqUrQ7e +S0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw7 +1VdyvD/IybLeS2v4I2wDwAW9lcfNcztmgGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+ +dkC0zVJhUXAoP8XFWvLJjEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49F +yGcohJUcaDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaGYaRS +MLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6W6IYZVcSn2i51BVr +lMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4KUGsTuqwPN1q3ErWQgR5WrlcihtnJ +0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH+FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJ +ClTUFLkqqNfs+avNJVgyeY+QW5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYw +DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC +NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZCLgLNFgVZJ8og +6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OCgMNPOsduET/m4xaRhPtthH80 +dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk ++ONVFT24bcMKpBLBaYVu32TxU5nhSnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex +/2kskZGT4d9Mozd2TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDy +AmH3pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGRxpl/j8nW +ZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiAppGWSZI1b7rCoucL5mxAyE +7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKT +c0QWbej09+CVgI+WXTik9KveCjCHk9hNAHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D +5KbvtwEwXlGjefVwaaZBRA+GsCyRxj3qrg+E +-----END CERTIFICATE----- + +e-Szigno Root CA 2017 +===================== +-----BEGIN CERTIFICATE----- +MIICQDCCAeWgAwIBAgIMAVRI7yH9l1kN9QQKMAoGCCqGSM49BAMCMHExCzAJBgNVBAYTAkhVMREw +DwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UECgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUt +MjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3ppZ25vIFJvb3QgQ0EgMjAxNzAeFw0xNzA4MjIxMjA3MDZa +Fw00MjA4MjIxMjA3MDZaMHExCzAJBgNVBAYTAkhVMREwDwYDVQQHDAhCdWRhcGVzdDEWMBQGA1UE +CgwNTWljcm9zZWMgTHRkLjEXMBUGA1UEYQwOVkFUSFUtMjM1ODQ0OTcxHjAcBgNVBAMMFWUtU3pp +Z25vIFJvb3QgQ0EgMjAxNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJbcPYrYsHtvxie+RJCx +s1YVe45DJH0ahFnuY2iyxl6H0BVIHqiQrb1TotreOpCmYF9oMrWGQd+HWyx7xf58etqjYzBhMA8G +A1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSHERUI0arBeAyxr87GyZDv +vzAEwDAfBgNVHSMEGDAWgBSHERUI0arBeAyxr87GyZDvvzAEwDAKBggqhkjOPQQDAgNJADBGAiEA +tVfd14pVCzbhhkT61NlojbjcI4qKDdQvfepz7L9NbKgCIQDLpbQS+ue16M9+k/zzNY9vTlp8tLxO +svxyqltZ+efcMQ== +-----END CERTIFICATE----- + +certSIGN Root CA G2 +=================== +-----BEGIN CERTIFICATE----- +MIIFRzCCAy+gAwIBAgIJEQA0tk7GNi02MA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlJPMRQw +EgYDVQQKEwtDRVJUU0lHTiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjAeFw0xNzAy +MDYwOTI3MzVaFw00MjAyMDYwOTI3MzVaMEExCzAJBgNVBAYTAlJPMRQwEgYDVQQKEwtDRVJUU0lH +TiBTQTEcMBoGA1UECxMTY2VydFNJR04gUk9PVCBDQSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAMDFdRmRfUR0dIf+DjuW3NgBFszuY5HnC2/OOwppGnzC46+CjobXXo9X69MhWf05 +N0IwvlDqtg+piNguLWkh59E3GE59kdUWX2tbAMI5Qw02hVK5U2UPHULlj88F0+7cDBrZuIt4Imfk +abBoxTzkbFpG583H+u/E7Eu9aqSs/cwoUe+StCmrqzWaTOTECMYmzPhpn+Sc8CnTXPnGFiWeI8Mg +wT0PPzhAsP6CRDiqWhqKa2NYOLQV07YRaXseVO6MGiKscpc/I1mbySKEwQdPzH/iV8oScLumZfNp +dWO9lfsbl83kqK/20U6o2YpxJM02PbyWxPFsqa7lzw1uKA2wDrXKUXt4FMMgL3/7FFXhEZn91Qqh +ngLjYl/rNUssuHLoPj1PrCy7Lobio3aP5ZMqz6WryFyNSwb/EkaseMsUBzXgqd+L6a8VTxaJW732 +jcZZroiFDsGJ6x9nxUWO/203Nit4ZoORUSs9/1F3dmKh7Gc+PoGD4FapUB8fepmrY7+EF3fxDTvf +95xhszWYijqy7DwaNz9+j5LP2RIUZNoQAhVB/0/E6xyjyfqZ90bp4RjZsbgyLcsUDFDYg2WD7rlc +z8sFWkz6GZdr1l0T08JcVLwyc6B49fFtHsufpaafItzRUZ6CeWRgKRM+o/1Pcmqr4tTluCRVLERL +iohEnMqE0yo7AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1Ud +DgQWBBSCIS1mxteg4BXrzkwJd8RgnlRuAzANBgkqhkiG9w0BAQsFAAOCAgEAYN4auOfyYILVAzOB +ywaK8SJJ6ejqkX/GM15oGQOGO0MBzwdw5AgeZYWR5hEit/UCI46uuR59H35s5r0l1ZUa8gWmr4UC +b6741jH/JclKyMeKqdmfS0mbEVeZkkMR3rYzpMzXjWR91M08KCy0mpbqTfXERMQlqiCA2ClV9+BB +/AYm/7k29UMUA2Z44RGx2iBfRgB4ACGlHgAoYXhvqAEBj500mv/0OJD7uNGzcgbJceaBxXntC6Z5 +8hMLnPddDnskk7RI24Zf3lCGeOdA5jGokHZwYa+cNywRtYK3qq4kNFtyDGkNzVmf9nGvnAvRCjj5 +BiKDUyUM/FHE5r7iOZULJK2v0ZXkltd0ZGtxTgI8qoXzIKNDOXZbbFD+mpwUHmUUihW9o4JFWklW +atKcsWMy5WHgUyIOpwpJ6st+H6jiYoD2EEVSmAYY3qXNL3+q1Ok+CHLsIwMCPKaq2LxndD0UF/tU +Sxfj03k9bWtJySgOLnRQvwzZRjoQhsmnP+mg7H/rpXdYaXHmgwo38oZJar55CJD2AhZkPuXaTH4M +NMn5X7azKFGnpyuqSfqNZSlO42sTp5SjLVFteAxEy9/eCG/Oo2Sr05WE1LlSVHJ7liXMvGnjSG4N +0MedJ5qq+BOS3R7fY581qRY27Iy4g/Q9iY/NtBde17MXQRBdJ3NghVdJIgc= +-----END CERTIFICATE----- + +Trustwave Global Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +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 +29FpHOTKyeC2nOnOcXHebD8WpHk= +-----END CERTIFICATE----- + +Trustwave Global ECC P256 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICYDCCAgegAwIBAgIMDWpfCD8oXD5Rld9dMAoGCCqGSM49BAMCMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1NiBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM1MTBaFw00MjA4MjMxOTM1MTBaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDI1 +NiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH77bOYj +43MyCMpg5lOcunSNGLB4kFKA3TjASh3RqMyTpJcGOMoNFWLGjgEqZZ2q3zSRLoHB5DOSMcT9CTqm +P62jQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUDAwcGADAdBgNVHQ4EFgQUo0EGrJBt +0UrrdaVKEJmzsaGLSvcwCgYIKoZIzj0EAwIDRwAwRAIgB+ZU2g6gWrKuEZ+Hxbb/ad4lvvigtwjz +RM4q3wghDDcCIC0mA6AFvWvR9lz4ZcyGbbOcNEhjhAnFjXca4syc4XR7 +-----END CERTIFICATE----- + +Trustwave Global ECC P384 Certification Authority +================================================= +-----BEGIN CERTIFICATE----- +MIICnTCCAiSgAwIBAgIMCL2Fl2yZJ6SAaEc7MAoGCCqGSM49BAMDMIGRMQswCQYDVQQGEwJVUzER +MA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRydXN0d2F2ZSBI +b2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4NCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MjMxOTM2NDNaFw00MjA4MjMxOTM2NDNaMIGRMQswCQYD +VQQGEwJVUzERMA8GA1UECBMISWxsaW5vaXMxEDAOBgNVBAcTB0NoaWNhZ28xITAfBgNVBAoTGFRy +dXN0d2F2ZSBIb2xkaW5ncywgSW5jLjE6MDgGA1UEAxMxVHJ1c3R3YXZlIEdsb2JhbCBFQ0MgUDM4 +NCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABGvaDXU1CDFH +Ba5FmVXxERMuSvgQMSOjfoPTfygIOiYaOs+Xgh+AtycJj9GOMMQKmw6sWASr9zZ9lCOkmwqKi6vr +/TklZvFe/oyujUF5nQlgziip04pt89ZF1PKYhDhloKNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNV +HQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBRVqYSJ0sEyvRjLbKYHTsjnnb6CkDAKBggqhkjOPQQDAwNn +ADBkAjA3AZKXRRJ+oPM+rRk6ct30UJMDEr5E0k9BpIycnR+j9sKS50gU/k6bpZFXrsY3crsCMGcl +CrEMXu6pY5Jv5ZAL/mYiykf9ijH3g/56vxC+GCsej/YpHpRZ744hN8tRmKVuSw== +-----END CERTIFICATE----- + +NAVER Global Root Certification Authority +========================================= +-----BEGIN CERTIFICATE----- +MIIFojCCA4qgAwIBAgIUAZQwHqIL3fXFMyqxQ0Rx+NZQTQ0wDQYJKoZIhvcNAQEMBQAwaTELMAkG +A1UEBhMCS1IxJjAkBgNVBAoMHU5BVkVSIEJVU0lORVNTIFBMQVRGT1JNIENvcnAuMTIwMAYDVQQD +DClOQVZFUiBHbG9iYWwgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xNzA4MTgwODU4 +NDJaFw0zNzA4MTgyMzU5NTlaMGkxCzAJBgNVBAYTAktSMSYwJAYDVQQKDB1OQVZFUiBCVVNJTkVT +UyBQTEFURk9STSBDb3JwLjEyMDAGA1UEAwwpTkFWRVIgR2xvYmFsIFJvb3QgQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC21PGTXLVAiQqrDZBb +UGOukJR0F0Vy1ntlWilLp1agS7gvQnXp2XskWjFlqxcX0TM62RHcQDaH38dq6SZeWYp34+hInDEW ++j6RscrJo+KfziFTowI2MMtSAuXaMl3Dxeb57hHHi8lEHoSTGEq0n+USZGnQJoViAbbJAh2+g1G7 +XNr4rRVqmfeSVPc0W+m/6imBEtRTkZazkVrd/pBzKPswRrXKCAfHcXLJZtM0l/aM9BhK4dA9WkW2 +aacp+yPOiNgSnABIqKYPszuSjXEOdMWLyEz59JuOuDxp7W87UC9Y7cSw0BwbagzivESq2M0UXZR4 +Yb8ObtoqvC8MC3GmsxY/nOb5zJ9TNeIDoKAYv7vxvvTWjIcNQvcGufFt7QSUqP620wbGQGHfnZ3z +VHbOUzoBppJB7ASjjw2i1QnK1sua8e9DXcCrpUHPXFNwcMmIpi3Ua2FzUCaGYQ5fG8Ir4ozVu53B +A0K6lNpfqbDKzE0K70dpAy8i+/Eozr9dUGWokG2zdLAIx6yo0es+nPxdGoMuK8u180SdOqcXYZai +cdNwlhVNt0xz7hlcxVs+Qf6sdWA7G2POAN3aCJBitOUt7kinaxeZVL6HSuOpXgRM6xBtVNbv8ejy +YhbLgGvtPe31HzClrkvJE+2KAQHJuFFYwGY6sWZLxNUxAmLpdIQM201GLQIDAQABo0IwQDAdBgNV +HQ4EFgQU0p+I36HNLL3s9TsBAZMzJ7LrYEswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB +Af8wDQYJKoZIhvcNAQEMBQADggIBADLKgLOdPVQG3dLSLvCkASELZ0jKbY7gyKoNqo0hV4/GPnrK +21HUUrPUloSlWGB/5QuOH/XcChWB5Tu2tyIvCZwTFrFsDDUIbatjcu3cvuzHV+YwIHHW1xDBE1UB +jCpD5EHxzzp6U5LOogMFDTjfArsQLtk70pt6wKGm+LUx5vR1yblTmXVHIloUFcd4G7ad6Qz4G3bx +hYTeodoS76TiEJd6eN4MUZeoIUCLhr0N8F5OSza7OyAfikJW4Qsav3vQIkMsRIz75Sq0bBwcupTg +E34h5prCy8VCZLQelHsIJchxzIdFV4XTnyliIoNRlwAYl3dqmJLJfGBs32x9SuRwTMKeuB330DTH +D8z7p/8Dvq1wkNoL3chtl1+afwkyQf3NosxabUzyqkn+Zvjp2DXrDige7kgvOtB5CTh8piKCk5XQ +A76+AqAF3SAi428diDRgxuYKuQl1C/AH6GmWNcf7I4GOODm4RStDeKLRLBT/DShycpWbXgnbiUSY +qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG +I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg +kpzNNIaRkPpkUZ3+/uul9XXeifdy +-----END CERTIFICATE----- + +AC RAIZ FNMT-RCM SERVIDORES SEGUROS +=================================== +-----BEGIN CERTIFICATE----- +MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF +UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy +NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4 +MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt +UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB +QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA +BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2 +LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG +SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD +zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c= +-----END CERTIFICATE----- + +GlobalSign Root R46 +=================== +-----BEGIN CERTIFICATE----- +MIIFWjCCA0KgAwIBAgISEdK7udcjGJ5AXwqdLdDfJWfRMA0GCSqGSIb3DQEBDAUAMEYxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJv +b3QgUjQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAX +BgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBSNDYwggIi +MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsrHQy6LNl5brtQyYdpokNRbopiLKkHWPd08Es +CVeJOaFV6Wc0dwxu5FUdUiXSE2te4R2pt32JMl8Nnp8semNgQB+msLZ4j5lUlghYruQGvGIFAha/ +r6gjA7aUD7xubMLL1aa7DOn2wQL7Id5m3RerdELv8HQvJfTqa1VbkNud316HCkD7rRlr+/fKYIje +2sGP1q7Vf9Q8g+7XFkyDRTNrJ9CG0Bwta/OrffGFqfUo0q3v84RLHIf8E6M6cqJaESvWJ3En7YEt +bWaBkoe0G1h6zD8K+kZPTXhc+CtI4wSEy132tGqzZfxCnlEmIyDLPRT5ge1lFgBPGmSXZgjPjHvj +K8Cd+RTyG/FWaha/LIWFzXg4mutCagI0GIMXTpRW+LaCtfOW3T3zvn8gdz57GSNrLNRyc0NXfeD4 +12lPFzYE+cCQYDdF3uYM2HSNrpyibXRdQr4G9dlkbgIQrImwTDsHTUB+JMWKmIJ5jqSngiCNI/on +ccnfxkF0oE32kRbcRoxfKWMxWXEM2G/CtjJ9++ZdU6Z+Ffy7dXxd7Pj2Fxzsx2sZy/N78CsHpdls +eVR2bJ0cpm4O6XkMqCNqo98bMDGfsVR7/mrLZqrcZdCinkqaByFrgY/bxFn63iLABJzjqls2k+g9 +vXqhnQt2sQvHnf3PmKgGwvgqo6GDoLclcqUC4wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA1yrc4GHqMywptWU4jaWSf8FmSwwDQYJKoZIhvcNAQEM +BQADggIBAHx47PYCLLtbfpIrXTncvtgdokIzTfnvpCo7RGkerNlFo048p9gkUbJUHJNOxO97k4Vg +JuoJSOD1u8fpaNK7ajFxzHmuEajwmf3lH7wvqMxX63bEIaZHU1VNaL8FpO7XJqti2kM3S+LGteWy +gxk6x9PbTZ4IevPuzz5i+6zoYMzRx6Fcg0XERczzF2sUyQQCPtIkpnnpHs6i58FZFZ8d4kuaPp92 +CC1r2LpXFNqD6v6MVenQTqnMdzGxRBF6XLE+0xRFFRhiJBPSy03OXIPBNvIQtQ6IbbjhVp+J3pZm +OUdkLG5NrmJ7v2B0GbhWrJKsFjLtrWhV/pi60zTe9Mlhww6G9kuEYO4Ne7UyWHmRVSyBQ7N0H3qq +JZ4d16GLuc1CLgSkZoNNiTW2bKg2SnkheCLQQrzRQDGQob4Ez8pn7fXwgNNgyYMqIgXQBztSvwye +qiv5u+YfjyW6hY0XHgL+XVAEV8/+LbzvXMAaq7afJMbfc2hIkCwU9D9SGuTSyxTDYWnP4vkYxboz +nxSjBF25cfe1lNj2M8FawTSLfJvdkzrnE6JwYZ+vj+vYxXX4M2bUdGc6N3ec592kD3ZDZopD8p/7 +DEJ4Y9HiD2971KE9dJeFt0g5QdYg/NA6s/rob8SKunE3vouXsXgxT7PntgMTzlSdriVZzH81Xwj3 +QEUxeCp6 +-----END CERTIFICATE----- + +GlobalSign Root E46 +=================== +-----BEGIN CERTIFICATE----- +MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT +AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg +RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV +BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq +hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB +jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj +QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL +gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk +vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+ +CAezNIm8BZ/3Hobui3A= +-----END CERTIFICATE----- + +GLOBALTRUST 2020 +================ +-----BEGIN CERTIFICATE----- +MIIFgjCCA2qgAwIBAgILWku9WvtPilv6ZeUwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVQx +IzAhBgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVT +VCAyMDIwMB4XDTIwMDIxMDAwMDAwMFoXDTQwMDYxMDAwMDAwMFowTTELMAkGA1UEBhMCQVQxIzAh +BgNVBAoTGmUtY29tbWVyY2UgbW9uaXRvcmluZyBHbWJIMRkwFwYDVQQDExBHTE9CQUxUUlVTVCAy +MDIwMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAri5WrRsc7/aVj6B3GyvTY4+ETUWi +D59bRatZe1E0+eyLinjF3WuvvcTfk0Uev5E4C64OFudBc/jbu9G4UeDLgztzOG53ig9ZYybNpyrO +VPu44sB8R85gfD+yc/LAGbaKkoc1DZAoouQVBGM+uq/ufF7MpotQsjj3QWPKzv9pj2gOlTblzLmM +CcpL3TGQlsjMH/1WljTbjhzqLL6FLmPdqqmV0/0plRPwyJiT2S0WR5ARg6I6IqIoV6Lr/sCMKKCm +fecqQjuCgGOlYx8ZzHyyZqjC0203b+J+BlHZRYQfEs4kUmSFC0iAToexIiIwquuuvuAC4EDosEKA +A1GqtH6qRNdDYfOiaxaJSaSjpCuKAsR49GiKweR6NrFvG5Ybd0mN1MkGco/PU+PcF4UgStyYJ9OR +JitHHmkHr96i5OTUawuzXnzUJIBHKWk7buis/UDr2O1xcSvy6Fgd60GXIsUf1DnQJ4+H4xj04KlG +DfV0OoIu0G4skaMxXDtG6nsEEFZegB31pWXogvziB4xiRfUg3kZwhqG8k9MedKZssCz3AwyIDMvU +clOGvGBG85hqwvG/Q/lwIHfKN0F5VVJjjVsSn8VoxIidrPIwq7ejMZdnrY8XD2zHc+0klGvIg5rQ +mjdJBKuxFshsSUktq6HQjJLyQUp5ISXbY9e2nKd+Qmn7OmMCAwEAAaNjMGEwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFNwuH9FhN3nkq9XVsxJxaD1qaJwiMB8GA1Ud +IwQYMBaAFNwuH9FhN3nkq9XVsxJxaD1qaJwiMA0GCSqGSIb3DQEBCwUAA4ICAQCR8EICaEDuw2jA +VC/f7GLDw56KoDEoqoOOpFaWEhCGVrqXctJUMHytGdUdaG/7FELYjQ7ztdGl4wJCXtzoRlgHNQIw +4Lx0SsFDKv/bGtCwr2zD/cuz9X9tAy5ZVp0tLTWMstZDFyySCstd6IwPS3BD0IL/qMy/pJTAvoe9 +iuOTe8aPmxadJ2W8esVCgmxcB9CpwYhgROmYhRZf+I/KARDOJcP5YBugxZfD0yyIMaK9MOzQ0MAS +8cE54+X1+NZK3TTN+2/BT+MAi1bikvcoskJ3ciNnxz8RFbLEAwW+uxF7Cr+obuf/WEPPm2eggAe2 +HcqtbepBEX4tdJP7wry+UUTF72glJ4DjyKDUEuzZpTcdN3y0kcra1LGWge9oXHYQSa9+pTeAsRxS +vTOBTI/53WXZFM2KJVj04sWDpQmQ1GwUY7VA3+vA/MRYfg0UFodUJ25W5HCEuGwyEn6CMUO+1918 +oa2u1qsgEu8KwxCMSZY13At1XrFP1U80DhEgB3VDRemjEdqso5nCtnkn4rnvyOL2NSl6dPrFf4IF +YqYK6miyeUcGbvJXqBUzxvd4Sj1Ce2t+/vdG6tHrju+IaFvowdlxfv1k7/9nR4hYJS8+hge9+6jl +gqispdNpQ80xiEmEU5LAsTkbOYMBMMTyqfrQA71yN2BWHzZ8vTmR9W0Nv3vXkg== +-----END CERTIFICATE----- + +ANF Secure Server Root CA +========================= +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +Certum EC-384 CA +================ +-----BEGIN CERTIFICATE----- +MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ +TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy +dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2 +MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh +dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx +GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq +vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn +iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo +ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0 +QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k= +-----END CERTIFICATE----- + +Certum Trusted Root CA +====================== +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +TunTrust Root CA +================ +-----BEGIN CERTIFICATE----- +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 +-----END CERTIFICATE----- + +HARICA TLS RSA Root CA 2021 +=========================== +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG +EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u +cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz +OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl +bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB +IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN +JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu +a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y +Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K +5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv +dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR +0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH +GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm +haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ +CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G +A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU +EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq +QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD +QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR +j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5 +vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0 +qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6 +Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/ +PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn +kf3/W9b3raYvAwtt41dU63ZTGI0RmLo= +-----END CERTIFICATE----- + +HARICA TLS ECC Root CA 2021 +=========================== +-----BEGIN CERTIFICATE----- +MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH +UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD +QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX +DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj +IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv +b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l +AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b +ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW +0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi +rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw +CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud +DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w +gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j +b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A +bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL +4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb +LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il +I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP +cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA +LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A +lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH +9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf +NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE +ZycPvEJdvSRUDewdcAZfpLz6IHxV +-----END CERTIFICATE----- + +vTrus ECC Root CA +================= +-----BEGIN CERTIFICATE----- +MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE +BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS +b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa +BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw +EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c +ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n +TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO +BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT +QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL +YgmRWAD5Tfs0aNoJrSEGGJTO +-----END CERTIFICATE----- + +vTrus Root CA +============= +-----BEGIN CERTIFICATE----- +MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG +A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv +b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG +A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots +SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI +ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF +XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA +YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70 +kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2 +AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu +/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu +1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO +9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg +scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC +AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd +nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr +jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4 +8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn +xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg +icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4 +sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW +nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc +SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H +l3s= +-----END CERTIFICATE----- + +ISRG Root X2 +============ +-----BEGIN CERTIFICATE----- +MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV +UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT +UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT +MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS +RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H +ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb +d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV +HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF +cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5 +U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn +-----END CERTIFICATE----- + +HiPKI Root CA - G1 +================== +-----BEGIN CERTIFICATE----- +MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ +IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT +AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg +Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0 +o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k +wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE +YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA +GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd +hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj +1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4 +9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/ +Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF +8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD +AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi +7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl +tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE +wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q +JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv +5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz +jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg +hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb +yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/ +yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ== +-----END CERTIFICATE----- + +GlobalSign ECC Root CA - R4 +=========================== +-----BEGIN CERTIFICATE----- +MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i +YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i +YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds +b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW +ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E +BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI +KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg +UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm +-----END CERTIFICATE----- + +GTS Root R1 +=========== +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM +f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0 +xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w +B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW +nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk +9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq +kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A +K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX +V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW +cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD +ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe +QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi +ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar +J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci +NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me +LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF +fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+ +7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3 +FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3 +gm3c +-----END CERTIFICATE----- + +GTS Root R2 +=========== +-----BEGIN CERTIFICATE----- +MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV +UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg +UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE +ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G +CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv +CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl +e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb +a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS ++LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M +kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG +r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q +S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV +J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL +dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD +ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8 +0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh +swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel +/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn +jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5 +9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M +7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8 +0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR +WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW +HYbL +-----END CERTIFICATE----- + +GTS Root R3 +=========== +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi +MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw +HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ +R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO +PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout +736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA +MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq +Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT +L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV +11RZt+cRLInUue4X +-----END CERTIFICATE----- + +GTS Root R4 +=========== +-----BEGIN CERTIFICATE----- +MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi +MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw +HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ +R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO +PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu +hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA +MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1 +PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C +r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh +4rsUecrNIdSUtUlD +-----END CERTIFICATE----- + +Telia Root CA v2 +================ +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT +AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2 +MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK +DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7 +6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q +9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn +pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl +tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW +5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr +RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E +BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4 +M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau +BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W +xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD +VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ +8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5 +tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H +eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C +y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC +QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15 +h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70 +sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9 +xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ +raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc= +-----END CERTIFICATE----- + +D-TRUST BR Root CA 1 2020 +========================= +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE +RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy +MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV +BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7 +dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu +QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t +MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu +bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP +PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD +AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom +AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87 +-----END CERTIFICATE----- + +D-TRUST EV Root CA 1 2020 +========================= +-----BEGIN CERTIFICATE----- +MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE +RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy +MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV +BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG +ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8 +ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ +raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL +MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu +bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj +dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP +PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD +AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR +AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW +-----END CERTIFICATE----- diff --git a/lib/Stripe/init.php b/lib/Stripe/init.php index 38c8aa39..41fac0f6 100644 --- a/lib/Stripe/init.php +++ b/lib/Stripe/init.php @@ -2,6 +2,8 @@ // File generated from our OpenAPI spec +require __DIR__ . '/lib/Util/ApiVersion.php'; + // SimplePay\Vendor\Stripe singleton require __DIR__ . '/lib/Stripe.php'; @@ -77,7 +79,6 @@ // SimplePay\Vendor\Stripe API Resources require __DIR__ . '/lib/Account.php'; require __DIR__ . '/lib/AccountLink.php'; -require __DIR__ . '/lib/AlipayAccount.php'; require __DIR__ . '/lib/ApplePayDomain.php'; require __DIR__ . '/lib/ApplicationFee.php'; require __DIR__ . '/lib/ApplicationFeeRefund.php'; @@ -87,8 +88,6 @@ require __DIR__ . '/lib/BankAccount.php'; require __DIR__ . '/lib/BillingPortal/Configuration.php'; require __DIR__ . '/lib/BillingPortal/Session.php'; -require __DIR__ . '/lib/BitcoinReceiver.php'; -require __DIR__ . '/lib/BitcoinTransaction.php'; require __DIR__ . '/lib/Capability.php'; require __DIR__ . '/lib/Card.php'; require __DIR__ . '/lib/CashBalance.php'; @@ -142,8 +141,6 @@ require __DIR__ . '/lib/Radar/EarlyFraudWarning.php'; require __DIR__ . '/lib/Radar/ValueList.php'; require __DIR__ . '/lib/Radar/ValueListItem.php'; -require __DIR__ . '/lib/Recipient.php'; -require __DIR__ . '/lib/RecipientTransfer.php'; require __DIR__ . '/lib/Refund.php'; require __DIR__ . '/lib/Reporting/ReportRun.php'; require __DIR__ . '/lib/Reporting/ReportType.php'; @@ -167,7 +164,6 @@ require __DIR__ . '/lib/Terminal/Location.php'; require __DIR__ . '/lib/Terminal/Reader.php'; require __DIR__ . '/lib/TestHelpers/TestClock.php'; -require __DIR__ . '/lib/ThreeDSecure.php'; require __DIR__ . '/lib/Token.php'; require __DIR__ . '/lib/Topup.php'; require __DIR__ . '/lib/Transfer.php'; @@ -253,6 +249,8 @@ require __DIR__ . '/lib/Service/Terminal/ConnectionTokenService.php'; require __DIR__ . '/lib/Service/Terminal/LocationService.php'; require __DIR__ . '/lib/Service/Terminal/ReaderService.php'; +require __DIR__ . '/lib/Service/TestHelpers/CustomerService.php'; +require __DIR__ . '/lib/Service/TestHelpers/Issuing/CardService.php'; require __DIR__ . '/lib/Service/TestHelpers/RefundService.php'; require __DIR__ . '/lib/Service/TestHelpers/Terminal/ReaderService.php'; require __DIR__ . '/lib/Service/TestHelpers/TestClockService.php'; @@ -288,6 +286,7 @@ require __DIR__ . '/lib/Service/Reporting/ReportingServiceFactory.php'; require __DIR__ . '/lib/Service/Sigma/SigmaServiceFactory.php'; require __DIR__ . '/lib/Service/Terminal/TerminalServiceFactory.php'; +require __DIR__ . '/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php'; require __DIR__ . '/lib/Service/TestHelpers/Terminal/TerminalServiceFactory.php'; require __DIR__ . '/lib/Service/TestHelpers/TestHelpersServiceFactory.php'; require __DIR__ . '/lib/Service/TestHelpers/Treasury/TreasuryServiceFactory.php'; diff --git a/lib/Stripe/lib/Account.php b/lib/Stripe/lib/Account.php index 5f5c9a58..7ac177a5 100644 --- a/lib/Stripe/lib/Account.php +++ b/lib/Stripe/lib/Account.php @@ -51,15 +51,6 @@ class Account extends ApiResource const BUSINESS_TYPE_INDIVIDUAL = 'individual'; const BUSINESS_TYPE_NON_PROFIT = 'non_profit'; - const CAPABILITY_CARD_PAYMENTS = 'card_payments'; - const CAPABILITY_LEGACY_PAYMENTS = 'legacy_payments'; - const CAPABILITY_PLATFORM_PAYMENTS = 'platform_payments'; - const CAPABILITY_TRANSFERS = 'transfers'; - - const CAPABILITY_STATUS_ACTIVE = 'active'; - const CAPABILITY_STATUS_INACTIVE = 'inactive'; - const CAPABILITY_STATUS_PENDING = 'pending'; - const TYPE_CUSTOM = 'custom'; const TYPE_EXPRESS = 'express'; const TYPE_STANDARD = 'standard'; @@ -90,6 +81,25 @@ public function instanceUrl() return parent::instanceUrl(); } + /** + * @param null|array|string $id the ID of the account to retrieve, or an + * options array containing an `id` key + * @param null|array|string $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Account + */ + public static function retrieve($id = null, $opts = null) + { + if (!$opts && \is_string($id) && 'sk_' === \substr($id, 0, 3)) { + $opts = $id; + $id = null; + } + + return self::_retrieve($id, $opts); + } + public function serializeParameters($force = false) { $update = parent::serializeParameters($force); @@ -141,25 +151,6 @@ private function serializeAdditionalOwners($legalEntity, $additionalOwners) return $updateArr; } - /** - * @param null|array|string $id the ID of the account to retrieve, or an - * options array containing an `id` key - * @param null|array|string $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Account - */ - public static function retrieve($id = null, $opts = null) - { - if (!$opts && \is_string($id) && 'sk_' === \substr($id, 0, 3)) { - $opts = $id; - $id = null; - } - - return self::_retrieve($id, $opts); - } - /** * @param null|array $clientId * @param null|array|string $opts @@ -178,24 +169,6 @@ public function deauthorize($clientId = null, $opts = null) return OAuth::deauthorize($params, $opts); } - /** - * @param null|array $params - * @param null|array|string $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Person> the list of persons - */ - public function persons($params = null, $opts = null) - { - $url = $this->instanceUrl() . '/persons'; - list($response, $opts) = $this->_request('get', $url, $params, $opts); - $obj = Util\Util::convertToStripeObject($response, $opts); - $obj->setLastResponse($response); - - return $obj; - } - /** * @param null|array $params * @param null|array|string $opts @@ -213,12 +186,6 @@ public function reject($params = null, $opts = null) return $this; } - /* - * Capabilities methods - * We can not add the capabilities() method today as the Account object already has a - * capabilities property which is a hash and not the sub-list of capabilities. - */ - const PATH_CAPABILITIES = '/capabilities'; /** diff --git a/lib/Stripe/lib/ApiRequestor.php b/lib/Stripe/lib/ApiRequestor.php index 98eff736..dd2e54ea 100644 --- a/lib/Stripe/lib/ApiRequestor.php +++ b/lib/Stripe/lib/ApiRequestor.php @@ -295,9 +295,8 @@ private static function _formatAppInfo($appInfo) /** * @static * - * @param string $disabledFunctionsOutput - String value of the 'disable_function' setting, as output by \ini_get('disable_functions') + * @param string $disableFunctionsOutput - String value of the 'disable_function' setting, as output by \ini_get('disable_functions') * @param string $functionName - Name of the function we are interesting in seeing whether or not it is disabled - * @param mixed $disableFunctionsOutput * * @return bool */ @@ -474,8 +473,7 @@ private function _requestRaw($method, $url, $params, $headers) * @param string $url * @param array $params * @param array $headers - * @param callable $readBodyChunk - * @param mixed $readBodyChunkCallable + * @param callable $readBodyChunkCallable * * @throws Exception\AuthenticationException * @throws Exception\ApiConnectionException diff --git a/lib/Stripe/lib/BitcoinReceiver.php b/lib/Stripe/lib/BitcoinReceiver.php deleted file mode 100644 index 5f5778dd..00000000 --- a/lib/Stripe/lib/BitcoinReceiver.php +++ /dev/null @@ -1,71 +0,0 @@ -currency that you are collecting as payment. - * @property int $amount_received The amount of currency to which bitcoin_amount_received has been converted. - * @property int $bitcoin_amount The amount of bitcoin that the customer should send to fill the receiver. The bitcoin_amount is denominated in Satoshi: there are 10^8 Satoshi in one bitcoin. - * @property int $bitcoin_amount_received The amount of bitcoin that has been sent by the customer to this receiver. - * @property string $bitcoin_uri This URI can be displayed to the customer as a clickable link (to activate their bitcoin client) or as a QR code (for mobile wallets). - * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. - * @property string $currency Three-letter ISO code for the currency to which the bitcoin will be converted. - * @property null|string $customer The customer ID of the bitcoin receiver. - * @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. - * @property null|string $email The customer's email address, set by the API call that creates the receiver. - * @property bool $filled This flag is initially false and updates to true when the customer sends the bitcoin_amount to this receiver. - * @property string $inbound_address A bitcoin address that is specific to this receiver. The customer can send bitcoin to this address to fill the receiver. - * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. - * @property null|\SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. - * @property null|string $payment The ID of the payment created from the receiver, if any. Hidden when viewing the receiver with a publishable key. - * @property null|string $refund_address The refund address of this bitcoin receiver. - * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\BitcoinTransaction> $transactions A list with one entry for each time that the customer sent bitcoin to the receiver. Hidden when viewing the receiver with a publishable key. - * @property bool $uncaptured_funds This receiver contains uncaptured funds that can be used for a payment or refunded. - * @property null|bool $used_for_payment Indicate if this source is used for payment. - */ -class BitcoinReceiver extends ApiResource -{ - const OBJECT_NAME = 'bitcoin_receiver'; - - use ApiOperations\All; - use ApiOperations\Retrieve; - - /** - * @return string The class URL for this resource. It needs to be special - * cased because it doesn't fit into the standard resource pattern. - */ - public static function classUrl() - { - return '/v1/bitcoin/receivers'; - } - - /** - * @return string The instance URL for this resource. It needs to be special - * cased because it doesn't fit into the standard resource pattern. - */ - public function instanceUrl() - { - if ($this['customer']) { - $base = Customer::classUrl(); - $parent = $this['customer']; - $path = 'sources'; - $parentExtn = \urlencode(Util\Util::utf8($parent)); - $extn = \urlencode(Util\Util::utf8($this['id'])); - - return "{$base}/{$parentExtn}/{$path}/{$extn}"; - } - - $base = BitcoinReceiver::classUrl(); - $extn = \urlencode(Util\Util::utf8($this['id'])); - - return "{$base}/{$extn}"; - } -} diff --git a/lib/Stripe/lib/BitcoinTransaction.php b/lib/Stripe/lib/BitcoinTransaction.php deleted file mode 100644 index 49d90560..00000000 --- a/lib/Stripe/lib/BitcoinTransaction.php +++ /dev/null @@ -1,19 +0,0 @@ -currency that the transaction was converted to in real-time. - * @property int $bitcoin_amount The amount of bitcoin contained in the transaction. - * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. - * @property string $currency Three-letter ISO code for the currency to which this transaction was converted. - * @property string $receiver The receiver to which this transaction was sent. - */ -class BitcoinTransaction extends ApiResource -{ - const OBJECT_NAME = 'bitcoin_transaction'; -} diff --git a/lib/Stripe/lib/Card.php b/lib/Stripe/lib/Card.php index eca6fa9c..11bdacd6 100644 --- a/lib/Stripe/lib/Card.php +++ b/lib/Stripe/lib/Card.php @@ -38,7 +38,6 @@ * @property string $last4 The last four digits of the card. * @property null|\SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property null|string $name Cardholder name. - * @property null|string|\SimplePay\Vendor\Stripe\Recipient $recipient The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead. * @property null|string $status For external accounts, possible values are new and errored. If a transfer fails, the status is set to errored and transfers are stopped until account details are updated. * @property null|string $tokenization_method If the card number is tokenized, this is the method that was used. Can be android_pay (includes Google Pay), apple_pay, masterpass, visa_checkout, or null. */ @@ -92,12 +91,8 @@ public function instanceUrl() $base = Account::classUrl(); $parent = $this['account']; $path = 'external_accounts'; - } elseif ($this['recipient']) { - $base = Recipient::classUrl(); - $parent = $this['recipient']; - $path = 'cards'; } else { - $msg = 'Cards cannot be accessed without a customer ID, account ID or recipient ID.'; + $msg = 'Cards cannot be accessed without a customer ID, or account ID.'; throw new Exception\UnexpectedValueException($msg); } diff --git a/lib/Stripe/lib/CashBalance.php b/lib/Stripe/lib/CashBalance.php index 5b9ee313..f67538cc 100644 --- a/lib/Stripe/lib/CashBalance.php +++ b/lib/Stripe/lib/CashBalance.php @@ -10,7 +10,7 @@ * for payment and can eventually be paid out to your bank account. * * @property string $object String representing the object's type. Objects of the same type share the same value. - * @property null|\SimplePay\Vendor\Stripe\StripeObject $available A hash of all cash balances available to this customer. You cannot delete a customer with any cash balances, even if the balance is 0. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $available A hash of all cash balances available to this customer. You cannot delete a customer with any cash balances, even if the balance is 0. Amounts are represented in the smallest currency unit. * @property string $customer The ID of the customer whose cash balance this object represents. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $settings diff --git a/lib/Stripe/lib/Charge.php b/lib/Stripe/lib/Charge.php index 5b2ab252..6fd6f22d 100644 --- a/lib/Stripe/lib/Charge.php +++ b/lib/Stripe/lib/Charge.php @@ -15,12 +15,14 @@ * * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. + * @property \SimplePay\Vendor\Stripe\StripeObject $alternate_statement_descriptors * @property int $amount Amount intended to be collected by this payment. A positive integer representing how much to charge in the smallest currency unit (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a zero-decimal currency). The minimum amount is $0.50 US or equivalent in charge currency. The amount value supports up to eight digits (e.g., a value of 99999999 for a USD charge of $999,999.99). * @property int $amount_captured Amount in %s captured (can be less than the amount attribute on the charge if a partial capture was made). * @property int $amount_refunded Amount in %s refunded (can be less than the amount attribute on the charge if a partial refund was issued). * @property null|string|\SimplePay\Vendor\Stripe\StripeObject $application ID of the Connect application that created the charge. * @property null|string|\SimplePay\Vendor\Stripe\ApplicationFee $application_fee The application fee (if any) for the charge. See the Connect documentation for details. * @property null|int $application_fee_amount The amount of the application fee (if any) requested for the charge. See the Connect documentation for details. + * @property string $authorization_code Authorization code on the charge. * @property null|string|\SimplePay\Vendor\Stripe\BalanceTransaction $balance_transaction ID of the balance transaction that describes the impact of this charge on your account balance (not including refunds or disputes). * @property \SimplePay\Vendor\Stripe\StripeObject $billing_details * @property null|string $calculated_statement_descriptor The full statement descriptor that is passed to card networks, and that is displayed on your customers' credit card and bank statements. Allows you to see what the statement descriptor looks like after the static and dynamic portions are combined. @@ -37,6 +39,7 @@ * @property null|string $failure_message Message to user further explaining reason for charge failure if available. * @property null|\SimplePay\Vendor\Stripe\StripeObject $fraud_details Information on fraud assessments for the charge. * @property null|string|\SimplePay\Vendor\Stripe\Invoice $invoice ID of the invoice this charge is for if one exists. + * @property \SimplePay\Vendor\Stripe\StripeObject $level3 * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property null|string|\SimplePay\Vendor\Stripe\Account $on_behalf_of The account (if any) the charge was made on behalf of without triggering an automatic transfer. See the Connect documentation for details. @@ -53,7 +56,7 @@ * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Refund> $refunds A list of refunds that have been applied to the charge. * @property null|string|\SimplePay\Vendor\Stripe\Review $review ID of the review associated with this charge if one exists. * @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping Shipping information for the charge. - * @property null|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $source This is a legacy field that will be removed in the future. It contains the Source, Card, or BankAccount object used for the charge. For details about the payment method used for this charge, refer to payment_method or payment_method_details instead. + * @property null|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $source This is a legacy field that will be removed in the future. It contains the Source, Card, or BankAccount object used for the charge. For details about the payment method used for this charge, refer to payment_method or payment_method_details instead. * @property null|string|\SimplePay\Vendor\Stripe\Transfer $source_transfer The transfer ID which created this charge. Only present if the charge came from another SimplePay\Vendor\Stripe account. See the Connect documentation for details. * @property null|string $statement_descriptor For card charges, use statement_descriptor_suffix instead. Otherwise, you can use this value as the complete description of a charge on your customers’ statements. Must contain at least one letter, maximum 22 characters. * @property null|string $statement_descriptor_suffix Provides information about the charge that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor. diff --git a/lib/Stripe/lib/Checkout/Session.php b/lib/Stripe/lib/Checkout/Session.php index 730e1367..d34cff8c 100644 --- a/lib/Stripe/lib/Checkout/Session.php +++ b/lib/Stripe/lib/Checkout/Session.php @@ -38,7 +38,7 @@ * @property null|string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. * @property null|string|\SimplePay\Vendor\Stripe\Customer $customer The ID of the customer for this Session. For Checkout Sessions in payment or subscription mode, Checkout will create a new customer object based on information provided during the payment flow unless an existing customer was provided when the Session was created. * @property null|string $customer_creation Configure whether a Checkout Session creates a Customer when the Checkout Session completes. - * @property null|\SimplePay\Vendor\Stripe\StripeObject $customer_details The customer details including the customer's tax exempt status and the customer's tax IDs. Only present on Sessions in payment or subscription mode. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $customer_details The customer details including the customer's tax exempt status and the customer's tax IDs. Only the customer's email is present on Sessions in setup mode. * @property null|string $customer_email If provided, this value will be used when the Customer object is created. If not provided, customers will be asked to enter their email address. Use this parameter to prefill customer data if you already have an email on file. To access information about the customer once the payment flow is complete, use the customer attribute. * @property int $expires_at The timestamp at which the Checkout Session will expire. * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> $line_items The line items purchased by the customer. @@ -54,10 +54,10 @@ * @property \SimplePay\Vendor\Stripe\StripeObject $phone_number_collection * @property null|string $recovered_from The ID of the original expired Checkout Session that triggered the recovery flow. * @property null|string|\SimplePay\Vendor\Stripe\SetupIntent $setup_intent The ID of the SetupIntent for Checkout Sessions in setup mode. - * @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping Shipping information for this Checkout Session. * @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping_address_collection When set, provides configuration for Checkout to collect a shipping address from a customer. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping_cost The details of the customer cost of shipping, including the customer chosen ShippingRate. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping_details Shipping information for this Checkout Session. * @property \SimplePay\Vendor\Stripe\StripeObject[] $shipping_options The shipping rate options applied to this Session. - * @property null|string|\SimplePay\Vendor\Stripe\ShippingRate $shipping_rate The ID of the ShippingRate for Checkout Sessions in payment mode. * @property null|string $status The status of the Checkout Session, one of open, complete, or expired. * @property null|string $submit_type Describes the type of transaction being performed by Checkout in order to customize relevant text on the page, such as the submit button. submit_type can only be specified on Checkout Sessions in payment mode, but not Checkout Sessions in subscription or setup mode. * @property null|string|\SimplePay\Vendor\Stripe\Subscription $subscription The ID of the subscription for Checkout Sessions in subscription mode. @@ -72,7 +72,6 @@ class Session extends \SimplePay\Vendor\Stripe\ApiResource use \SimplePay\Vendor\Stripe\ApiOperations\All; use \SimplePay\Vendor\Stripe\ApiOperations\Create; - use \SimplePay\Vendor\Stripe\ApiOperations\NestedResource; use \SimplePay\Vendor\Stripe\ApiOperations\Retrieve; const BILLING_ADDRESS_COLLECTION_AUTO = 'auto'; @@ -115,19 +114,22 @@ public function expire($params = null, $opts = null) return $this; } - const PATH_LINE_ITEMS = '/line_items'; - /** - * @param string $id the ID of the session on which to retrieve the items + * @param string $id * @param null|array $params * @param null|array|string $opts * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> the list of items + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> list of LineItems */ public static function allLineItems($id, $params = null, $opts = null) { - return self::_allNestedResources($id, static::PATH_LINE_ITEMS, $params, $opts); + $url = static::resourceUrl($id) . '/line_items'; + list($response, $opts) = static::_staticRequest('get', $url, $params, $opts); + $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response->json, $opts); + $obj->setLastResponse($response); + + return $obj; } } diff --git a/lib/Stripe/lib/Collection.php b/lib/Stripe/lib/Collection.php index 90c40b4d..e6dc2c74 100644 --- a/lib/Stripe/lib/Collection.php +++ b/lib/Stripe/lib/Collection.php @@ -50,6 +50,9 @@ public function setFilters($filters) $this->filters = $filters; } + /** + * @return mixed + */ #[\ReturnTypeWillChange] public function offsetGet($k) { diff --git a/lib/Stripe/lib/Coupon.php b/lib/Stripe/lib/Coupon.php index e60cc03a..ec49b923 100644 --- a/lib/Stripe/lib/Coupon.php +++ b/lib/Stripe/lib/Coupon.php @@ -21,6 +21,7 @@ * @property \SimplePay\Vendor\Stripe\StripeObject $applies_to * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property null|string $currency If amount_off has been set, the three-letter ISO code for the currency of the amount to take off. + * @property \SimplePay\Vendor\Stripe\StripeObject $currency_options Coupons defined in each available currency option. Each key must be a three-letter ISO currency code and a supported currency. * @property string $duration One of forever, once, and repeating. Describes how long a customer who applies this coupon will get the discount. * @property null|int $duration_in_months If duration is repeating, the number of months the coupon applies. Null if coupon duration is forever or once. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. diff --git a/lib/Stripe/lib/CreditNote.php b/lib/Stripe/lib/CreditNote.php index 47747748..1d878a09 100644 --- a/lib/Stripe/lib/CreditNote.php +++ b/lib/Stripe/lib/CreditNote.php @@ -31,9 +31,11 @@ * @property null|string $reason Reason for issuing this credit note, one of duplicate, fraudulent, order_change, or product_unsatisfactory * @property null|string|\SimplePay\Vendor\Stripe\Refund $refund Refund related to this credit note. * @property string $status Status of this credit note, one of issued or void. Learn more about voiding credit notes. - * @property int $subtotal The integer amount in %s representing the amount of the credit note, excluding tax and invoice level discounts. + * @property int $subtotal The integer amount in %s representing the amount of the credit note, excluding exclusive tax and invoice level discounts. + * @property null|int $subtotal_excluding_tax The integer amount in %s representing the amount of the credit note, excluding all tax and invoice level discounts. * @property \SimplePay\Vendor\Stripe\StripeObject[] $tax_amounts The aggregate amounts calculated per tax rate for all line items. * @property int $total The integer amount in %s representing the total amount of the credit note, including tax and all discount. + * @property null|int $total_excluding_tax The integer amount in %s representing the total amount of the credit note, excluding tax, but including discounts. * @property string $type Type of this credit note, one of pre_payment or post_payment. A pre_payment credit note means it was issued when the invoice was open. A post_payment credit note means it was issued when the invoice was paid. * @property null|int $voided_at The time that the credit note was voided. */ @@ -76,6 +78,24 @@ public static function preview($params = null, $opts = null) return $obj; } + /** + * @param null|array $params + * @param null|array|string $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\CreditNoteLineItem> list of CreditNoteLineItems + */ + public static function previewLines($params = null, $opts = null) + { + $url = static::classUrl() . '/preview/lines'; + list($response, $opts) = static::_staticRequest('get', $url, $params, $opts); + $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response->json, $opts); + $obj->setLastResponse($response); + + return $obj; + } + /** * @param null|array $params * @param null|array|string $opts diff --git a/lib/Stripe/lib/CreditNoteLineItem.php b/lib/Stripe/lib/CreditNoteLineItem.php index b22d156d..15723bd5 100644 --- a/lib/Stripe/lib/CreditNoteLineItem.php +++ b/lib/Stripe/lib/CreditNoteLineItem.php @@ -8,6 +8,7 @@ * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. * @property int $amount The integer amount in %s representing the gross amount being credited for this line item, excluding (exclusive) tax and discounts. + * @property null|int $amount_excluding_tax The integer amount in %s representing the amount being credited for this line item, excluding all tax and discounts. * @property null|string $description Description of the item being credited. * @property int $discount_amount The integer amount in %s representing the discount being credited for this line item. * @property \SimplePay\Vendor\Stripe\StripeObject[] $discount_amounts The amount of discount calculated per discount for this line item @@ -19,6 +20,7 @@ * @property string $type The type of the credit note line item, one of invoice_line_item or custom_line_item. When the type is invoice_line_item there is an additional invoice_line_item property on the resource the value of which is the id of the credited line item on the invoice. * @property null|int $unit_amount The cost of each unit of product being credited. * @property null|string $unit_amount_decimal Same as unit_amount, but contains a decimal value with at most 12 decimal places. + * @property null|string $unit_amount_excluding_tax The amount in %s representing the unit amount being credited for this line item, excluding all tax and discounts. */ class CreditNoteLineItem extends ApiResource { diff --git a/lib/Stripe/lib/Customer.php b/lib/Stripe/lib/Customer.php index 8076d291..79e93cd5 100644 --- a/lib/Stripe/lib/Customer.php +++ b/lib/Stripe/lib/Customer.php @@ -19,11 +19,12 @@ * @property null|\SimplePay\Vendor\Stripe\CashBalance $cash_balance The current funds being held by SimplePay\Vendor\Stripe on behalf of the customer. These funds can be applied towards payment intents with source "cash_balance".The settings[reconciliation_mode] field describes whether these funds are applied to such payment intents manually or automatically. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property null|string $currency Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes. - * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $default_source

ID of the default payment source for the customer.

If you are using payment methods created via the PaymentMethods API, see the invoice_settings.default_payment_method field instead.

+ * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $default_source

ID of the default payment source for the customer.

If you are using payment methods created via the PaymentMethods API, see the invoice_settings.default_payment_method field instead.

* @property null|bool $delinquent

When the customer's latest invoice is billed by charging automatically, delinquent is true if the invoice's latest charge failed. When the customer's latest invoice is billed by sending an invoice, delinquent is true if the invoice isn't paid by its due date.

If an invoice is marked uncollectible by dunning, delinquent doesn't get reset to false.

* @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. * @property null|\SimplePay\Vendor\Stripe\Discount $discount Describes the current discount active on the customer, if there is one. * @property null|string $email The customer's email address. + * @property \SimplePay\Vendor\Stripe\StripeObject $invoice_credit_balance The current multi-currency balances, if any, being stored on the customer.If positive in a currency, the customer has a credit to apply to their next invoice denominated in that currency.If negative, the customer has an amount owed that will be added to their next invoice denominated in that currency. These balances do not refer to any unpaid invoices.They solely track amounts that have yet to be successfully applied to any invoice. A balance in a particular currency is only applied to any invoice as an invoice in that currency is finalized. * @property null|string $invoice_prefix The prefix for the customer used to generate unique invoice numbers. * @property \SimplePay\Vendor\Stripe\StripeObject $invoice_settings * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. @@ -33,7 +34,7 @@ * @property null|string $phone The customer's phone number. * @property null|string[] $preferred_locales The customer's preferred locales (languages), ordered by preference. * @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping Mailing and shipping address for the customer. Appears on invoices emailed to this customer. - * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source> $sources The customer's payment sources, if any. + * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source> $sources The customer's payment sources, if any. * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Subscription> $subscriptions The customer's current subscriptions, if any. * @property \SimplePay\Vendor\Stripe\StripeObject $tax * @property null|string $tax_exempt Describes the customer's tax exemption status. One of none, exempt, or reverse. When set to reverse, invoice and receipt PDFs include the text "Reverse charge". @@ -84,9 +85,9 @@ public function deleteDiscount($params = null, $opts = null) } /** + * @param string $id * @param null|array $params * @param null|array|string $opts - * @param mixed $id * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * @@ -235,7 +236,7 @@ public static function updateBalanceTransaction($id, $balanceTransactionId, $par * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source> the list of payment sources (AlipayAccount, BankAccount, BitcoinReceiver, Card or Source) + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source> the list of payment sources (BankAccount, Card or Source) */ public static function allSources($id, $params = null, $opts = null) { @@ -249,7 +250,7 @@ public static function allSources($id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public static function createSource($id, $params = null, $opts = null) { @@ -264,7 +265,7 @@ public static function createSource($id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public static function deleteSource($id, $sourceId, $params = null, $opts = null) { @@ -279,7 +280,7 @@ public static function deleteSource($id, $sourceId, $params = null, $opts = null * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public static function retrieveSource($id, $sourceId, $params = null, $opts = null) { @@ -294,7 +295,7 @@ public static function retrieveSource($id, $sourceId, $params = null, $opts = nu * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public static function updateSource($id, $sourceId, $params = null, $opts = null) { diff --git a/lib/Stripe/lib/Dispute.php b/lib/Stripe/lib/Dispute.php index c807b2dc..df354b5e 100644 --- a/lib/Stripe/lib/Dispute.php +++ b/lib/Stripe/lib/Dispute.php @@ -64,17 +64,17 @@ class Dispute extends ApiResource const STATUS_WON = 'won'; /** + * @param null|array $params * @param null|array|string $opts * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * * @return \SimplePay\Vendor\Stripe\Dispute the closed dispute */ - // TODO: add $params to standardize signature - public function close($opts = null) + public function close($params = null, $opts = null) { $url = $this->instanceUrl() . '/close'; - list($response, $opts) = $this->_request('post', $url, null, $opts); + list($response, $opts) = $this->_request('post', $url, $params, $opts); $this->refreshFrom($response, $opts); return $this; diff --git a/lib/Stripe/lib/EphemeralKey.php b/lib/Stripe/lib/EphemeralKey.php index a8034dac..18ed9b9b 100644 --- a/lib/Stripe/lib/EphemeralKey.php +++ b/lib/Stripe/lib/EphemeralKey.php @@ -11,7 +11,6 @@ * @property int $expires Time at which the key will expire. Measured in seconds since the Unix epoch. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property string $secret The key's secret. You can use this value to make authorized requests to the SimplePay\Vendor\Stripe API. - * @property array $associated_objects */ class EphemeralKey extends ApiResource { diff --git a/lib/Stripe/lib/ErrorObject.php b/lib/Stripe/lib/ErrorObject.php index eb968cfc..6bdf563c 100644 --- a/lib/Stripe/lib/ErrorObject.php +++ b/lib/Stripe/lib/ErrorObject.php @@ -40,28 +40,42 @@ class ErrorObject extends StripeObject * * @see https://stripe.com/docs/error-codes */ - const CODE_ACCOUNT_ALREADY_EXISTS = 'account_already_exists'; const CODE_ACCOUNT_COUNTRY_INVALID_ADDRESS = 'account_country_invalid_address'; + const CODE_ACCOUNT_ERROR_COUNTRY_CHANGE_REQUIRES_ADDITIONAL_STEPS = 'account_error_country_change_requires_additional_steps'; + const CODE_ACCOUNT_INFORMATION_MISMATCH = 'account_information_mismatch'; const CODE_ACCOUNT_INVALID = 'account_invalid'; const CODE_ACCOUNT_NUMBER_INVALID = 'account_number_invalid'; + const CODE_ACSS_DEBIT_SESSION_INCOMPLETE = 'acss_debit_session_incomplete'; const CODE_ALIPAY_UPGRADE_REQUIRED = 'alipay_upgrade_required'; const CODE_AMOUNT_TOO_LARGE = 'amount_too_large'; const CODE_AMOUNT_TOO_SMALL = 'amount_too_small'; const CODE_API_KEY_EXPIRED = 'api_key_expired'; + const CODE_AUTHENTICATION_REQUIRED = 'authentication_required'; const CODE_BALANCE_INSUFFICIENT = 'balance_insufficient'; + const CODE_BANK_ACCOUNT_BAD_ROUTING_NUMBERS = 'bank_account_bad_routing_numbers'; + const CODE_BANK_ACCOUNT_DECLINED = 'bank_account_declined'; const CODE_BANK_ACCOUNT_EXISTS = 'bank_account_exists'; const CODE_BANK_ACCOUNT_UNUSABLE = 'bank_account_unusable'; const CODE_BANK_ACCOUNT_UNVERIFIED = 'bank_account_unverified'; + const CODE_BANK_ACCOUNT_VERIFICATION_FAILED = 'bank_account_verification_failed'; + const CODE_BILLING_INVALID_MANDATE = 'billing_invalid_mandate'; const CODE_BITCOIN_UPGRADE_REQUIRED = 'bitcoin_upgrade_required'; + const CODE_CARD_DECLINE_RATE_LIMIT_EXCEEDED = 'card_decline_rate_limit_exceeded'; const CODE_CARD_DECLINED = 'card_declined'; + const CODE_CARDHOLDER_PHONE_NUMBER_REQUIRED = 'cardholder_phone_number_required'; const CODE_CHARGE_ALREADY_CAPTURED = 'charge_already_captured'; const CODE_CHARGE_ALREADY_REFUNDED = 'charge_already_refunded'; const CODE_CHARGE_DISPUTED = 'charge_disputed'; const CODE_CHARGE_EXCEEDS_SOURCE_LIMIT = 'charge_exceeds_source_limit'; const CODE_CHARGE_EXPIRED_FOR_CAPTURE = 'charge_expired_for_capture'; + const CODE_CHARGE_INVALID_PARAMETER = 'charge_invalid_parameter'; + const CODE_CLEARING_CODE_UNSUPPORTED = 'clearing_code_unsupported'; + const CODE_COUNTRY_CODE_INVALID = 'country_code_invalid'; const CODE_COUNTRY_UNSUPPORTED = 'country_unsupported'; const CODE_COUPON_EXPIRED = 'coupon_expired'; + const CODE_CUSTOMER_MAX_PAYMENT_METHODS = 'customer_max_payment_methods'; const CODE_CUSTOMER_MAX_SUBSCRIPTIONS = 'customer_max_subscriptions'; + const CODE_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized'; const CODE_EMAIL_INVALID = 'email_invalid'; const CODE_EXPIRED_CARD = 'expired_card'; const CODE_IDEMPOTENCY_KEY_IN_USE = 'idempotency_key_in_use'; @@ -69,8 +83,13 @@ class ErrorObject extends StripeObject const CODE_INCORRECT_CVC = 'incorrect_cvc'; const CODE_INCORRECT_NUMBER = 'incorrect_number'; const CODE_INCORRECT_ZIP = 'incorrect_zip'; + const CODE_INSTANT_PAYOUTS_LIMIT_EXCEEDED = 'instant_payouts_limit_exceeded'; const CODE_INSTANT_PAYOUTS_UNSUPPORTED = 'instant_payouts_unsupported'; + const CODE_INSUFFICIENT_FUNDS = 'insufficient_funds'; + const CODE_INTENT_INVALID_STATE = 'intent_invalid_state'; + const CODE_INTENT_VERIFICATION_METHOD_MISSING = 'intent_verification_method_missing'; const CODE_INVALID_CARD_TYPE = 'invalid_card_type'; + const CODE_INVALID_CHARACTERS = 'invalid_characters'; const CODE_INVALID_CHARGE_AMOUNT = 'invalid_charge_amount'; const CODE_INVALID_CVC = 'invalid_cvc'; const CODE_INVALID_EXPIRY_MONTH = 'invalid_expiry_month'; @@ -78,18 +97,17 @@ class ErrorObject extends StripeObject const CODE_INVALID_NUMBER = 'invalid_number'; const CODE_INVALID_SOURCE_USAGE = 'invalid_source_usage'; const CODE_INVOICE_NO_CUSTOMER_LINE_ITEMS = 'invoice_no_customer_line_items'; + const CODE_INVOICE_NO_PAYMENT_METHOD_TYPES = 'invoice_no_payment_method_types'; const CODE_INVOICE_NO_SUBSCRIPTION_LINE_ITEMS = 'invoice_no_subscription_line_items'; const CODE_INVOICE_NOT_EDITABLE = 'invoice_not_editable'; + const CODE_INVOICE_ON_BEHALF_OF_NOT_EDITABLE = 'invoice_on_behalf_of_not_editable'; const CODE_INVOICE_PAYMENT_INTENT_REQUIRES_ACTION = 'invoice_payment_intent_requires_action'; const CODE_INVOICE_UPCOMING_NONE = 'invoice_upcoming_none'; const CODE_LIVEMODE_MISMATCH = 'livemode_mismatch'; const CODE_LOCK_TIMEOUT = 'lock_timeout'; const CODE_MISSING = 'missing'; + const CODE_NO_ACCOUNT = 'no_account'; const CODE_NOT_ALLOWED_ON_STANDARD_ACCOUNT = 'not_allowed_on_standard_account'; - const CODE_ORDER_CREATION_FAILED = 'order_creation_failed'; - const CODE_ORDER_REQUIRED_SETTINGS = 'order_required_settings'; - const CODE_ORDER_STATUS_INVALID = 'order_status_invalid'; - const CODE_ORDER_UPSTREAM_TIMEOUT = 'order_upstream_timeout'; const CODE_OUT_OF_INVENTORY = 'out_of_inventory'; const CODE_PARAMETER_INVALID_EMPTY = 'parameter_invalid_empty'; const CODE_PARAMETER_INVALID_INTEGER = 'parameter_invalid_integer'; @@ -98,38 +116,64 @@ class ErrorObject extends StripeObject const CODE_PARAMETER_MISSING = 'parameter_missing'; const CODE_PARAMETER_UNKNOWN = 'parameter_unknown'; const CODE_PARAMETERS_EXCLUSIVE = 'parameters_exclusive'; + const CODE_PAYMENT_INTENT_ACTION_REQUIRED = 'payment_intent_action_required'; const CODE_PAYMENT_INTENT_AUTHENTICATION_FAILURE = 'payment_intent_authentication_failure'; const CODE_PAYMENT_INTENT_INCOMPATIBLE_PAYMENT_METHOD = 'payment_intent_incompatible_payment_method'; const CODE_PAYMENT_INTENT_INVALID_PARAMETER = 'payment_intent_invalid_parameter'; + const CODE_PAYMENT_INTENT_KONBINI_REJECTED_CONFIRMATION_NUMBER = 'payment_intent_konbini_rejected_confirmation_number'; + const CODE_PAYMENT_INTENT_MANDATE_INVALID = 'payment_intent_mandate_invalid'; + const CODE_PAYMENT_INTENT_PAYMENT_ATTEMPT_EXPIRED = 'payment_intent_payment_attempt_expired'; const CODE_PAYMENT_INTENT_PAYMENT_ATTEMPT_FAILED = 'payment_intent_payment_attempt_failed'; const CODE_PAYMENT_INTENT_UNEXPECTED_STATE = 'payment_intent_unexpected_state'; + const CODE_PAYMENT_METHOD_BANK_ACCOUNT_ALREADY_VERIFIED = 'payment_method_bank_account_already_verified'; + const CODE_PAYMENT_METHOD_BANK_ACCOUNT_BLOCKED = 'payment_method_bank_account_blocked'; + const CODE_PAYMENT_METHOD_BILLING_DETAILS_ADDRESS_MISSING = 'payment_method_billing_details_address_missing'; + const CODE_PAYMENT_METHOD_CURRENCY_MISMATCH = 'payment_method_currency_mismatch'; + const CODE_PAYMENT_METHOD_INVALID_PARAMETER = 'payment_method_invalid_parameter'; + const CODE_PAYMENT_METHOD_INVALID_PARAMETER_TESTMODE = 'payment_method_invalid_parameter_testmode'; + const CODE_PAYMENT_METHOD_MICRODEPOSIT_FAILED = 'payment_method_microdeposit_failed'; + const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_AMOUNTS_INVALID = 'payment_method_microdeposit_verification_amounts_invalid'; + const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_AMOUNTS_MISMATCH = 'payment_method_microdeposit_verification_amounts_mismatch'; + const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_ATTEMPTS_EXCEEDED = 'payment_method_microdeposit_verification_attempts_exceeded'; + const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_DESCRIPTOR_CODE_MISMATCH = 'payment_method_microdeposit_verification_descriptor_code_mismatch'; + const CODE_PAYMENT_METHOD_MICRODEPOSIT_VERIFICATION_TIMEOUT = 'payment_method_microdeposit_verification_timeout'; + const CODE_PAYMENT_METHOD_PROVIDER_DECLINE = 'payment_method_provider_decline'; + const CODE_PAYMENT_METHOD_PROVIDER_TIMEOUT = 'payment_method_provider_timeout'; const CODE_PAYMENT_METHOD_UNACTIVATED = 'payment_method_unactivated'; const CODE_PAYMENT_METHOD_UNEXPECTED_STATE = 'payment_method_unexpected_state'; + const CODE_PAYMENT_METHOD_UNSUPPORTED_TYPE = 'payment_method_unsupported_type'; const CODE_PAYOUTS_NOT_ALLOWED = 'payouts_not_allowed'; + const CODE_PLATFORM_ACCOUNT_REQUIRED = 'platform_account_required'; const CODE_PLATFORM_API_KEY_EXPIRED = 'platform_api_key_expired'; const CODE_POSTAL_CODE_INVALID = 'postal_code_invalid'; const CODE_PROCESSING_ERROR = 'processing_error'; const CODE_PRODUCT_INACTIVE = 'product_inactive'; const CODE_RATE_LIMIT = 'rate_limit'; + const CODE_REFER_TO_CUSTOMER = 'refer_to_customer'; + const CODE_REFUND_DISPUTED_PAYMENT = 'refund_disputed_payment'; const CODE_RESOURCE_ALREADY_EXISTS = 'resource_already_exists'; const CODE_RESOURCE_MISSING = 'resource_missing'; + const CODE_RETURN_INTENT_ALREADY_PROCESSED = 'return_intent_already_processed'; const CODE_ROUTING_NUMBER_INVALID = 'routing_number_invalid'; const CODE_SECRET_KEY_REQUIRED = 'secret_key_required'; const CODE_SEPA_UNSUPPORTED_ACCOUNT = 'sepa_unsupported_account'; const CODE_SETUP_ATTEMPT_FAILED = 'setup_attempt_failed'; const CODE_SETUP_INTENT_AUTHENTICATION_FAILURE = 'setup_intent_authentication_failure'; + const CODE_SETUP_INTENT_INVALID_PARAMETER = 'setup_intent_invalid_parameter'; + const CODE_SETUP_INTENT_SETUP_ATTEMPT_EXPIRED = 'setup_intent_setup_attempt_expired'; const CODE_SETUP_INTENT_UNEXPECTED_STATE = 'setup_intent_unexpected_state'; const CODE_SHIPPING_CALCULATION_FAILED = 'shipping_calculation_failed'; const CODE_SKU_INACTIVE = 'sku_inactive'; const CODE_STATE_UNSUPPORTED = 'state_unsupported'; const CODE_TAX_ID_INVALID = 'tax_id_invalid'; const CODE_TAXES_CALCULATION_FAILED = 'taxes_calculation_failed'; + const CODE_TERMINAL_LOCATION_COUNTRY_UNSUPPORTED = 'terminal_location_country_unsupported'; const CODE_TESTMODE_CHARGES_ONLY = 'testmode_charges_only'; const CODE_TLS_VERSION_UNSUPPORTED = 'tls_version_unsupported'; const CODE_TOKEN_ALREADY_USED = 'token_already_used'; const CODE_TOKEN_IN_USE = 'token_in_use'; + const CODE_TRANSFER_SOURCE_BALANCE_PARAMETERS_MISMATCH = 'transfer_source_balance_parameters_mismatch'; const CODE_TRANSFERS_NOT_ALLOWED = 'transfers_not_allowed'; - const CODE_UPSTREAM_ORDER_CREATION_FAILED = 'upstream_order_creation_failed'; const CODE_URL_INVALID = 'url_invalid'; /** diff --git a/lib/Stripe/lib/Event.php b/lib/Stripe/lib/Event.php index f11fdd9b..8882c6d2 100644 --- a/lib/Stripe/lib/Event.php +++ b/lib/Stripe/lib/Event.php @@ -118,6 +118,11 @@ class Event extends ApiResource const CUSTOMER_TAX_ID_UPDATED = 'customer.tax_id.updated'; const CUSTOMER_UPDATED = 'customer.updated'; const FILE_CREATED = 'file.created'; + const FINANCIAL_CONNECTIONS_ACCOUNT_CREATED = 'financial_connections.account.created'; + const FINANCIAL_CONNECTIONS_ACCOUNT_DEACTIVATED = 'financial_connections.account.deactivated'; + const FINANCIAL_CONNECTIONS_ACCOUNT_DISCONNECTED = 'financial_connections.account.disconnected'; + const FINANCIAL_CONNECTIONS_ACCOUNT_REACTIVATED = 'financial_connections.account.reactivated'; + const FINANCIAL_CONNECTIONS_ACCOUNT_REFRESHED_BALANCE = 'financial_connections.account.refreshed_balance'; const IDENTITY_VERIFICATION_SESSION_CANCELED = 'identity.verification_session.canceled'; const IDENTITY_VERIFICATION_SESSION_CREATED = 'identity.verification_session.created'; const IDENTITY_VERIFICATION_SESSION_PROCESSING = 'identity.verification_session.processing'; @@ -140,7 +145,6 @@ class Event extends ApiResource const INVOICEITEM_CREATED = 'invoiceitem.created'; const INVOICEITEM_DELETED = 'invoiceitem.deleted'; const INVOICEITEM_UPDATED = 'invoiceitem.updated'; - const ISSUER_FRAUD_RECORD_CREATED = 'issuer_fraud_record.created'; const ISSUING_AUTHORIZATION_CREATED = 'issuing_authorization.created'; const ISSUING_AUTHORIZATION_REQUEST = 'issuing_authorization.request'; const ISSUING_AUTHORIZATION_UPDATED = 'issuing_authorization.updated'; @@ -157,10 +161,6 @@ class Event extends ApiResource const ISSUING_TRANSACTION_UPDATED = 'issuing_transaction.updated'; const MANDATE_UPDATED = 'mandate.updated'; const ORDER_CREATED = 'order.created'; - const ORDER_PAYMENT_FAILED = 'order.payment_failed'; - const ORDER_PAYMENT_SUCCEEDED = 'order.payment_succeeded'; - const ORDER_UPDATED = 'order.updated'; - const ORDER_RETURN_CREATED = 'order_return.created'; const PAYMENT_INTENT_AMOUNT_CAPTURABLE_UPDATED = 'payment_intent.amount_capturable_updated'; const PAYMENT_INTENT_CANCELED = 'payment_intent.canceled'; const PAYMENT_INTENT_CREATED = 'payment_intent.created'; @@ -173,7 +173,6 @@ class Event extends ApiResource const PAYMENT_LINK_UPDATED = 'payment_link.updated'; const PAYMENT_METHOD_ATTACHED = 'payment_method.attached'; const PAYMENT_METHOD_AUTOMATICALLY_UPDATED = 'payment_method.automatically_updated'; - const PAYMENT_METHOD_CARD_AUTOMATICALLY_UPDATED = 'payment_method.card_automatically_updated'; const PAYMENT_METHOD_DETACHED = 'payment_method.detached'; const PAYMENT_METHOD_UPDATED = 'payment_method.updated'; const PAYOUT_CANCELED = 'payout.canceled'; @@ -184,7 +183,6 @@ class Event extends ApiResource const PERSON_CREATED = 'person.created'; const PERSON_DELETED = 'person.deleted'; const PERSON_UPDATED = 'person.updated'; - const PING = 'ping'; const PLAN_CREATED = 'plan.created'; const PLAN_DELETED = 'plan.deleted'; const PLAN_UPDATED = 'plan.updated'; @@ -195,7 +193,6 @@ class Event extends ApiResource const PRODUCT_DELETED = 'product.deleted'; const PRODUCT_UPDATED = 'product.updated'; const PROMOTION_CODE_CREATED = 'promotion_code.created'; - const PROMOTION_CODE_DELETED = 'promotion_code.deleted'; const PROMOTION_CODE_UPDATED = 'promotion_code.updated'; const QUOTE_ACCEPTED = 'quote.accepted'; const QUOTE_CANCELED = 'quote.canceled'; @@ -249,8 +246,6 @@ class Event extends ApiResource const TOPUP_REVERSED = 'topup.reversed'; const TOPUP_SUCCEEDED = 'topup.succeeded'; const TRANSFER_CREATED = 'transfer.created'; - const TRANSFER_FAILED = 'transfer.failed'; - const TRANSFER_PAID = 'transfer.paid'; const TRANSFER_REVERSED = 'transfer.reversed'; const TRANSFER_UPDATED = 'transfer.updated'; const TREASURY_CREDIT_REVERSAL_CREATED = 'treasury.credit_reversal.created'; @@ -279,7 +274,6 @@ class Event extends ApiResource const TREASURY_OUTBOUND_TRANSFER_RETURNED = 'treasury.outbound_transfer.returned'; const TREASURY_RECEIVED_CREDIT_CREATED = 'treasury.received_credit.created'; const TREASURY_RECEIVED_CREDIT_FAILED = 'treasury.received_credit.failed'; - const TREASURY_RECEIVED_CREDIT_REVERSED = 'treasury.received_credit.reversed'; const TREASURY_RECEIVED_CREDIT_SUCCEEDED = 'treasury.received_credit.succeeded'; const TREASURY_RECEIVED_DEBIT_CREATED = 'treasury.received_debit.created'; } diff --git a/lib/Stripe/lib/File.php b/lib/Stripe/lib/File.php index 48c55cf0..7f510077 100644 --- a/lib/Stripe/lib/File.php +++ b/lib/Stripe/lib/File.php @@ -59,11 +59,6 @@ class File extends ApiResource create as protected _create; } - public static function classUrl() - { - return '/v1/files'; - } - /** * @param null|array $params * @param null|array|string $opts diff --git a/lib/Stripe/lib/FinancialConnections/Account.php b/lib/Stripe/lib/FinancialConnections/Account.php index aabb03ea..35785f09 100644 --- a/lib/Stripe/lib/FinancialConnections/Account.php +++ b/lib/Stripe/lib/FinancialConnections/Account.php @@ -67,9 +67,9 @@ public function disconnect($params = null, $opts = null) } /** + * @param string $id * @param null|array $params * @param null|array|string $opts - * @param mixed $id * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * diff --git a/lib/Stripe/lib/Invoice.php b/lib/Stripe/lib/Invoice.php index dff7bcf6..1ad3c86e 100644 --- a/lib/Stripe/lib/Invoice.php +++ b/lib/Stripe/lib/Invoice.php @@ -48,7 +48,7 @@ * @property null|(string|\SimplePay\Vendor\Stripe\TaxId)[] $account_tax_ids The account tax IDs associated with the invoice. Only editable when the invoice is a draft. * @property int $amount_due Final amount due at this time for this invoice. If the invoice's total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the amount_due may be 0. If there is a positive starting_balance for the invoice (the customer owes money), the amount_due will also take that into account. The charge that gets generated for the invoice will be for the amount specified in amount_due. * @property int $amount_paid The amount, in %s, that was paid. - * @property int $amount_remaining The amount remaining, in %s, that is due. + * @property int $amount_remaining The difference between amount_due and amount_paid, in %s. * @property null|string|\SimplePay\Vendor\Stripe\StripeObject $application ID of the Connect Application that created the invoice. * @property null|int $application_fee_amount The fee in %s that will be applied to the invoice and transferred to the application owner's SimplePay\Vendor\Stripe account when the invoice is paid. * @property int $attempt_count Number of payment attempts made for this invoice, from the perspective of the payment retry schedule. Any payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule. @@ -70,7 +70,7 @@ * @property null|string $customer_tax_exempt The customer's tax exempt status. Until the invoice is finalized, this field will equal customer.tax_exempt. Once the invoice is finalized, this field will no longer be updated. * @property null|\SimplePay\Vendor\Stripe\StripeObject[] $customer_tax_ids The customer's tax IDs. Until the invoice is finalized, this field will contain the same tax IDs as customer.tax_ids. Once the invoice is finalized, this field will no longer be updated. * @property null|string|\SimplePay\Vendor\Stripe\PaymentMethod $default_payment_method ID of the default payment method for the invoice. It must belong to the customer associated with the invoice. If not set, defaults to the subscription's default payment method, if any, or to the default payment method in the customer's invoice settings. - * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $default_source ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription's default source, if any, or to the customer's default source. + * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $default_source ID of the default payment source for the invoice. It must belong to the customer associated with the invoice and be in a chargeable state. If not set, defaults to the subscription's default source, if any, or to the customer's default source. * @property \SimplePay\Vendor\Stripe\TaxRate[] $default_tax_rates The tax rates applied to this invoice, if any. * @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. Referenced as 'memo' in the Dashboard. * @property null|\SimplePay\Vendor\Stripe\Discount $discount Describes the current discount applied to this invoice, if there is one. Not populated if there are multiple discounts. @@ -97,19 +97,23 @@ * @property int $pre_payment_credit_notes_amount Total amount of all pre-payment credit notes issued for this invoice. * @property null|string|\SimplePay\Vendor\Stripe\Quote $quote The quote this invoice was generated from. * @property null|string $receipt_number This is the transaction number that appears on email receipts sent for this invoice. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $rendering_options Options for invoice PDF rendering. * @property int $starting_balance Starting customer balance before the invoice is finalized. If the invoice has not been finalized yet, this will be the current customer balance. * @property null|string $statement_descriptor Extra information about an invoice for the customer's credit card statement. * @property null|string $status The status of the invoice, one of draft, open, paid, uncollectible, or void. Learn more * @property \SimplePay\Vendor\Stripe\StripeObject $status_transitions * @property null|string|\SimplePay\Vendor\Stripe\Subscription $subscription The subscription that this invoice was prepared for, if any. * @property int $subscription_proration_date Only set for upcoming invoices that preview prorations. The time used to calculate prorations. - * @property int $subtotal Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or tax is applied. Item discounts are already incorporated + * @property int $subtotal Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or exclusive tax is applied. Item discounts are already incorporated + * @property null|int $subtotal_excluding_tax The integer amount in %s representing the subtotal of the invoice before any invoice level discount or tax is applied. Item discounts are already incorporated * @property null|int $tax The amount of tax on this invoice. This is the sum of all the tax amounts on this invoice. * @property null|string|\SimplePay\Vendor\Stripe\TestHelpers\TestClock $test_clock ID of the test clock this invoice belongs to. * @property \SimplePay\Vendor\Stripe\StripeObject $threshold_reason * @property int $total Total after discounts and taxes. * @property null|\SimplePay\Vendor\Stripe\StripeObject[] $total_discount_amounts The aggregate amounts calculated per discount across all line items. + * @property null|int $total_excluding_tax The integer amount in %s representing the total amount of the invoice including all discounts but excluding all tax. * @property \SimplePay\Vendor\Stripe\StripeObject[] $total_tax_amounts The aggregate amounts calculated per tax rate for all line items. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $transfer_data The account (if any) the payment will be attributed to for tax reporting, and where funds from the payment will be transferred to for the invoice. * @property null|int $webhooks_delivered_at Invoices are automatically paid or sent 1 hour after webhooks are delivered, or until all webhook delivery attempts have been exhausted. This field tracks the time when webhooks for this invoice were successfully delivered. If the invoice had no webhooks to deliver, this will be set while the invoice is being created. */ class Invoice extends ApiResource @@ -119,6 +123,7 @@ class Invoice extends ApiResource use ApiOperations\All; use ApiOperations\Create; use ApiOperations\Delete; + use ApiOperations\NestedResource; use ApiOperations\Retrieve; use ApiOperations\Search; use ApiOperations\Update; @@ -126,6 +131,7 @@ class Invoice extends ApiResource const BILLING_CHARGE_AUTOMATICALLY = 'charge_automatically'; const BILLING_SEND_INVOICE = 'send_invoice'; + const BILLING_REASON_AUTOMATIC_PENDING_INVOICE_ITEM_INVOICE = 'automatic_pending_invoice_item_invoice'; const BILLING_REASON_MANUAL = 'manual'; const BILLING_REASON_QUOTE_ACCEPT = 'quote_accept'; const BILLING_REASON_SUBSCRIPTION = 'subscription'; @@ -145,24 +151,6 @@ class Invoice extends ApiResource const STATUS_UNCOLLECTIBLE = 'uncollectible'; const STATUS_VOID = 'void'; - use ApiOperations\NestedResource; - - const PATH_LINES = '/lines'; - - /** - * @param string $id the ID of the invoice on which to retrieve the lines - * @param null|array $params - * @param null|array|string $opts - * - * @throws StripeExceptionApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\InvoiceLineItem> the list of lines (InvoiceLineItem) - */ - public static function allLines($id, $params = null, $opts = null) - { - return self::_allNestedResources($id, static::PATH_LINES, $params, $opts); - } - /** * @param null|array $params * @param null|array|string $opts @@ -249,6 +237,24 @@ public static function upcoming($params = null, $opts = null) return $obj; } + /** + * @param null|array $params + * @param null|array|string $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\InvoiceLineItem> list of InvoiceLineItems + */ + public static function upcomingLines($params = null, $opts = null) + { + $url = static::classUrl() . '/upcoming/lines'; + list($response, $opts) = static::_staticRequest('get', $url, $params, $opts); + $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response->json, $opts); + $obj->setLastResponse($response); + + return $obj; + } + /** * @param null|array $params * @param null|array|string $opts @@ -280,4 +286,20 @@ public static function search($params = null, $opts = null) return self::_searchResource($url, $params, $opts); } + + const PATH_LINES = '/lines'; + + /** + * @param string $id the ID of the invoice on which to retrieve the line items + * @param null|array $params + * @param null|array|string $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> the list of line items + */ + public static function allLines($id, $params = null, $opts = null) + { + return self::_allNestedResources($id, static::PATH_LINES, $params, $opts); + } } diff --git a/lib/Stripe/lib/InvoiceLineItem.php b/lib/Stripe/lib/InvoiceLineItem.php index 46ffdb98..d2b01973 100644 --- a/lib/Stripe/lib/InvoiceLineItem.php +++ b/lib/Stripe/lib/InvoiceLineItem.php @@ -8,6 +8,7 @@ * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. * @property int $amount The amount, in %s. + * @property null|int $amount_excluding_tax The integer amount in %s representing the amount for this line item, excluding all tax and discounts. * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. * @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. * @property null|\SimplePay\Vendor\Stripe\StripeObject[] $discount_amounts The amount of discount calculated per discount for this line item. @@ -27,6 +28,7 @@ * @property \SimplePay\Vendor\Stripe\StripeObject[] $tax_amounts The amount of tax calculated per tax rate for this line item * @property \SimplePay\Vendor\Stripe\TaxRate[] $tax_rates The tax rates which apply to the line item. * @property string $type A string identifying the type of the source of this line item, either an invoiceitem or a subscription. + * @property null|string $unit_amount_excluding_tax The amount in %s representing the unit amount for this line item, excluding all tax and discounts. */ class InvoiceLineItem extends ApiResource { diff --git a/lib/Stripe/lib/Issuing/Card.php b/lib/Stripe/lib/Issuing/Card.php index 279f725e..c5d86091 100644 --- a/lib/Stripe/lib/Issuing/Card.php +++ b/lib/Stripe/lib/Issuing/Card.php @@ -14,7 +14,7 @@ * @property null|string $cancellation_reason The reason why the card was canceled. * @property \SimplePay\Vendor\Stripe\Issuing\Cardholder $cardholder

An Issuing Cardholder object represents an individual or business entity who is issued cards.

Related guide: How to create a Cardholder

* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. - * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. + * @property string $currency Three-letter ISO currency code, in lowercase. Supported currencies are usd in the US, eur in the EU, and gbp in the UK. * @property string $cvc The card's CVC. For security reasons, this is only available for virtual cards, and will be omitted unless you explicitly request it with the expand parameter. Additionally, it's only available via the "Retrieve a card" endpoint, not via "List all cards" or any other endpoint. * @property int $exp_month The expiration month of the card. * @property int $exp_year The expiration year of the card. @@ -40,22 +40,4 @@ class Card extends \SimplePay\Vendor\Stripe\ApiResource use \SimplePay\Vendor\Stripe\ApiOperations\Create; use \SimplePay\Vendor\Stripe\ApiOperations\Retrieve; use \SimplePay\Vendor\Stripe\ApiOperations\Update; - - /** - * @param null|array $params - * @param null|array|string $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Issuing\CardDetails the card details associated with that issuing card - */ - public function details($params = null, $opts = null) - { - $url = $this->instanceUrl() . '/details'; - list($response, $opts) = $this->_request('get', $url, $params, $opts); - $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response, $opts); - $obj->setLastResponse($response); - - return $obj; - } } diff --git a/lib/Stripe/lib/Issuing/Dispute.php b/lib/Stripe/lib/Issuing/Dispute.php index 1125faab..2a4bebfe 100644 --- a/lib/Stripe/lib/Issuing/Dispute.php +++ b/lib/Stripe/lib/Issuing/Dispute.php @@ -15,7 +15,7 @@ * * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. - * @property int $amount Disputed amount. Usually the amount of the transaction, but can differ (usually because of currency fluctuation). + * @property int $amount Disputed amount in the card's currency and in the smallest currency unit. Usually the amount of the transaction, but can differ (usually because of currency fluctuation). * @property null|\SimplePay\Vendor\Stripe\BalanceTransaction[] $balance_transactions List of balance transactions associated with the dispute. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property string $currency The currency the transaction was made in. diff --git a/lib/Stripe/lib/LineItem.php b/lib/Stripe/lib/LineItem.php index 74e0df89..4209b855 100644 --- a/lib/Stripe/lib/LineItem.php +++ b/lib/Stripe/lib/LineItem.php @@ -24,6 +24,4 @@ class LineItem extends ApiResource { const OBJECT_NAME = 'item'; - - use ApiOperations\All; } diff --git a/lib/Stripe/lib/Order.php b/lib/Stripe/lib/Order.php index 927ac0bc..3ce7db70 100644 --- a/lib/Stripe/lib/Order.php +++ b/lib/Stripe/lib/Order.php @@ -68,9 +68,9 @@ public function cancel($params = null, $opts = null) } /** + * @param string $id * @param null|array $params * @param null|array|string $opts - * @param mixed $id * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * diff --git a/lib/Stripe/lib/OrderItem.php b/lib/Stripe/lib/OrderItem.php deleted file mode 100644 index 01e7e56f..00000000 --- a/lib/Stripe/lib/OrderItem.php +++ /dev/null @@ -1,19 +0,0 @@ -Indicates that you intend to make future payments with this PaymentIntent's payment method.

Providing this parameter will attach the payment method to the PaymentIntent's Customer, if present, after the PaymentIntent is confirmed and any required actions from the user are complete. If no Customer was provided, the payment method can still be attached to a Customer after the transaction completes.

When processing card payments, SimplePay\Vendor\Stripe also uses setup_future_usage to dynamically optimize your payment flow and comply with regional legislation and network rules, such as SCA.

* @property null|\SimplePay\Vendor\Stripe\StripeObject $shipping Shipping information for this PaymentIntent. - * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $source This is a legacy field that will be removed in the future. It is the ID of the Source object that is associated with this PaymentIntent, if one was supplied. + * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $source This is a legacy field that will be removed in the future. It is the ID of the Source object that is associated with this PaymentIntent, if one was supplied. * @property null|string $statement_descriptor For non-card charges, you can use this value as the complete description that appears on your customers’ statements. Must contain at least one letter, maximum 22 characters. * @property null|string $statement_descriptor_suffix Provides information about a card payment that customers see on their statements. Concatenated with the prefix (shortened descriptor) or statement descriptor that’s set on the account to form the complete statement descriptor. Maximum 22 characters for the concatenated descriptor. * @property string $status Status of this PaymentIntent, one of requires_payment_method, requires_confirmation, requires_action, processing, requires_capture, canceled, or succeeded. Read more about each PaymentIntent status. diff --git a/lib/Stripe/lib/PaymentLink.php b/lib/Stripe/lib/PaymentLink.php index a3c9bd36..ea71e3e1 100644 --- a/lib/Stripe/lib/PaymentLink.php +++ b/lib/Stripe/lib/PaymentLink.php @@ -64,9 +64,9 @@ class PaymentLink extends ApiResource const SUBMIT_TYPE_PAY = 'pay'; /** + * @param string $id * @param null|array $params * @param null|array|string $opts - * @param mixed $id * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * diff --git a/lib/Stripe/lib/PaymentMethod.php b/lib/Stripe/lib/PaymentMethod.php index af8a3fdc..4be14a3d 100644 --- a/lib/Stripe/lib/PaymentMethod.php +++ b/lib/Stripe/lib/PaymentMethod.php @@ -26,6 +26,7 @@ * @property \SimplePay\Vendor\Stripe\StripeObject $bacs_debit * @property \SimplePay\Vendor\Stripe\StripeObject $bancontact * @property \SimplePay\Vendor\Stripe\StripeObject $billing_details + * @property \SimplePay\Vendor\Stripe\StripeObject $blik * @property \SimplePay\Vendor\Stripe\StripeObject $boleto * @property \SimplePay\Vendor\Stripe\StripeObject $card * @property \SimplePay\Vendor\Stripe\StripeObject $card_present @@ -46,6 +47,7 @@ * @property \SimplePay\Vendor\Stripe\StripeObject $oxxo * @property \SimplePay\Vendor\Stripe\StripeObject $p24 * @property \SimplePay\Vendor\Stripe\StripeObject $paynow + * @property \SimplePay\Vendor\Stripe\StripeObject $promptpay * @property \SimplePay\Vendor\Stripe\StripeObject $radar_options Options to configure Radar. See Radar Session for more information. * @property \SimplePay\Vendor\Stripe\StripeObject $sepa_debit * @property \SimplePay\Vendor\Stripe\StripeObject $sofort diff --git a/lib/Stripe/lib/Payout.php b/lib/Stripe/lib/Payout.php index b0fa1edb..7053df01 100644 --- a/lib/Stripe/lib/Payout.php +++ b/lib/Stripe/lib/Payout.php @@ -53,7 +53,9 @@ class Payout extends ApiResource const FAILURE_COULD_NOT_PROCESS = 'could_not_process'; const FAILURE_DEBIT_NOT_AUTHORIZED = 'debit_not_authorized'; const FAILURE_DECLINED = 'declined'; + const FAILURE_INCORRECT_ACCOUNT_HOLDER_ADDRESS = 'incorrect_account_holder_address'; const FAILURE_INCORRECT_ACCOUNT_HOLDER_NAME = 'incorrect_account_holder_name'; + const FAILURE_INCORRECT_ACCOUNT_HOLDER_TAX_ID = 'incorrect_account_holder_tax_id'; const FAILURE_INSUFFICIENT_FUNDS = 'insufficient_funds'; const FAILURE_INVALID_ACCOUNT_NUMBER = 'invalid_account_number'; const FAILURE_INVALID_CURRENCY = 'invalid_currency'; diff --git a/lib/Stripe/lib/Price.php b/lib/Stripe/lib/Price.php index 2bbc6b82..1ebc7a0f 100644 --- a/lib/Stripe/lib/Price.php +++ b/lib/Stripe/lib/Price.php @@ -29,6 +29,8 @@ * @property string $billing_scheme Describes how to compute the price per period. Either per_unit or tiered. per_unit indicates that the fixed amount (specified in unit_amount or unit_amount_decimal) will be charged per unit in quantity (for prices with usage_type=licensed), or per unit of total usage (for prices with usage_type=metered). tiered indicates that the unit pricing will be computed using a tiering strategy as defined using the tiers and tiers_mode attributes. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. + * @property \SimplePay\Vendor\Stripe\StripeObject $currency_options Prices defined in each available currency option. Each key must be a three-letter ISO currency code and a supported currency. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $custom_unit_amount When set, provides configuration for the amount to be adjusted by the customer during Checkout Sessions and Payment Links. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property null|string $lookup_key A lookup key used to retrieve prices dynamically from a static string. This may be up to 200 characters. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. diff --git a/lib/Stripe/lib/Quote.php b/lib/Stripe/lib/Quote.php index 36df97e7..ef786c22 100644 --- a/lib/Stripe/lib/Quote.php +++ b/lib/Stripe/lib/Quote.php @@ -132,9 +132,9 @@ public function finalizeQuote($params = null, $opts = null) } /** + * @param string $id * @param null|array $params * @param null|array|string $opts - * @param mixed $id * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * @@ -151,9 +151,9 @@ public static function allComputedUpfrontLineItems($id, $params = null, $opts = } /** + * @param string $id * @param null|array $params * @param null|array|string $opts - * @param mixed $id * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * diff --git a/lib/Stripe/lib/Recipient.php b/lib/Stripe/lib/Recipient.php deleted file mode 100644 index 34d159b8..00000000 --- a/lib/Stripe/lib/Recipient.php +++ /dev/null @@ -1,44 +0,0 @@ -Recipient objects, you can transfer money from your SimplePay\Vendor\Stripe - * account to a third-party bank account or debit card. The API allows you to - * create, delete, and update your recipients. You can retrieve individual - * recipients as well as a list of all your recipients. - * - * Recipient objects have been deprecated in favor of Connect, specifically Connect's much - * more powerful Account objects. - * SimplePay\Vendor\Stripe accounts that don't already use recipients can no longer begin doing so. - * Please use Account objects instead. - * - * @property string $id Unique identifier for the object. - * @property string $object String representing the object's type. Objects of the same type share the same value. - * @property null|\SimplePay\Vendor\Stripe\BankAccount $active_account Hash describing the current account on the recipient, if there is one. - * @property null|\SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Card> $cards - * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. - * @property null|string|\SimplePay\Vendor\Stripe\Card $default_card The default card to use for creating transfers to this recipient. - * @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. - * @property null|string $email - * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. - * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. - * @property null|string|\SimplePay\Vendor\Stripe\Account $migrated_to The ID of the Custom account this recipient was migrated to. If set, the recipient can no longer be updated, nor can transfers be made to it: use the Custom account instead. - * @property null|string $name Full, legal name of the recipient. - * @property string|\SimplePay\Vendor\Stripe\Account $rolled_back_from - * @property string $type Type of the recipient, one of individual or corporation. - * @property bool $verified Whether the recipient has been verified. This field is non-standard, and maybe removed in the future - */ -class Recipient extends ApiResource -{ - const OBJECT_NAME = 'recipient'; - - use ApiOperations\All; - use ApiOperations\Create; - use ApiOperations\Delete; - use ApiOperations\Retrieve; - use ApiOperations\Update; -} diff --git a/lib/Stripe/lib/Refund.php b/lib/Stripe/lib/Refund.php index 4b583e6a..a6f54f17 100644 --- a/lib/Stripe/lib/Refund.php +++ b/lib/Stripe/lib/Refund.php @@ -52,13 +52,9 @@ class Refund extends ApiResource const STATUS_CANCELED = 'canceled'; const STATUS_FAILED = 'failed'; const STATUS_PENDING = 'pending'; + const STATUS_REQUIRES_ACTION = 'requires_action'; const STATUS_SUCCEEDED = 'succeeded'; - /** - * @deprecated use FAILURE_REASON_EXPIRED_OR_CANCELED_CARD instead - */ - const FAILURE_REASON = 'expired_or_canceled_card'; - /** * @param null|array $params * @param null|array|string $opts diff --git a/lib/Stripe/lib/SearchResult.php b/lib/Stripe/lib/SearchResult.php index cf753a94..46a91165 100644 --- a/lib/Stripe/lib/SearchResult.php +++ b/lib/Stripe/lib/SearchResult.php @@ -62,6 +62,9 @@ public function setFilters($filters) $this->filters = $filters; } + /** + * @return mixed + */ #[\ReturnTypeWillChange] public function offsetGet($k) { diff --git a/lib/Stripe/lib/Service/Checkout/SessionService.php b/lib/Stripe/lib/Service/Checkout/SessionService.php index 40759e45..fdb6ddd9 100644 --- a/lib/Stripe/lib/Service/Checkout/SessionService.php +++ b/lib/Stripe/lib/Service/Checkout/SessionService.php @@ -27,7 +27,7 @@ public function all($params = null, $opts = null) * items. There is also a URL where you can retrieve the full (paginated) list of * line items. * - * @param string $parentId + * @param string $id * @param null|array $params * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts * @@ -35,9 +35,9 @@ public function all($params = null, $opts = null) * * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> */ - public function allLineItems($parentId, $params = null, $opts = null) + public function allLineItems($id, $params = null, $opts = null) { - return $this->requestCollection('get', $this->buildPath('/v1/checkout/sessions/%s/line_items', $parentId), $params, $opts); + return $this->requestCollection('get', $this->buildPath('/v1/checkout/sessions/%s/line_items', $id), $params, $opts); } /** diff --git a/lib/Stripe/lib/Service/CreditNoteService.php b/lib/Stripe/lib/Service/CreditNoteService.php index f0ac9104..ec0fd1ee 100644 --- a/lib/Stripe/lib/Service/CreditNoteService.php +++ b/lib/Stripe/lib/Service/CreditNoteService.php @@ -98,7 +98,7 @@ public function preview($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\CreditNote> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\CreditNoteLineItem> */ public function previewLines($params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/CustomerService.php b/lib/Stripe/lib/Service/CustomerService.php index 9dbea484..ce014698 100644 --- a/lib/Stripe/lib/Service/CustomerService.php +++ b/lib/Stripe/lib/Service/CustomerService.php @@ -48,7 +48,7 @@ public function allBalanceTransactions($parentId, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Customer> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\PaymentMethod> */ public function allPaymentMethods($id, $params = null, $opts = null) { @@ -64,7 +64,7 @@ public function allPaymentMethods($id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source> */ public function allSources($parentId, $params = null, $opts = null) { @@ -154,7 +154,7 @@ public function createFundingInstructions($id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public function createSource($parentId, $params = null, $opts = null) { @@ -218,7 +218,7 @@ public function deleteDiscount($id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public function deleteSource($parentId, $id, $params = null, $opts = null) { @@ -293,7 +293,7 @@ public function retrieveCashBalance($parentId, $params = null, $opts = null) } /** - * Retrieves a PaymentMethod object. + * Retrieves a PaymentMethod object for a given Customer. * * @param string $parentId * @param string $id @@ -319,7 +319,7 @@ public function retrievePaymentMethod($parentId, $id, $params = null, $opts = nu * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public function retrieveSource($parentId, $id, $params = null, $opts = null) { @@ -410,7 +410,7 @@ public function updateBalanceTransaction($parentId, $id, $params = null, $opts = } /** - * Updates a customer’s cash balance. + * Changes the settings on a customer’s cash balance. * * @param string $parentId * @param null|array $params @@ -433,7 +433,7 @@ public function updateCashBalance($parentId, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public function updateSource($parentId, $id, $params = null, $opts = null) { @@ -448,7 +448,7 @@ public function updateSource($parentId, $id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source */ public function verifySource($parentId, $id, $params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/FinancialConnections/AccountService.php b/lib/Stripe/lib/Service/FinancialConnections/AccountService.php index 1da5b046..d2eb2b8d 100644 --- a/lib/Stripe/lib/Service/FinancialConnections/AccountService.php +++ b/lib/Stripe/lib/Service/FinancialConnections/AccountService.php @@ -30,7 +30,7 @@ public function all($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\FinancialConnections\Account> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\FinancialConnections\AccountOwner> */ public function allOwners($id, $params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/InvoiceService.php b/lib/Stripe/lib/Service/InvoiceService.php index 63d39147..ddb86f61 100644 --- a/lib/Stripe/lib/Service/InvoiceService.php +++ b/lib/Stripe/lib/Service/InvoiceService.php @@ -35,7 +35,7 @@ public function all($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\InvoiceLineItem> */ public function allLines($parentId, $params = null, $opts = null) { @@ -241,7 +241,7 @@ public function upcoming($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Invoice> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\InvoiceLineItem> */ public function upcomingLines($params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/OrderService.php b/lib/Stripe/lib/Service/OrderService.php index b12c514d..1d925f79 100644 --- a/lib/Stripe/lib/Service/OrderService.php +++ b/lib/Stripe/lib/Service/OrderService.php @@ -33,7 +33,7 @@ public function all($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Order> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> */ public function allLineItems($id, $params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/PaymentIntentService.php b/lib/Stripe/lib/Service/PaymentIntentService.php index ade15add..3f1aaf4e 100644 --- a/lib/Stripe/lib/Service/PaymentIntentService.php +++ b/lib/Stripe/lib/Service/PaymentIntentService.php @@ -24,10 +24,6 @@ public function all($params = null, $opts = null) /** * Manually reconcile the remaining amount for a customer_balance PaymentIntent. * - * This can be used when the cash balance for a - * customer in manual reconciliation mode received funds. - * * @param string $id * @param null|array $params * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts diff --git a/lib/Stripe/lib/Service/PaymentLinkService.php b/lib/Stripe/lib/Service/PaymentLinkService.php index 8124f25b..87e0f3ae 100644 --- a/lib/Stripe/lib/Service/PaymentLinkService.php +++ b/lib/Stripe/lib/Service/PaymentLinkService.php @@ -33,7 +33,7 @@ public function all($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\PaymentLink> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> */ public function allLineItems($id, $params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/PaymentMethodService.php b/lib/Stripe/lib/Service/PaymentMethodService.php index 0ac76bb0..be7863a9 100644 --- a/lib/Stripe/lib/Service/PaymentMethodService.php +++ b/lib/Stripe/lib/Service/PaymentMethodService.php @@ -7,8 +7,9 @@ class PaymentMethodService extends \SimplePay\Vendor\Stripe\Service\AbstractService { /** - * Returns a list of PaymentMethods. For listing a customer’s payment methods, you - * should use List a Customer’s + * Returns a list of PaymentMethods attached to the StripeAccount. For listing a + * customer’s payment methods, you should use List a Customer’s * PaymentMethods. * * @param null|array $params @@ -30,10 +31,11 @@ public function all($params = null, $opts = null) * you use a SetupIntent or a PaymentIntent * with setup_future_usage. - * These approaches will perform any necessary steps to ensure that the - * PaymentMethod can be used in a future payment. Using the - * /v1/payment_methods/:id/attach endpoint does not ensure that future - * payments can be made with the attached PaymentMethod. See /v1/payment_methods/:id/attach + * endpoint without first using a SetupIntent or PaymentIntent with + * setup_future_usage does not optimize the PaymentMethod for future + * use, which makes later declines and payment friction more likely. See Optimizing cards for future * payments for more information about setting up future payments. * @@ -96,7 +98,10 @@ public function detach($id, $params = null, $opts = null) } /** - * Retrieves a PaymentMethod object. + * Retrieves a PaymentMethod object attached to the StripeAccount. To retrieve a + * payment method attached to a Customer, you should use Retrieve a Customer’s + * PaymentMethods. * * @param string $id * @param null|array $params diff --git a/lib/Stripe/lib/Service/QuoteService.php b/lib/Stripe/lib/Service/QuoteService.php index 435baaaa..eaf66222 100644 --- a/lib/Stripe/lib/Service/QuoteService.php +++ b/lib/Stripe/lib/Service/QuoteService.php @@ -49,7 +49,7 @@ public function all($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Quote> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> */ public function allComputedUpfrontLineItems($id, $params = null, $opts = null) { @@ -67,7 +67,7 @@ public function allComputedUpfrontLineItems($id, $params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\Quote> + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\LineItem> */ public function allLineItems($id, $params = null, $opts = null) { diff --git a/lib/Stripe/lib/Service/SourceService.php b/lib/Stripe/lib/Service/SourceService.php index e42bd0a5..8d2ac96d 100644 --- a/lib/Stripe/lib/Service/SourceService.php +++ b/lib/Stripe/lib/Service/SourceService.php @@ -7,17 +7,19 @@ class SourceService extends \SimplePay\Vendor\Stripe\Service\AbstractService { /** + * List source transactions for a given source. + * * @param string $id * @param null|array $params * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Source + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\SourceTransaction> */ - public function allTransactions($id, $params = null, $opts = null) + public function allSourceTransactions($id, $params = null, $opts = null) { - return $this->request('get', $this->buildPath('/v1/sources/%s/source_transactions', $id), $params, $opts); + return $this->requestCollection('get', $this->buildPath('/v1/sources/%s/source_transactions', $id), $params, $opts); } /** diff --git a/lib/Stripe/lib/Service/TestHelpers/CustomerService.php b/lib/Stripe/lib/Service/TestHelpers/CustomerService.php new file mode 100644 index 00000000..d2531aa2 --- /dev/null +++ b/lib/Stripe/lib/Service/TestHelpers/CustomerService.php @@ -0,0 +1,24 @@ +request('post', $this->buildPath('/v1/test_helpers/customers/%s/fund_cash_balance', $id), $params, $opts); + } +} diff --git a/lib/Stripe/lib/Service/TestHelpers/Issuing/CardService.php b/lib/Stripe/lib/Service/TestHelpers/Issuing/CardService.php new file mode 100644 index 00000000..eb948800 --- /dev/null +++ b/lib/Stripe/lib/Service/TestHelpers/Issuing/CardService.php @@ -0,0 +1,76 @@ +Card object to + * delivered. + * + * @param string $id + * @param null|array $params + * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Issuing\Card + */ + public function deliverCard($id, $params = null, $opts = null) + { + return $this->request('post', $this->buildPath('/v1/test_helpers/issuing/cards/%s/shipping/deliver', $id), $params, $opts); + } + + /** + * Updates the shipping status of the specified Issuing Card object to + * failure. + * + * @param string $id + * @param null|array $params + * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Issuing\Card + */ + public function failCard($id, $params = null, $opts = null) + { + return $this->request('post', $this->buildPath('/v1/test_helpers/issuing/cards/%s/shipping/fail', $id), $params, $opts); + } + + /** + * Updates the shipping status of the specified Issuing Card object to + * returned. + * + * @param string $id + * @param null|array $params + * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Issuing\Card + */ + public function returnCard($id, $params = null, $opts = null) + { + return $this->request('post', $this->buildPath('/v1/test_helpers/issuing/cards/%s/shipping/return', $id), $params, $opts); + } + + /** + * Updates the shipping status of the specified Issuing Card object to + * shipped. + * + * @param string $id + * @param null|array $params + * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts + * + * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails + * + * @return \SimplePay\Vendor\Stripe\Issuing\Card + */ + public function shipCard($id, $params = null, $opts = null) + { + return $this->request('post', $this->buildPath('/v1/test_helpers/issuing/cards/%s/shipping/ship', $id), $params, $opts); + } +} diff --git a/lib/Stripe/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php b/lib/Stripe/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php new file mode 100644 index 00000000..ba4201c8 --- /dev/null +++ b/lib/Stripe/lib/Service/TestHelpers/Issuing/IssuingServiceFactory.php @@ -0,0 +1,25 @@ + + */ + private static $classMap = [ + 'cards' => CardService::class, + ]; + + protected function getServiceClass($name) + { + return \array_key_exists($name, self::$classMap) ? self::$classMap[$name] : null; + } +} diff --git a/lib/Stripe/lib/Service/TestHelpers/TestHelpersServiceFactory.php b/lib/Stripe/lib/Service/TestHelpers/TestHelpersServiceFactory.php index 64a1fbba..fc52401b 100644 --- a/lib/Stripe/lib/Service/TestHelpers/TestHelpersServiceFactory.php +++ b/lib/Stripe/lib/Service/TestHelpers/TestHelpersServiceFactory.php @@ -7,6 +7,8 @@ /** * Service factory class for API resources in the TestHelpers namespace. * + * @property CustomerService $customers + * @property Issuing\IssuingServiceFactory $issuing * @property RefundService $refunds * @property Terminal\TerminalServiceFactory $terminal * @property TestClockService $testClocks @@ -18,6 +20,8 @@ class TestHelpersServiceFactory extends \SimplePay\Vendor\Stripe\Service\Abstrac * @var array */ private static $classMap = [ + 'customers' => CustomerService::class, + 'issuing' => Issuing\IssuingServiceFactory::class, 'refunds' => RefundService::class, 'terminal' => Terminal\TerminalServiceFactory::class, 'testClocks' => TestClockService::class, diff --git a/lib/Stripe/lib/Service/TransferService.php b/lib/Stripe/lib/Service/TransferService.php index dd655f10..a49f8ba9 100644 --- a/lib/Stripe/lib/Service/TransferService.php +++ b/lib/Stripe/lib/Service/TransferService.php @@ -43,20 +43,6 @@ public function allReversals($parentId, $params = null, $opts = null) return $this->requestCollection('get', $this->buildPath('/v1/transfers/%s/reversals', $parentId), $params, $opts); } - /** - * @param string $id - * @param null|array $params - * @param null|array|\SimplePay\Vendor\Stripe\Util\RequestOptions $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Transfer - */ - public function cancel($id, $params = null, $opts = null) - { - return $this->request('post', $this->buildPath('/v1/transfers/%s/cancel', $id), $params, $opts); - } - /** * To send funds from your SimplePay\Vendor\Stripe account to a connected account, you create a new * transfer object. Your SimplePay\Vendor\Stripe balance must be able to diff --git a/lib/Stripe/lib/SetupAttempt.php b/lib/Stripe/lib/SetupAttempt.php index f76edf3c..194fd220 100644 --- a/lib/Stripe/lib/SetupAttempt.php +++ b/lib/Stripe/lib/SetupAttempt.php @@ -13,8 +13,10 @@ * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. * @property null|string|\SimplePay\Vendor\Stripe\StripeObject $application The value of application on the SetupIntent at the time of this confirmation. + * @property bool $attach_to_self

If present, the SetupIntent's payment method will be attached to the in-context SimplePay\Vendor\Stripe Account.

It can only be used for this SimplePay\Vendor\Stripe Account’s own money movement flows like InboundTransfer and OutboundTransfers. It cannot be set to true when setting up a PaymentMethod for a Customer, and defaults to false when attaching a PaymentMethod to a Customer.

* @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property null|string|\SimplePay\Vendor\Stripe\Customer $customer The value of customer on the SetupIntent at the time of this confirmation. + * @property null|string[] $flow_directions

Indicates the directions of money movement for which this payment method is intended to be used.

Include inbound if you intend to use the payment method as the origin to pull funds from. Include outbound if you intend to use the payment method as the destination to send funds to. You can include both if you intend to use the payment method for both purposes.

* @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property null|string|\SimplePay\Vendor\Stripe\Account $on_behalf_of The value of on_behalf_of on the SetupIntent at the time of this confirmation. * @property string|\SimplePay\Vendor\Stripe\PaymentMethod $payment_method ID of the payment method used with this SetupAttempt. diff --git a/lib/Stripe/lib/ShippingRate.php b/lib/Stripe/lib/ShippingRate.php index d736d73d..a12936db 100644 --- a/lib/Stripe/lib/ShippingRate.php +++ b/lib/Stripe/lib/ShippingRate.php @@ -8,7 +8,8 @@ * Shipping rates describe the price of shipping presented to your customers and * can be applied to Checkout Sessions - * to collect shipping costs. + * and Orders to collect + * shipping costs. * * @property string $id Unique identifier for the object. * @property string $object String representing the object's type. Objects of the same type share the same value. diff --git a/lib/Stripe/lib/Source.php b/lib/Stripe/lib/Source.php index e888a901..4d1b183c 100644 --- a/lib/Stripe/lib/Source.php +++ b/lib/Stripe/lib/Source.php @@ -116,39 +116,24 @@ public function detach($params = null, $opts = null) } /** - * @deprecated sourceTransactions is deprecated. Please use Source::allSourceTransactions instead. - * + * @param string $id * @param null|array $params * @param null|array|string $opts * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Collection the list of source transactions + * @return \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\SourceTransaction> list of SourceTransactions */ - public function sourceTransactions($params = null, $opts = null) + public static function allSourceTransactions($id, $params = null, $opts = null) { - $url = $this->instanceUrl() . '/source_transactions'; - list($response, $opts) = $this->_request('get', $url, $params, $opts); - $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response, $opts); + $url = static::resourceUrl($id) . '/source_transactions'; + list($response, $opts) = static::_staticRequest('get', $url, $params, $opts); + $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response->json, $opts); $obj->setLastResponse($response); return $obj; } - /** - * @param string $id - * @param null|array $params - * @param null|array|string $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Collection the list of source transactions - */ - public static function allSourceTransactions($id, $params = null, $opts = null) - { - return self::_allNestedResources($id, '/source_transactions', $params, $opts); - } - /** * @param null|array $params * @param null|array|string $opts diff --git a/lib/Stripe/lib/Stripe.php b/lib/Stripe/lib/Stripe.php index 9061e2b6..773074bf 100644 --- a/lib/Stripe/lib/Stripe.php +++ b/lib/Stripe/lib/Stripe.php @@ -58,7 +58,7 @@ class Stripe /** @var float Initial delay between retries, in seconds */ private static $initialNetworkRetryDelay = 0.5; - const VERSION = '8.5.0'; + const VERSION = '9.0.0'; /** * @return string the API key used for requests diff --git a/lib/Stripe/lib/StripeObject.php b/lib/Stripe/lib/StripeObject.php index 460a1e8a..ce6d38fc 100644 --- a/lib/Stripe/lib/StripeObject.php +++ b/lib/Stripe/lib/StripeObject.php @@ -149,6 +149,11 @@ public function __set($k, $v) $this->_unsavedValues->add($k); } + /** + * @param mixed $k + * + * @return bool + */ public function __isset($k) { return isset($this->_values[$k]); @@ -187,31 +192,48 @@ public function &__get($k) return $nullval; } - // Magic method for var_dump output. Only works with PHP >= 5.6 + /** + * Magic method for var_dump output. Only works with PHP >= 5.6. + * + * @return array + */ public function __debugInfo() { return $this->_values; } // ArrayAccess methods + + /** + * @return void + */ #[\ReturnTypeWillChange] public function offsetSet($k, $v) { $this->{$k} = $v; } + /** + * @return bool + */ #[\ReturnTypeWillChange] public function offsetExists($k) { return \array_key_exists($k, $this->_values); } + /** + * @return void + */ #[\ReturnTypeWillChange] public function offsetUnset($k) { unset($this->{$k}); } + /** + * @return mixed + */ #[\ReturnTypeWillChange] public function offsetGet($k) { diff --git a/lib/Stripe/lib/Subscription.php b/lib/Stripe/lib/Subscription.php index 568947ef..64184e40 100644 --- a/lib/Stripe/lib/Subscription.php +++ b/lib/Stripe/lib/Subscription.php @@ -16,19 +16,20 @@ * @property null|string|\SimplePay\Vendor\Stripe\StripeObject $application ID of the Connect Application that created the subscription. * @property null|float $application_fee_percent A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice subtotal that will be transferred to the application owner's SimplePay\Vendor\Stripe account. * @property \SimplePay\Vendor\Stripe\StripeObject $automatic_tax - * @property int $billing_cycle_anchor Determines the date of the first full invoice, and, for plans with month or year intervals, the day of the month for subsequent invoices. + * @property int $billing_cycle_anchor Determines the date of the first full invoice, and, for plans with month or year intervals, the day of the month for subsequent invoices. The timestamp is in UTC format. * @property null|\SimplePay\Vendor\Stripe\StripeObject $billing_thresholds Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period * @property null|int $cancel_at A date in the future at which the subscription will automatically get canceled * @property bool $cancel_at_period_end If the subscription has been canceled with the at_period_end flag set to true, cancel_at_period_end on the subscription will be true. You can use this attribute to determine whether a subscription that has a status of active is scheduled to be canceled at the end of the current period. * @property null|int $canceled_at If the subscription has been canceled, the date of that cancellation. If the subscription was canceled with cancel_at_period_end, canceled_at will reflect the time of the most recent update request, not the end of the subscription period when the subscription is automatically moved to a canceled state. * @property string $collection_method Either charge_automatically, or send_invoice. When charging automatically, SimplePay\Vendor\Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, SimplePay\Vendor\Stripe will email your customer an invoice with payment instructions. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. + * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. * @property int $current_period_end End of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created. * @property int $current_period_start Start of the current period that the subscription has been invoiced for. * @property string|\SimplePay\Vendor\Stripe\Customer $customer ID of the customer who owns the subscription. * @property null|int $days_until_due Number of days a customer has to pay invoices generated by this subscription. This value will be null for subscriptions where collection_method=charge_automatically. * @property null|string|\SimplePay\Vendor\Stripe\PaymentMethod $default_payment_method ID of the default payment method for the subscription. It must belong to the customer associated with the subscription. This takes precedence over default_source. If neither are set, invoices will use the customer's invoice_settings.default_payment_method or default_source. - * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\AlipayAccount|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\BitcoinReceiver|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $default_source ID of the default payment source for the subscription. It must belong to the customer associated with the subscription and be in a chargeable state. If default_payment_method is also set, default_payment_method will take precedence. If neither are set, invoices will use the customer's invoice_settings.default_payment_method or default_source. + * @property null|string|\SimplePay\Vendor\Stripe\Account|\SimplePay\Vendor\Stripe\BankAccount|\SimplePay\Vendor\Stripe\Card|\SimplePay\Vendor\Stripe\Source $default_source ID of the default payment source for the subscription. It must belong to the customer associated with the subscription and be in a chargeable state. If default_payment_method is also set, default_payment_method will take precedence. If neither are set, invoices will use the customer's invoice_settings.default_payment_method or default_source. * @property null|\SimplePay\Vendor\Stripe\TaxRate[] $default_tax_rates The tax rates that will apply to any subscription item that does not have tax_rates set. Invoices created will have their default_tax_rates populated from the subscription. * @property null|string $description The subscription's description, meant to be displayable to the customer. Use this field to optionally store an explanation of the subscription for rendering in SimplePay\Vendor\Stripe surfaces. * @property null|\SimplePay\Vendor\Stripe\Discount $discount Describes the current discount applied to this subscription, if there is one. When billing, a discount applied to a subscription overrides a discount applied on a customer-wide basis. @@ -47,6 +48,7 @@ * @property int $start_date Date when the subscription was first created. The date might differ from the created date due to backdating. * @property string $status

Possible values are incomplete, incomplete_expired, trialing, active, past_due, canceled, or unpaid.

For collection_method=charge_automatically a subscription moves into incomplete if the initial payment attempt fails. A subscription in this state can only have metadata and default_source updated. Once the first invoice is paid, the subscription moves into an active state. If the first invoice is not paid within 23 hours, the subscription transitions to incomplete_expired. This is a terminal state, the open invoice will be voided and no further invoices will be generated.

A subscription that is currently in a trial period is trialing and moves to active when the trial period is over.

If subscription collection_method=charge_automatically it becomes past_due when payment to renew it fails and canceled or unpaid (depending on your subscriptions settings) when SimplePay\Vendor\Stripe has exhausted all payment retry attempts.

If subscription collection_method=send_invoice it becomes past_due when its invoice is not paid by the due date, and canceled or unpaid if it is still not paid by an additional deadline after that. Note that when a subscription has a status of unpaid, no subsequent invoices will be attempted (invoices will be created, but then immediately automatically closed). After receiving updated payment information from a customer, you may choose to reopen and pay their closed invoices.

* @property null|string|\SimplePay\Vendor\Stripe\TestHelpers\TestClock $test_clock ID of the test clock this subscription belongs to. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $transfer_data The account (if any) the subscription's payments will be attributed to for tax reporting, and where funds from each payment will be transferred to for each of the subscription's invoices. * @property null|int $trial_end If the subscription has a trial, the end of that trial. * @property null|int $trial_start If the subscription has a trial, the beginning of that trial. */ @@ -99,11 +101,15 @@ public static function getSavedNestedResources() * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Subscription the deleted subscription + * @return \SimplePay\Vendor\Stripe\Subscription the updated subscription */ - public function cancel($params = null, $opts = null) + public function deleteDiscount($params = null, $opts = null) { - return $this->_delete($params, $opts); + $url = $this->instanceUrl() . '/discount'; + list($response, $opts) = $this->_request('delete', $url, $params, $opts); + $this->refreshFrom(['discount' => null], $opts, true); + + return $this; } /** @@ -112,13 +118,13 @@ public function cancel($params = null, $opts = null) * * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails * - * @return \SimplePay\Vendor\Stripe\Subscription the updated subscription + * @return \SimplePay\Vendor\Stripe\Subscription the canceled subscription */ - public function deleteDiscount($params = null, $opts = null) + public function cancel($params = null, $opts = null) { - $url = $this->instanceUrl() . '/discount'; + $url = $this->instanceUrl(); list($response, $opts) = $this->_request('delete', $url, $params, $opts); - $this->refreshFrom(['discount' => null], $opts, true); + $this->refreshFrom($response, $opts); return $this; } diff --git a/lib/Stripe/lib/SubscriptionItem.php b/lib/Stripe/lib/SubscriptionItem.php index 0327f61f..daf790d1 100644 --- a/lib/Stripe/lib/SubscriptionItem.php +++ b/lib/Stripe/lib/SubscriptionItem.php @@ -46,26 +46,6 @@ public static function createUsageRecord($id, $params = null, $opts = null) return self::_createNestedResource($id, static::PATH_USAGE_RECORDS, $params, $opts); } - /** - * @deprecated usageRecordSummaries is deprecated. Please use SubscriptionItem::allUsageRecordSummaries instead. - * - * @param null|array $params - * @param null|array|string $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Collection the list of usage record summaries - */ - public function usageRecordSummaries($params = null, $opts = null) - { - $url = $this->instanceUrl() . '/usage_record_summaries'; - list($response, $opts) = $this->_request('get', $url, $params, $opts); - $obj = \SimplePay\Vendor\Stripe\Util\Util::convertToStripeObject($response, $opts); - $obj->setLastResponse($response); - - return $obj; - } - const PATH_USAGE_RECORD_SUMMARIES = '/usage_record_summaries'; /** diff --git a/lib/Stripe/lib/ThreeDSecure.php b/lib/Stripe/lib/ThreeDSecure.php deleted file mode 100644 index ea518b18..00000000 --- a/lib/Stripe/lib/ThreeDSecure.php +++ /dev/null @@ -1,37 +0,0 @@ -3D - * Secure object. Once the object has been created, you can use it to - * authenticate the cardholder and create a charge. - * - * @property string $id Unique identifier for the object. - * @property string $object String representing the object's type. Objects of the same type share the same value. - * @property int $amount Amount of the charge that you will create when authentication completes. - * @property bool $authenticated True if the cardholder went through the authentication flow and their bank indicated that authentication succeeded. - * @property \SimplePay\Vendor\Stripe\Card $card

You can store multiple cards on a customer in order to charge the customer later. You can also store multiple debit cards on a recipient in order to transfer to those cards later.

Related guide: Card Payments with Sources.

- * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. - * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. - * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. - * @property null|string $redirect_url If present, this is the URL that you should send the cardholder to for authentication. If you are going to use Stripe.js to display the authentication page in an iframe, you should use the value "_callback". - * @property string $status Possible values are redirect_pending, succeeded, or failed. When the cardholder can be authenticated, the object starts with status redirect_pending. When liability will be shifted to the cardholder's bank (either because the cardholder was successfully authenticated, or because the bank has not implemented 3D Secure, the object wlil be in status succeeded. failed indicates that authentication was attempted unsuccessfully. - */ -class ThreeDSecure extends ApiResource -{ - const OBJECT_NAME = 'three_d_secure'; - - use ApiOperations\Create; - use ApiOperations\Retrieve; - - /** - * @return string the endpoint URL for the given class - */ - public static function classUrl() - { - return '/v1/3d_secure'; - } -} diff --git a/lib/Stripe/lib/Transfer.php b/lib/Stripe/lib/Transfer.php index c1839616..f5688807 100644 --- a/lib/Stripe/lib/Transfer.php +++ b/lib/Stripe/lib/Transfer.php @@ -33,7 +33,7 @@ * @property \SimplePay\Vendor\Stripe\Collection<\SimplePay\Vendor\Stripe\TransferReversal> $reversals A list of reversals that have been applied to the transfer. * @property bool $reversed Whether the transfer has been fully reversed. If the transfer is only partially reversed, this attribute will still be false. * @property null|string|\SimplePay\Vendor\Stripe\Charge $source_transaction ID of the charge or payment that was used to fund the transfer. If null, the transfer was funded from the available balance. - * @property null|string $source_type The source balance this transfer came from. One of card, fpx, or bank_account. + * @property string $source_type The source balance this transfer came from. One of card, fpx, or bank_account. * @property null|string $transfer_group A string that identifies this transaction as part of a group. See the Connect documentation for details. */ class Transfer extends ApiResource @@ -46,27 +46,9 @@ class Transfer extends ApiResource use ApiOperations\Retrieve; use ApiOperations\Update; - const SOURCE_TYPE_ALIPAY_ACCOUNT = 'alipay_account'; const SOURCE_TYPE_BANK_ACCOUNT = 'bank_account'; const SOURCE_TYPE_CARD = 'card'; - const SOURCE_TYPE_FINANCING = 'financing'; - - /** - * @param null|array $params - * @param null|array|string $opts - * - * @throws \SimplePay\Vendor\Stripe\Exception\ApiErrorException if the request fails - * - * @return \SimplePay\Vendor\Stripe\Transfer the canceled transfer - */ - public function cancel($params = null, $opts = null) - { - $url = $this->instanceUrl() . '/cancel'; - list($response, $opts) = $this->_request('post', $url, $params, $opts); - $this->refreshFrom($response, $opts); - - return $this; - } + const SOURCE_TYPE_FPX = 'fpx'; const PATH_REVERSALS = '/reversals'; diff --git a/lib/Stripe/lib/Treasury/CreditReversal.php b/lib/Stripe/lib/Treasury/CreditReversal.php index 583a0fbb..2f6158d2 100644 --- a/lib/Stripe/lib/Treasury/CreditReversal.php +++ b/lib/Stripe/lib/Treasury/CreditReversal.php @@ -15,7 +15,7 @@ * @property int $amount Amount (in cents) transferred. * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. * @property string $financial_account The FinancialAccount to reverse funds from. - * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property string $network The rails used to reverse the funds. diff --git a/lib/Stripe/lib/Treasury/DebitReversal.php b/lib/Stripe/lib/Treasury/DebitReversal.php index 28adffc1..4bc93cd1 100644 --- a/lib/Stripe/lib/Treasury/DebitReversal.php +++ b/lib/Stripe/lib/Treasury/DebitReversal.php @@ -15,7 +15,7 @@ * @property int $amount Amount (in cents) transferred. * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. * @property null|string $financial_account The FinancialAccount to reverse funds from. - * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property null|\SimplePay\Vendor\Stripe\StripeObject $linked_flows Other flows linked to a DebitReversal. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. diff --git a/lib/Stripe/lib/Treasury/InboundTransfer.php b/lib/Stripe/lib/Treasury/InboundTransfer.php index dd188403..f1bdf6c6 100644 --- a/lib/Stripe/lib/Treasury/InboundTransfer.php +++ b/lib/Stripe/lib/Treasury/InboundTransfer.php @@ -5,7 +5,9 @@ namespace SimplePay\Vendor\Stripe\Treasury; /** - * Use InboundTransfers to add funds to your InboundTransfers + * to add funds to your FinancialAccount via a * PaymentMethod that is owned by you. The funds will be transferred via an ACH * debit. @@ -19,7 +21,7 @@ * @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. * @property null|\SimplePay\Vendor\Stripe\StripeObject $failure_details Details about this InboundTransfer's failure. Only set when status is failed. * @property string $financial_account The FinancialAccount that received the funds. - * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property \SimplePay\Vendor\Stripe\StripeObject $linked_flows * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. diff --git a/lib/Stripe/lib/Treasury/OutboundPayment.php b/lib/Stripe/lib/Treasury/OutboundPayment.php index dad8b364..8c3db282 100644 --- a/lib/Stripe/lib/Treasury/OutboundPayment.php +++ b/lib/Stripe/lib/Treasury/OutboundPayment.php @@ -20,14 +20,14 @@ * @property bool $cancelable Returns true if the object can be canceled, and false otherwise. * @property int $created Time at which the object was created. Measured in seconds since the Unix epoch. * @property string $currency Three-letter ISO currency code, in lowercase. Must be a supported currency. - * @property null|string $customer ID of the customer to whom an OutboundPayment is sent. + * @property null|string $customer ID of the customer to whom an OutboundPayment is sent. * @property null|string $description An arbitrary string attached to the object. Often useful for displaying to users. * @property null|string $destination_payment_method The PaymentMethod via which an OutboundPayment is sent. This field can be empty if the OutboundPayment was created using destination_payment_method_data. * @property null|\SimplePay\Vendor\Stripe\StripeObject $destination_payment_method_details Details about the PaymentMethod for an OutboundPayment. * @property null|\SimplePay\Vendor\Stripe\StripeObject $end_user_details Details about the end user. * @property int $expected_arrival_date The date when funds are expected to arrive in the destination account. * @property string $financial_account The FinancialAccount that funds were pulled from. - * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property null|\SimplePay\Vendor\Stripe\StripeObject $returned_details Details about a returned OutboundPayment. Only set when the status is returned. diff --git a/lib/Stripe/lib/Treasury/OutboundTransfer.php b/lib/Stripe/lib/Treasury/OutboundTransfer.php index f8df0126..68ea3ec7 100644 --- a/lib/Stripe/lib/Treasury/OutboundTransfer.php +++ b/lib/Stripe/lib/Treasury/OutboundTransfer.php @@ -27,7 +27,7 @@ * @property \SimplePay\Vendor\Stripe\StripeObject $destination_payment_method_details * @property int $expected_arrival_date The date when funds are expected to arrive in the destination account. * @property string $financial_account The FinancialAccount that funds were pulled from. - * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property \SimplePay\Vendor\Stripe\StripeObject $metadata Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. * @property null|\SimplePay\Vendor\Stripe\StripeObject $returned_details Details about a returned OutboundTransfer. Only set when the status is returned. diff --git a/lib/Stripe/lib/Treasury/ReceivedCredit.php b/lib/Stripe/lib/Treasury/ReceivedCredit.php index 82a1b6c3..ea6f79f3 100644 --- a/lib/Stripe/lib/Treasury/ReceivedCredit.php +++ b/lib/Stripe/lib/Treasury/ReceivedCredit.php @@ -18,10 +18,12 @@ * @property string $description An arbitrary string attached to the object. Often useful for displaying to users. * @property null|string $failure_code Reason for the failure. A ReceivedCredit might fail because the receiving FinancialAccount is closed or frozen. * @property null|string $financial_account The FinancialAccount that received the funds. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property \SimplePay\Vendor\Stripe\StripeObject $initiating_payment_method_details * @property \SimplePay\Vendor\Stripe\StripeObject $linked_flows * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property string $network The rails used to send the funds. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $reversal_details Details describing when a ReceivedCredit may be reversed. * @property string $status Status of the ReceivedCredit. ReceivedCredits are created either succeeded (approved) or failed (declined). If a ReceivedCredit is declined, the failure reason can be found in the failure_code field. * @property null|string|\SimplePay\Vendor\Stripe\Treasury\Transaction $transaction The Transaction associated with this object. */ diff --git a/lib/Stripe/lib/Treasury/ReceivedDebit.php b/lib/Stripe/lib/Treasury/ReceivedDebit.php index a06ab5f5..77cfd2a5 100644 --- a/lib/Stripe/lib/Treasury/ReceivedDebit.php +++ b/lib/Stripe/lib/Treasury/ReceivedDebit.php @@ -17,10 +17,12 @@ * @property string $description An arbitrary string attached to the object. Often useful for displaying to users. * @property null|string $failure_code Reason for the failure. A ReceivedDebit might fail because the FinancialAccount doesn't have sufficient funds, is closed, or is frozen. * @property null|string $financial_account The FinancialAccount that funds were pulled from. + * @property null|string $hosted_regulatory_receipt_url A hosted transaction receipt URL that is provided when money movement is considered regulated under Stripe's money transmission licenses. * @property \SimplePay\Vendor\Stripe\StripeObject $initiating_payment_method_details * @property \SimplePay\Vendor\Stripe\StripeObject $linked_flows * @property bool $livemode Has the value true if the object exists in live mode or the value false if the object exists in test mode. * @property string $network The network used for the ReceivedDebit. + * @property null|\SimplePay\Vendor\Stripe\StripeObject $reversal_details Details describing when a ReceivedDebit might be reversed. * @property string $status Status of the ReceivedDebit. ReceivedDebits are created with a status of either succeeded (approved) or failed (declined). The failure reason can be found under the failure_code. * @property null|string|\SimplePay\Vendor\Stripe\Treasury\Transaction $transaction The Transaction associated with this object. */ diff --git a/lib/Stripe/lib/Util/ApiVersion.php b/lib/Stripe/lib/Util/ApiVersion.php new file mode 100644 index 00000000..2259e89d --- /dev/null +++ b/lib/Stripe/lib/Util/ApiVersion.php @@ -0,0 +1,10 @@ +container = \array_change_key_case($initial_array, \CASE_LOWER); } + /** + * @return int + */ #[\ReturnTypeWillChange] public function count() { diff --git a/lib/Stripe/lib/Util/ObjectTypes.php b/lib/Stripe/lib/Util/ObjectTypes.php index 4dd5933e..e9e61d35 100644 --- a/lib/Stripe/lib/Util/ObjectTypes.php +++ b/lib/Stripe/lib/Util/ObjectTypes.php @@ -12,7 +12,6 @@ class ObjectTypes const mapping = [ \SimplePay\Vendor\Stripe\Account::OBJECT_NAME => \SimplePay\Vendor\Stripe\Account::class, \SimplePay\Vendor\Stripe\AccountLink::OBJECT_NAME => \SimplePay\Vendor\Stripe\AccountLink::class, - \SimplePay\Vendor\Stripe\AlipayAccount::OBJECT_NAME => \SimplePay\Vendor\Stripe\AlipayAccount::class, \SimplePay\Vendor\Stripe\ApplePayDomain::OBJECT_NAME => \SimplePay\Vendor\Stripe\ApplePayDomain::class, \SimplePay\Vendor\Stripe\ApplicationFee::OBJECT_NAME => \SimplePay\Vendor\Stripe\ApplicationFee::class, \SimplePay\Vendor\Stripe\ApplicationFeeRefund::OBJECT_NAME => \SimplePay\Vendor\Stripe\ApplicationFeeRefund::class, @@ -22,8 +21,6 @@ class ObjectTypes \SimplePay\Vendor\Stripe\BankAccount::OBJECT_NAME => \SimplePay\Vendor\Stripe\BankAccount::class, \SimplePay\Vendor\Stripe\BillingPortal\Configuration::OBJECT_NAME => \SimplePay\Vendor\Stripe\BillingPortal\Configuration::class, \SimplePay\Vendor\Stripe\BillingPortal\Session::OBJECT_NAME => \SimplePay\Vendor\Stripe\BillingPortal\Session::class, - \SimplePay\Vendor\Stripe\BitcoinReceiver::OBJECT_NAME => \SimplePay\Vendor\Stripe\BitcoinReceiver::class, - \SimplePay\Vendor\Stripe\BitcoinTransaction::OBJECT_NAME => \SimplePay\Vendor\Stripe\BitcoinTransaction::class, \SimplePay\Vendor\Stripe\Capability::OBJECT_NAME => \SimplePay\Vendor\Stripe\Capability::class, \SimplePay\Vendor\Stripe\Card::OBJECT_NAME => \SimplePay\Vendor\Stripe\Card::class, \SimplePay\Vendor\Stripe\CashBalance::OBJECT_NAME => \SimplePay\Vendor\Stripe\CashBalance::class, @@ -77,8 +74,6 @@ class ObjectTypes \SimplePay\Vendor\Stripe\Radar\EarlyFraudWarning::OBJECT_NAME => \SimplePay\Vendor\Stripe\Radar\EarlyFraudWarning::class, \SimplePay\Vendor\Stripe\Radar\ValueList::OBJECT_NAME => \SimplePay\Vendor\Stripe\Radar\ValueList::class, \SimplePay\Vendor\Stripe\Radar\ValueListItem::OBJECT_NAME => \SimplePay\Vendor\Stripe\Radar\ValueListItem::class, - \SimplePay\Vendor\Stripe\Recipient::OBJECT_NAME => \SimplePay\Vendor\Stripe\Recipient::class, - \SimplePay\Vendor\Stripe\RecipientTransfer::OBJECT_NAME => \SimplePay\Vendor\Stripe\RecipientTransfer::class, \SimplePay\Vendor\Stripe\Refund::OBJECT_NAME => \SimplePay\Vendor\Stripe\Refund::class, \SimplePay\Vendor\Stripe\Reporting\ReportRun::OBJECT_NAME => \SimplePay\Vendor\Stripe\Reporting\ReportRun::class, \SimplePay\Vendor\Stripe\Reporting\ReportType::OBJECT_NAME => \SimplePay\Vendor\Stripe\Reporting\ReportType::class, @@ -102,7 +97,6 @@ class ObjectTypes \SimplePay\Vendor\Stripe\Terminal\Location::OBJECT_NAME => \SimplePay\Vendor\Stripe\Terminal\Location::class, \SimplePay\Vendor\Stripe\Terminal\Reader::OBJECT_NAME => \SimplePay\Vendor\Stripe\Terminal\Reader::class, \SimplePay\Vendor\Stripe\TestHelpers\TestClock::OBJECT_NAME => \SimplePay\Vendor\Stripe\TestHelpers\TestClock::class, - \SimplePay\Vendor\Stripe\ThreeDSecure::OBJECT_NAME => \SimplePay\Vendor\Stripe\ThreeDSecure::class, \SimplePay\Vendor\Stripe\Token::OBJECT_NAME => \SimplePay\Vendor\Stripe\Token::class, \SimplePay\Vendor\Stripe\Topup::OBJECT_NAME => \SimplePay\Vendor\Stripe\Topup::class, \SimplePay\Vendor\Stripe\Transfer::OBJECT_NAME => \SimplePay\Vendor\Stripe\Transfer::class, diff --git a/package.json b/package.json index 2e41a99f..00ad2dc5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "wp-simple-pay-lite", "title": "WP Simple Pay Lite for Stripe", "description": "Add high conversion Stripe Checkout forms to your WordPress site and start accepting payments in minutes. **Lite Version**", - "version": "4.5.2", + "version": "4.6.0", "license": "GPL-2.0-or-later", "homepage": "https://wpsimplepay.com/", "repository": { diff --git a/readme.txt b/readme.txt index db4c9765..ee9ca102 100644 --- a/readme.txt +++ b/readme.txt @@ -3,7 +3,7 @@ Contributors: wpsimplepay, pderksen, spencerfinnell, adamjlea, mordauk, cklosows Tags: stripe, stripe checkout, stripe payments, credit card payments, stripe gateway Requires at least: 5.2 Tested up to: 6.0 -Stable tag: 4.5.2 +Stable tag: 4.6.0 Requires PHP: 5.6 License: GPLv2 or later @@ -282,6 +282,10 @@ The 3% additional fee is removed by [upgrading to WP Simple Pay Pro](https://wps [WP Simple Pay Pro](https://wpsimplepay.com/?utm_source=wporg&utm_campaign=lite-plugin&utm_medium=link) offers on-site payment forms that ensure customers never leave your site. += Does WP Simple Pay work with WooCommerce? = + +No. WP Simple Pay is a standalone Stripe payments plugin and does not integrate with other payment or ecommerce plugins, such as WooCommerce or Easy Digital Downloads. + == Screenshots == 1. Payment form template selection @@ -297,6 +301,12 @@ The 3% additional fee is removed by [upgrading to WP Simple Pay Pro](https://wps == Changelog == += Stripe Payment Forms v4.6.0 - October 11, 2022 = + +* New: Add Thailand to list of supported Stripe countries. +* Fix: Ensure a fallback redirect URL always exists for Stripe Checkout. +* Fix: Avoid JavaScript error on certain WP Simple Pay admin pages. + = Stripe Payment Forms v4.5.2 - September 27, 2022 = * New: Allow licenses to be entered in Lite. @@ -326,82 +336,3 @@ The 3% additional fee is removed by [upgrading to WP Simple Pay Pro](https://wps * Fix: Ensure UI elements that cannot be used are not shown. * Fix: Ensure more compatibility with MySQL indexes. * Fix: Update Stripe API PHP library to `8.5.0`. - -= Stripe Payment Forms v4.4.6 - June 1, 2022 = - -* New: Dashboard Widget Report - view transaction amounts from the last 7 or 30 days. -* New: Introduce "Help" panel. Quickly find documentation or request support. -* Fix: Display relevant Stripe API error when saving payment forms. -* Dev: Initialize `stripe.js` with Stripe API version. - -= Stripe Payment Forms v4.4.5 - April 27, 2022 = - -* New: Stay up to date with WP Simple Pay via the notification inbox. -* Fix: Ensure payment form template explorer displays properly with WooCommerce active. -* Fix: Ensure top of page notice remains dismissed after dismissal. -* Fix: Ensure setup wizard does not override previously set settings. - -= Stripe Payment Forms v4.4.4 - March 30, 2022 = - -* New: Display a notice to site admins and do not output a form without price options. -* New: Add Stripe Instant Payouts education. -* New: Add additional payment form templates. -* Fix: Add more specific UTM arguments to URLs. -* Fix: Add additional opinionated styles to form preview notice. -* Fix: Update "Tested up to" to `5.9`. - -= Stripe Payment Forms v4.4.3 - March 3, 2022 = - -* New: Payment Form Templates - choose from premade templates to quickly create payment forms. -* New: Elementor - select a payment form to launch in a "Button", "Price Table," or "Call to Action" widget. -* New: Divi - select a payment form to launch in the "Button", "Price Table", or "Call to Action" module. -* Fix: Ensure screen options can be used to hide additional metaboxes added to payment form settings. -* Fix: Ensure classic editor payment form inserter displays payment form title. - -= Stripe Payment Forms v4.4.2 - February 10, 2022 = - -* New: Add "Setup Wizard" for new installs. -* New: Add "WP Simple Pay" payment form block. -* New: Load payment form preview in an isolated environment. Add helper links. -* New: Link branding bar logo to website. -* Fix: Ensure default $1.00 amount can be saved on initial form publish. -* Fix: Do not display empty form state when searching for payment forms. -* Fix: Update reCAPTCHA setup description. -* Fix: Ensure "Test Mode" can be toggled when there is no active connection. -* Fix: Only show published pages in settings dropdowns. -* Fix: Redirect back to relevant page when connecting to Stripe. -* Dev: Update test matrix against WordPress 5.9. - -= Stripe Payment Forms v4.4.1 - January 11, 2022 = - -* New: Lite - add a 2% application fee to Checkout Sessions for new Stripe Connect connections. -* New: Stripe Checkout - Add support for collecting phone numbers. -* New: Show an alert when leaving unsaved changes on payment forms. -* New: Add "Copy to clipboard" buttons to payment form shortcodes and system report. -* New: Add an admin notice requesting a review after 14 days of installation/update. -* Fix: Update admin bar from "Simple Pay" to "WP Simple Pay". -* Dev: Update copyright dates. - -= Stripe Payment Forms v4.4.0 - December 14, 2021 = - -* New: Add additional product education. -* New: Add product education dashboard widget. -* New: Add branding to all plugin pages. -* New: Various plugin UI/UX improvements. -* New: Show notice if payment form title is empty. -* New: Add confirmation when disconnecting a Stripe account. -* New: Add empty states to payment form list when no forms have been created. -* New: Show global reCAPTCHA and tax settings within payment form settings. -* New: Alert users of test/live and publishable/secret swapped API credentials. -* New: Add India, Brazil and United Arab Emirates as a supported account country. -* New: Automatically retry Stripe API requests on a network failure. -* Fix: Add consistency to UTM parameters in `*.wpsimplepay.com` outbound links. -* Fix: Ensure `simpay_get_currencies` filter is called. -* Fix: Avoid fatal error on the_title filter when used incorrectly by other plugins. -* Fix: Ensure Stripe API errors are properly output. -* Fix: Avoid `get_query_var()` usage within admin panel for better compatibility with other plugins. -* Fix: Do not output PHP warnings when visiting Payment Confirmation page directly. -* Fix: Show generic error message text when REST API response is invalid JSON. -* Fix: Rename "Macedonia" to "North Macedonia". -* Fix: Lighten placeholder colors on Payment Form settings to avoid confusion with values. -* Dev: Add plugin service container, service providers, and subscriber architecture in `./src`. diff --git a/src/Admin/SiteHealth/SiteHealthDebugInformation.php b/src/Admin/SiteHealth/SiteHealthDebugInformation.php index d2f7be03..80f3769c 100644 --- a/src/Admin/SiteHealth/SiteHealthDebugInformation.php +++ b/src/Admin/SiteHealth/SiteHealthDebugInformation.php @@ -226,6 +226,61 @@ private function get_webhook_secret() { } } + /** + * Returns anit-spam email verification status. + * + * @since 4.6.0 + * + * @return string + */ + private function get_email_verification() { + /** @var string $enabled */ + $enabled = simpay_get_setting( + 'fraud_email_verification', + 'no' + ); + + if ( 'no' === $enabled ) { + return 'No'; + } + + /** @var int $threshold */ + $threshold = simpay_get_setting( + 'fraud_email_verification_threshold', + 3 + ); + + /** @var int|float $timeframe */ + $timeframe = simpay_get_setting( + 'fraud_email_verification_timeframe', + 6 + ); + + return sprintf( + '%s: %d events in %d hours', + ucfirst( $enabled ), + $threshold, + $timeframe + ); + } + + /** + * Returns the anti-spam require authentication. + * + * @since 4.6.0 + * + * @return string + */ + private function get_require_authentication() { + /** @var string $enabled */ + $enabled = simpay_get_setting( + 'fraud_require_authentication', + 'no' + ); + + return ucfirst( $enabled ); + } + /** * Filters the debug information to include our plugin-specific site health * panel in the generated UI. @@ -239,31 +294,39 @@ public function debug_information( $debug_info ) { $plugin = array( 'label' => 'WP Simple Pay', 'fields' => array( - 'version' => array( + 'version' => array( 'label' => __( 'Version', 'stripe' ), 'value' => $this->get_plugin_version(), ), - 'stripetls' => array( + 'stripetls' => array( 'label' => __( 'Stripe TLS', 'stripe' ), 'value' => $this->stripe_tls_check(), ), - 'mode' => array( + 'mode' => array( 'label' => __( 'Global Payment Mode', 'stripe' ), 'value' => $this->get_test_or_live_mode(), ), - 'recaptcha' => array( + 'recaptcha' => array( 'label' => __( 'reCAPTCHA', 'stripe' ), 'value' => $this->check_repatcha_keys(), ), - 'rate_limit_file' => array( + 'rate_limit_file' => array( 'label' => __( 'Rate Limit File', 'stripe' ), 'value' => $this->check_rate_limiting_file(), ), - 'recent_webhook' => array( + 'fraud_email_verification' => array( + 'label' => __( 'Email Verification', 'stripe' ), + 'value' => $this->get_email_verification(), + ), + 'fraud_require_auth' => array( + 'label' => __( 'Require Authentication', 'stripe' ), + 'value' => $this->get_require_authentication(), + ), + 'recent_webhook' => array( 'label' => __( 'Most Recent Webhook Event', 'stripe' ), 'value' => $this->get_latest_webhook_event(), ), - 'webhook_secret' => array( + 'webhook_secret' => array( 'label' => __( 'Webhook Secret', 'stripe' ), 'value' => $this->get_webhook_secret(), ), diff --git a/src/AntiSpam/AntiSpamServiceProvider.php b/src/AntiSpam/AntiSpamServiceProvider.php new file mode 100644 index 00000000..55ff070f --- /dev/null +++ b/src/AntiSpam/AntiSpamServiceProvider.php @@ -0,0 +1,60 @@ +getContainer(); + + // Eamil verification. + $container->share( + 'anti-spam-email-verification', + EmailVerification::class + ) + ->withArgument( $container->get( 'scheduler' ) ); + + // Require authentication. + $container->share( + 'anti-spam-require-authentication', + RequireAuthentication::class + ); + } + +} diff --git a/src/AntiSpam/EmailVerification.php b/src/AntiSpam/EmailVerification.php new file mode 100644 index 00000000..5acca2d4 --- /dev/null +++ b/src/AntiSpam/EmailVerification.php @@ -0,0 +1,947 @@ +scheduler = $scheduler; + } + + /** + * {@inheritdoc} + */ + public function get_subscribed_events() { + if ( true === $this->license->is_lite() ) { + return array(); + } + + $subscribers = array( + // Add/output settings. + 'simpay_register_settings' => 'add_settings', + 'simpay_admin_after_form_display_options_rows' => + array( 'add_payment_form_settings', 31 ), + + // Log fraud events. + 'simpay_webhook_charge_failed' => + array( 'log_fraud_event', 10, 2 ), + + // Schedule and cleanup expired verification codes. + 'init' => + 'schedule_email_verification_code_cleanup', + 'simpay_cleanup_email_verification_codes' => + 'cleanup_verification_codes', + ); + + // Require verification before processing endpoints if there are more than + // fraud events than the set threshold, within the set timeframe. + if ( + 'yes' === simpay_get_setting( 'fraud_email_verification', 'no' ) && + $this->get_fraud_event_count() >= $this->get_fraud_event_threshold() && + $this->is_latest_fraud_event_in_timeframe() + ) { + // Send the verification code. + $subscribers['simpay_before_customer_from_payment_form_request'] = + array( 'send_verification_code', 10, 4 ); + + // ...verify on PaymentIntent. + $subscribers['simpay_before_paymentintent_from_payment_form_request'] = + array( 'verify_verification_code_rest', 10, 4 ); + // ...verify on SetupIntent. + $subscribers['simpay_before_setupintent_from_payment_form_request'] = + array( 'verify_verification_code_rest', 10, 4 ); + // ...verify Subscription. + $subscribers['simpay_before_subscription_from_payment_form_request'] = + array( 'verify_verification_code_rest', 10, 4 ); + // ...verify on Charge. + $subscribers['simpay_before_charge_from_payment_form_request'] = + array( 'verify_verification_code_rest', 10, 4 ); + // ...verify on Order submit. + $subscribers['simpay_before_order_submit_from_payment_form_request'] = + array( 'verify_verification_code_order', 10, 4 ); + + // Remove the verification code after a payment action has been made. + + // ...on Checkout Session. + $subscribers['simpay_after_checkout_session_from_payment_form_request'] = + array( 'remove_verification_code_rest', 10, 4 ); + // ...on PaymentIntent. + $subscribers['simpay_after_paymentintent_from_payment_form_request'] = + array( 'remove_verification_code_rest', 10, 4 ); + // ...on Subscription. + $subscribers['simpay_after_subscription_from_payment_form_request'] = + array( 'remove_verification_code_rest', 10, 4 ); + // ...on SetupIntent. + $subscribers['simpay_after_setupintent_from_payment_form_request'] = + array( 'remove_verification_code_rest', 10, 4 ); + // ...on Order submit. + $subscribers['simpay_after_order_submit_from_payment_form_request'] = + array( 'remove_verification_code_order_submit', 10, 4 ); + + // Use a cleaned version of the submitted email address as the rate + // limiter ID. spencer+123@gmail.com turns in to spencer@gmail.com. + $subscribers['simpay_rate_limiting_id'] = 'set_rate_limiting_id'; + + // ... and extend the rate limiting window. + $subscribers['simpay_rate_limiting_timeout'] = + 'set_rate_limiting_timeout'; + } + + return $subscribers; + } + + /** + * Adds the settings UI for email verification fraud prevention. + * + * @since 4.6.0 + * + * @param \SimplePay\Core\Settings\Setting_Collection $settings Settings collection. + * @return void + */ + public function add_settings( $settings ) { + // Enable/Disable. + $settings->add( + new Settings\Setting_Checkbox( + array( + 'id' => 'fraud_email_verification', + 'section' => 'general', + 'subsection' => 'recaptcha', + 'label' => esc_html_x( + 'Email Verification', + 'setting label', + 'stripe' + ), + 'input_label' => esc_html_x( + 'Enable email verification for on-site payment forms if multiple charges fail due to fraud.', + 'setting input label', + 'stripe' + ), + 'value' => simpay_get_setting( + 'fraud_email_verification', + 'no' + ), + 'toggles' => array( + 'value' => 'yes', + 'settings' => array( + 'fraud_email_verification_threshold', + 'fraud_email_verification_timeframe', + ), + ), + 'priority' => 5, + 'schema' => array( + 'type' => 'string', + 'enum' => array( 'yes', 'no' ), + ), + ) + ) + ); + + // Threshold. + $settings->add( + new Settings\Setting_Input( + array( + 'id' => 'fraud_email_verification_threshold', + 'section' => 'general', + 'subsection' => 'recaptcha', + 'type' => 'number', + 'label' => esc_html_x( + 'Threshold', + 'setting label', + 'stripe' + ), + 'value' => simpay_get_setting( + 'fraud_email_verification_threshold', + 3 + ), + 'min' => 1, + 'step' => 1, + 'description' => sprintf( + '%s ', + esc_html__( + 'hours', + 'stripe' + ), + esc_html__( + 'Require email verification for on-site payment forms until there are no more failed payments due to fraud for this many hours.', + 'stripe' + ) + ), + 'priority' => 5.2, + 'schema' => array( + 'type' => 'number', + ), + ) + ) + ); + } + + /** + * Displays the global setting value when editing a payment form. + * + * @since 4.6.0 + * + * @return void + */ + public function add_payment_form_settings() { + $settings_url = Settings\get_url( + array( + 'section' => 'general', + 'subsection' => 'recaptcha', + 'setting' => 'fraud_email_verification', + ) + ); + + $enabled = simpay_get_setting( + 'fraud_email_verification', + 'no' + ); + + ?> + + + + + + + + + + + - + + + + + + + + - + + + ', + '' + ), + array( + 'a' => array( + 'href' => true, + 'target' => true, + ), + ) + ); + ?> + + + + + fraud_details->stripe_report ) || + 'fraudulent' !== $charge->fraud_details->stripe_report + ) { + return; + } + + /** @var array $fraud_events */ + $fraud_events = get_option( 'simpay_fraud_events', array() ); + $timeframe = $this->get_fraud_event_timeframe(); + + // Nothing logged yet, create the initial state. + if ( empty( $fraud_events ) ) { + update_option( + 'simpay_fraud_events', + array( + 'count' => 1, + 'latest_event' => $event->created, + ) + ); + + // If the previous event occurred within the timeframe, increment the count. + } elseif ( ( $event->created - $fraud_events['latest_event'] ) <= $timeframe ) { + update_option( + 'simpay_fraud_events', + array( + 'count' => $fraud_events['count'] + 1, + 'latest_event' => $event->created, + ) + ); + + // If the previous event occurred outside the timeframe, reset the count. + } elseif ( $event->created - $fraud_events['latest_event'] >= $timeframe ) { + update_option( + 'simpay_fraud_events', + array( + 'count' => 1, + 'latest_event' => $event->created, + ) + ); + } + } + + /** + * Schedules a cleanup of the email verification codes. + * + * @since 4.6.0 + * + * @return void + */ + public function schedule_email_verification_code_cleanup() { + $this->scheduler->schedule_recurring( + time(), + ( DAY_IN_SECONDS * 2 ), // every two days. + 'simpay_cleanup_email_verification_codes' + ); + } + + /** + * Removes verification codes. This is heavy handed and just removes all + * codes to avoid the option from getting too large. It's possible that + * this will delete a code while someone is verifying their email, but... + * + * @since 4.6.0 + * + * @return void + */ + public function cleanup_verification_codes() { + update_option( 'simpay_email_verification_codes', array() ); + } + + /** + * Sends an email containing a verification code to the email address entered in + * the payment form and throws an exception to output the relevant HTML. + * + * @since 4.6.0 + * + * @param array $customer_args Customer arguments. + * @param \SimplePay\Core\Abstracts\Form $form Payment Form instance. + * @param array $form_data Payment Form state. + * @param array $form_values Payment form values. + * @throws \Exception Input field to enter the verification code. + * @return void + */ + public function send_verification_code( + $customer_args, + $form, + $form_data, + $form_values + ) { + // Do not show the input if a verification code has been submitted. + // Verify the code instead. + if ( isset( $form_values['simpay_email_verification_code'] ) ) { + $this->verify_verification_code_rest( + $customer_args, + $form, + $form_data, + $form_values + ); + + return; + } + + // Find the entered email address, and create a cleaned version to use as + // the verification code base. + /** @var string $email */ + $email = $form_values['simpay_email']; + $email = sanitize_text_field( $email ); + $clean_email = $this->clean_email( $email ); + + // Create a verification code valid for a set lifespan. + add_filter( + 'nonce_life', + array( $this, 'get_verification_code_lifespan' ) + ); + + $nonce = wp_create_nonce( 'simpay_verify_email_' . $clean_email ); + + remove_filter( + 'nonce_life', + array( $this, 'get_verification_code_lifespan' ) + ); + + // Add the verification code to the list of valid codes. + /** @var array $verification_codes */ + $verification_codes = get_option( + 'simpay_email_verification_codes', + array() + ); + + $verification_code_exists = array_search( + $nonce, + $verification_codes, + true + ); + + if ( false === $verification_code_exists ) { + update_option( + 'simpay_email_verification_codes', + array_merge( $verification_codes, array( $nonce ) ) + ); + } + + // Send an email containing the verification code. + wp_mail( + $email, + sprintf( + /* translators: Website name. */ + __( '🔐 Your Verification Code for %s', 'stripe' ), + get_bloginfo( 'name' ) + ), + sprintf( + /* translators: Verification code */ + __( + "To verify your identity and complete your payment, please enter the following verification code in the payment form:\n\n%s", + 'stripe' + ), + $nonce + ) + ); + + // Return the HTML. + throw new Exception( $this->get_email_verification_input() ); + } + + /** + * Ensures a verification code is valid before proceeding with the following + * REST API routes: + * + * /wpsp/v2/customer + * /wpsp/v2/paymentintent + * /wpsp/v2/subscription + * /wpsp/v2/setupintent + * /wpsp/v2/charge + * + * @since 4.6.0 + * + * @param array $args Object arguments. + * @param \SimplePay\Core\Abstracts\Form $form Payment Form instance. + * @param array $form_data Payment Form state. + * @param array $form_values Payment form values. + * @throws \Exception If the verification code is invalid. + * @return void + */ + public function verify_verification_code_rest( $args, $form, $form_data, $form_values ) { + if ( ! isset( $form_values['simpay_email_verification_code'] ) ) { + throw new Exception( + __( 'Invalid request. Please try again.', 'stripe' ) . + $this->get_email_verification_input() + ); + } + + // Retrieve the verification code. + /** @var string $verification_code */ + $verification_code = $form_values['simpay_email_verification_code']; + $verification_code = sanitize_text_field( $verification_code ); + + // ... and base email. + /** @var string $email */ + $email = $form_values['simpay_email']; + $clean_email = $this->clean_email( + sanitize_text_field( $email ) + ); + + $verified = $this->verify_verification_code( + $verification_code, + $clean_email + ); + + // If the code is invalid, throw an error. + if ( false === $verified ) { + throw new Exception( + __( 'Invalid verification code. Please try again.', 'stripe' ) . + $this->get_email_verification_input() + ); + } + } + + /** + * Ensures a verification code is valid before proceeding with submitting an + * order. This is a separate function because the action takes differnet args. + * + * @since 4.6.0 + * + * @param array $request REST API request. + * @throws \Exception If the verification code is invalid. + * @return void + */ + function verify_verification_code_order_submit( $request ) { + // Retrieve form values. + /** @var array $form_values */ + $form_values = $request['form_values']; + + if ( ! isset( $form_values['simpay_email_verification_code'] ) ) { + throw new Exception( + __( 'Invalid request. Please try again.', 'stripe' ) . + $this->get_email_verification_input() + ); + } + + // ... pull the verification code. + $verification_code = $form_values['simpay_email_verification_code']; + $verification_code = sanitize_text_field( $verification_code ); + + // ... and base email. + $clean_email = $this->clean_email( + sanitize_text_field( $form_values['simpay_email'] ) + ); + + $verified = $this->verify_verification_code( + $verification_code, + $clean_email + ); + + // If the code is invalid, throw an error. + if ( false === $verified ) { + throw new Exception( + __( 'Invalid verification code. Please try again.', 'stripe' ) . + $this->get_email_verification_input() + ); + } + } + + /** + * Validates a verification code by checking the nonce against a list of + * valid codes. + * + * @since 4.6.0 + * + * @param string $verification_code Verification code. + * @param string $email Email address. + * @return bool + */ + public function verify_verification_code( $verification_code, $email ) { + // Validate the nonce. + add_filter( + 'nonce_life', + array( $this, 'get_verification_code_lifespan' ) + ); + + $valid_nonce = wp_verify_nonce( + $verification_code, + 'simpay_verify_email_' . $email + ); + + remove_filter( + 'nonce_life', + array( $this, 'get_verification_code_lifespan' ) + ); + + if ( false === $valid_nonce ) { + return false; + } + + // Ensure the verification code has not been previously used. + /** @var array $valid_verification_codes */ + $valid_verification_codes = get_option( + 'simpay_email_verification_codes', + array() + ); + + $found_verification_code = array_search( + $verification_code, + $valid_verification_codes, + true + ); + + return false !== $found_verification_code; + } + + /** + * Removes a verification code from the list of valid codes after a payment + * action has been made. + * + * @since 4.6.0 + * + * @param array $args Object arguments. + * @param \SimplePay\Core\Abstracts\Form $form Payment Form instance. + * @param array $form_data Payment Form state. + * @param array $form_values Payment form values. + * @throws \Exception If the verification code is not available. + * @return void + */ + public function remove_verification_code_rest( $args, $form, $form_data, $form_values ) { + if ( ! isset( $form_values['simpay_email_verification_code'] ) ) { + throw new Exception( + __( 'Invalid request. Please try again.', 'stripe' ) . + $this->get_email_verification_input() + ); + } + + /** @var string $verification_code */ + $verification_code = $form_values['simpay_email_verification_code']; + $verification_code = sanitize_text_field( $verification_code ); + + $this->remove_verification_code( $verification_code ); + } + + /** + * Removes a verification code from the list of valid codes after an order + * has been submitted. + * + * @since 4.6.0 + * + * @param array $request REST API request. + * @throws \Exception If the verification code is not available. + * @return void + */ + public function remove_verification_code_order_submit( $request ) { + // Retrieve form values. + /** @var array $form_values */ + $form_values = $request['form_values']; + + if ( ! isset( $form_values['simpay_email_verification_code'] ) ) { + throw new Exception( + __( 'Invalid request. Please try again.', 'stripe' ) . + $this->get_email_verification_input() + ); + } + + $verification_code = sanitize_text_field( + $form_values['simpay_email_verification_code'] + ); + + $this->remove_verification_code( $verification_code ); + } + + /** + * Removes a verification code from the list of valid codes. + * + * @since 4.6.0 + * + * @param string $verification_code Verification code to remove. + * @return void + */ + public function remove_verification_code( $verification_code ) { + /** @var array $valid_verification_codes */ + $valid_verification_codes = get_option( + 'simpay_email_verification_codes', + array() + ); + + $found_verification_code = array_search( + $verification_code, + $valid_verification_codes, + true + ); + + if ( false === $found_verification_code ) { + return; + } + + unset( $valid_verification_codes[ $found_verification_code ] ); + + update_option( + 'simpay_email_verification_codes', + $valid_verification_codes + ); + } + + /** + * Adjusts the rate limiting ID to use the email address being submitted. + * + * Uses the "cleaned" email address to remove "dynamic" email addresses. + * spencer+123@gmail.com becomes spencer@gmail.com + * + * @since 4.6.0 + * + * @param string $id The rate limiting ID. + * @return string + */ + public function set_rate_limiting_id( $id ) { + if ( + ! isset( + $_POST['form_values'], + $_POST['form_values']['simpay_email_verification_code'] + ) + ) { + return $id; + } + + $email = sanitize_text_field( + $_POST['form_values']['simpay_email'] + ); + + return $this->clean_email( $email ); + } + + /** + * Sets the rate limiting timeout to the same as the email verification timeframe. + * + * @since 4.6.0 + * + * @return int|float + */ + public function set_rate_limiting_timeout() { + return $this->get_fraud_event_timeframe(); + } + + /** + * Returns the lifespan of a verification code. + * + * @since 4.6.0 + * + * @return int + */ + public function get_verification_code_lifespan() { + return MINUTE_IN_SECONDS * 10; + } + + /** + * Returns the timeframe (in seconds) for enabling email verification fraud + * protection. + * + * @since 4.6.0 + * + * @return int|float + */ + private function get_fraud_event_timeframe() { + /** @var int|float $timeframe */ + $timeframe = simpay_get_setting( + 'fraud_email_verification_timeframe', + 6 + ); + + return $timeframe * HOUR_IN_SECONDS; + } + + /** + * Returns the number of fraud events threshold for enabling email + * verification fraud protection. + * + * @since 4.6.0 + * + * @return int + */ + private function get_fraud_event_threshold() { + /** @var int $threshold */ + $threshold = simpay_get_setting( + 'fraud_email_verification_threshold', + 3 + ); + + return $threshold; + } + + /** + * Determines if the latest fraud event occured within the set timeframe. + * + * @since 4.6.0 + * + * @return bool + */ + private function is_latest_fraud_event_in_timeframe() { + /** @var array $fraud_events */ + $fraud_events = get_option( 'simpay_fraud_events', array() ); + + if ( empty( $fraud_events ) ) { + return false; + } + + $latest_event = $fraud_events['latest_event']; + + return time() - $latest_event <= $this->get_fraud_event_timeframe(); + } + + /** + * Returns the number of fraud events that have occured within the set + * timeframe. + * + * @since 4.6.0 + * + * @return int + */ + private function get_fraud_event_count() { + /** @var array $fraud_events */ + $fraud_events = get_option( 'simpay_fraud_events', array() ); + + if ( empty( $fraud_events ) ) { + return 0; + } + + return (int) $fraud_events['count']; + } + + /** + * "Cleans" a "dynamic" email address by removing the "+" and everything after it. + * + * @since 4.6.0 + * + * @param string $email Email address to clean. + * @return string + */ + private function clean_email( $email ) { + $parts = explode( '@', $email ); + + // Remove + and following characters. + $parts[0] = preg_replace( '/\+.*/', '', $parts[0] ); + + return trim( implode( '@', $parts ) ); + } + + /** + * Returns the email verification field markup. + * + * @since 4.6.0 + * + * @return string + */ + private function get_email_verification_input() { + return sprintf( + '
+
+ %2$s +
+
+ +
+
+ +
+
+ ', + wp_rand(), + sprintf( + '
⚠️
%s%s', + esc_html__( + 'Your payment has not been processed!', + 'stripe' + ), + esc_html__( + 'Additional verification is required. Please enter the verification code sent to your email address and resubmit to complete your payment.', + 'stripe' + ) + ), + esc_html__( 'Verification Code', 'stripe' ) + ); + } + +} diff --git a/src/AntiSpam/RequireAuthentication.php b/src/AntiSpam/RequireAuthentication.php new file mode 100644 index 00000000..cf94566f --- /dev/null +++ b/src/AntiSpam/RequireAuthentication.php @@ -0,0 +1,139 @@ +license->is_lite() ) { + return array(); + } + + $subscribers = array( + 'simpay_register_settings' => 'add_settings', + ); + + if ( 'yes' === simpay_get_setting( 'fraud_require_authentication', 'no' ) ) { + $actions = array( + 'simpay_before_customer_from_payment_form_request', + 'simpay_before_paymentintent_from_payment_form_request', + 'simpay_before_setupintent_from_payment_form_request', + 'simpay_before_subscription_from_payment_form_request', + 'simpay_before_charge_from_payment_form_request', + 'simpay_before_order_submit_from_payment_form_request', + ); + + foreach ( $actions as $action ) { + $subscribers[ $action ] = array( 'requre_authentication', 0 ); + } + } + + return $subscribers; + } + + /** + * Adds the settings UI for requring a login for fraud prevention. + * + * @since 4.6.0 + * + * @param \SimplePay\Core\Settings\Setting_Collection $settings Settings collection. + * @return void + */ + public function add_settings( $settings ) { + // Enable/Disable. + $settings->add( + new Settings\Setting_Checkbox( + array( + 'id' => 'fraud_require_authentication', + 'section' => 'general', + 'subsection' => 'recaptcha', + 'label' => esc_html_x( + 'Require User Authentication', + 'setting label', + 'stripe' + ), + 'input_label' => esc_html_x( + 'Require users to be logged in to submit on-site payments.', + 'setting input label', + 'stripe' + ), + 'description' => sprintf( + '