@xsolla/payment-client-core 0.2.44 → 0.2.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/payment/actions/action.interface.mjs +1 -1
- package/esm2022/lib/core/payment/actions/next-action.service.mjs +1 -1
- package/esm2022/lib/core/payment/field-names.enum.mjs +4 -1
- package/esm2022/lib/core/payment/field.interface.mjs +1 -1
- package/esm2022/lib/core/payment/finance-details/finance-details.service.mjs +4 -1
- package/esm2022/lib/core/payment/initialize-actions/action.interface.mjs +2 -0
- package/esm2022/lib/core/payment/initialize-actions/initialize-next-action.service.mjs +40 -0
- package/esm2022/lib/core/payment/initialize-actions/initialize-next-actions.mjs +7 -0
- package/esm2022/lib/core/payment/initialize-actions/next-action.interface.mjs +2 -0
- package/esm2022/lib/core/payment/initialize-actions/special-button/special-button.action.class.mjs +46 -0
- package/esm2022/lib/core/payment/initialize-actions/special-button/special-button.action.type.mjs +2 -0
- package/esm2022/lib/core/payment/initialized-form.inteface.mjs +1 -1
- package/esm2022/lib/core/payment/payment.service.mjs +72 -24
- package/esm2022/lib/core/payment/sync/request/sync-request.class.mjs +3 -1
- package/esm2022/lib/core/payment/sync/sync.service.mjs +4 -4
- package/esm2022/lib/core/payment/xps-error.interface.mjs +1 -1
- package/esm2022/lib/core/sdk-payment-systems/google-pay/check-payment-device-data.interface.mjs +2 -0
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.mjs +1 -1
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.mjs +1 -1
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +70 -59
- package/esm2022/lib/core/sdk-payment-systems/google-pay/payment/google-pay-checkout-payment.service.mjs +75 -0
- package/esm2022/lib/core/sdk-payment-systems/google-pay/payment/google-pay-instant-payment.service.mjs +121 -0
- package/esm2022/lib/core/sdk-payment-systems/google-pay/payment/google-pay-payment-service.interface.mjs +2 -0
- package/esm2022/lib/core/sdk-payment-systems/google-pay/updated-price.interface.mjs +2 -0
- package/esm2022/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.mjs +1 -1
- package/esm2022/lib/core/sdk-payment-systems/sdk-payment-systems.interface.mjs +1 -1
- package/esm2022/lib/core-library.module.mjs +12 -1
- package/esm2022/lib/core-library.service.mjs +13 -2
- package/fesm2022/xsolla-payment-client-core.mjs +560 -209
- package/fesm2022/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/payment/actions/action.interface.d.ts +2 -2
- package/lib/core/payment/actions/next-action.service.d.ts +1 -1
- package/lib/core/payment/actions/next-actions.d.ts +1 -1
- package/lib/core/payment/field-names.enum.d.ts +4 -1
- package/lib/core/payment/field.interface.d.ts +1 -1
- package/lib/core/payment/finance-details/finance-details.service.d.ts +1 -0
- package/lib/core/payment/initialize-actions/action.interface.d.ts +11 -0
- package/lib/core/payment/initialize-actions/initialize-next-action.service.d.ts +16 -0
- package/lib/core/payment/initialize-actions/initialize-next-actions.d.ts +5 -0
- package/lib/core/payment/initialize-actions/next-action.interface.d.ts +2 -0
- package/lib/core/payment/initialize-actions/special-button/special-button.action.class.d.ts +17 -0
- package/lib/core/payment/initialize-actions/special-button/special-button.action.type.d.ts +6 -0
- package/lib/core/payment/initialized-form.inteface.d.ts +2 -0
- package/lib/core/payment/payment.service.d.ts +11 -2
- package/lib/core/payment/sync/sync.service.d.ts +1 -1
- package/lib/core/payment/xps-error.interface.d.ts +1 -0
- package/lib/core/sdk-payment-systems/google-pay/check-payment-device-data.interface.d.ts +9 -0
- package/lib/core/sdk-payment-systems/google-pay/google-pay-init-params.interface.d.ts +6 -0
- package/lib/core/sdk-payment-systems/google-pay/google-pay-library.interface.d.ts +170 -52
- package/lib/core/sdk-payment-systems/google-pay/google-pay.service.d.ts +18 -10
- package/lib/core/sdk-payment-systems/google-pay/payment/google-pay-checkout-payment.service.d.ts +18 -0
- package/lib/core/sdk-payment-systems/google-pay/payment/google-pay-instant-payment.service.d.ts +18 -0
- package/lib/core/sdk-payment-systems/google-pay/payment/google-pay-payment-service.interface.d.ts +14 -0
- package/lib/core/sdk-payment-systems/google-pay/updated-price.interface.d.ts +7 -0
- package/lib/core/sdk-payment-systems/sdk-payment-systems-initial-data.interface.d.ts +7 -1
- package/lib/core/sdk-payment-systems/sdk-payment-systems.interface.d.ts +1 -1
- package/lib/core-library.service.d.ts +9 -0
- package/package.json +1 -1
- package/xsolla-payment-client-core-0.2.45.tgz +0 -0
- package/xsolla-payment-client-core-0.2.44.tgz +0 -0
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Inject, Injectable } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, filter, take } from 'rxjs';
|
|
3
|
-
import { windowToken } from '../../window.token';
|
|
4
3
|
import { AppError } from '../../exceptions-handling/errors/app-error.class';
|
|
4
|
+
import { ErrorTags } from '../../exceptions-handling/errors/elk-error-types.enum';
|
|
5
5
|
import { CheckStatusActionCreator } from '../../payment/actions/check-status/check-status.action.class';
|
|
6
|
+
import { windowToken } from '../../window.token';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "
|
|
8
|
+
import * as i1 from "../../exceptions-handling/elk/elk-logger.service";
|
|
9
|
+
import * as i2 from "../payment-systems/payment-system-processing.service";
|
|
10
|
+
import * as i3 from "./payment/google-pay-checkout-payment.service";
|
|
11
|
+
import * as i4 from "./payment/google-pay-instant-payment.service";
|
|
8
12
|
export class GooglePayService {
|
|
9
13
|
get libraryWasInitialized() {
|
|
10
14
|
return !!this.window.google;
|
|
@@ -12,14 +16,17 @@ export class GooglePayService {
|
|
|
12
16
|
get googlePaymentClientWasInitialized() {
|
|
13
17
|
return !!this.googlePaymentClient;
|
|
14
18
|
}
|
|
15
|
-
constructor(window, paymentSystemProcessingService, injector) {
|
|
19
|
+
constructor(window, elkLoggerService, paymentSystemProcessingService, googlePayCheckoutPaymentService, googlePayInstantPaymentService, injector) {
|
|
16
20
|
this.window = window;
|
|
21
|
+
this.elkLoggerService = elkLoggerService;
|
|
17
22
|
this.paymentSystemProcessingService = paymentSystemProcessingService;
|
|
23
|
+
this.googlePayCheckoutPaymentService = googlePayCheckoutPaymentService;
|
|
24
|
+
this.googlePayInstantPaymentService = googlePayInstantPaymentService;
|
|
18
25
|
this.injector = injector;
|
|
19
26
|
this.googlePayScriptUrl = 'https://pay.google.com/gp/p/js/pay.js';
|
|
20
27
|
this.readyToPay = new BehaviorSubject(null);
|
|
21
|
-
this.checkout = null;
|
|
22
28
|
this.googlePaymentClient = null;
|
|
29
|
+
this.paymentService = null;
|
|
23
30
|
}
|
|
24
31
|
get readyToPay$() {
|
|
25
32
|
return this.readyToPay.asObservable();
|
|
@@ -28,8 +35,9 @@ export class GooglePayService {
|
|
|
28
35
|
return this.readyToPay.getValue();
|
|
29
36
|
}
|
|
30
37
|
initGooglePayLibrary(data) {
|
|
31
|
-
this.
|
|
32
|
-
this.
|
|
38
|
+
this.initParams = data;
|
|
39
|
+
this.onPaymentDataChanged = data.onPaymentDataChanged;
|
|
40
|
+
this.onPaymentAuthorized = data.onPaymentAuthorized;
|
|
33
41
|
if (this.libraryWasInitialized && this.googlePaymentClientWasInitialized) {
|
|
34
42
|
return;
|
|
35
43
|
}
|
|
@@ -39,28 +47,36 @@ export class GooglePayService {
|
|
|
39
47
|
}
|
|
40
48
|
this.paymentSystemProcessingService.loadScript(this.googlePayScriptUrl, this.onLoadScript.bind(this));
|
|
41
49
|
}
|
|
42
|
-
checkPaymentDevice(
|
|
50
|
+
checkPaymentDevice(data) {
|
|
43
51
|
this.paymentSystemProcessingService.initialize$
|
|
44
52
|
.pipe(filter(Boolean), take(1))
|
|
45
53
|
.subscribe(() => {
|
|
46
|
-
this.
|
|
47
|
-
this.
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
if (!this.googlePaymentClient) {
|
|
55
|
+
this.elkLoggerService.log('Google payment client is not initialized', [ErrorTags.GOOGLEPAY]);
|
|
56
|
+
throw new AppError(`Google Pay: Google payment client is not initialized`);
|
|
57
|
+
}
|
|
58
|
+
this.paymentService = this.getPaymentService();
|
|
59
|
+
const initData = this.paymentService.preparePayment({
|
|
60
|
+
initParams: this.initParams,
|
|
61
|
+
checkDeviceData: data,
|
|
62
|
+
});
|
|
63
|
+
if (!initData) {
|
|
64
|
+
this.elkLoggerService.log('No initialization data', [
|
|
65
|
+
ErrorTags.GOOGLEPAY,
|
|
66
|
+
]);
|
|
67
|
+
throw new AppError('Google Pay: no initialization data');
|
|
50
68
|
}
|
|
51
|
-
const checkoutData = this.checkout.request.form.fields;
|
|
52
|
-
const isReadyToPayRequest = JSON.parse(checkoutData.isReadyToPayRequest);
|
|
53
69
|
this.googlePaymentClient
|
|
54
|
-
.isReadyToPay(isReadyToPayRequest)
|
|
70
|
+
.isReadyToPay(initData.isReadyToPayRequest)
|
|
55
71
|
.then((response) => {
|
|
56
72
|
if (response.result && this.googlePaymentClient) {
|
|
57
|
-
this.googlePaymentClient.prefetchPaymentData(
|
|
73
|
+
this.googlePaymentClient.prefetchPaymentData(initData.paymentDataRequest);
|
|
58
74
|
return this.readyToPay.next(true);
|
|
59
75
|
}
|
|
60
76
|
this.readyToPay.next(false);
|
|
61
77
|
const result = response.result?.toString() ?? '';
|
|
62
78
|
const isHavePaymentClient = Boolean(this.googlePaymentClient).toString();
|
|
63
|
-
throw new
|
|
79
|
+
throw new AppError(`Google Pay: possibly no response.result or googlePaymentClient is missing, result - ${result}, isHavePaymentClient - ${isHavePaymentClient}`);
|
|
64
80
|
})
|
|
65
81
|
.catch((error) => {
|
|
66
82
|
this.readyToPay.next(false);
|
|
@@ -73,60 +89,46 @@ export class GooglePayService {
|
|
|
73
89
|
});
|
|
74
90
|
}
|
|
75
91
|
async proceedCheckout() {
|
|
76
|
-
if (!this.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
if (!this.googlePaymentClient) {
|
|
93
|
+
this.elkLoggerService.log('Google payment client is not initialized to proceed checkout', [ErrorTags.GOOGLEPAY]);
|
|
94
|
+
throw new AppError(`Google Pay. proceedCheckout: no google payment client`);
|
|
95
|
+
}
|
|
96
|
+
if (!this.paymentService) {
|
|
97
|
+
this.elkLoggerService.log('Google payment service is not initialized to proceed checkout', [ErrorTags.GOOGLEPAY]);
|
|
98
|
+
throw new AppError(`Google Pay. proceedCheckout: no google payment service`);
|
|
99
|
+
}
|
|
100
|
+
const paymentDataRequest = this.paymentService.getPaymentRequest();
|
|
101
|
+
if (!paymentDataRequest) {
|
|
102
|
+
this.elkLoggerService.log('No data for payment data request', [
|
|
103
|
+
ErrorTags.GOOGLEPAY,
|
|
104
|
+
]);
|
|
105
|
+
throw new AppError(`Google Pay: No data for payment data request`);
|
|
80
106
|
}
|
|
81
|
-
const checkoutData = this.checkout.request.form.fields;
|
|
82
|
-
const paymentDataRequest = JSON.parse(checkoutData.paymentDataRequest);
|
|
83
|
-
paymentDataRequest.transactionInfo = {
|
|
84
|
-
currencyCode: checkoutData.currency,
|
|
85
|
-
totalPriceStatus: 'FINAL',
|
|
86
|
-
totalPrice: checkoutData.sum,
|
|
87
|
-
countryCode: this.country,
|
|
88
|
-
};
|
|
89
107
|
const checkStatusAction = this.injector
|
|
90
108
|
.get(CheckStatusActionCreator)
|
|
91
109
|
.getActionData();
|
|
92
110
|
try {
|
|
93
111
|
const paymentData = await this.googlePaymentClient.loadPaymentData(paymentDataRequest);
|
|
94
112
|
if (!paymentData?.paymentMethodData?.tokenizationData?.token) {
|
|
113
|
+
this.elkLoggerService.log('Token is missing', [ErrorTags.GOOGLEPAY]);
|
|
95
114
|
throw new AppError('Google Pay: token is missing');
|
|
96
115
|
}
|
|
97
|
-
|
|
98
|
-
throw new AppError('Google Pay: no checkout data in then');
|
|
99
|
-
}
|
|
100
|
-
let returnUrl = this.checkout.request.form.fields.returnSuccessUrl;
|
|
101
|
-
const data = this.checkout.request.form.fields;
|
|
102
|
-
returnUrl += `&cpf_number=${data.cpf_number}&descriptor=${data.descriptor}&paymentData=${JSON.stringify(paymentData)}`;
|
|
103
|
-
this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
|
|
116
|
+
this.paymentService.handleSuccessfulPayment?.(paymentData);
|
|
104
117
|
return checkStatusAction;
|
|
105
118
|
}
|
|
106
119
|
catch (error) {
|
|
107
|
-
|
|
108
|
-
throw new AppError(`Google Pay: no checkout data`);
|
|
109
|
-
}
|
|
110
|
-
const statusCode = error
|
|
111
|
-
?.statusCode;
|
|
112
|
-
const isStatusCanceled = statusCode && this.isCancelledStatus(statusCode);
|
|
113
|
-
if (isStatusCanceled) {
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
const returnUrl = this.checkout.request.form.fields.returnFailUrl;
|
|
117
|
-
this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
|
|
120
|
+
this.paymentService.handleFailedPayment?.(error);
|
|
118
121
|
return checkStatusAction;
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
createButton(onClickHandler, buttonColor = 'default') {
|
|
122
|
-
if (!this.
|
|
125
|
+
if (!this.googlePaymentClient) {
|
|
123
126
|
return null;
|
|
124
127
|
}
|
|
125
|
-
const
|
|
126
|
-
const paymentDataRequest = JSON.parse(checkoutData.paymentDataRequest);
|
|
128
|
+
const allowedPaymentMethods = this.paymentService?.getAllowedPaymentMethods() || [];
|
|
127
129
|
return this.googlePaymentClient.createButton({
|
|
128
130
|
onClick: onClickHandler,
|
|
129
|
-
allowedPaymentMethods:
|
|
131
|
+
allowedPaymentMethods: allowedPaymentMethods,
|
|
130
132
|
buttonSizeMode: 'fill',
|
|
131
133
|
buttonType: 'buy',
|
|
132
134
|
buttonColor,
|
|
@@ -136,11 +138,18 @@ export class GooglePayService {
|
|
|
136
138
|
if (!this.window.google) {
|
|
137
139
|
return;
|
|
138
140
|
}
|
|
139
|
-
const environment = this.isSandbox ? 'TEST' : 'PRODUCTION';
|
|
141
|
+
const environment = this.initParams.isSandbox ? 'TEST' : 'PRODUCTION';
|
|
142
|
+
const googlePaymentClientData = {
|
|
143
|
+
environment,
|
|
144
|
+
};
|
|
145
|
+
if (this.initParams.isInstantPayFlow) {
|
|
146
|
+
googlePaymentClientData.paymentDataCallbacks = {
|
|
147
|
+
onPaymentDataChanged: this.onPaymentDataChanged,
|
|
148
|
+
onPaymentAuthorized: this.onPaymentAuthorized,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
140
151
|
this.googlePaymentClient =
|
|
141
|
-
new this.window.google.payments.api.PaymentsClient(
|
|
142
|
-
environment,
|
|
143
|
-
});
|
|
152
|
+
new this.window.google.payments.api.PaymentsClient(googlePaymentClientData);
|
|
144
153
|
}
|
|
145
154
|
onLoadScript() {
|
|
146
155
|
if (!this.window.google) {
|
|
@@ -159,10 +168,12 @@ export class GooglePayService {
|
|
|
159
168
|
this.paymentSystemProcessingService.emitInitialize(true);
|
|
160
169
|
}
|
|
161
170
|
}
|
|
162
|
-
|
|
163
|
-
|
|
171
|
+
getPaymentService() {
|
|
172
|
+
if (this.initParams.isInstantPayFlow)
|
|
173
|
+
return this.googlePayInstantPaymentService;
|
|
174
|
+
return this.googlePayCheckoutPaymentService;
|
|
164
175
|
}
|
|
165
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, deps: [{ token: windowToken }, { token: i1.PaymentSystemProcessingService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, deps: [{ token: windowToken }, { token: i1.ElkLoggerService }, { token: i2.PaymentSystemProcessingService }, { token: i3.GooglePayCheckoutPaymentService }, { token: i4.GooglePayInstantPaymentService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
166
177
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, providedIn: 'root' }); }
|
|
167
178
|
}
|
|
168
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayService, decorators: [{
|
|
@@ -173,5 +184,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
173
184
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
174
185
|
type: Inject,
|
|
175
186
|
args: [windowToken]
|
|
176
|
-
}] }, { type: i1.PaymentSystemProcessingService }, { type: i0.Injector }] });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9nb29nbGUtcGF5L2dvb2dsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQU03RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUc1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7O0FBT3hHLE1BQU0sT0FBTyxnQkFBZ0I7SUFXM0IsSUFBWSxxQkFBcUI7UUFDL0IsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVksaUNBQWlDO1FBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFDd0MsTUFBc0IsRUFDNUMsOEJBQThELEVBQzlELFFBQWtCO1FBRkksV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDNUMsbUNBQThCLEdBQTlCLDhCQUE4QixDQUFnQztRQUM5RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBckJuQix1QkFBa0IsR0FBRyx1Q0FBdUMsQ0FBQztRQUU3RCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWlCLElBQUksQ0FBQyxDQUFDO1FBRWhFLGFBQVEsR0FBNkIsSUFBSSxDQUFDO1FBQzFDLHdCQUFtQixHQUEyQixJQUFJLENBQUM7SUFpQnhELENB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ZWN0LCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXQgfSBmcm9tICcuL2dvb2dsZS1wYXktY2hlY2tvdXQuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEdvb2dsZVBheUNsaWVudCxcbiAgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcGF5bWVudC1zeXN0ZW1zL3BheW1lbnQtc3lzdGVtLXByb2Nlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQXBwRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9hcHAtZXJyb3IuY2xhc3MnO1xuaW1wb3J0IHsgR29vZ2xlUGF5SW5pdFBhcmFtcyB9IGZyb20gJy4vZ29vZ2xlLXBheS1pbml0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgR29vZ2xlUGF5QnV0dG9uQ29sb3JUeXBlIH0gZnJvbSAnLi9nb29nbGUtcGF5LWJ1dHRvbi1jb2xvci50eXBlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZVBheVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGdvb2dsZVBheVNjcmlwdFVybCA9ICdodHRwczovL3BheS5nb29nbGUuY29tL2dwL3AvanMvcGF5LmpzJztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlYWR5VG9QYXkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIGNoZWNrb3V0OiBHb29nbGVQYXlDaGVja291dCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGdvb2dsZVBheW1lbnRDbGllbnQ6IEdvb2dsZVBheUNsaWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgaXNTYW5kYm94ITogYm9vbGVhbjtcbiAgcHJpdmF0ZSBjb3VudHJ5ITogc3RyaW5nO1xuXG4gIHByaXZhdGUgZ2V0IGxpYnJhcnlXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLndpbmRvdy5nb29nbGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBnb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50O1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pIHByaXZhdGUgcmVhZG9ubHkgd2luZG93OiBFeHRlbmRlZFdpbmRvdyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlOiBQYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvclxuICApIHt9XG5cbiAgcHVibGljIGdldCByZWFkeVRvUGF5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlYWR5VG9QYXkoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnJlYWR5VG9QYXkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0R29vZ2xlUGF5TGlicmFyeShkYXRhOiBHb29nbGVQYXlJbml0UGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5pc1NhbmRib3ggPSBkYXRhLmlzU2FuZGJveDtcbiAgICB0aGlzLmNvdW50cnkgPSBkYXRhLmNvdW50cnk7XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5V2FzSW5pdGlhbGl6ZWQgJiYgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5V2FzSW5pdGlhbGl6ZWQgJiYgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFdhc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UubG9hZFNjcmlwdChcbiAgICAgIHRoaXMuZ29vZ2xlUGF5U2NyaXB0VXJsLFxuICAgICAgdGhpcy5vbkxvYWRTY3JpcHQuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tQYXltZW50RGV2aWNlKGJhc2U2NGNoZWNrb3V0RGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuaW5pdGlhbGl6ZSRcbiAgICAgIC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0ID1cbiAgICAgICAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5nZXREZWNvZGVkQ2hlY2tvdXQ8R29vZ2xlUGF5Q2hlY2tvdXQ+KFxuICAgICAgICAgICAgYmFzZTY0Y2hlY2tvdXREYXRhXG4gICAgICAgICAgKTtcblxuICAgICAgICBpZiAoIXRoaXMuY2hlY2tvdXQgfHwgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgICAgIGBHb29nbGUgUGF5OiBubyBjaGVja291dCBvciBnb29nbGUgcGF5bWVudCBjbGllbnQsIGNoZWNrb3V0IC0gJHtCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrb3V0XG4gICAgICAgICAgICApLnRvU3RyaW5nKCl9LCBjbGllbnQgLSAke0Jvb2xlYW4oXG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFxuICAgICAgICAgICAgKS50b1N0cmluZygpfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2hlY2tvdXREYXRhID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzO1xuICAgICAgICBjb25zdCBpc1JlYWR5VG9QYXlSZXF1ZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBjaGVja291dERhdGEuaXNSZWFkeVRvUGF5UmVxdWVzdFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFxuICAgICAgICAgIC5pc1JlYWR5VG9QYXkoaXNSZWFkeVRvUGF5UmVxdWVzdClcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQgJiYgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5wcmVmZXRjaFBheW1lbnREYXRhKFxuICAgICAgICAgICAgICAgIEpTT04ucGFyc2UoY2hlY2tvdXREYXRhLnBheW1lbnREYXRhUmVxdWVzdClcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1BheS5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdD8udG9TdHJpbmcoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzSGF2ZVBheW1lbnRDbGllbnQgPSBCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAgICkudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgR29vZ2xlIFBheTogcG9zc2libHkgbm8gcmVzcG9uc2UucmVzdWx0IG9yIGdvb2dsZVBheW1lbnRDbGllbnQgaXMgbWlzc2luZywgcmVzdWx0IC0gJHtyZXN1bHR9LCBpc0hhdmVQYXltZW50Q2xpZW50IC0gJHtpc0hhdmVQYXltZW50Q2xpZW50fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9QYXkubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHN0cmluZykgPz8gJyc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgICAgIGBHb29nbGUgUGF5OiBkZXZpY2UgaXMgbm90IHJlYWR5IHRvIHBheSwgJHttZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcm9jZWVkQ2hlY2tvdXQoKTogUHJvbWlzZTxDaGVja1N0YXR1c0FjdGlvbiB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMuY2hlY2tvdXQgfHwgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgY29uc3QgaXNIYXZlQ2hlY2tvdXQgPSAhIXRoaXMuY2hlY2tvdXQ7XG4gICAgICBjb25zdCBpc0hhdmVDbGllbnQgPSAhIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudDtcblxuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICBgR29vZ2xlIFBheTogbm8gY2hlY2tvdXQgb3IgZ29vZ2xlIHBheW1lbnQgY2xpZW50LCBjaGVja291dCAtICR7aXNIYXZlQ2hlY2tvdXQudG9TdHJpbmcoKX0sIGNsaWVudCAtICR7aXNIYXZlQ2xpZW50LnRvU3RyaW5nKCl9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja291dERhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG5cbiAgICBjb25zdCBwYXltZW50RGF0YVJlcXVlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgY2hlY2tvdXREYXRhLnBheW1lbnREYXRhUmVxdWVzdFxuICAgICkgYXMgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3Q7XG5cbiAgICBwYXltZW50RGF0YVJlcXVlc3QudHJhbnNhY3Rpb25JbmZvID0ge1xuICAgICAgY3VycmVuY3lDb2RlOiBjaGVja291dERhdGEuY3VycmVuY3ksXG4gICAgICB0b3RhbFByaWNlU3RhdHVzOiAnRklOQUwnLFxuICAgICAgdG90YWxQcmljZTogY2hlY2tvdXREYXRhLnN1bSxcbiAgICAgIGNvdW50cnlDb2RlOiB0aGlzLmNvdW50cnksXG4gICAgfTtcblxuICAgIGNvbnN0IGNoZWNrU3RhdHVzQWN0aW9uOiBOZXh0QWN0aW9uID0gdGhpcy5pbmplY3RvclxuICAgICAgLmdldDxDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3I+KENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcilcbiAgICAgIC5nZXRBY3Rpb25EYXRhKCk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGF5bWVudERhdGEgPSBhd2FpdCB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQubG9hZFBheW1lbnREYXRhKFxuICAgICAgICBwYXltZW50RGF0YVJlcXVlc3RcbiAgICAgICk7XG5cbiAgICAgIGlmICghcGF5bWVudERhdGE/LnBheW1lbnRNZXRob2REYXRhPy50b2tlbml6YXRpb25EYXRhPy50b2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoJ0dvb2dsZSBQYXk6IHRva2VuIGlzIG1pc3NpbmcnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmNoZWNrb3V0KSB7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogbm8gY2hlY2tvdXQgZGF0YSBpbiB0aGVuJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCByZXR1cm5VcmwgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHMucmV0dXJuU3VjY2Vzc1VybDtcblxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcztcbiAgICAgIHJldHVyblVybCArPSBgJmNwZl9udW1iZXI9JHtkYXRhLmNwZl9udW1iZXJ9JmRlc2NyaXB0b3I9JHtcbiAgICAgICAgZGF0YS5kZXNjcmlwdG9yXG4gICAgICB9JnBheW1lbnREYXRhPSR7SlNPTi5zdHJpbmdpZnkocGF5bWVudERhdGEpfWA7XG5cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRTdGF0dXNVcmwocmV0dXJuVXJsKTtcblxuICAgICAgcmV0dXJuIGNoZWNrU3RhdHVzQWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBpZiAoIXRoaXMuY2hlY2tvdXQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKGBHb29nbGUgUGF5OiBubyBjaGVja291dCBkYXRhYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSAoZXJyb3IgYXMgdW5rbm93biBhcyB7IHN0YXR1c0NvZGU/OiBzdHJpbmcgfSlcbiAgICAgICAgPy5zdGF0dXNDb2RlO1xuXG4gICAgICBjb25zdCBpc1N0YXR1c0NhbmNlbGVkID0gc3RhdHVzQ29kZSAmJiB0aGlzLmlzQ2FuY2VsbGVkU3RhdHVzKHN0YXR1c0NvZGUpO1xuXG4gICAgICBpZiAoaXNTdGF0dXNDYW5jZWxlZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmV0dXJuVXJsID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzLnJldHVybkZhaWxVcmw7XG5cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRTdGF0dXNVcmwocmV0dXJuVXJsKTtcblxuICAgICAgcmV0dXJuIGNoZWNrU3RhdHVzQWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCdXR0b24oXG4gICAgb25DbGlja0hhbmRsZXI6ICgpID0+IHZvaWQsXG4gICAgYnV0dG9uQ29sb3I6IEdvb2dsZVBheUJ1dHRvbkNvbG9yVHlwZSA9ICdkZWZhdWx0J1xuICApOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jaGVja291dCB8fCAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja291dERhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG4gICAgY29uc3QgcGF5bWVudERhdGFSZXF1ZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgIGNoZWNrb3V0RGF0YS5wYXltZW50RGF0YVJlcXVlc3RcbiAgICApIGFzIEdvb2dsZVBheVBheW1lbnRSZXF1ZXN0O1xuXG4gICAgcmV0dXJuIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5jcmVhdGVCdXR0b24oe1xuICAgICAgb25DbGljazogb25DbGlja0hhbmRsZXIsXG4gICAgICBhbGxvd2VkUGF5bWVudE1ldGhvZHM6IHBheW1lbnREYXRhUmVxdWVzdC5hbGxvd2VkUGF5bWVudE1ldGhvZHMsXG4gICAgICBidXR0b25TaXplTW9kZTogJ2ZpbGwnLFxuICAgICAgYnV0dG9uVHlwZTogJ2J1eScsXG4gICAgICBidXR0b25Db2xvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBHb29nbGVQYXlDbGllbnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5nb29nbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuaXNTYW5kYm94ID8gJ1RFU1QnIDogJ1BST0RVQ1RJT04nO1xuXG4gICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50ID1cbiAgICAgIG5ldyB0aGlzLndpbmRvdy5nb29nbGUucGF5bWVudHMuYXBpLlBheW1lbnRzQ2xpZW50KHtcbiAgICAgICAgZW52aXJvbm1lbnQsXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkU2NyaXB0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aW5kb3cuZ29vZ2xlKSB7XG4gICAgICBjb25zdCByZXRyeVRpbWVvdXQgPSAxMDAwO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGVHb29nbGVDbGllbnQgPSAhIXRoaXMud2luZG93Lmdvb2dsZTtcblxuICAgICAgICBpZiAoaXNBdmFpbGFibGVHb29nbGVDbGllbnQpIHtcbiAgICAgICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5lbWl0SW5pdGlhbGl6ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgcmV0cnlUaW1lb3V0KTtcblxuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBnb29nbGUgbGlicmFyeSBub3cgaXMgYXZhaWxhYmxlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcblxuICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdEluaXRpYWxpemUodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0NhbmNlbGxlZFN0YXR1cyhzdGF0dXNDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdHVzQ29kZS50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsZWQnO1xuICB9XG59XG4iXX0=
|
|
187
|
+
}] }, { type: i1.ElkLoggerService }, { type: i2.PaymentSystemProcessingService }, { type: i3.GooglePayCheckoutPaymentService }, { type: i4.GooglePayInstantPaymentService }, { type: i0.Injector }] });
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9nb29nbGUtcGF5L2dvb2dsZS1wYXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBYyxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUVsRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUd4RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQWtCakQsTUFBTSxPQUFPLGdCQUFnQjtJQVkzQixJQUFZLHFCQUFxQjtRQUMvQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBWSxpQ0FBaUM7UUFDM0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUVtQixNQUFzQixFQUN0QixnQkFBa0MsRUFDbEMsOEJBQThELEVBQzlELCtCQUFnRSxFQUNoRSw4QkFBOEQsRUFDOUQsUUFBa0I7UUFMbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQzlELG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBaUM7UUFDaEUsbUNBQThCLEdBQTlC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LE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUM7WUFFMUIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxNQUFNLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFFckQsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztvQkFFNUIsSUFBSSxDQUFDLDhCQUE4QixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0QsQ0FBQztZQUNILENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUVqQixNQUFNLElBQUksUUFBUSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDcEUsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUU1QixJQUFJLENBQUMsOEJBQThCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDbEMsT0FBTyxJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsK0JBQStCLENBQUM7SUFDOUMsQ0FBQzs4R0FuUFUsZ0JBQWdCLGtCQXFCakIsV0FBVztrSEFyQlYsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBc0JJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGtMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9lbGsvZWxrLWxvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEVycm9yIH0gZnJvbSAnLi4vLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9lcnJvcnMvYXBwLWVycm9yLmNsYXNzJztcbmltcG9ydCB7IEVycm9yVGFncyB9IGZyb20gJy4uLy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzL2Vsay1lcnJvci10eXBlcy5lbnVtJztcbmltcG9ydCB7IEV4dGVuZGVkV2luZG93IH0gZnJvbSAnLi4vLi4vZXh0ZW5kZWQtd2luZG93LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3IgfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvY2hlY2stc3RhdHVzL2NoZWNrLXN0YXR1cy5hY3Rpb24uY2xhc3MnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb24gfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvY2hlY2stc3RhdHVzL2NoZWNrLXN0YXR1cy5hY3Rpb24udHlwZSc7XG5pbXBvcnQgeyBOZXh0QWN0aW9uIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL25leHQtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyB3aW5kb3dUb2tlbiB9IGZyb20gJy4uLy4uL3dpbmRvdy50b2tlbic7XG5pbXBvcnQgeyBQYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UgfSBmcm9tICcuLi9wYXltZW50LXN5c3RlbXMvcGF5bWVudC1zeXN0ZW0tcHJvY2Vzc2luZy5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrUGF5bWVudERldmljZURhdGEgfSBmcm9tICcuL2NoZWNrLXBheW1lbnQtZGV2aWNlLWRhdGEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdvb2dsZVBheUJ1dHRvbkNvbG9yVHlwZSB9IGZyb20gJy4vZ29vZ2xlLXBheS1idXR0b24tY29sb3IudHlwZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlJbml0UGFyYW1zIH0gZnJvbSAnLi9nb29nbGUtcGF5LWluaXQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBHb29nbGVQYXlDbGllbnQsXG4gIEdvb2dsZVBheUNsaWVudEluaXREYXRhLFxuICBQYXltZW50QXV0aG9yaXplZEhhbmRsZXIsXG4gIFBheW1lbnREYXRhQ2hhbmdlZEhhbmRsZXIsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlDaGVja291dFBheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50L2dvb2dsZS1wYXktY2hlY2tvdXQtcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdvb2dsZVBheUluc3RhbnRQYXltZW50U2VydmljZSB9IGZyb20gJy4vcGF5bWVudC9nb29nbGUtcGF5LWluc3RhbnQtcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdvb2dsZVBheVBheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50L2dvb2dsZS1wYXktcGF5bWVudC1zZXJ2aWNlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHb29nbGVQYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBnb29nbGVQYXlTY3JpcHRVcmwgPSAnaHR0cHM6Ly9wYXkuZ29vZ2xlLmNvbS9ncC9wL2pzL3BheS5qcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWFkeVRvUGF5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSBnb29nbGVQYXltZW50Q2xpZW50OiBHb29nbGVQYXlDbGllbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0UGFyYW1zITogR29vZ2xlUGF5SW5pdFBhcmFtcztcbiAgcHJpdmF0ZSBwYXltZW50U2VydmljZTogR29vZ2xlUGF5UGF5bWVudFNlcnZpY2UgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG9uUGF5bWVudERhdGFDaGFuZ2VkITogUGF5bWVudERhdGFDaGFuZ2VkSGFuZGxlcjtcbiAgcHJpdmF0ZSBvblBheW1lbnRBdXRob3JpemVkITogUGF5bWVudEF1dGhvcml6ZWRIYW5kbGVyO1xuXG4gIHByaXZhdGUgZ2V0IGxpYnJhcnlXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLndpbmRvdy5nb29nbGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBnb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50O1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxrTG9nZ2VyU2VydmljZTogRWxrTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZTogUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ29vZ2xlUGF5Q2hlY2tvdXRQYXltZW50U2VydmljZTogR29vZ2xlUGF5Q2hlY2tvdXRQYXltZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdvb2dsZVBheUluc3RhbnRQYXltZW50U2VydmljZTogR29vZ2xlUGF5SW5zdGFudFBheW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yXG4gICkge31cblxuICBwdWJsaWMgZ2V0IHJlYWR5VG9QYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGlzUmVhZHlUb1BheSgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRHb29nbGVQYXlMaWJyYXJ5KGRhdGE6IEdvb2dsZVBheUluaXRQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRQYXJhbXMgPSBkYXRhO1xuICAgIHRoaXMub25QYXltZW50RGF0YUNoYW5nZWQgPSBkYXRhLm9uUGF5bWVudERhdGFDaGFuZ2VkO1xuICAgIHRoaXMub25QYXltZW50QXV0aG9yaXplZCA9IGRhdGEub25QYXltZW50QXV0aG9yaXplZDtcblxuICAgIGlmICh0aGlzLmxpYnJhcnlXYXNJbml0aWFsaXplZCAmJiB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpYnJhcnlXYXNJbml0aWFsaXplZCAmJiAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5sb2FkU2NyaXB0KFxuICAgICAgdGhpcy5nb29nbGVQYXlTY3JpcHRVcmwsXG4gICAgICB0aGlzLm9uTG9hZFNjcmlwdC5iaW5kKHRoaXMpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1BheW1lbnREZXZpY2UoZGF0YTogQ2hlY2tQYXltZW50RGV2aWNlRGF0YSk6IHZvaWQge1xuICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmluaXRpYWxpemUkXG4gICAgICAucGlwZShmaWx0ZXIoQm9vbGVhbiksIHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgICAgICB0aGlzLmVsa0xvZ2dlclNlcnZpY2UubG9nKFxuICAgICAgICAgICAgJ0dvb2dsZSBwYXltZW50IGNsaWVudCBpcyBub3QgaW5pdGlhbGl6ZWQnLFxuICAgICAgICAgICAgW0Vycm9yVGFncy5HT09HTEVQQVldXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgICBgR29vZ2xlIFBheTogR29vZ2xlIHBheW1lbnQgY2xpZW50IGlzIG5vdCBpbml0aWFsaXplZGBcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wYXltZW50U2VydmljZSA9IHRoaXMuZ2V0UGF5bWVudFNlcnZpY2UoKTtcbiAgICAgICAgY29uc3QgaW5pdERhdGEgPSB0aGlzLnBheW1lbnRTZXJ2aWNlLnByZXBhcmVQYXltZW50KHtcbiAgICAgICAgICBpbml0UGFyYW1zOiB0aGlzLmluaXRQYXJhbXMsXG4gICAgICAgICAgY2hlY2tEZXZpY2VEYXRhOiBkYXRhLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWluaXREYXRhKSB7XG4gICAgICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZygnTm8gaW5pdGlhbGl6YXRpb24gZGF0YScsIFtcbiAgICAgICAgICAgIEVycm9yVGFncy5HT09HTEVQQVksXG4gICAgICAgICAgXSk7XG4gICAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBubyBpbml0aWFsaXphdGlvbiBkYXRhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAuaXNSZWFkeVRvUGF5KGluaXREYXRhLmlzUmVhZHlUb1BheVJlcXVlc3QpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzdWx0ICYmIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQucHJlZmV0Y2hQYXltZW50RGF0YShcbiAgICAgICAgICAgICAgICBpbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3RcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1BheS5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdD8udG9TdHJpbmcoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzSGF2ZVBheW1lbnRDbGllbnQgPSBCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAgICkudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICAgICAgICBgR29vZ2xlIFBheTogcG9zc2libHkgbm8gcmVzcG9uc2UucmVzdWx0IG9yIGdvb2dsZVBheW1lbnRDbGllbnQgaXMgbWlzc2luZywgcmVzdWx0IC0gJHtyZXN1bHR9LCBpc0hhdmVQYXltZW50Q2xpZW50IC0gJHtpc0hhdmVQYXltZW50Q2xpZW50fWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9QYXkubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHN0cmluZykgPz8gJyc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgICAgIGBHb29nbGUgUGF5OiBkZXZpY2UgaXMgbm90IHJlYWR5IHRvIHBheSwgJHttZXNzYWdlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcm9jZWVkQ2hlY2tvdXQoKTogUHJvbWlzZTxDaGVja1N0YXR1c0FjdGlvbiB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZyhcbiAgICAgICAgJ0dvb2dsZSBwYXltZW50IGNsaWVudCBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gcHJvY2VlZCBjaGVja291dCcsXG4gICAgICAgIFtFcnJvclRhZ3MuR09PR0xFUEFZXVxuICAgICAgKTtcbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgYEdvb2dsZSBQYXkuIHByb2NlZWRDaGVja291dDogbm8gZ29vZ2xlIHBheW1lbnQgY2xpZW50YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudFNlcnZpY2UpIHtcbiAgICAgIHRoaXMuZWxrTG9nZ2VyU2VydmljZS5sb2coXG4gICAgICAgICdHb29nbGUgcGF5bWVudCBzZXJ2aWNlIGlzIG5vdCBpbml0aWFsaXplZCB0byBwcm9jZWVkIGNoZWNrb3V0JyxcbiAgICAgICAgW0Vycm9yVGFncy5HT09HTEVQQVldXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICBgR29vZ2xlIFBheS4gcHJvY2VlZENoZWNrb3V0OiBubyBnb29nbGUgcGF5bWVudCBzZXJ2aWNlYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXltZW50RGF0YVJlcXVlc3QgPSB0aGlzLnBheW1lbnRTZXJ2aWNlLmdldFBheW1lbnRSZXF1ZXN0KCk7XG5cbiAgICBpZiAoIXBheW1lbnREYXRhUmVxdWVzdCkge1xuICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZygnTm8gZGF0YSBmb3IgcGF5bWVudCBkYXRhIHJlcXVlc3QnLCBbXG4gICAgICAgIEVycm9yVGFncy5HT09HTEVQQVksXG4gICAgICBdKTtcbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcihgR29vZ2xlIFBheTogTm8gZGF0YSBmb3IgcGF5bWVudCBkYXRhIHJlcXVlc3RgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjaGVja1N0YXR1c0FjdGlvbjogTmV4dEFjdGlvbiA9IHRoaXMuaW5qZWN0b3JcbiAgICAgIC5nZXQ8Q2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yPihDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3IpXG4gICAgICAuZ2V0QWN0aW9uRGF0YSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBheW1lbnREYXRhID0gYXdhaXQgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LmxvYWRQYXltZW50RGF0YShcbiAgICAgICAgcGF5bWVudERhdGFSZXF1ZXN0XG4gICAgICApO1xuXG4gICAgICBpZiAoIXBheW1lbnREYXRhPy5wYXltZW50TWV0aG9kRGF0YT8udG9rZW5pemF0aW9uRGF0YT8udG9rZW4pIHtcbiAgICAgICAgdGhpcy5lbGtMb2dnZXJTZXJ2aWNlLmxvZygnVG9rZW4gaXMgbWlzc2luZycsIFtFcnJvclRhZ3MuR09PR0xFUEFZXSk7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogdG9rZW4gaXMgbWlzc2luZycpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmhhbmRsZVN1Y2Nlc3NmdWxQYXltZW50Py4ocGF5bWVudERhdGEpO1xuICAgICAgcmV0dXJuIGNoZWNrU3RhdHVzQWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmhhbmRsZUZhaWxlZFBheW1lbnQ/LihlcnJvcik7XG4gICAgICByZXR1cm4gY2hlY2tTdGF0dXNBY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUJ1dHRvbihcbiAgICBvbkNsaWNrSGFuZGxlcjogKCkgPT4gdm9pZCxcbiAgICBidXR0b25Db2xvcjogR29vZ2xlUGF5QnV0dG9uQ29sb3JUeXBlID0gJ2RlZmF1bHQnXG4gICk6IEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbG93ZWRQYXltZW50TWV0aG9kcyA9XG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlPy5nZXRBbGxvd2VkUGF5bWVudE1ldGhvZHMoKSB8fCBbXTtcblxuICAgIHJldHVybiB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQuY3JlYXRlQnV0dG9uKHtcbiAgICAgIG9uQ2xpY2s6IG9uQ2xpY2tIYW5kbGVyLFxuICAgICAgYWxsb3dlZFBheW1lbnRNZXRob2RzOiBhbGxvd2VkUGF5bWVudE1ldGhvZHMsXG4gICAgICBidXR0b25TaXplTW9kZTogJ2ZpbGwnLFxuICAgICAgYnV0dG9uVHlwZTogJ2J1eScsXG4gICAgICBidXR0b25Db2xvcixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBHb29nbGVQYXlDbGllbnQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5nb29nbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuaW5pdFBhcmFtcy5pc1NhbmRib3ggPyAnVEVTVCcgOiAnUFJPRFVDVElPTic7XG4gICAgY29uc3QgZ29vZ2xlUGF5bWVudENsaWVudERhdGE6IEdvb2dsZVBheUNsaWVudEluaXREYXRhID0ge1xuICAgICAgZW52aXJvbm1lbnQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmluaXRQYXJhbXMuaXNJbnN0YW50UGF5Rmxvdykge1xuICAgICAgZ29vZ2xlUGF5bWVudENsaWVudERhdGEucGF5bWVudERhdGFDYWxsYmFja3MgPSB7XG4gICAgICAgIG9uUGF5bWVudERhdGFDaGFuZ2VkOiB0aGlzLm9uUGF5bWVudERhdGFDaGFuZ2VkLFxuICAgICAgICBvblBheW1lbnRBdXRob3JpemVkOiB0aGlzLm9uUGF5bWVudEF1dGhvcml6ZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCA9XG4gICAgICBuZXcgdGhpcy53aW5kb3cuZ29vZ2xlLnBheW1lbnRzLmFwaS5QYXltZW50c0NsaWVudChcbiAgICAgICAgZ29vZ2xlUGF5bWVudENsaWVudERhdGFcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uTG9hZFNjcmlwdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2luZG93Lmdvb2dsZSkge1xuICAgICAgY29uc3QgcmV0cnlUaW1lb3V0ID0gMTAwMDtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlR29vZ2xlQ2xpZW50ID0gISF0aGlzLndpbmRvdy5nb29nbGU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlR29vZ2xlQ2xpZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXR1cEdvb2dsZVBheUNsaWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdEluaXRpYWxpemUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHJldHJ5VGltZW91dCk7XG5cbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogZ29vZ2xlIGxpYnJhcnkgbm93IGlzIGF2YWlsYWJsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG5cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRJbml0aWFsaXplKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF5bWVudFNlcnZpY2UoKTogR29vZ2xlUGF5UGF5bWVudFNlcnZpY2Uge1xuICAgIGlmICh0aGlzLmluaXRQYXJhbXMuaXNJbnN0YW50UGF5RmxvdylcbiAgICAgIHJldHVybiB0aGlzLmdvb2dsZVBheUluc3RhbnRQYXltZW50U2VydmljZTtcbiAgICByZXR1cm4gdGhpcy5nb29nbGVQYXlDaGVja291dFBheW1lbnRTZXJ2aWNlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../payment-systems/payment-system-processing.service";
|
|
4
|
+
export class GooglePayCheckoutPaymentService {
|
|
5
|
+
constructor(paymentSystemProcessingService) {
|
|
6
|
+
this.paymentSystemProcessingService = paymentSystemProcessingService;
|
|
7
|
+
this.checkout = null;
|
|
8
|
+
}
|
|
9
|
+
preparePayment({ initParams, checkDeviceData, }) {
|
|
10
|
+
if (!initParams || !checkDeviceData.base64checkoutData)
|
|
11
|
+
return null;
|
|
12
|
+
this.initParams = initParams;
|
|
13
|
+
this.checkout =
|
|
14
|
+
this.paymentSystemProcessingService.getDecodedCheckout(checkDeviceData.base64checkoutData);
|
|
15
|
+
if (!this.checkout)
|
|
16
|
+
return null;
|
|
17
|
+
const checkoutData = this.checkout.request.form.fields;
|
|
18
|
+
const paymentDataRequest = JSON.parse(checkoutData.paymentDataRequest);
|
|
19
|
+
const isReadyToPayRequest = JSON.parse(checkoutData.isReadyToPayRequest);
|
|
20
|
+
const result = { paymentDataRequest, isReadyToPayRequest };
|
|
21
|
+
if (checkoutData.amexCardNotification) {
|
|
22
|
+
result.amexCardNotification = JSON.parse(checkoutData.amexCardNotification);
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
getPaymentRequest() {
|
|
27
|
+
if (!this.checkout)
|
|
28
|
+
return null;
|
|
29
|
+
const checkoutData = this.checkout.request.form.fields;
|
|
30
|
+
const paymentDataRequest = JSON.parse(checkoutData.paymentDataRequest);
|
|
31
|
+
paymentDataRequest.transactionInfo = {
|
|
32
|
+
currencyCode: checkoutData.currency,
|
|
33
|
+
totalPriceStatus: 'FINAL',
|
|
34
|
+
totalPrice: checkoutData.sum?.toString(),
|
|
35
|
+
countryCode: this.initParams.country.toUpperCase(),
|
|
36
|
+
};
|
|
37
|
+
return paymentDataRequest;
|
|
38
|
+
}
|
|
39
|
+
getAllowedPaymentMethods() {
|
|
40
|
+
if (!this.checkout)
|
|
41
|
+
return [];
|
|
42
|
+
const paymentDataRequest = JSON.parse(this.checkout.request.form.fields.paymentDataRequest);
|
|
43
|
+
return paymentDataRequest.allowedPaymentMethods;
|
|
44
|
+
}
|
|
45
|
+
handleSuccessfulPayment(response) {
|
|
46
|
+
if (!this.checkout)
|
|
47
|
+
return;
|
|
48
|
+
let returnUrl = this.checkout.request.form.fields.returnSuccessUrl;
|
|
49
|
+
const data = this.checkout.request.form.fields;
|
|
50
|
+
returnUrl += `&cpf_number=${data.cpf_number}&descriptor=${data.descriptor}&paymentData=${JSON.stringify(response)}`;
|
|
51
|
+
this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
|
|
52
|
+
}
|
|
53
|
+
handleFailedPayment(error) {
|
|
54
|
+
if (!this.checkout)
|
|
55
|
+
return;
|
|
56
|
+
const statusCode = error?.statusCode;
|
|
57
|
+
const isStatusCanceled = statusCode && this.isCancelledStatus(statusCode);
|
|
58
|
+
if (isStatusCanceled)
|
|
59
|
+
return;
|
|
60
|
+
const returnUrl = this.checkout.request.form.fields.returnFailUrl;
|
|
61
|
+
this.paymentSystemProcessingService.emitStatusUrl(returnUrl);
|
|
62
|
+
}
|
|
63
|
+
isCancelledStatus(statusCode) {
|
|
64
|
+
return statusCode.toLowerCase() === 'canceled';
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayCheckoutPaymentService, deps: [{ token: i1.PaymentSystemProcessingService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
67
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayCheckoutPaymentService, providedIn: 'root' }); }
|
|
68
|
+
}
|
|
69
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayCheckoutPaymentService, decorators: [{
|
|
70
|
+
type: Injectable,
|
|
71
|
+
args: [{
|
|
72
|
+
providedIn: 'root',
|
|
73
|
+
}]
|
|
74
|
+
}], ctorParameters: () => [{ type: i1.PaymentSystemProcessingService }] });
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS1jaGVja291dC1wYXltZW50LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2dvb2dsZS1wYXkvcGF5bWVudC9nb29nbGUtcGF5LWNoZWNrb3V0LXBheW1lbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFrQjNDLE1BQU0sT0FBTywrQkFBK0I7SUFNMUMsWUFDa0IsOEJBQThEO1FBQTlELG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFIeEUsYUFBUSxHQUE2QixJQUFJLENBQUM7SUFJL0MsQ0FBQztJQUVHLGNBQWMsQ0FBQyxFQUNwQixVQUFVLEVBQ1YsZUFBZSxHQUNNO1FBQ3JCLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFcEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVE7WUFDWCxJQUFJLENBQUMsOEJBQThCLENBQUMsa0JBQWtCLENBQ3BELGVBQWUsQ0FBQyxrQkFBa0IsQ0FDbkMsQ0FBQztRQUVKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRWhDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENB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ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZSB9IGZyb20gJy4uLy4uL3BheW1lbnQtc3lzdGVtcy9wYXltZW50LXN5c3RlbS1wcm9jZXNzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXQgfSBmcm9tICcuLi9nb29nbGUtcGF5LWNoZWNrb3V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlJbml0UGFyYW1zIH0gZnJvbSAnLi4vZ29vZ2xlLXBheS1pbml0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgQWxsb3dlZFBheW1lbnRNZXRob2QsXG4gIEdvb2dsZUluaXREYXRhLFxuICBHb29nbGVQYXlQYXltZW50UmVxdWVzdCxcbiAgUGF5bWVudERhdGFSZXNwb25zZSxcbn0gZnJvbSAnLi4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBHb29nbGVQYXlQYXltZW50U2VydmljZSxcbiAgUHJlcGFyZVBheW1lbnRQYXJhbXMsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1wYXltZW50LXNlcnZpY2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZVBheUNoZWNrb3V0UGF5bWVudFNlcnZpY2VcbiAgaW1wbGVtZW50cyBHb29nbGVQYXlQYXltZW50U2VydmljZVxue1xuICBwcml2YXRlIGluaXRQYXJhbXMhOiBHb29nbGVQYXlJbml0UGFyYW1zO1xuICBwcml2YXRlIGNoZWNrb3V0OiBHb29nbGVQYXlDaGVja291dCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlOiBQYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBwcmVwYXJlUGF5bWVudCh7XG4gICAgaW5pdFBhcmFtcyxcbiAgICBjaGVja0RldmljZURhdGEsXG4gIH06IFByZXBhcmVQYXltZW50UGFyYW1zKTogR29vZ2xlSW5pdERhdGEgfCBudWxsIHtcbiAgICBpZiAoIWluaXRQYXJhbXMgfHwgIWNoZWNrRGV2aWNlRGF0YS5iYXNlNjRjaGVja291dERhdGEpIHJldHVybiBudWxsO1xuXG4gICAgdGhpcy5pbml0UGFyYW1zID0gaW5pdFBhcmFtcztcbiAgICB0aGlzLmNoZWNrb3V0ID1cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmdldERlY29kZWRDaGVja291dDxHb29nbGVQYXlDaGVja291dD4oXG4gICAgICAgIGNoZWNrRGV2aWNlRGF0YS5iYXNlNjRjaGVja291dERhdGFcbiAgICAgICk7XG5cbiAgICBpZiAoIXRoaXMuY2hlY2tvdXQpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgY2hlY2tvdXREYXRhID0gdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzO1xuICAgIGNvbnN0IHBheW1lbnREYXRhUmVxdWVzdCA9IEpTT04ucGFyc2UoY2hlY2tvdXREYXRhLnBheW1lbnREYXRhUmVxdWVzdCk7XG4gICAgY29uc3QgaXNSZWFkeVRvUGF5UmVxdWVzdCA9IEpTT04ucGFyc2UoY2hlY2tvdXREYXRhLmlzUmVhZHlUb1BheVJlcXVlc3QpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBHb29nbGVJbml0RGF0YSA9IHsgcGF5bWVudERhdGFSZXF1ZXN0LCBpc1JlYWR5VG9QYXlSZXF1ZXN0IH07XG5cbiAgICBpZiAoY2hlY2tvdXREYXRhLmFtZXhDYXJkTm90aWZpY2F0aW9uKSB7XG4gICAgICByZXN1bHQuYW1leENhcmROb3RpZmljYXRpb24gPSBKU09OLnBhcnNlKFxuICAgICAgICBjaGVja291dERhdGEuYW1leENhcmROb3RpZmljYXRpb25cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXltZW50UmVxdWVzdCgpOiBHb29nbGVQYXlQYXltZW50UmVxdWVzdCB8IG51bGwge1xuICAgIGlmICghdGhpcy5jaGVja291dCkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBjaGVja291dERhdGEgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHM7XG4gICAgY29uc3QgcGF5bWVudERhdGFSZXF1ZXN0ID0gSlNPTi5wYXJzZShcbiAgICAgIGNoZWNrb3V0RGF0YS5wYXltZW50RGF0YVJlcXVlc3RcbiAgICApIGFzIEdvb2dsZVBheVBheW1lbnRSZXF1ZXN0O1xuXG4gICAgcGF5bWVudERhdGFSZXF1ZXN0LnRyYW5zYWN0aW9uSW5mbyA9IHtcbiAgICAgIGN1cnJlbmN5Q29kZTogY2hlY2tvdXREYXRhLmN1cnJlbmN5LFxuICAgICAgdG90YWxQcmljZVN0YXR1czogJ0ZJTkFMJyxcbiAgICAgIHRvdGFsUHJpY2U6IGNoZWNrb3V0RGF0YS5zdW0/LnRvU3RyaW5nKCksXG4gICAgICBjb3VudHJ5Q29kZTogdGhpcy5pbml0UGFyYW1zLmNvdW50cnkudG9VcHBlckNhc2UoKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHBheW1lbnREYXRhUmVxdWVzdDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxvd2VkUGF5bWVudE1ldGhvZHMoKTogQWxsb3dlZFBheW1lbnRNZXRob2RbXSB7XG4gICAgaWYgKCF0aGlzLmNoZWNrb3V0KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBwYXltZW50RGF0YVJlcXVlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgdGhpcy5jaGVja291dC5yZXF1ZXN0LmZvcm0uZmllbGRzLnBheW1lbnREYXRhUmVxdWVzdFxuICAgICkgYXMgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3Q7XG5cbiAgICByZXR1cm4gcGF5bWVudERhdGFSZXF1ZXN0LmFsbG93ZWRQYXltZW50TWV0aG9kcztcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTdWNjZXNzZnVsUGF5bWVudChyZXNwb25zZTogUGF5bWVudERhdGFSZXNwb25zZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGVja291dCkgcmV0dXJuO1xuXG4gICAgbGV0IHJldHVyblVybCA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcy5yZXR1cm5TdWNjZXNzVXJsO1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuY2hlY2tvdXQucmVxdWVzdC5mb3JtLmZpZWxkcztcbiAgICByZXR1cm5VcmwgKz0gYCZjcGZfbnVtYmVyPSR7ZGF0YS5jcGZfbnVtYmVyfSZkZXNjcmlwdG9yPSR7XG4gICAgICBkYXRhLmRlc2NyaXB0b3JcbiAgICB9JnBheW1lbnREYXRhPSR7SlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpfWA7XG5cbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5lbWl0U3RhdHVzVXJsKHJldHVyblVybCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRmFpbGVkUGF5bWVudChlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaGVja291dCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IChlcnJvciBhcyB7IHN0YXR1c0NvZGU/OiBzdHJpbmcgfSk/LnN0YXR1c0NvZGU7XG4gICAgY29uc3QgaXNTdGF0dXNDYW5jZWxlZCA9IHN0YXR1c0NvZGUgJiYgdGhpcy5pc0NhbmNlbGxlZFN0YXR1cyhzdGF0dXNDb2RlKTtcblxuICAgIGlmIChpc1N0YXR1c0NhbmNlbGVkKSByZXR1cm47XG5cbiAgICBjb25zdCByZXR1cm5VcmwgPSB0aGlzLmNoZWNrb3V0LnJlcXVlc3QuZm9ybS5maWVsZHMucmV0dXJuRmFpbFVybDtcbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5lbWl0U3RhdHVzVXJsKHJldHVyblVybCk7XG4gIH1cblxuICBwcml2YXRlIGlzQ2FuY2VsbGVkU3RhdHVzKHN0YXR1c0NvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGF0dXNDb2RlLnRvTG93ZXJDYXNlKCkgPT09ICdjYW5jZWxlZCc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { FieldNames } from '../../../payment/field-names.enum';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../payment/finance-details/summary/summary-finance-details-adapter.service";
|
|
5
|
+
export class GooglePayInstantPaymentService {
|
|
6
|
+
constructor(summaryFinanceDetailsAdapterService) {
|
|
7
|
+
this.summaryFinanceDetailsAdapterService = summaryFinanceDetailsAdapterService;
|
|
8
|
+
this.googleInitData = null;
|
|
9
|
+
}
|
|
10
|
+
preparePayment({ initParams, checkDeviceData, }) {
|
|
11
|
+
if (!initParams)
|
|
12
|
+
return null;
|
|
13
|
+
this.initParams = initParams;
|
|
14
|
+
this.googleInitData = this.extractGoogleInitData(initParams.fields);
|
|
15
|
+
if (!this.googleInitData)
|
|
16
|
+
return null;
|
|
17
|
+
const displayItems = checkDeviceData.summary
|
|
18
|
+
? this.getItemsTaxes(checkDeviceData.summary)
|
|
19
|
+
: [];
|
|
20
|
+
this.googleInitData.paymentDataRequest = {
|
|
21
|
+
...this.googleInitData.paymentDataRequest,
|
|
22
|
+
transactionInfo: {
|
|
23
|
+
...this.googleInitData.paymentDataRequest.transactionInfo,
|
|
24
|
+
totalPriceStatus: 'ESTIMATED',
|
|
25
|
+
totalPrice: this.googleInitData.paymentDataRequest.transactionInfo.totalPrice?.toString(),
|
|
26
|
+
countryCode: initParams.country.toUpperCase() ??
|
|
27
|
+
this.googleInitData.paymentDataRequest.transactionInfo.countryCode?.toUpperCase(),
|
|
28
|
+
totalPriceLabel: this.googleInitData.paymentDataRequest.transactionInfo
|
|
29
|
+
.totalPriceLabel ?? 'Total',
|
|
30
|
+
displayItems,
|
|
31
|
+
},
|
|
32
|
+
shippingAddressRequired: true,
|
|
33
|
+
callbackIntents: ['SHIPPING_ADDRESS', 'PAYMENT_AUTHORIZATION'],
|
|
34
|
+
};
|
|
35
|
+
return this.googleInitData;
|
|
36
|
+
}
|
|
37
|
+
getPaymentRequest() {
|
|
38
|
+
if (!this.googleInitData)
|
|
39
|
+
return null;
|
|
40
|
+
return {
|
|
41
|
+
...this.googleInitData.paymentDataRequest,
|
|
42
|
+
transactionInfo: {
|
|
43
|
+
...this.googleInitData.paymentDataRequest.transactionInfo,
|
|
44
|
+
totalPriceStatus: 'ESTIMATED',
|
|
45
|
+
totalPrice: this.googleInitData.paymentDataRequest.transactionInfo.totalPrice?.toString(),
|
|
46
|
+
countryCode: this.initParams.country.toUpperCase() ??
|
|
47
|
+
this.googleInitData.paymentDataRequest.transactionInfo.countryCode?.toUpperCase(),
|
|
48
|
+
},
|
|
49
|
+
shippingAddressRequired: true,
|
|
50
|
+
callbackIntents: ['SHIPPING_ADDRESS', 'PAYMENT_AUTHORIZATION'],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
getAllowedPaymentMethods() {
|
|
54
|
+
if (!this.googleInitData)
|
|
55
|
+
return [];
|
|
56
|
+
return this.googleInitData.paymentDataRequest.allowedPaymentMethods;
|
|
57
|
+
}
|
|
58
|
+
extractGoogleInitData(fields) {
|
|
59
|
+
try {
|
|
60
|
+
const googlePayInitData = fields.filter((field) => field.name === FieldNames.googlePayInitData)[0]?.value;
|
|
61
|
+
const data = JSON.parse(googlePayInitData ?? null);
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
getItemsTaxes(summary) {
|
|
69
|
+
const financeResponse = this.summaryFinanceDetailsAdapterService.getFinanceDetails(summary);
|
|
70
|
+
const newCartPricing = financeResponse.cartSummary;
|
|
71
|
+
if (!newCartPricing.total?.money?.amount || !financeResponse.finance) {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
const newPrice = {
|
|
75
|
+
total: this.getTotalAmount(financeResponse.finance),
|
|
76
|
+
subtotalDetails: newCartPricing.subtotalDetails,
|
|
77
|
+
subtotalPayment: newCartPricing.subtotalPayment,
|
|
78
|
+
totalDetails: newCartPricing.totalDetails,
|
|
79
|
+
};
|
|
80
|
+
const displayItems = [];
|
|
81
|
+
if (newPrice.subtotalPayment?.money?.amount) {
|
|
82
|
+
displayItems.push({
|
|
83
|
+
label: newPrice.subtotalPayment.title || 'Subtotal',
|
|
84
|
+
amount: newPrice.subtotalPayment.money?.amount.toString(),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
let paymentsDetails = [];
|
|
88
|
+
if (newPrice.subtotalDetails?.length) {
|
|
89
|
+
paymentsDetails = newPrice.subtotalDetails;
|
|
90
|
+
}
|
|
91
|
+
if (newPrice.totalDetails?.length) {
|
|
92
|
+
paymentsDetails = paymentsDetails.concat(newPrice.totalDetails);
|
|
93
|
+
}
|
|
94
|
+
paymentsDetails.forEach((cartItem) => {
|
|
95
|
+
if (!cartItem.title || !cartItem.money?.amount) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
displayItems.push({
|
|
99
|
+
label: cartItem.title,
|
|
100
|
+
amount: cartItem.money.amount.toString(),
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
return displayItems.map((item) => ({
|
|
104
|
+
label: item.label ?? '',
|
|
105
|
+
type: 'TAX',
|
|
106
|
+
price: item.amount,
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
getTotalAmount(finance) {
|
|
110
|
+
return finance?.grand_total?.amount ?? finance?.total?.amount;
|
|
111
|
+
}
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayInstantPaymentService, deps: [{ token: i1.SummaryFinanceDetailsAdapterService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
113
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayInstantPaymentService, providedIn: 'root' }); }
|
|
114
|
+
}
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GooglePayInstantPaymentService, decorators: [{
|
|
116
|
+
type: Injectable,
|
|
117
|
+
args: [{
|
|
118
|
+
providedIn: 'root',
|
|
119
|
+
}]
|
|
120
|
+
}], ctorParameters: () => [{ type: i1.SummaryFinanceDetailsAdapterService }] });
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS1pbnN0YW50LXBheW1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BheW1lbnQtY2xpZW50LWNvcmUvc3JjL2xpYi9jb3JlL3Nkay1wYXltZW50LXN5c3RlbXMvZ29vZ2xlLXBheS9wYXltZW50L2dvb2dsZS1wYXktaW5zdGFudC1wYXltZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7OztBQXNCL0QsTUFBTSxPQUFPLDhCQUE4QjtJQUl6QyxZQUNtQixtQ0FBd0U7UUFBeEUsd0NBQW1DLEdBQW5DLG1DQUFtQyxDQUFxQztRQUhuRixtQkFBYyxHQUEwQixJQUFJLENBQUM7SUFJbEQsQ0FBQztJQUVHLGNBQWMsQ0FBQyxFQUNwQixVQUFVLEVBQ1YsZUFBZSxHQUNNO1FBQ3JCLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFFN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBRXRDLE1BQU0sWUFBWSxHQUFpQixlQUFlLENBQUMsT0FBTztZQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixHQUFHO1lBQ3ZDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7WUFDekMsZUFBZSxFQUFFO2dCQUNmLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO2dCQUN6RCxnQkFBZ0IsRUFBRSxXQUFXO2dCQUM3QixVQUFVLEVBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtnQkFDL0UsV0FBVyxFQUNULFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFO29CQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFO2dCQUNuRixlQUFlLEVBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO3FCQUNuRCxlQUFlLElBQUksT0FBTztnQkFDL0IsWUFBWTthQUNiO1lBQ0QsdUJBQXVCLEVBQUUsSUFBSTtZQUM3QixlQUFlLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSx1QkFBdUIsQ0FBQztTQUMvRCxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFdEMsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0I7WUFDekMsZUFBZSxFQUFFO2dCQUNmLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO2dCQUN6RCxnQkFBZ0IsRUFBRSxXQUFXO2dCQUM3QixVQUFVLEVBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRTtnQkFDL0UsV0FBVyxFQUNULElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtvQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRTthQUNwRjtZQUNELHVCQUF1QixFQUFFLElBQUk7WUFDN0IsZUFBZSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsdUJBQXVCLENBQUM7U0FDL0QsQ0FBQztJQUNKLENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDO0lBQ3RFLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFlO1FBQzNDLElBQUksQ0FBQztZQUNILE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLGlCQUFpQixDQUN2RCxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUNaLE1BQU0sSUFBSSxHQUEwQixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxDQUFDO1lBQzFFLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQW1CO1FBQ3ZDLE1BQU0sZUFBZSxHQUNuQixJQUFJLENBQUMsbUNBQW1DLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEUsTUFBTSxjQUFjLEdBQUcsZUFBZSxDQUFDLFdBQVcsQ0FBQztRQUVuRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JFLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFpQjtZQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDO1lBQ25ELGVBQWUsRUFBRSxjQUFjLENBQUMsZUFBZTtZQUMvQyxlQUFlLEVBQUUsY0FBYyxDQUFDLGVBQWU7WUFDL0MsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZO1NBQzFDLENBQUM7UUFFRixNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7UUFFeEIsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUM1QyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNoQixLQUFLLEVBQUUsUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLElBQUksVUFBVTtnQkFDbkQsTUFBTSxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7YUFDMUQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksZUFBZSxHQUFlLEVBQUUsQ0FBQztRQUVyQyxJQUFJLFFBQVEsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDckMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDN0MsQ0FBQztRQUVELElBQUksUUFBUSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxlQUFlLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQy9DLE9BQU87WUFDVCxDQUFDO1lBRUQsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDaEIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixNQUFNLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2FBQ3pDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdkIsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQW1CO1FBQ3hDLE9BQU8sT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDaEUsQ0FBQzs4R0F6SVUsOEJBQThCO2tIQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs7MkZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpZWxkTmFtZXMgfSBmcm9tICcuLi8uLi8uLi9wYXltZW50L2ZpZWxkLW5hbWVzLmVudW0nO1xuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi8uLi8uLi9wYXltZW50L2ZpZWxkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDYXJ0TGluZSB9IGZyb20gJy4uLy4uLy4uL3BheW1lbnQvZmluYW5jZS1kZXRhaWxzL2NhcnQtbGluZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wYXltZW50L2ZpbmFuY2UtZGV0YWlscy9zdW1tYXJ5L3N1bW1hcnktZmluYW5jZS1kZXRhaWxzLWFkYXB0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBYcHNGaW5hbmNlIH0gZnJvbSAnLi4vLi4vLi4vcGF5bWVudC94cHMtZmluYW5jZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgWHBzU3VtbWFyeSB9IGZyb20gJy4uLy4uLy4uL3BheW1lbnQveHBzLXN1bW1hcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdvb2dsZVBheUluaXRQYXJhbXMgfSBmcm9tICcuLi9nb29nbGUtcGF5LWluaXQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBBbGxvd2VkUGF5bWVudE1ldGhvZCxcbiAgRGlzcGxheUl0ZW1zLFxuICBHb29nbGVJbml0RGF0YSxcbiAgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QsXG59IGZyb20gJy4uL2dvb2dsZS1wYXktbGlicmFyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXBkYXRlZFByaWNlIH0gZnJvbSAnLi4vdXBkYXRlZC1wcmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgR29vZ2xlUGF5UGF5bWVudFNlcnZpY2UsXG4gIFByZXBhcmVQYXltZW50UGFyYW1zLFxufSBmcm9tICcuL2dvb2dsZS1wYXktcGF5bWVudC1zZXJ2aWNlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHb29nbGVQYXlJbnN0YW50UGF5bWVudFNlcnZpY2UgaW1wbGVtZW50cyBHb29nbGVQYXlQYXltZW50U2VydmljZSB7XG4gIHByaXZhdGUgaW5pdFBhcmFtcyE6IEdvb2dsZVBheUluaXRQYXJhbXM7XG4gIHByaXZhdGUgZ29vZ2xlSW5pdERhdGE6IEdvb2dsZUluaXREYXRhIHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3VtbWFyeUZpbmFuY2VEZXRhaWxzQWRhcHRlclNlcnZpY2U6IFN1bW1hcnlGaW5hbmNlRGV0YWlsc0FkYXB0ZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgcHJlcGFyZVBheW1lbnQoe1xuICAgIGluaXRQYXJhbXMsXG4gICAgY2hlY2tEZXZpY2VEYXRhLFxuICB9OiBQcmVwYXJlUGF5bWVudFBhcmFtcyk6IEdvb2dsZUluaXREYXRhIHwgbnVsbCB7XG4gICAgaWYgKCFpbml0UGFyYW1zKSByZXR1cm4gbnVsbDtcbiAgICB0aGlzLmluaXRQYXJhbXMgPSBpbml0UGFyYW1zO1xuXG4gICAgdGhpcy5nb29nbGVJbml0RGF0YSA9IHRoaXMuZXh0cmFjdEdvb2dsZUluaXREYXRhKGluaXRQYXJhbXMuZmllbGRzKTtcblxuICAgIGlmICghdGhpcy5nb29nbGVJbml0RGF0YSkgcmV0dXJuIG51bGw7XG5cbiAgICBjb25zdCBkaXNwbGF5SXRlbXM6IERpc3BsYXlJdGVtcyA9IGNoZWNrRGV2aWNlRGF0YS5zdW1tYXJ5XG4gICAgICA/IHRoaXMuZ2V0SXRlbXNUYXhlcyhjaGVja0RldmljZURhdGEuc3VtbWFyeSlcbiAgICAgIDogW107XG5cbiAgICB0aGlzLmdvb2dsZUluaXREYXRhLnBheW1lbnREYXRhUmVxdWVzdCA9IHtcbiAgICAgIC4uLnRoaXMuZ29vZ2xlSW5pdERhdGEucGF5bWVudERhdGFSZXF1ZXN0LFxuICAgICAgdHJhbnNhY3Rpb25JbmZvOiB7XG4gICAgICAgIC4uLnRoaXMuZ29vZ2xlSW5pdERhdGEucGF5bWVudERhdGFSZXF1ZXN0LnRyYW5zYWN0aW9uSW5mbyxcbiAgICAgICAgdG90YWxQcmljZVN0YXR1czogJ0VTVElNQVRFRCcsXG4gICAgICAgIHRvdGFsUHJpY2U6XG4gICAgICAgICAgdGhpcy5nb29nbGVJbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QudHJhbnNhY3Rpb25JbmZvLnRvdGFsUHJpY2U/LnRvU3RyaW5nKCksXG4gICAgICAgIGNvdW50cnlDb2RlOlxuICAgICAgICAgIGluaXRQYXJhbXMuY291bnRyeS50b1VwcGVyQ2FzZSgpID8/XG4gICAgICAgICAgdGhpcy5nb29nbGVJbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QudHJhbnNhY3Rpb25JbmZvLmNvdW50cnlDb2RlPy50b1VwcGVyQ2FzZSgpLFxuICAgICAgICB0b3RhbFByaWNlTGFiZWw6XG4gICAgICAgICAgdGhpcy5nb29nbGVJbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QudHJhbnNhY3Rpb25JbmZvXG4gICAgICAgICAgICAudG90YWxQcmljZUxhYmVsID8/ICdUb3RhbCcsXG4gICAgICAgIGRpc3BsYXlJdGVtcyxcbiAgICAgIH0sXG4gICAgICBzaGlwcGluZ0FkZHJlc3NSZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNhbGxiYWNrSW50ZW50czogWydTSElQUElOR19BRERSRVNTJywgJ1BBWU1FTlRfQVVUSE9SSVpBVElPTiddLFxuICAgIH07XG5cbiAgICByZXR1cm4gdGhpcy5nb29nbGVJbml0RGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXltZW50UmVxdWVzdCgpOiBHb29nbGVQYXlQYXltZW50UmVxdWVzdCB8IG51bGwge1xuICAgIGlmICghdGhpcy5nb29nbGVJbml0RGF0YSkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nb29nbGVJbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QsXG4gICAgICB0cmFuc2FjdGlvbkluZm86IHtcbiAgICAgICAgLi4udGhpcy5nb29nbGVJbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QudHJhbnNhY3Rpb25JbmZvLFxuICAgICAgICB0b3RhbFByaWNlU3RhdHVzOiAnRVNUSU1BVEVEJyxcbiAgICAgICAgdG90YWxQcmljZTpcbiAgICAgICAgICB0aGlzLmdvb2dsZUluaXREYXRhLnBheW1lbnREYXRhUmVxdWVzdC50cmFuc2FjdGlvbkluZm8udG90YWxQcmljZT8udG9TdHJpbmcoKSxcbiAgICAgICAgY291bnRyeUNvZGU6XG4gICAgICAgICAgdGhpcy5pbml0UGFyYW1zLmNvdW50cnkudG9VcHBlckNhc2UoKSA/P1xuICAgICAgICAgIHRoaXMuZ29vZ2xlSW5pdERhdGEucGF5bWVudERhdGFSZXF1ZXN0LnRyYW5zYWN0aW9uSW5mby5jb3VudHJ5Q29kZT8udG9VcHBlckNhc2UoKSxcbiAgICAgIH0sXG4gICAgICBzaGlwcGluZ0FkZHJlc3NSZXF1aXJlZDogdHJ1ZSxcbiAgICAgIGNhbGxiYWNrSW50ZW50czogWydTSElQUElOR19BRERSRVNTJywgJ1BBWU1FTlRfQVVUSE9SSVpBVElPTiddLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0QWxsb3dlZFBheW1lbnRNZXRob2RzKCk6IEFsbG93ZWRQYXltZW50TWV0aG9kW10ge1xuICAgIGlmICghdGhpcy5nb29nbGVJbml0RGF0YSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLmdvb2dsZUluaXREYXRhLnBheW1lbnREYXRhUmVxdWVzdC5hbGxvd2VkUGF5bWVudE1ldGhvZHM7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RHb29nbGVJbml0RGF0YShmaWVsZHM6IEZpZWxkW10pOiBHb29nbGVJbml0RGF0YSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBnb29nbGVQYXlJbml0RGF0YSA9IGZpZWxkcy5maWx0ZXIoXG4gICAgICAgIChmaWVsZCkgPT4gZmllbGQubmFtZSA9PT0gRmllbGROYW1lcy5nb29nbGVQYXlJbml0RGF0YVxuICAgICAgKVswXT8udmFsdWU7XG4gICAgICBjb25zdCBkYXRhOiBHb29nbGVJbml0RGF0YSB8IG51bGwgPSBKU09OLnBhcnNlKGdvb2dsZVBheUluaXREYXRhID8/IG51bGwpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0SXRlbXNUYXhlcyhzdW1tYXJ5OiBYcHNTdW1tYXJ5KTogRGlzcGxheUl0ZW1zIHtcbiAgICBjb25zdCBmaW5hbmNlUmVzcG9uc2UgPVxuICAgICAgdGhpcy5zdW1tYXJ5RmluYW5jZURldGFpbHNBZGFwdGVyU2VydmljZS5nZXRGaW5hbmNlRGV0YWlscyhzdW1tYXJ5KTtcblxuICAgIGNvbnN0IG5ld0NhcnRQcmljaW5nID0gZmluYW5jZVJlc3BvbnNlLmNhcnRTdW1tYXJ5O1xuXG4gICAgaWYgKCFuZXdDYXJ0UHJpY2luZy50b3RhbD8ubW9uZXk/LmFtb3VudCB8fCAhZmluYW5jZVJlc3BvbnNlLmZpbmFuY2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQcmljZTogVXBkYXRlZFByaWNlID0ge1xuICAgICAgdG90YWw6IHRoaXMuZ2V0VG90YWxBbW91bnQoZmluYW5jZVJlc3BvbnNlLmZpbmFuY2UpLFxuICAgICAgc3VidG90YWxEZXRhaWxzOiBuZXdDYXJ0UHJpY2luZy5zdWJ0b3RhbERldGFpbHMsXG4gICAgICBzdWJ0b3RhbFBheW1lbnQ6IG5ld0NhcnRQcmljaW5nLnN1YnRvdGFsUGF5bWVudCxcbiAgICAgIHRvdGFsRGV0YWlsczogbmV3Q2FydFByaWNpbmcudG90YWxEZXRhaWxzLFxuICAgIH07XG5cbiAgICBjb25zdCBkaXNwbGF5SXRlbXMgPSBbXTtcblxuICAgIGlmIChuZXdQcmljZS5zdWJ0b3RhbFBheW1lbnQ/Lm1vbmV5Py5hbW91bnQpIHtcbiAgICAgIGRpc3BsYXlJdGVtcy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IG5ld1ByaWNlLnN1YnRvdGFsUGF5bWVudC50aXRsZSB8fCAnU3VidG90YWwnLFxuICAgICAgICBhbW91bnQ6IG5ld1ByaWNlLnN1YnRvdGFsUGF5bWVudC5tb25leT8uYW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBsZXQgcGF5bWVudHNEZXRhaWxzOiBDYXJ0TGluZVtdID0gW107XG5cbiAgICBpZiAobmV3UHJpY2Uuc3VidG90YWxEZXRhaWxzPy5sZW5ndGgpIHtcbiAgICAgIHBheW1lbnRzRGV0YWlscyA9IG5ld1ByaWNlLnN1YnRvdGFsRGV0YWlscztcbiAgICB9XG5cbiAgICBpZiAobmV3UHJpY2UudG90YWxEZXRhaWxzPy5sZW5ndGgpIHtcbiAgICAgIHBheW1lbnRzRGV0YWlscyA9IHBheW1lbnRzRGV0YWlscy5jb25jYXQobmV3UHJpY2UudG90YWxEZXRhaWxzKTtcbiAgICB9XG5cbiAgICBwYXltZW50c0RldGFpbHMuZm9yRWFjaCgoY2FydEl0ZW0pID0+IHtcbiAgICAgIGlmICghY2FydEl0ZW0udGl0bGUgfHwgIWNhcnRJdGVtLm1vbmV5Py5hbW91bnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkaXNwbGF5SXRlbXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiBjYXJ0SXRlbS50aXRsZSxcbiAgICAgICAgYW1vdW50OiBjYXJ0SXRlbS5tb25leS5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpc3BsYXlJdGVtcy5tYXAoKGl0ZW0pID0+ICh7XG4gICAgICBsYWJlbDogaXRlbS5sYWJlbCA/PyAnJyxcbiAgICAgIHR5cGU6ICdUQVgnLFxuICAgICAgcHJpY2U6IGl0ZW0uYW1vdW50LFxuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG90YWxBbW91bnQoZmluYW5jZTogWHBzRmluYW5jZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIGZpbmFuY2U/LmdyYW5kX3RvdGFsPy5hbW91bnQgPz8gZmluYW5jZT8udG90YWw/LmFtb3VudDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS1wYXltZW50LXNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9nb29nbGUtcGF5L3BheW1lbnQvZ29vZ2xlLXBheS1wYXltZW50LXNlcnZpY2UuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGVja1BheW1lbnREZXZpY2VEYXRhIH0gZnJvbSAnLi4vY2hlY2stcGF5bWVudC1kZXZpY2UtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR29vZ2xlUGF5SW5pdFBhcmFtcyB9IGZyb20gJy4uL2dvb2dsZS1wYXktaW5pdC1wYXJhbXMuaW50ZXJmYWNlJztcbmltcG9ydCB7XG4gIEFsbG93ZWRQYXltZW50TWV0aG9kLFxuICBHb29nbGVJbml0RGF0YSxcbiAgR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QsXG4gIFBheW1lbnREYXRhUmVzcG9uc2UsXG59IGZyb20gJy4uL2dvb2dsZS1wYXktbGlicmFyeS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXBhcmVQYXltZW50UGFyYW1zIHtcbiAgaW5pdFBhcmFtczogR29vZ2xlUGF5SW5pdFBhcmFtcztcbiAgY2hlY2tEZXZpY2VEYXRhOiBDaGVja1BheW1lbnREZXZpY2VEYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdvb2dsZVBheVBheW1lbnRTZXJ2aWNlIHtcbiAgcHJlcGFyZVBheW1lbnQocGFyYW1zOiBQcmVwYXJlUGF5bWVudFBhcmFtcyk6IEdvb2dsZUluaXREYXRhIHwgbnVsbDtcbiAgZ2V0UGF5bWVudFJlcXVlc3QoKTogR29vZ2xlUGF5UGF5bWVudFJlcXVlc3QgfCBudWxsO1xuICBnZXRBbGxvd2VkUGF5bWVudE1ldGhvZHMoKTogQWxsb3dlZFBheW1lbnRNZXRob2RbXTtcbiAgaGFuZGxlU3VjY2Vzc2Z1bFBheW1lbnQ/KHJlc3BvbnNlOiBQYXltZW50RGF0YVJlc3BvbnNlKTogdm9pZDtcbiAgaGFuZGxlRmFpbGVkUGF5bWVudD8oZXJyb3I6IHVua25vd24pOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlZC1wcmljZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL2dvb2dsZS1wYXkvdXBkYXRlZC1wcmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhcnRMaW5lIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9maW5hbmNlLWRldGFpbHMvY2FydC1saW5lLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZFByaWNlIHtcbiAgdG90YWw6IG51bWJlcjtcbiAgc3VidG90YWxQYXltZW50PzogQ2FydExpbmUgfCBudWxsO1xuICBzdWJ0b3RhbERldGFpbHM/OiBDYXJ0TGluZVtdO1xuICB0b3RhbERldGFpbHM/OiBDYXJ0TGluZVtdO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXBheW1lbnQtc3lzdGVtcy1pbml0aWFsLWRhdGEuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGF5bWVudC1jbGllbnQtY29yZS9zcmMvbGliL2NvcmUvc2RrLXBheW1lbnQtc3lzdGVtcy9zZGstcGF5bWVudC1zeXN0ZW1zLWluaXRpYWwtZGF0YS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vcGF5bWVudC9maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU3VibWl0UmVzcG9uc2UgfSBmcm9tICcuLi9wYXltZW50L3N1Ym1pdC9yZXNwb25zZS9zdWJtaXQtcmVzcG9uc2UuY2xhc3MnO1xuaW1wb3J0IHsgWHBzU3VtbWFyeSB9IGZyb20gJy4uL3BheW1lbnQveHBzLXN1bW1hcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFhwc0Jvb2xlYW4gfSBmcm9tICcuLi94cHMtYm9vbGVhbi5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBTZGtQYXltZW50U3lzdGVtc0luaXRpYWxEYXRhIHtcbiAgc2FuZGJveDogWHBzQm9vbGVhbjtcbiAgY291bnRyeTogc3RyaW5nO1xuICBmaWVsZHM6IEZpZWxkW107XG4gIHN1bW1hcnk6IFhwc1N1bW1hcnkgfCBudWxsO1xuICBzdWJtaXRSZXNwb25zZTogU3VibWl0UmVzcG9uc2UgfCBudWxsO1xuICBkYXRhOiBzdHJpbmcgfCBudWxsO1xufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2RrLXBheW1lbnQtc3lzdGVtcy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wYXltZW50LWNsaWVudC1jb3JlL3NyYy9saWIvY29yZS9zZGstcGF5bWVudC1zeXN0ZW1zL3Nkay1wYXltZW50LXN5c3RlbXMuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZGtQYXltZW50U3lzdGVtc0luaXRpYWxEYXRhIH0gZnJvbSAnLi9zZGstcGF5bWVudC1zeXN0ZW1zLWluaXRpYWwtZGF0YS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNka1BheW1lbnRTeXN0ZW1zIHtcbiAgZ2V0SW5pdGlhbERhdGEoKTogUHJvbWlzZTxTZGtQYXltZW50U3lzdGVtc0luaXRpYWxEYXRhPjtcbn1cbiJdfQ==
|