@osovitny/anatoly 3.17.67 → 3.17.69
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/payments/PayPal/components/paypal.component.mjs +317 -0
- package/esm2022/lib/payments/PayPal/models/paypal-models.mjs +17 -0
- package/esm2022/lib/payments/PayPal/services/paypal-script.service.mjs +98 -0
- package/esm2022/lib/payments/index.mjs +22 -0
- package/esm2022/lib/payments/payments.module.mjs +54 -0
- package/esm2022/lib/payments/services/script.service.mjs +63 -0
- package/esm2022/public-api.mjs +5 -7
- package/fesm2022/osovitny-anatoly.mjs +550 -2
- package/fesm2022/osovitny-anatoly.mjs.map +1 -1
- package/lib/payments/PayPal/components/paypal.component.d.ts +50 -0
- package/lib/payments/PayPal/models/paypal-models.d.ts +309 -0
- package/lib/payments/PayPal/services/paypal-script.service.d.ts +14 -0
- package/lib/payments/index.d.ts +4 -0
- package/lib/payments/payments.module.d.ts +8 -0
- package/lib/payments/services/script.service.d.ts +11 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
14 Jun 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
|
|
17
|
+
import { Subject } from "rxjs";
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "../services/paypal-script.service";
|
|
20
|
+
const _c0 = ["payPalButtonContainer"];
|
|
21
|
+
export class PayPalComponent {
|
|
22
|
+
set payPalButtonContainer(content) {
|
|
23
|
+
this.payPalButtonContainerElem = content;
|
|
24
|
+
}
|
|
25
|
+
constructor(paypalScriptService, cdr, ngZone) {
|
|
26
|
+
this.paypalScriptService = paypalScriptService;
|
|
27
|
+
this.cdr = cdr;
|
|
28
|
+
this.ngZone = ngZone;
|
|
29
|
+
/**
|
|
30
|
+
* If enabled, paypal SDK script will be loaded. Useful if you want to have multiple PayPal components on the same page
|
|
31
|
+
* sharing base configuration. In such a case only a single component may register script.
|
|
32
|
+
*/
|
|
33
|
+
this.registerScript = true;
|
|
34
|
+
/**
|
|
35
|
+
* Emitted when paypal script is loaded
|
|
36
|
+
*/
|
|
37
|
+
this.scriptLoaded = new EventEmitter();
|
|
38
|
+
this.ngUnsubscribe = new Subject();
|
|
39
|
+
/**
|
|
40
|
+
* Flag that indicates if paypal should be initialized (required for handling script load events and availability of DOM element)
|
|
41
|
+
*/
|
|
42
|
+
this.initializePayPal = true;
|
|
43
|
+
}
|
|
44
|
+
ngOnChanges(changes) {
|
|
45
|
+
if (!this.payPalButtonContainerId) {
|
|
46
|
+
this.payPalButtonContainerId = this.generateElementId();
|
|
47
|
+
}
|
|
48
|
+
// first time config setup
|
|
49
|
+
const config = this.config;
|
|
50
|
+
//const name = 'PayPalConfig';
|
|
51
|
+
if (changes['config'].isFirstChange()) {
|
|
52
|
+
if (config && this.registerScript) {
|
|
53
|
+
this.initPayPalScript(config, (payPal) => {
|
|
54
|
+
// store reference to paypal global script
|
|
55
|
+
this.payPal = payPal;
|
|
56
|
+
this.doPayPalCheck();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// changes to config
|
|
61
|
+
if (!changes['config'].isFirstChange()) {
|
|
62
|
+
this.reinitialize(config);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
ngOnDestroy() {
|
|
66
|
+
this.paypalScriptService.destroyPayPalScript();
|
|
67
|
+
this.ngUnsubscribe.next();
|
|
68
|
+
this.ngUnsubscribe.complete();
|
|
69
|
+
}
|
|
70
|
+
ngAfterViewInit() {
|
|
71
|
+
this.doPayPalCheck();
|
|
72
|
+
}
|
|
73
|
+
customInit(payPal) {
|
|
74
|
+
this.payPal = payPal;
|
|
75
|
+
this.doPayPalCheck();
|
|
76
|
+
}
|
|
77
|
+
reinitialize(config) {
|
|
78
|
+
this.config = config;
|
|
79
|
+
this.payPal = undefined;
|
|
80
|
+
this.paypalScriptService.destroyPayPalScript();
|
|
81
|
+
this.payPalButtonContainerId = this.generateElementId();
|
|
82
|
+
this.initializePayPal = true;
|
|
83
|
+
if (this.payPalButtonContainerElem) {
|
|
84
|
+
try {
|
|
85
|
+
while (this.payPalButtonContainerElem.nativeElement.firstChild) {
|
|
86
|
+
this.payPalButtonContainerElem.nativeElement.removeChild(this.payPalButtonContainerElem.nativeElement.firstChild);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error(error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
this.cdr.detectChanges();
|
|
94
|
+
if (this.config) {
|
|
95
|
+
if (!this.payPal) {
|
|
96
|
+
this.initPayPalScript(this.config, (payPal) => {
|
|
97
|
+
// store reference to paypal global script
|
|
98
|
+
this.payPal = payPal;
|
|
99
|
+
this.doPayPalCheck();
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
this.doPayPalCheck();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
doPayPalCheck() {
|
|
108
|
+
if (this.initializePayPal &&
|
|
109
|
+
this.config &&
|
|
110
|
+
this.payPal &&
|
|
111
|
+
this.payPalButtonContainerElem) {
|
|
112
|
+
// make sure that id is also set
|
|
113
|
+
if (this.payPalButtonContainerElem.nativeElement.id) {
|
|
114
|
+
this.initializePayPal = false;
|
|
115
|
+
this.initPayPal(this.config, this.payPal);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
initPayPalScript(config, initPayPal) {
|
|
120
|
+
this.paypalScriptService.registerPayPalScript({
|
|
121
|
+
clientId: config.clientId,
|
|
122
|
+
locale: config.advanced?.locale,
|
|
123
|
+
commit: config.advanced && config.advanced.commit
|
|
124
|
+
? config.advanced.commit
|
|
125
|
+
: undefined,
|
|
126
|
+
currency: config.currency,
|
|
127
|
+
vault: config.vault,
|
|
128
|
+
intent: config.intent,
|
|
129
|
+
funding: config.fundingSource != undefined || config.fundingSource != null ? true : false,
|
|
130
|
+
extraParams: config.advanced && config.advanced.extraQueryParams
|
|
131
|
+
? config.advanced.extraQueryParams
|
|
132
|
+
: [],
|
|
133
|
+
}, (paypal) => {
|
|
134
|
+
this.scriptLoaded.next(paypal);
|
|
135
|
+
initPayPal(paypal);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
generateElementId() {
|
|
139
|
+
return `ngx-captcha-id-${this.generateGuid()}`;
|
|
140
|
+
}
|
|
141
|
+
initPayPal(config, paypal) {
|
|
142
|
+
// Running outside angular zone prevents infinite ngDoCheck lifecycle calls
|
|
143
|
+
this.ngZone.runOutsideAngular(() => {
|
|
144
|
+
// https://developer.paypal.com/docs/checkout/integrate/#2-add-the-paypal-script-to-your-web-page
|
|
145
|
+
const createOrder = (data, actions) => {
|
|
146
|
+
return this.ngZone.run(() => {
|
|
147
|
+
if (config.createOrderOnClient && config.createOrderOnServer) {
|
|
148
|
+
throw Error(`Both 'createOrderOnClient' and 'createOrderOnServer' are defined.
|
|
149
|
+
Please choose one or the other.`);
|
|
150
|
+
}
|
|
151
|
+
if (!config.createOrderOnClient && !config.createOrderOnServer) {
|
|
152
|
+
throw Error(`Neither 'createOrderOnClient' or 'createOrderOnServer' are defined.
|
|
153
|
+
Please define one of these to create order.`);
|
|
154
|
+
}
|
|
155
|
+
if (config.createOrderOnClient) {
|
|
156
|
+
return actions.order.create(config.createOrderOnClient(data));
|
|
157
|
+
}
|
|
158
|
+
if (config.createOrderOnServer) {
|
|
159
|
+
return config.createOrderOnServer(data);
|
|
160
|
+
}
|
|
161
|
+
throw Error(`Invalid state for 'createOrder'.`);
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
const createSubscription = (data, actions) => {
|
|
165
|
+
return this.ngZone.run(() => {
|
|
166
|
+
if (config.createSubscriptionOnClient) {
|
|
167
|
+
return actions.subscription.create(config.createSubscriptionOnClient(data));
|
|
168
|
+
}
|
|
169
|
+
return;
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
const onShippingChange = (data, actions) => {
|
|
173
|
+
return this.ngZone.run(() => {
|
|
174
|
+
if (config.onShippingChange) {
|
|
175
|
+
return config.onShippingChange(data, actions);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
const buttonsConfig = {
|
|
180
|
+
style: config.style,
|
|
181
|
+
fundingSource: undefined,
|
|
182
|
+
onApprove: (data, actions) => {
|
|
183
|
+
return this.ngZone.run(() => {
|
|
184
|
+
if (config.onApprove) {
|
|
185
|
+
config.onApprove(data, actions);
|
|
186
|
+
}
|
|
187
|
+
// capture on server
|
|
188
|
+
if (config.authorizeOnServer) {
|
|
189
|
+
return config.authorizeOnServer(data, actions);
|
|
190
|
+
}
|
|
191
|
+
// capture on client
|
|
192
|
+
const onClientAuthorization = config.onClientAuthorization;
|
|
193
|
+
if (onClientAuthorization) {
|
|
194
|
+
actions.order
|
|
195
|
+
.capture()
|
|
196
|
+
.then((details) => {
|
|
197
|
+
this.ngZone.run(() => {
|
|
198
|
+
onClientAuthorization(details);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
},
|
|
204
|
+
onError: (error) => {
|
|
205
|
+
this.ngZone.run(() => {
|
|
206
|
+
if (config.onError) {
|
|
207
|
+
config.onError(error);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
},
|
|
211
|
+
onCancel: (data, actions) => {
|
|
212
|
+
this.ngZone.run(() => {
|
|
213
|
+
if (config.onCancel) {
|
|
214
|
+
config.onCancel(data, actions);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
},
|
|
218
|
+
onClick: (data, actions) => {
|
|
219
|
+
this.ngZone.run(() => {
|
|
220
|
+
if (config.onClick) {
|
|
221
|
+
config.onClick(data, actions);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
},
|
|
225
|
+
onInit: (data, actions) => {
|
|
226
|
+
this.ngZone.run(() => {
|
|
227
|
+
if (config.onInit) {
|
|
228
|
+
config.onInit(data, actions);
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
},
|
|
232
|
+
// Add the functions if they've been created in the config object
|
|
233
|
+
// The API only allows one of the two to be set
|
|
234
|
+
...((config.createOrderOnClient || config.createOrderOnServer) && {
|
|
235
|
+
createOrder,
|
|
236
|
+
}),
|
|
237
|
+
...(config.createSubscriptionOnClient && { createSubscription }),
|
|
238
|
+
// The onShippingChange callback cannot be used with subscriptions
|
|
239
|
+
// so we only add it if it is set
|
|
240
|
+
...(config.onShippingChange && { onShippingChange }),
|
|
241
|
+
};
|
|
242
|
+
let fundSource = undefined;
|
|
243
|
+
switch (config.fundingSource) {
|
|
244
|
+
case "PAYPAL":
|
|
245
|
+
fundSource = paypal.FUNDING.PAYPAL;
|
|
246
|
+
break;
|
|
247
|
+
case "CARD":
|
|
248
|
+
fundSource = paypal.FUNDING.CARD;
|
|
249
|
+
break;
|
|
250
|
+
case "PAYLATER":
|
|
251
|
+
fundSource = paypal.FUNDING.PAYLATER;
|
|
252
|
+
break;
|
|
253
|
+
case "CREDIT":
|
|
254
|
+
fundSource = paypal.FUNDING.CREDIT;
|
|
255
|
+
break;
|
|
256
|
+
case "VENMO":
|
|
257
|
+
fundSource = paypal.FUNDING.VENMO;
|
|
258
|
+
break;
|
|
259
|
+
default:
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
if (fundSource != undefined) {
|
|
263
|
+
buttonsConfig.fundingSource = fundSource;
|
|
264
|
+
if (config.fundingSource !== "PAYPAL")
|
|
265
|
+
delete buttonsConfig.style?.color;
|
|
266
|
+
}
|
|
267
|
+
paypal.Buttons(buttonsConfig).render(`#${this.payPalButtonContainerId}`);
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
generateGuid() {
|
|
271
|
+
let d = new Date().getTime(), d2 = (performance && performance.now && performance.now() * 1000) || 0;
|
|
272
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
273
|
+
let r = Math.random() * 16;
|
|
274
|
+
if (d > 0) {
|
|
275
|
+
r = (d + r) % 16 | 0;
|
|
276
|
+
d = Math.floor(d / 16);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
r = (d2 + r) % 16 | 0;
|
|
280
|
+
d2 = Math.floor(d2 / 16);
|
|
281
|
+
}
|
|
282
|
+
return (c == "x" ? r : (r & 0x7) | 0x8).toString(16);
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
static { this.ɵfac = function PayPalComponent_Factory(t) { return new (t || PayPalComponent)(i0.ɵɵdirectiveInject(i1.PayPalScriptService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone)); }; }
|
|
286
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PayPalComponent, selectors: [["anatoly-paypal"]], viewQuery: function PayPalComponent_Query(rf, ctx) { if (rf & 1) {
|
|
287
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
288
|
+
} if (rf & 2) {
|
|
289
|
+
let _t;
|
|
290
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.payPalButtonContainer = _t.first);
|
|
291
|
+
} }, inputs: { config: "config", registerScript: "registerScript" }, outputs: { scriptLoaded: "scriptLoaded" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 1, consts: [[3, "id"], ["payPalButtonContainer", ""]], template: function PayPalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
292
|
+
i0.ɵɵelement(0, "div", 0, 1);
|
|
293
|
+
} if (rf & 2) {
|
|
294
|
+
i0.ɵɵproperty("id", ctx.payPalButtonContainerId);
|
|
295
|
+
} }, encapsulation: 2, changeDetection: 0 }); }
|
|
296
|
+
}
|
|
297
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PayPalComponent, [{
|
|
298
|
+
type: Component,
|
|
299
|
+
args: [{
|
|
300
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
301
|
+
selector: "anatoly-paypal",
|
|
302
|
+
template: `
|
|
303
|
+
<div #payPalButtonContainer [id]="payPalButtonContainerId"></div>
|
|
304
|
+
`,
|
|
305
|
+
}]
|
|
306
|
+
}], () => [{ type: i1.PayPalScriptService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }], { config: [{
|
|
307
|
+
type: Input
|
|
308
|
+
}], registerScript: [{
|
|
309
|
+
type: Input
|
|
310
|
+
}], scriptLoaded: [{
|
|
311
|
+
type: Output
|
|
312
|
+
}], payPalButtonContainer: [{
|
|
313
|
+
type: ViewChild,
|
|
314
|
+
args: ["payPalButtonContainer", { static: false }]
|
|
315
|
+
}] }); })();
|
|
316
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PayPalComponent, { className: "PayPalComponent", filePath: "lib\\payments\\PayPal\\components\\paypal.component.ts", lineNumber: 58 }); })();
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9wYXltZW50cy9QYXlQYWwvY29tcG9uZW50cy9wYXlwYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztFQWNFO0FBRUYsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUEwQi9CLE1BQU0sT0FBTyxlQUFlO0lBeUIxQixJQUNJLHFCQUFxQixDQUFDLE9BQW1CO1FBQzNDLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxPQUFPLENBQUM7SUFDM0MsQ0FBQztJQVlELFlBQ1UsbUJBQXdDLEVBQ3hDLEdBQXNCLEVBQ3RCLE1BQWM7UUFGZCx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBQ3hDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFyQ3hCOzs7V0FHRztRQUNNLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBRXhDOztXQUVHO1FBQ08saUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBT2hDLGtCQUFhLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFRcEU7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7SUFXekMsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzFELENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsTUFB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Q0FBQyxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO2dGQTNVVSxlQUFlO29FQUFmLGVBQWU7Ozs7OztZQUh4Qiw0QkFBaUU7O1lBQXJDLGdEQUE4Qjs7O2lGQUdqRCxlQUFlO2NBUDNCLFNBQVM7ZUFBQztnQkFDVCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOztHQUVUO2FBQ0Y7eUdBS1UsTUFBTTtrQkFBZCxLQUFLO1lBTUcsY0FBYztrQkFBdEIsS0FBSztZQUtJLFlBQVk7a0JBQXJCLE1BQU07WUFXSCxxQkFBcUI7a0JBRHhCLFNBQVM7bUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztrRkF6QjFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTQgSnVuIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5pbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE91dHB1dCxcclxuICBTaW1wbGVDaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbmltcG9ydCB7XHJcbiAgSUNhbmNlbENhbGxiYWNrRGF0YSxcclxuICBJQ2xpZW50QXV0aG9yaXplQ2FsbGJhY2tEYXRhLFxyXG4gIElDcmVhdGVPcmRlckNhbGxiYWNrQWN0aW9ucyxcclxuICBJSW5pdENhbGxiYWNrRGF0YSxcclxuICBJT25BcHByb3ZlQ2FsbGJhY2tBY3Rpb25zLFxyXG4gIElPbkFwcHJvdmVDYWxsYmFja0RhdGEsXHJcbiAgSU9uQ2xpY2tDYWxsYmFja0FjdGlvbnMsXHJcbiAgSU9uSW5pdENhbGxiYWNrQWN0aW9ucyxcclxuICBJT25TaGlwcGluZ0NoYW5nZUFjdGlvbnMsXHJcbiAgSU9uU2hpcHBpbmdDaGFuZ2VEYXRhLFxyXG4gIElQYXlQYWxDb25maWcsXHJcbiAgSUNyZWF0ZVN1YnNjcmlwdGlvbkNhbGxiYWNrQWN0aW9ucyxcclxuICBJQ3JlYXRlU3Vic2NyaXB0aW9uQ2FsbGJhY2tEYXRhLFxyXG59IGZyb20gXCIuLi9tb2RlbHMvcGF5cGFsLW1vZGVsc1wiO1xyXG5pbXBvcnQgeyBQYXlQYWxTY3JpcHRTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3BheXBhbC1zY3JpcHQuc2VydmljZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc2VsZWN0b3I6IFwiYW5hdG9seS1wYXlwYWxcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiAjcGF5UGFsQnV0dG9uQ29udGFpbmVyIFtpZF09XCJwYXlQYWxCdXR0b25Db250YWluZXJJZFwiPjwvZGl2PlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXlQYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgLyoqXHJcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgcGF5cGFsLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGNvbmZpZz86IElQYXlQYWxDb25maWc7XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIGVuYWJsZWQsIHBheXBhbCBTREsgc2NyaXB0IHdpbGwgYmUgbG9hZGVkLiBVc2VmdWwgaWYgeW91IHdhbnQgdG8gaGF2ZSBtdWx0aXBsZSBQYXlQYWwgY29tcG9uZW50cyBvbiB0aGUgc2FtZSBwYWdlXHJcbiAgICogc2hhcmluZyBiYXNlIGNvbmZpZ3VyYXRpb24uIEluIHN1Y2ggYSBjYXNlIG9ubHkgYSBzaW5nbGUgY29tcG9uZW50IG1heSByZWdpc3RlciBzY3JpcHQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVnaXN0ZXJTY3JpcHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0dGVkIHdoZW4gcGF5cGFsIHNjcmlwdCBpcyBsb2FkZWRcclxuICAgKi9cclxuICBAT3V0cHV0KCkgc2NyaXB0TG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIElkIG9mIHRoZSBlbGVtZW50IHdoZXJlIFBheVBhbCBidXR0b24gd2lsbCBiZSByZW5kZXJlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBwYXlQYWxCdXR0b25Db250YWluZXJJZD86IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBwYXlQYWxCdXR0b25Db250YWluZXJFbGVtPzogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwicGF5UGFsQnV0dG9uQ29udGFpbmVyXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gIHNldCBwYXlQYWxCdXR0b25Db250YWluZXIoY29udGVudDogRWxlbWVudFJlZikge1xyXG4gICAgdGhpcy5wYXlQYWxCdXR0b25Db250YWluZXJFbGVtID0gY29udGVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZsYWcgdGhhdCBpbmRpY2F0ZXMgaWYgcGF5cGFsIHNob3VsZCBiZSBpbml0aWFsaXplZCAocmVxdWlyZWQgZm9yIGhhbmRsaW5nIHNjcmlwdCBsb2FkIGV2ZW50cyBhbmQgYXZhaWxhYmlsaXR5IG9mIERPTSBlbGVtZW50KVxyXG4gICAqL1xyXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVBheVBhbDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byBQYXlQYWwgZ2xvYmFsIEFQSVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcGF5UGFsOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwYXlwYWxTY3JpcHRTZXJ2aWNlOiBQYXlQYWxTY3JpcHRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBheVBhbEJ1dHRvbkNvbnRhaW5lcklkKSB7XHJcbiAgICAgIHRoaXMucGF5UGFsQnV0dG9uQ29udGFpbmVySWQgPSB0aGlzLmdlbmVyYXRlRWxlbWVudElkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZmlyc3QgdGltZSBjb25maWcgc2V0dXBcclxuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnO1xyXG4gICAgLy9jb25zdCBuYW1lID0gJ1BheVBhbENvbmZpZyc7XHJcblxyXG4gICAgaWYgKGNoYW5nZXNbJ2NvbmZpZyddLmlzRmlyc3RDaGFuZ2UoKSkge1xyXG4gICAgICBpZiAoY29uZmlnICYmIHRoaXMucmVnaXN0ZXJTY3JpcHQpIHtcclxuICAgICAgICB0aGlzLmluaXRQYXlQYWxTY3JpcHQoY29uZmlnLCAocGF5UGFsKSA9PiB7XHJcbiAgICAgICAgICAvLyBzdG9yZSByZWZlcmVuY2UgdG8gcGF5cGFsIGdsb2JhbCBzY3JpcHRcclxuICAgICAgICAgIHRoaXMucGF5UGFsID0gcGF5UGFsO1xyXG4gICAgICAgICAgdGhpcy5kb1BheVBhbENoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBjaGFuZ2VzIHRvIGNvbmZpZ1xyXG4gICAgaWYgKCFjaGFuZ2VzWydjb25maWcnXS5pc0ZpcnN0Q2hhbmdlKCkpIHtcclxuICAgICAgdGhpcy5yZWluaXRpYWxpemUoY29uZmlnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXlwYWxTY3JpcHRTZXJ2aWNlLmRlc3Ryb3lQYXlQYWxTY3JpcHQoKTtcclxuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZG9QYXlQYWxDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgY3VzdG9tSW5pdChwYXlQYWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXlQYWwgPSBwYXlQYWw7XHJcbiAgICB0aGlzLmRvUGF5UGFsQ2hlY2soKTtcclxuICB9XHJcblxyXG4gIHJlaW5pdGlhbGl6ZShjb25maWc6IElQYXlQYWxDb25maWcgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xyXG4gICAgdGhpcy5wYXlQYWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnBheXBhbFNjcmlwdFNlcnZpY2UuZGVzdHJveVBheVBhbFNjcmlwdCgpO1xyXG4gICAgdGhpcy5wYXlQYWxCdXR0b25Db250YWluZXJJZCA9IHRoaXMuZ2VuZXJhdGVFbGVtZW50SWQoKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZVBheVBhbCA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMucGF5UGFsQnV0dG9uQ29udGFpbmVyRWxlbSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLnBheVBhbEJ1dHRvbkNvbnRhaW5lckVsZW0ubmF0aXZlRWxlbWVudC5maXJzdENoaWxkKSB7XHJcbiAgICAgICAgICB0aGlzLnBheVBhbEJ1dHRvbkNvbnRhaW5lckVsZW0ubmF0aXZlRWxlbWVudC5yZW1vdmVDaGlsZChcclxuICAgICAgICAgICAgdGhpcy5wYXlQYWxCdXR0b25Db250YWluZXJFbGVtLm5hdGl2ZUVsZW1lbnQuZmlyc3RDaGlsZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnKSB7XHJcbiAgICAgIGlmICghdGhpcy5wYXlQYWwpIHtcclxuICAgICAgICB0aGlzLmluaXRQYXlQYWxTY3JpcHQodGhpcy5jb25maWcsIChwYXlQYWwpID0+IHtcclxuICAgICAgICAgIC8vIHN0b3JlIHJlZmVyZW5jZSB0byBwYXlwYWwgZ2xvYmFsIHNjcmlwdFxyXG4gICAgICAgICAgdGhpcy5wYXlQYWwgPSBwYXlQYWw7XHJcbiAgICAgICAgICB0aGlzLmRvUGF5UGFsQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRvUGF5UGFsQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb1BheVBhbENoZWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmluaXRpYWxpemVQYXlQYWwgJiZcclxuICAgICAgdGhpcy5jb25maWcgJiZcclxuICAgICAgdGhpcy5wYXlQYWwgJiZcclxuICAgICAgdGhpcy5wYXlQYWxCdXR0b25Db250YWluZXJFbGVtXHJcbiAgICApIHtcclxuICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgaWQgaXMgYWxzbyBzZXRcclxuICAgICAgaWYgKHRoaXMucGF5UGFsQnV0dG9uQ29udGFpbmVyRWxlbS5uYXRpdmVFbGVtZW50LmlkKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplUGF5UGFsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbml0UGF5UGFsKHRoaXMuY29uZmlnLCB0aGlzLnBheVBhbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdFBheVBhbFNjcmlwdChcclxuICAgIGNvbmZpZzogSVBheVBhbENvbmZpZyxcclxuICAgIGluaXRQYXlQYWw6IChwYXlwYWw6IGFueSkgPT4gdm9pZFxyXG4gICk6IHZvaWQge1xyXG4gICAgdGhpcy5wYXlwYWxTY3JpcHRTZXJ2aWNlLnJlZ2lzdGVyUGF5UGFsU2NyaXB0KFxyXG4gICAgICB7XHJcbiAgICAgICAgY2xpZW50SWQ6IGNvbmZpZy5jbGllbnRJZCxcclxuICAgICAgICBsb2NhbGU6IGNvbmZpZy5hZHZhbmNlZD8ubG9jYWxlLFxyXG4gICAgICAgIGNvbW1pdDpcclxuICAgICAgICAgIGNvbmZpZy5hZHZhbmNlZCAmJiBjb25maWcuYWR2YW5jZWQuY29tbWl0XHJcbiAgICAgICAgICAgID8gY29uZmlnLmFkdmFuY2VkLmNvbW1pdFxyXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgICBjdXJyZW5jeTogY29uZmlnLmN1cnJlbmN5LFxyXG4gICAgICAgIHZhdWx0OiBjb25maWcudmF1bHQsXHJcbiAgICAgICAgaW50ZW50OiBjb25maWcuaW50ZW50LFxyXG4gICAgICAgIGZ1bmRpbmc6IGNvbmZpZy5mdW5kaW5nU291cmNlICE9IHVuZGVmaW5lZCB8fCBjb25maWcuZnVuZGluZ1NvdXJjZSAhPSBudWxsID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgIGV4dHJhUGFyYW1zOlxyXG4gICAgICAgICAgY29uZmlnLmFkdmFuY2VkICYmIGNvbmZpZy5hZHZhbmNlZC5leHRyYVF1ZXJ5UGFyYW1zXHJcbiAgICAgICAgICAgID8gY29uZmlnLmFkdmFuY2VkLmV4dHJhUXVlcnlQYXJhbXNcclxuICAgICAgICAgICAgOiBbXSxcclxuICAgICAgfSxcclxuICAgICAgKHBheXBhbCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2NyaXB0TG9hZGVkLm5leHQocGF5cGFsKTtcclxuICAgICAgICBpbml0UGF5UGFsKHBheXBhbCk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlRWxlbWVudElkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYG5neC1jYXB0Y2hhLWlkLSR7dGhpcy5nZW5lcmF0ZUd1aWQoKX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0UGF5UGFsKGNvbmZpZzogSVBheVBhbENvbmZpZywgcGF5cGFsOiBhbnkpOiB2b2lkIHtcclxuICAgIC8vIFJ1bm5pbmcgb3V0c2lkZSBhbmd1bGFyIHpvbmUgcHJldmVudHMgaW5maW5pdGUgbmdEb0NoZWNrIGxpZmVjeWNsZSBjYWxsc1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvY2hlY2tvdXQvaW50ZWdyYXRlLyMyLWFkZC10aGUtcGF5cGFsLXNjcmlwdC10by15b3VyLXdlYi1wYWdlXHJcbiAgICAgIGNvbnN0IGNyZWF0ZU9yZGVyID0gKGRhdGE6IGFueSwgYWN0aW9uczogSUNyZWF0ZU9yZGVyQ2FsbGJhY2tBY3Rpb25zKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29uZmlnLmNyZWF0ZU9yZGVyT25DbGllbnQgJiYgY29uZmlnLmNyZWF0ZU9yZGVyT25TZXJ2ZXIpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEJvdGggJ2NyZWF0ZU9yZGVyT25DbGllbnQnIGFuZCAnY3JlYXRlT3JkZXJPblNlcnZlcicgYXJlIGRlZmluZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIGNob29zZSBvbmUgb3IgdGhlIG90aGVyLmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICghY29uZmlnLmNyZWF0ZU9yZGVyT25DbGllbnQgJiYgIWNvbmZpZy5jcmVhdGVPcmRlck9uU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBOZWl0aGVyICdjcmVhdGVPcmRlck9uQ2xpZW50JyBvciAnY3JlYXRlT3JkZXJPblNlcnZlcicgYXJlIGRlZmluZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UgdG8gY3JlYXRlIG9yZGVyLmApO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChjb25maWcuY3JlYXRlT3JkZXJPbkNsaWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYWN0aW9ucy5vcmRlci5jcmVhdGUoY29uZmlnLmNyZWF0ZU9yZGVyT25DbGllbnQoZGF0YSkpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChjb25maWcuY3JlYXRlT3JkZXJPblNlcnZlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLmNyZWF0ZU9yZGVyT25TZXJ2ZXIoZGF0YSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgc3RhdGUgZm9yICdjcmVhdGVPcmRlcicuYCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGNyZWF0ZVN1YnNjcmlwdGlvbiA9IChcclxuICAgICAgICBkYXRhOiBJQ3JlYXRlU3Vic2NyaXB0aW9uQ2FsbGJhY2tEYXRhLFxyXG4gICAgICAgIGFjdGlvbnM6IElDcmVhdGVTdWJzY3JpcHRpb25DYWxsYmFja0FjdGlvbnNcclxuICAgICAgKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoY29uZmlnLmNyZWF0ZVN1YnNjcmlwdGlvbk9uQ2xpZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhY3Rpb25zLnN1YnNjcmlwdGlvbi5jcmVhdGUoXHJcbiAgICAgICAgICAgICAgY29uZmlnLmNyZWF0ZVN1YnNjcmlwdGlvbk9uQ2xpZW50KGRhdGEpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IG9uU2hpcHBpbmdDaGFuZ2UgPSAoXHJcbiAgICAgICAgZGF0YTogSU9uU2hpcHBpbmdDaGFuZ2VEYXRhLFxyXG4gICAgICAgIGFjdGlvbnM6IElPblNoaXBwaW5nQ2hhbmdlQWN0aW9uc1xyXG4gICAgICApID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIGlmIChjb25maWcub25TaGlwcGluZ0NoYW5nZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY29uZmlnLm9uU2hpcHBpbmdDaGFuZ2UoZGF0YSwgYWN0aW9ucyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBidXR0b25zQ29uZmlnID0ge1xyXG4gICAgICAgIHN0eWxlOiBjb25maWcuc3R5bGUsXHJcbiAgICAgICAgZnVuZGluZ1NvdXJjZTogdW5kZWZpbmVkLFxyXG4gICAgICAgIG9uQXBwcm92ZTogKFxyXG4gICAgICAgICAgZGF0YTogSU9uQXBwcm92ZUNhbGxiYWNrRGF0YSxcclxuICAgICAgICAgIGFjdGlvbnM6IElPbkFwcHJvdmVDYWxsYmFja0FjdGlvbnNcclxuICAgICAgICApID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29uZmlnLm9uQXBwcm92ZSkge1xyXG4gICAgICAgICAgICAgIGNvbmZpZy5vbkFwcHJvdmUoZGF0YSwgYWN0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIGNhcHR1cmUgb24gc2VydmVyXHJcbiAgICAgICAgICAgIGlmIChjb25maWcuYXV0aG9yaXplT25TZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLmF1dGhvcml6ZU9uU2VydmVyKGRhdGEsIGFjdGlvbnMpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBjYXB0dXJlIG9uIGNsaWVudFxyXG4gICAgICAgICAgICBjb25zdCBvbkNsaWVudEF1dGhvcml6YXRpb24gPSBjb25maWcub25DbGllbnRBdXRob3JpemF0aW9uO1xyXG4gICAgICAgICAgICBpZiAob25DbGllbnRBdXRob3JpemF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgYWN0aW9ucy5vcmRlclxyXG4gICAgICAgICAgICAgICAgLmNhcHR1cmUoKVxyXG4gICAgICAgICAgICAgICAgLnRoZW4oKGRldGFpbHM6IElDbGllbnRBdXRob3JpemVDYWxsYmFja0RhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkNsaWVudEF1dGhvcml6YXRpb24oZGV0YWlscyk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25FcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWcub25FcnJvcikge1xyXG4gICAgICAgICAgICAgIGNvbmZpZy5vbkVycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkNhbmNlbDogKGRhdGE6IElDYW5jZWxDYWxsYmFja0RhdGEsIGFjdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgIGNvbmZpZy5vbkNhbmNlbChkYXRhLCBhY3Rpb25zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkNsaWNrOiAoZGF0YTogYW55LCBhY3Rpb25zOiBJT25DbGlja0NhbGxiYWNrQWN0aW9ucykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbmZpZy5vbkNsaWNrKSB7XHJcbiAgICAgICAgICAgICAgY29uZmlnLm9uQ2xpY2soZGF0YSwgYWN0aW9ucyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25Jbml0OiAoZGF0YTogSUluaXRDYWxsYmFja0RhdGEsIGFjdGlvbnM6IElPbkluaXRDYWxsYmFja0FjdGlvbnMpID0+IHtcclxuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb25maWcub25Jbml0KSB7XHJcbiAgICAgICAgICAgICAgY29uZmlnLm9uSW5pdChkYXRhLCBhY3Rpb25zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9ucyBpZiB0aGV5J3ZlIGJlZW4gY3JlYXRlZCBpbiB0aGUgY29uZmlnIG9iamVjdFxyXG4gICAgICAgIC8vIFRoZSBBUEkgb25seSBhbGxvd3Mgb25lIG9mIHRoZSB0d28gdG8gYmUgc2V0XHJcbiAgICAgICAgLi4uKChjb25maWcuY3JlYXRlT3JkZXJPbkNsaWVudCB8fCBjb25maWcuY3JlYXRlT3JkZXJPblNlcnZlcikgJiYge1xyXG4gICAgICAgICAgY3JlYXRlT3JkZXIsXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgLi4uKGNvbmZpZy5jcmVhdGVTdWJzY3JpcHRpb25PbkNsaWVudCAmJiB7IGNyZWF0ZVN1YnNjcmlwdGlvbiB9KSxcclxuICAgICAgICAvLyBUaGUgb25TaGlwcGluZ0NoYW5nZSBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCB3aXRoIHN1YnNjcmlwdGlvbnNcclxuICAgICAgICAvLyBzbyB3ZSBvbmx5IGFkZCBpdCBpZiBpdCBpcyBzZXRcclxuICAgICAgICAuLi4oY29uZmlnLm9uU2hpcHBpbmdDaGFuZ2UgJiYgeyBvblNoaXBwaW5nQ2hhbmdlIH0pLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgbGV0IGZ1bmRTb3VyY2UgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHN3aXRjaChjb25maWcuZnVuZGluZ1NvdXJjZSl7XHJcbiAgICAgICAgY2FzZSBcIlBBWVBBTFwiOlxyXG4gICAgICAgICAgZnVuZFNvdXJjZSA9IHBheXBhbC5GVU5ESU5HLlBBWVBBTDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJDQVJEXCI6XHJcbiAgICAgICAgICBmdW5kU291cmNlID0gcGF5cGFsLkZVTkRJTkcuQ0FSRDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJQQVlMQVRFUlwiOlxyXG4gICAgICAgICAgZnVuZFNvdXJjZSA9IHBheXBhbC5GVU5ESU5HLlBBWUxBVEVSO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcIkNSRURJVFwiOlxyXG4gICAgICAgICAgZnVuZFNvdXJjZSA9IHBheXBhbC5GVU5ESU5HLkNSRURJVDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgXCJWRU5NT1wiOlxyXG4gICAgICAgICAgZnVuZFNvdXJjZSA9IHBheXBhbC5GVU5ESU5HLlZFTk1PO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGZ1bmRTb3VyY2UgIT0gdW5kZWZpbmVkKVxyXG4gICAgICB7XHJcbiAgICAgICAgYnV0dG9uc0NvbmZpZy5mdW5kaW5nU291cmNlID0gZnVuZFNvdXJjZTtcclxuICAgICAgICBpZihjb25maWcuZnVuZGluZ1NvdXJjZSAhPT0gXCJQQVlQQUxcIilcclxuICAgICAgICAgIGRlbGV0ZSBidXR0b25zQ29uZmlnLnN0eWxlPy5jb2xvclxyXG4gICAgICB9XHJcbiAgICAgIHBheXBhbC5CdXR0b25zKGJ1dHRvbnNDb25maWcpLnJlbmRlcihgIyR7dGhpcy5wYXlQYWxCdXR0b25Db250YWluZXJJZH1gKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUd1aWQoKTogc3RyaW5nIHtcclxuICAgIGxldCBkID0gbmV3IERhdGUoKS5nZXRUaW1lKCksXHJcbiAgICAgIGQyID0gKHBlcmZvcm1hbmNlICYmIHBlcmZvcm1hbmNlLm5vdyAmJiBwZXJmb3JtYW5jZS5ub3coKSAqIDEwMDApIHx8IDA7XHJcbiAgICByZXR1cm4gXCJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhcIi5yZXBsYWNlKC9beHldL2csIChjKSA9PiB7XHJcbiAgICAgIGxldCByID0gTWF0aC5yYW5kb20oKSAqIDE2O1xyXG4gICAgICBpZiAoZCA+IDApIHtcclxuICAgICAgICByID0gKGQgKyByKSAlIDE2IHwgMDtcclxuICAgICAgICBkID0gTWF0aC5mbG9vcihkIC8gMTYpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHIgPSAoZDIgKyByKSAlIDE2IHwgMDtcclxuICAgICAgICBkMiA9IE1hdGguZmxvb3IoZDIgLyAxNik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChjID09IFwieFwiID8gciA6IChyICYgMHg3KSB8IDB4OCkudG9TdHJpbmcoMTYpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
14 Jun 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cGFsLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9wYXltZW50cy9QYXlQYWwvbW9kZWxzL3BheXBhbC1tb2RlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0UiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTQgSnVuIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYXlQYWxDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIEN1cnJlbmN5IC0gRGVmYXVsdHMgdG8gVVNEIGlmIG5vdCBwcm92aWRlZFxyXG4gICAqL1xyXG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBVc2Ugd2hlbiBjcmVhdGluZyBvcmRlciBvbiBjbGllbnRcclxuICAgKi9cclxuICBjcmVhdGVPcmRlck9uQ2xpZW50PzogKGRhdGE6IGFueSkgPT4gSUNyZWF0ZU9yZGVyUmVxdWVzdDtcclxuXHJcbiAgLyoqXHJcbiAgICogVXNlIHdoZW4gY3JlYXRpbmcgc3Vic2NyaXB0aW9uIG9uIGNsaWVudFxyXG4gICAqL1xyXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbk9uQ2xpZW50PzogKGRhdGE6IGFueSkgPT4gSUNyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3Q7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZSBmb3IgY3JlYXRpbmcgb3JkZXJzIG9uIHNlcnZlci4gUGF5UGFsIGV4cGVjdHMgeW91IHRvIHJldHVybiAnb3JkZXJJZCcgaW4gdGhpcyBtZXRob2RcclxuICAgKi9cclxuICBjcmVhdGVPcmRlck9uU2VydmVyPzogKGRhdGE6IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xyXG5cclxuICAvKipcclxuICAgKiBBZHZhbmNlZCBjb25maWd1cmF0aW9uXHJcbiAgICovXHJcbiAgYWR2YW5jZWQ/OiBJQWR2YW5jZWRDb25maWd1cmF0aW9uO1xyXG5cclxuICAvKipcclxuICAgKiBDbGllbnQgaWRcclxuICAgKi9cclxuICBjbGllbnRJZDogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBTaGlwcGluZyBjYWxsYmFja1xyXG4gICAqIHNlZSBodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvY2hlY2tvdXQvaW50ZWdyYXRpb24tZmVhdHVyZXMvc2hpcHBpbmctY2FsbGJhY2svXHJcbiAgICovXHJcbiAgb25TaGlwcGluZ0NoYW5nZT86IE9uU2hpcHBpbmdDaGFuZ2VDYWxsYmFjaztcclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gJ29uQXBwcm92ZScgZXZlbnQgb2NjdXJzXHJcbiAgICovXHJcbiAgb25BcHByb3ZlPzogKGRhdGE6IElPbkFwcHJvdmVDYWxsYmFja0RhdGEsIGFjdGlvbnM6IGFueSkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2FsbGVkIHdoZW4gYXV0aG9yaXphdGlvbiBvbiBjbGllbnQgc3VjY2VlZHNcclxuICAgKi9cclxuICBvbkNsaWVudEF1dGhvcml6YXRpb24/OiAoYXV0aG9yaXphdGlvbjogSUNsaWVudEF1dGhvcml6ZUNhbGxiYWNrRGF0YSkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogSW1wbGVtZW50IGZvciBhdXRob3JpemluZyBvbiBzZXJ2ZXIgc2lkZVxyXG4gICAqL1xyXG4gIGF1dGhvcml6ZU9uU2VydmVyPzogKFxyXG4gICAgZGF0YTogSU9uQXBwcm92ZUNhbGxiYWNrRGF0YSxcclxuICAgIGFjdGlvbnM6IGFueVxyXG4gICkgPT4gUHJvbWlzZTxhbnk+O1xyXG5cclxuICAvKipcclxuICAgKiBCdXR0b24gc3R5bGUgY29uZmlndXJhdGlvblxyXG4gICAqL1xyXG4gIHN0eWxlPzogSVBheVBhbEJ1dHRvblN0eWxlO1xyXG5cclxuICAvKipcclxuICAgKiBFcnJvciBoYW5kbGVyXHJcbiAgICovXHJcbiAgb25FcnJvcj86IChlcnI6IGFueSkgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2xpY2sgaGFuZGxlclxyXG4gICAqL1xyXG4gIG9uQ2xpY2s/OiAoZGF0YTogYW55LCBhY3Rpb25zOiBJT25DbGlja0NhbGxiYWNrQWN0aW9ucykgPT4gdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogQ2FuY2VsIGhhbmRsZXJcclxuICAgKi9cclxuICBvbkNhbmNlbD86IChkYXRhOiBJQ2FuY2VsQ2FsbGJhY2tEYXRhLCBhY3Rpb25zOiBhbnkpID0+IHZvaWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXQgaGFuZGxlci5cclxuICAgKiBjYW4gYmUgdXNlZCBmb3IgdmFsaWRhdGlvbiwgc2VlOiBodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3MvY2hlY2tvdXQvaW50ZWdyYXRpb24tZmVhdHVyZXMvdmFsaWRhdGlvbi8jXHJcbiAgICovXHJcbiAgb25Jbml0PzogKGRhdGE6IElJbml0Q2FsbGJhY2tEYXRhLCBhY3Rpb25zOiBJT25Jbml0Q2FsbGJhY2tBY3Rpb25zKSA9PiB2b2lkO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGUgc3Vic2NyaXB0aW9uIGhhbmRsZXJcclxuICAgKiBodHRwczovL2RldmVsb3Blci5wYXlwYWwuY29tL2RvY3Mvc3Vic2NyaXB0aW9ucy9pbnRlZ3JhdGUvXHJcbiAgICpcclxuICAgKiBOb3RlOiB0aGUgdmF1bHQgcHJvcGVydHkgaW4gdGhlIGFkdmFuY2VkIGNvbmZpZ3VyYXRpb24gYWxzbyBoYXMgdG8gYmUgc2V0IHRvIHRydWVcclxuICAgKi9cclxuICBjcmVhdGVTdWJzY3JpcHRpb24/OiAoZGF0YTogYW55KSA9PiBJQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdDtcclxuXHJcbiAgLyoqXHJcbiAgICogVmF1bHQgLSBtdXN0IGJlIHNldCB0byB0cnVlIHdoZW4gY3JlYXRpbmcgc3Vic2NyaXB0aW9uc1xyXG4gICAqL1xyXG4gIHZhdWx0PzogVHJ1ZUZhbHNlO1xyXG4gIGludGVudD86IE9yZGVySW50ZW50O1xyXG5cclxuICAvKlxyXG4gICAgU2VsZWN0IHR5cGUgb2YgZnVuZGluZyBzb3VyY2UsIHVzZSBpdCB3aGVuIHlvdSBuZWVkIHNldCB0eXBlIG9mIGJ1dHRvbiB5b3Ugd2FudCB0byBzZWUsIHNlZTogaHR0cHM6Ly9kZXZlbG9wZXIucGF5cGFsLmNvbS9kb2NzL2NoZWNrb3V0L3N0YW5kYXJkL2N1c3RvbWl6ZS9zdGFuZGFsb25lLWJ1dHRvbnMvXHJcbiAgKi9cclxuICBmdW5kaW5nU291cmNlPzogXCJQQVlQQUxcIiB8IFwiQ0FSRFwiIHwgXCJQQVlMQVRFUlwiIHwgXCJDUkVESVRcIiB8IFwiVkVOTU9cIjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVHJ1ZUZhbHNlID0gXCJ0cnVlXCIgfCBcImZhbHNlXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYXlQYWxVcmxDb25maWcge1xyXG4gIGNsaWVudElkOiBzdHJpbmc7XHJcbiAgY3VycmVuY3k/OiBzdHJpbmc7XHJcbiAgZnVuZGluZz86IGJvb2xlYW47XHJcbiAgY29tbWl0PzogVHJ1ZUZhbHNlO1xyXG4gIHZhdWx0PzogVHJ1ZUZhbHNlO1xyXG4gIGludGVudD86IE9yZGVySW50ZW50O1xyXG4gIGxvY2FsZT86IHN0cmluZztcclxuICBleHRyYVBhcmFtcz86IElRdWVyeVBhcmFtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9yZGVyRGV0YWlscyB7XHJcbiAgY3JlYXRlX3RpbWU6IHN0cmluZztcclxuICB1cGRhdGVfdGltZTogc3RyaW5nO1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgaW50ZW50OiBPcmRlckludGVudDtcclxuICBwYXllcjogSVBheWVyO1xyXG4gIHN0YXR1czogT3JkZXJTdGF0dXM7XHJcbiAgbGlua3M6IElMaW5rRGVzY3JpcHRpb25bXTtcclxuICBwdXJjaGFzZV91bml0czogSVB1cmNoYXNlVW5pdFtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDbGllbnRBdXRob3JpemVDYWxsYmFja0RhdGEgZXh0ZW5kcyBJT3JkZXJEZXRhaWxzIHtcclxuICBsaW5rczogSUxpbmtEZXNjcmlwdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElMaW5rRGVzY3JpcHRpb24ge1xyXG4gIGhyZWY6IHN0cmluZztcclxuICByZWw6IFN0cmluZztcclxuICBtZXRob2Q/OiBMaW5rTWV0aG9kO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElRdWVyeVBhcmFtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT25TaGlwcGluZ0NoYW5nZUNhbGxiYWNrID0gKFxyXG4gIGRhdGE6IElPblNoaXBwaW5nQ2hhbmdlRGF0YSxcclxuICBhY3Rpb25zOiBJT25TaGlwcGluZ0NoYW5nZUFjdGlvbnNcclxuKSA9PiBhbnk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPblNoaXBwaW5nQ2hhbmdlRGF0YSB7XHJcbiAgcGF5bWVudFRva2VuOiBzdHJpbmc7XHJcbiAgc2hpcHBpbmdfYWRkcmVzczogYW55O1xyXG4gIHNlbGVjdGVkX3NoaXBwaW5nX21ldGhvZD86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT25TaGlwcGluZ0NoYW5nZUFjdGlvbnMge1xyXG4gIHJlc29sdmU6ICgpID0+IGFueTtcclxuICByZWplY3Q6ICgpID0+IGFueTtcclxuICBwYXRjaDogKCkgPT4gYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBMaW5rTWV0aG9kID1cclxuICB8IFwiR0VUXCJcclxuICB8IFwiUE9TVFwiXHJcbiAgfCBcIlBVVFwiXHJcbiAgfCBcIkRFTEVURVwiXHJcbiAgfCBcIkhFQURcIlxyXG4gIHwgXCJDT05ORUNUXCJcclxuICB8IFwiT1BUSU9OU1wiXHJcbiAgfCBcIlBBVENIXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElBZHZhbmNlZENvbmZpZ3VyYXRpb24ge1xyXG4gIGNvbW1pdD86IFRydWVGYWxzZTtcclxuICBsb2NhbGU/OiBzdHJpbmc7XHJcbiAgZXh0cmFRdWVyeVBhcmFtcz86IElRdWVyeVBhcmFtW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9uQXBwcm92ZUNhbGxiYWNrRGF0YSB7XHJcbiAgb3JkZXJJRDogc3RyaW5nO1xyXG4gIHBheWVySUQ6IHN0cmluZztcclxuICBzdWJzY3JpcHRpb25JRDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDcmVhdGVPcmRlckNhbGxiYWNrQWN0aW9ucyB7XHJcbiAgb3JkZXI6IHtcclxuICAgIGNyZWF0ZTogKG9yZGVyOiBJQ3JlYXRlT3JkZXJSZXF1ZXN0KSA9PiBQcm9taXNlPGFueT47XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ2FuY2VsQ2FsbGJhY2tEYXRhIHtcclxuICBvcmRlcklEOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9uQXBwcm92ZUNhbGxiYWNrQWN0aW9ucyB7XHJcbiAgcmVkaXJlY3Q6ICgpID0+IHZvaWQ7XHJcbiAgcmVzdGFydDogKCkgPT4gdm9pZDtcclxuICBvcmRlcjoge1xyXG4gICAgYXV0aG9yaXplOiAoKSA9PiBQcm9taXNlPGFueT47XHJcbiAgICBjYXB0dXJlOiAoKSA9PiBQcm9taXNlPGFueT47XHJcbiAgICBnZXQ6ICgpID0+IFByb21pc2U8SU9yZGVyRGV0YWlscz47XHJcbiAgICBwYXRjaDogKCkgPT4gUHJvbWlzZTxhbnk+O1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU9uSW5pdENhbGxiYWNrQWN0aW9ucyB7XHJcbiAgZW5hYmxlOiAoKSA9PiB2b2lkO1xyXG4gIGRpc2FibGU6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNyZWF0ZVN1YnNjcmlwdGlvbkNhbGxiYWNrQWN0aW9ucyB7XHJcbiAgc3Vic2NyaXB0aW9uOiB7XHJcbiAgICBjcmVhdGU6IChzdWJzY3JpcHRpb246IElDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0KSA9PiBQcm9taXNlPGFueT47XHJcbiAgICByZXZpc2U6IChcclxuICAgICAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZyxcclxuICAgICAgc3Vic2NyaXB0aW9uOiBJQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFxyXG4gICAgKSA9PiBQcm9taXNlPGFueT47XHJcbiAgfTtcclxufVxyXG5cclxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWVtcHR5LWludGVyZmFjZVxyXG5leHBvcnQgaW50ZXJmYWNlIElJbml0Q2FsbGJhY2tEYXRhIHt9XHJcblxyXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZW1wdHktaW50ZXJmYWNlXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUNyZWF0ZVN1YnNjcmlwdGlvbkNhbGxiYWNrRGF0YSB7fVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT25DbGlja0NhbGxiYWNrQWN0aW9ucyB7XHJcbiAgcmVzb2x2ZTogKCkgPT4gdm9pZDtcclxuICByZWplY3Q6ICgpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBheVBhbEJ1dHRvblN0eWxlIHtcclxuICBsYWJlbD86XHJcbiAgICB8IFwicGF5cGFsXCJcclxuICAgIHwgXCJjaGVja291dFwiXHJcbiAgICB8IFwicGF5XCJcclxuICAgIHwgXCJpbnN0YWxsbWVudFwiXHJcbiAgICB8IFwiYnV5bm93XCJcclxuICAgIHwgXCJzdWJzY3JpYmVcIjtcclxuICBzaGFwZT86IFwicGlsbFwiIHwgXCJyZWN0XCI7XHJcbiAgY29sb3I/OiBcImdvbGRcIiB8IFwiYmx1ZVwiIHwgXCJzaWx2ZXJcIiB8IFwid2hpdGVcIiB8IFwiYmxhY2tcIjtcclxuICBsYXlvdXQ/OiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIjtcclxuICB0YWdsaW5lPzogYm9vbGVhbjtcclxuICBoZWlnaHQ/OiBudW1iZXI7XHJcbiAgZnVuZGluZ2ljb25zPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQ3JlYXRlT3JkZXJSZXF1ZXN0IHtcclxuICBpbnRlbnQ6IE9yZGVySW50ZW50O1xyXG4gIHB1cmNoYXNlX3VuaXRzOiBJUHVyY2hhc2VVbml0W107XHJcblxyXG4gIHBheWVyPzogSVBheWVyO1xyXG4gIGFwcGxpY2F0aW9uX2NvbnRleHQ/OiBJQXBwbGljYXRpb25Db250ZXh0O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0IHtcclxuICBwbGFuX2lkOiBzdHJpbmc7XHJcbiAgcXVhbnRpdHk/OiBudW1iZXI7XHJcbiAgY3VzdG9tX2lkOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBheWVyIHtcclxuICBuYW1lPzogSVBhcnR5TmFtZTtcclxuICBlbWFpbF9hZGRyZXNzPzogc3RyaW5nO1xyXG4gIHBheWVyX2lkPzogc3RyaW5nO1xyXG4gIGJpcnRoX2RhdGU/OiBzdHJpbmc7XHJcbiAgdGF4X2luZm8/OiBJVGF4SW5mbztcclxuICBhZGRyZXNzPzogSUFkZHJlc3NQb3J0YWJsZTtcclxuICBwaG9uZT86IElQaG9uZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJQXBwbGljYXRpb25Db250ZXh0IHtcclxuICBicmFuZF9uYW1lPzogc3RyaW5nO1xyXG4gIGxvY2FsZT86IHN0cmluZztcclxuICBsYW5kaW5nX3BhZ2U/OiBQYXlwYWxMYW5kaW5nUGFnZTtcclxuICBzaGlwcGluZ19wcmVmZXJlbmNlPzogU2hpcHBpbmdQcmVmZXJlbmNlO1xyXG4gIHVzZXJfYWN0aW9uPzogUGF5UGFsVXNlckFjdGlvbjtcclxuICBwYXltZW50X21ldGhvZD86IElQYXltZW50TWV0aG9kO1xyXG4gIHJldHVybl91cmw/OiBzdHJpbmc7XHJcbiAgY2FuY2VsX3VybD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGF5bWVudE1ldGhvZCB7XHJcbiAgcGF5ZXJfc2VsZWN0ZWQ/OiBQYXllclNlbGVjdGVkO1xyXG4gIHBheWVlX3ByZWZlcnJlZD86IFBheWVlUHJlZmVycmVkO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQYXllZVByZWZlcnJlZCA9IFwiVU5SRVNUUklDVEVEXCIgfCBcIklNTUVESUFURV9QQVlNRU5UX1JFUVVJUkVEXCI7XHJcblxyXG5leHBvcnQgdHlwZSBQYXllclNlbGVjdGVkID0gXCJQQVlQQUxfQ1JFRElUXCIgfCBcIlBBWVBBTFwiO1xyXG5cclxuZXhwb3J0IHR5cGUgUGF5UGFsVXNlckFjdGlvbiA9IFwiQ09OVElOVUVcIiB8IFwiUEFZX05PV1wiO1xyXG5cclxuZXhwb3J0IHR5cGUgU2hpcHBpbmdQcmVmZXJlbmNlID1cclxuICB8IFwiR0VUX0ZST01fRklMRVwiXHJcbiAgfCBcIk5PX1NISVBQSU5HXCJcclxuICB8IFwiU0VUX1BST1ZJREVEX0FERFJFU1NcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFBheXBhbExhbmRpbmdQYWdlID0gXCJMT0dJTlwiIHwgXCJCSUxMSU5HXCI7XHJcblxyXG5leHBvcnQgdHlwZSBPcmRlckludGVudCA9IFwiQ0FQVFVSRVwiIHwgXCJBVVRIT1JJWkVcIiB8IFwic3Vic2NyaXB0aW9uXCI7XHJcblxyXG5leHBvcnQgdHlwZSBEaXNidXJzZW1lbnRNb2RlID0gXCJJTlNUQU5UXCIgfCBcIkRFTEFZRURcIjtcclxuXHJcbmV4cG9ydCB0eXBlIEl0ZW1DYXRlZ29yeSA9IFwiRElHSVRBTF9HT09EU1wiIHwgXCJQSFlTSUNBTF9HT09EU1wiO1xyXG5cclxuZXhwb3J0IHR5cGUgUGhvbmVUeXBlID0gXCJGQVhcIiB8IFwiSE9NRVwiIHwgXCJNT0JJTEVcIiB8IFwiT1RIRVJcIiB8IFwiUEFHRVJcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFRheElkVHlwZSA9IFwiQlJfQ1BGXCIgfCBcIkJSX0NOUEpcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBob25lIHtcclxuICBwaG9uZV90eXBlPzogUGhvbmVUeXBlO1xyXG4gIHBob25lX251bWJlcj86IElQaG9uZU51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGF4SW5mbyB7XHJcbiAgdGF4X2lkOiBzdHJpbmc7XHJcbiAgdGF4X2lkX3R5cGU6IFRheElkVHlwZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJUGhvbmVOdW1iZXIge1xyXG4gIG5hdGlvbmFsX251bWJlcjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQdXJjaGFzZVVuaXQge1xyXG4gIGFtb3VudDogSVVuaXRBbW91bnQ7XHJcblxyXG4gIHJlZmVyZW5jZV9pZD86IHN0cmluZztcclxuICBwYXllZT86IElQYXllZTtcclxuICBwYXltZW50X2luc3RydWN0aW9uPzogSVBheW1lbnRJbnN0cnVjdGlvbnM7XHJcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgY3VzdG9tX2lkPzogc3RyaW5nO1xyXG4gIGludm9pY2VfaWQ/OiBzdHJpbmc7XHJcbiAgc29mdF9kZXNjcmlwdG9yPzogc3RyaW5nO1xyXG4gIGl0ZW1zOiBJVHJhbnNhY3Rpb25JdGVtW107XHJcbiAgc2hpcHBpbmc/OiBJU2hpcHBpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBheWVlIHtcclxuICBlbWFpbF9hZGRyZXNzPzogc3RyaW5nO1xyXG4gIG1lcmNoYW50X2lkPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQYXltZW50SW5zdHJ1Y3Rpb25zIHtcclxuICBwbGF0Zm9ybV9mZWVzPzogSVBsYXRmb3JtRmVlW107XHJcbiAgZGlzYnVyc2VtZW50X21vZGU/OiBEaXNidXJzZW1lbnRNb2RlO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElQbGF0Zm9ybUZlZSB7XHJcbiAgYW1vdW50OiBJVW5pdEFtb3VudDtcclxuICBwYXllZT86IElQYXllZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNhY3Rpb25JdGVtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdW5pdF9hbW91bnQ6IElVbml0QW1vdW50O1xyXG4gIHF1YW50aXR5OiBzdHJpbmc7XHJcblxyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gIHNrdT86IHN0cmluZztcclxuICBjYXRlZ29yeT86IEl0ZW1DYXRlZ29yeTtcclxuICB0YXg/OiBJVGF4O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElUYXgge1xyXG4gIGN1cnJlbmN5X2NvZGU6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVbml0QW1vdW50IHtcclxuICBjdXJyZW5jeV9jb2RlOiBzdHJpbmc7XHJcbiAgdmFsdWU6IHN0cmluZztcclxuICBicmVha2Rvd24/OiBJVW5pdEJyZWFrZG93bjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJTW9uZXkge1xyXG4gIGN1cnJlbmN5X2NvZGU6IHN0cmluZztcclxuICB2YWx1ZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElVbml0QnJlYWtkb3duIHtcclxuICBpdGVtX3RvdGFsPzogSVVuaXRBbW91bnQ7XHJcbiAgc2hpcHBpbmc/OiBJVW5pdEFtb3VudDtcclxuICBoYW5kbGluZz86IElVbml0QW1vdW50O1xyXG4gIHRheF90b3RhbD86IElVbml0QW1vdW50O1xyXG4gIGluc3VyYW5jZT86IElVbml0QW1vdW50O1xyXG4gIHNoaXBwaW5nX2Rpc2NvdW50PzogSVVuaXRBbW91bnQ7XHJcbiAgZGlzY291bnQ/OiBJTW9uZXk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhcnR5TmFtZSB7XHJcbiAgcHJlZml4Pzogc3RyaW5nO1xyXG4gIGdpdmVuX25hbWU/OiBzdHJpbmc7XHJcbiAgc3VybmFtZT86IHN0cmluZztcclxuICBtaWRkbGVfbmFtZT86IHN0cmluZztcclxuICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgYWx0ZXJuYXRlX2Z1bGxfbmFtZT86IHN0cmluZztcclxuICBmdWxsX25hbWU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUFkZHJlc3NQb3J0YWJsZSB7XHJcbiAgY291bnRyeV9jb2RlOiBzdHJpbmc7XHJcblxyXG4gIGFkZHJlc3NfbGluZV8xPzogc3RyaW5nO1xyXG4gIGFkZHJlc3NfbGluZV8yPzogc3RyaW5nO1xyXG4gIGFkbWluX2FyZWFfMj86IHN0cmluZztcclxuICBhZG1pbl9hcmVhXzE/OiBzdHJpbmc7XHJcbiAgcG9zdGFsX2NvZGU/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVNoaXBwaW5nIHtcclxuICBuYW1lPzogSVBhcnR5TmFtZTtcclxuICBhZGRyZXNzPzogSUFkZHJlc3NQb3J0YWJsZTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgT3JkZXJTdGF0dXMgPVxyXG4gIHwgXCJBUFBST1ZFRFwiXHJcbiAgfCBcIlNBVkVEXCJcclxuICB8IFwiQ1JFQVRFRFwiXHJcbiAgfCBcIlZPSURFRFwiXHJcbiAgfCBcIkNPTVBMRVRFRFwiO1xyXG4iXX0=
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
14 Jun 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
import { Injectable } from '@angular/core';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "../../services/script.service";
|
|
19
|
+
export class PayPalScriptService {
|
|
20
|
+
constructor(scriptService) {
|
|
21
|
+
this.scriptService = scriptService;
|
|
22
|
+
this.paypalWindowName = 'paypal';
|
|
23
|
+
}
|
|
24
|
+
registerPayPalScript(config, onReady) {
|
|
25
|
+
this.scriptService.registerScript(this.getUrlForConfig(config), this.paypalWindowName, onReady);
|
|
26
|
+
}
|
|
27
|
+
destroyPayPalScript() {
|
|
28
|
+
this.scriptService.cleanup(this.paypalWindowName);
|
|
29
|
+
}
|
|
30
|
+
getUrlForConfig(config) {
|
|
31
|
+
const params = [
|
|
32
|
+
{
|
|
33
|
+
name: 'client-id',
|
|
34
|
+
value: config.clientId
|
|
35
|
+
}
|
|
36
|
+
];
|
|
37
|
+
if (config.locale) {
|
|
38
|
+
params.push({
|
|
39
|
+
name: 'locale',
|
|
40
|
+
value: config.locale
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (config.currency) {
|
|
44
|
+
params.push({
|
|
45
|
+
name: 'currency',
|
|
46
|
+
value: config.currency
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
if (config.commit) {
|
|
50
|
+
params.push({
|
|
51
|
+
name: 'commit',
|
|
52
|
+
value: config.commit
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (config.vault) {
|
|
56
|
+
params.push({
|
|
57
|
+
name: 'vault',
|
|
58
|
+
value: config.vault
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (config.intent) {
|
|
62
|
+
params.push({
|
|
63
|
+
name: 'intent',
|
|
64
|
+
value: config.intent
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (config.funding) {
|
|
68
|
+
params.push({
|
|
69
|
+
name: 'components',
|
|
70
|
+
value: 'buttons,funding-eligibility'
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (config.extraParams) {
|
|
74
|
+
params.push(...config.extraParams);
|
|
75
|
+
}
|
|
76
|
+
return `https://www.paypal.com/sdk/js${this.getQueryString(params)}`;
|
|
77
|
+
}
|
|
78
|
+
getQueryString(queryParams) {
|
|
79
|
+
let queryString = '';
|
|
80
|
+
for (let i = 0; i < queryParams.length; i++) {
|
|
81
|
+
const queryParam = queryParams[i];
|
|
82
|
+
if (i === 0) {
|
|
83
|
+
queryString += '?';
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
queryString += '&';
|
|
87
|
+
}
|
|
88
|
+
queryString += `${queryParam.name}=${queryParam.value}`;
|
|
89
|
+
}
|
|
90
|
+
return queryString;
|
|
91
|
+
}
|
|
92
|
+
static { this.ɵfac = function PayPalScriptService_Factory(t) { return new (t || PayPalScriptService)(i0.ɵɵinject(i1.ScriptService)); }; }
|
|
93
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PayPalScriptService, factory: PayPalScriptService.ɵfac }); }
|
|
94
|
+
}
|
|
95
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PayPalScriptService, [{
|
|
96
|
+
type: Injectable
|
|
97
|
+
}], () => [{ type: i1.ScriptService }], null); })();
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5cGFsLXNjcmlwdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL3BheW1lbnRzL1BheVBhbC9zZXJ2aWNlcy9wYXlwYWwtc2NyaXB0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUc5QixZQUFzQixhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUZqQyxxQkFBZ0IsR0FBRyxRQUFRLENBQUM7SUFHN0MsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQXdCLEVBQUUsT0FBaUM7UUFDOUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sZUFBZSxDQUFDLE1BQXdCO1FBQzlDLE1BQU0sTUFBTSxHQUFrQjtZQUMxQjtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRO2FBQ3pCO1NBQ0osQ0FBQztRQUVGLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxVQUFVO2dCQUNoQixLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVE7YUFDekIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNO2FBQ3ZCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2FBQ3RCLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUNSLElBQUksRUFBRSxRQUFRO2dCQUNkLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTTthQUN2QixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQsSUFBRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDVixJQUFJLEVBQUMsWUFBWTtnQkFDakIsS0FBSyxFQUFFLDZCQUE2QjthQUNyQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBRUQsT0FBTyxnQ0FBZ0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFFTyxjQUFjLENBQUMsV0FBMEI7UUFDL0MsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNWLFdBQVcsSUFBSSxHQUFHLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLFdBQVcsSUFBSSxHQUFHLENBQUM7WUFDdkIsQ0FBQztZQUVELFdBQVcsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVELENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO29GQXRGVSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUI7O2lGQUFuQixtQkFBbUI7Y0FEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAxNCBKdW4gMjAyNFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IElQYXlQYWxVcmxDb25maWcsIElRdWVyeVBhcmFtIH0gZnJvbSAnLi4vbW9kZWxzL3BheXBhbC1tb2RlbHMnO1xyXG5pbXBvcnQgeyBTY3JpcHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2NyaXB0LnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUGF5UGFsU2NyaXB0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwYXlwYWxXaW5kb3dOYW1lID0gJ3BheXBhbCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBzY3JpcHRTZXJ2aWNlOiBTY3JpcHRTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICByZWdpc3RlclBheVBhbFNjcmlwdChjb25maWc6IElQYXlQYWxVcmxDb25maWcsIG9uUmVhZHk6IChwYXlQYWxBcGk6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JpcHRTZXJ2aWNlLnJlZ2lzdGVyU2NyaXB0KHRoaXMuZ2V0VXJsRm9yQ29uZmlnKGNvbmZpZyksIHRoaXMucGF5cGFsV2luZG93TmFtZSwgb25SZWFkeSk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95UGF5UGFsU2NyaXB0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zY3JpcHRTZXJ2aWNlLmNsZWFudXAodGhpcy5wYXlwYWxXaW5kb3dOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VXJsRm9yQ29uZmlnKGNvbmZpZzogSVBheVBhbFVybENvbmZpZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBwYXJhbXM6IElRdWVyeVBhcmFtW10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBuYW1lOiAnY2xpZW50LWlkJyxcclxuICAgICAgICAgICAgdmFsdWU6IGNvbmZpZy5jbGllbnRJZFxyXG4gICAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICAgaWYgKGNvbmZpZy5sb2NhbGUpIHtcclxuICAgICAgcGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogJ2xvY2FsZScsXHJcbiAgICAgICAgICB2YWx1ZTogY29uZmlnLmxvY2FsZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnLmN1cnJlbmN5KSB7XHJcbiAgICAgICAgcGFyYW1zLnB1c2goe1xyXG4gICAgICAgICAgICBuYW1lOiAnY3VycmVuY3knLFxyXG4gICAgICAgICAgICB2YWx1ZTogY29uZmlnLmN1cnJlbmN5XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5jb21taXQpIHtcclxuICAgICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6ICdjb21taXQnLFxyXG4gICAgICAgICAgICB2YWx1ZTogY29uZmlnLmNvbW1pdFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcudmF1bHQpIHtcclxuICAgICAgICBwYXJhbXMucHVzaCh7XHJcbiAgICAgICAgICAgIG5hbWU6ICd2YXVsdCcsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb25maWcudmF1bHRcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnLmludGVudCkge1xyXG4gICAgICAgIHBhcmFtcy5wdXNoKHtcclxuICAgICAgICAgICAgbmFtZTogJ2ludGVudCcsXHJcbiAgICAgICAgICAgIHZhbHVlOiBjb25maWcuaW50ZW50XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoY29uZmlnLmZ1bmRpbmcpIHtcclxuICAgICAgcGFyYW1zLnB1c2goe1xyXG4gICAgICAgIG5hbWU6J2NvbXBvbmVudHMnLFxyXG4gICAgICAgIHZhbHVlOiAnYnV0dG9ucyxmdW5kaW5nLWVsaWdpYmlsaXR5J1xyXG4gICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcuZXh0cmFQYXJhbXMpIHtcclxuICAgICAgICBwYXJhbXMucHVzaCguLi5jb25maWcuZXh0cmFQYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9zZGsvanMke3RoaXMuZ2V0UXVlcnlTdHJpbmcocGFyYW1zKX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRRdWVyeVN0cmluZyhxdWVyeVBhcmFtczogSVF1ZXJ5UGFyYW1bXSk6IHN0cmluZyB7XHJcbiAgICBsZXQgcXVlcnlTdHJpbmcgPSAnJztcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXJ5UGFyYW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbSA9IHF1ZXJ5UGFyYW1zW2ldO1xyXG4gICAgICAgIGlmIChpID09PSAwKSB7XHJcbiAgICAgICAgICAgIHF1ZXJ5U3RyaW5nICs9ICc/JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBxdWVyeVN0cmluZyArPSAnJic7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBxdWVyeVN0cmluZyArPSBgJHtxdWVyeVBhcmFtLm5hbWV9PSR7cXVlcnlQYXJhbS52YWx1ZX1gO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBxdWVyeVN0cmluZztcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
14 Jun 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
//services
|
|
17
|
+
export * from './services/script.service';
|
|
18
|
+
//PayPal
|
|
19
|
+
export * from './PayPal/components/paypal.component';
|
|
20
|
+
export * from './PayPal/models/paypal-models';
|
|
21
|
+
export * from './PayPal/services/paypal-script.service';
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvcGF5bWVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixVQUFVO0FBQ1YsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxRQUFRO0FBQ1IsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMTQgSnVuIDIwMjRcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL3NlcnZpY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc2NyaXB0LnNlcnZpY2UnO1xyXG5cclxuLy9QYXlQYWxcclxuZXhwb3J0ICogZnJvbSAnLi9QYXlQYWwvY29tcG9uZW50cy9wYXlwYWwuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9QYXlQYWwvbW9kZWxzL3BheXBhbC1tb2RlbHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL1BheVBhbC9zZXJ2aWNlcy9wYXlwYWwtc2NyaXB0LnNlcnZpY2UnO1xyXG4iXX0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<file>
|
|
3
|
+
Project:
|
|
4
|
+
@osovitny/anatoly
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Vadim Osovitny vadim@osovitny.com
|
|
8
|
+
Anatoly Osovitny anatoly@osovitny.com
|
|
9
|
+
|
|
10
|
+
Created:
|
|
11
|
+
14 Jun 2024
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
|
|
14
|
+
</file>
|
|
15
|
+
*/
|
|
16
|
+
//Node
|
|
17
|
+
import { NgModule } from '@angular/core';
|
|
18
|
+
import { CommonModule } from '@angular/common';
|
|
19
|
+
//App
|
|
20
|
+
import { ScriptService } from './services/script.service';
|
|
21
|
+
//PayPal
|
|
22
|
+
import { PayPalComponent } from './PayPal/components/paypal.component';
|
|
23
|
+
import { PayPalScriptService } from './PayPal/services/paypal-script.service';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
export class AnatolyPaymentsModule {
|
|
26
|
+
static { this.ɵfac = function AnatolyPaymentsModule_Factory(t) { return new (t || AnatolyPaymentsModule)(); }; }
|
|
27
|
+
static { this.ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: AnatolyPaymentsModule }); }
|
|
28
|
+
static { this.ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
|
|
29
|
+
ScriptService,
|
|
30
|
+
//PayPal
|
|
31
|
+
PayPalScriptService
|
|
32
|
+
], imports: [CommonModule] }); }
|
|
33
|
+
}
|
|
34
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AnatolyPaymentsModule, [{
|
|
35
|
+
type: NgModule,
|
|
36
|
+
args: [{
|
|
37
|
+
imports: [
|
|
38
|
+
CommonModule
|
|
39
|
+
],
|
|
40
|
+
declarations: [
|
|
41
|
+
PayPalComponent
|
|
42
|
+
],
|
|
43
|
+
exports: [
|
|
44
|
+
PayPalComponent
|
|
45
|
+
],
|
|
46
|
+
providers: [
|
|
47
|
+
ScriptService,
|
|
48
|
+
//PayPal
|
|
49
|
+
PayPalScriptService
|
|
50
|
+
]
|
|
51
|
+
}]
|
|
52
|
+
}], null, null); })();
|
|
53
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyPaymentsModule, { declarations: [PayPalComponent], imports: [CommonModule], exports: [PayPalComponent] }); })();
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWVudHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5hdG9seS9zcmMvbGliL3BheW1lbnRzL3BheW1lbnRzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxLQUFLO0FBQ0wsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELFFBQVE7QUFDUixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBbUI5RSxNQUFNLE9BQU8scUJBQXFCO3NGQUFyQixxQkFBcUI7bUVBQXJCLHFCQUFxQjt3RUFQckI7WUFDVCxhQUFhO1lBRWIsUUFBUTtZQUNSLG1CQUFtQjtTQUNwQixZQWJDLFlBQVk7O2lGQWVILHFCQUFxQjtjQWpCakMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRTtvQkFDWixlQUFlO2lCQUNoQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsZUFBZTtpQkFDaEI7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGFBQWE7b0JBRWIsUUFBUTtvQkFDUixtQkFBbUI7aUJBQ3BCO2FBQ0Y7O3dGQUNZLHFCQUFxQixtQkFaOUIsZUFBZSxhQUhmLFlBQVksYUFNWixlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDE0IEp1biAyMDI0XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG4vL0FwcFxyXG5pbXBvcnQgeyBTY3JpcHRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9zY3JpcHQuc2VydmljZSc7XHJcblxyXG4vL1BheVBhbFxyXG5pbXBvcnQgeyBQYXlQYWxDb21wb25lbnQgfSBmcm9tICcuL1BheVBhbC9jb21wb25lbnRzL3BheXBhbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYXlQYWxTY3JpcHRTZXJ2aWNlIH0gZnJvbSAnLi9QYXlQYWwvc2VydmljZXMvcGF5cGFsLXNjcmlwdC5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFBheVBhbENvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgUGF5UGFsQ29tcG9uZW50XHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIFNjcmlwdFNlcnZpY2UsXHJcblxyXG4gICAgLy9QYXlQYWxcclxuICAgIFBheVBhbFNjcmlwdFNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBbmF0b2x5UGF5bWVudHNNb2R1bGUge1xyXG59XHJcbiJdfQ==
|