@myclub_se/data-access 3.1.6 → 3.1.8
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/api-models/api-bookable-item.mjs +1 -1
- package/esm2022/lib/api-models/api-booking-calendar-application-time.mjs +1 -1
- package/esm2022/lib/api-models/api-booking-calendar-slot-session.mjs +1 -1
- package/esm2022/lib/api-models/api-booking-calendar-slot.mjs +1 -1
- package/esm2022/lib/api-models/api-booking-calendar.mjs +1 -1
- package/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +12 -2
- package/esm2022/lib/api-models/api-invoice/api-payment-attempt.mjs +1 -1
- package/esm2022/lib/api-models/api-invoice/api-payment-order.mjs +2 -0
- package/esm2022/lib/api-models/api-invoice/index.mjs +2 -1
- package/esm2022/lib/models/activity-type.mjs +3 -3
- package/esm2022/lib/models/bookable-item.mjs +4 -2
- package/esm2022/lib/models/booking-calendar-application-time.mjs +6 -2
- package/esm2022/lib/models/booking-calendar-slot-session.mjs +8 -2
- package/esm2022/lib/models/booking-calendar-slot.mjs +5 -2
- package/esm2022/lib/models/booking-calendar.mjs +8 -2
- package/esm2022/lib/models/booking-slot-filter.mjs +4 -1
- package/esm2022/lib/models/invoice/index.mjs +2 -1
- package/esm2022/lib/models/invoice/payment-attempt.mjs +4 -2
- package/esm2022/lib/models/invoice/payment-order.mjs +25 -0
- package/esm2022/lib/services/activity.service.mjs +17 -6
- package/esm2022/lib/services/bookable.service.mjs +46 -14
- package/esm2022/lib/services/booking-calendar.service.mjs +94 -26
- package/esm2022/lib/services/constant.service.mjs +9 -1
- package/esm2022/lib/services/constants.mjs +2 -0
- package/esm2022/lib/services/factories/bookable-item-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-application-time-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +2 -2
- package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +2 -2
- package/esm2022/lib/services/factories/payment-attempt-factory.mjs +2 -2
- package/esm2022/lib/services/factories/payment-order-factory.mjs +5 -0
- package/esm2022/lib/services/feature-flags.service.mjs +5 -2
- package/esm2022/lib/services/invoice/index.mjs +2 -1
- package/esm2022/lib/services/invoice/payment-attempt.service.mjs +44 -19
- package/esm2022/lib/services/invoice/payment-order.service.mjs +46 -0
- package/esm2022/lib/services/member.service.mjs +5 -2
- package/esm2022/lib/services/team.service.mjs +5 -2
- package/esm2022/lib/store/actions/booking.actions.mjs +19 -1
- package/esm2022/lib/store/actions/constant.actions.mjs +13 -1
- package/esm2022/lib/store/actions/invoice.actions.mjs +105 -37
- package/esm2022/lib/store/effects/booking.effects.mjs +49 -3
- package/esm2022/lib/store/effects/constant.effects.mjs +8 -2
- package/esm2022/lib/store/effects/invoice.effects.mjs +89 -29
- package/esm2022/lib/store/reducers/booking.reducers.mjs +63 -12
- package/esm2022/lib/store/reducers/constant.reducer.mjs +14 -2
- package/esm2022/lib/store/reducers/invoice.reducer.mjs +4 -4
- package/esm2022/lib/store/selectors/booking.selectors.mjs +4 -1
- package/esm2022/lib/store/selectors/constant.selectors.mjs +3 -1
- package/esm2022/lib/store/selectors/invoice.selectors.mjs +3 -1
- package/esm2022/lib/store/state/booking.state.mjs +4 -1
- package/esm2022/lib/store/state/constant.state.mjs +3 -1
- package/esm2022/lib/store/state/invoice.state.mjs +3 -1
- package/fesm2022/myclub_se-data-access.mjs +689 -152
- package/fesm2022/myclub_se-data-access.mjs.map +1 -1
- package/lib/api-models/api-bookable-item.d.ts +1 -0
- package/lib/api-models/api-booking-calendar-application-time.d.ts +2 -0
- package/lib/api-models/api-booking-calendar-slot-session.d.ts +3 -0
- package/lib/api-models/api-booking-calendar-slot.d.ts +1 -0
- package/lib/api-models/api-booking-calendar.d.ts +2 -0
- package/lib/api-models/api-invoice/api-payment-attempt-create.d.ts +7 -1
- package/lib/api-models/api-invoice/api-payment-attempt.d.ts +2 -1
- package/lib/api-models/api-invoice/api-payment-order.d.ts +13 -0
- package/lib/api-models/api-invoice/index.d.ts +1 -0
- package/lib/models/bookable-item.d.ts +2 -1
- package/lib/models/booking-calendar-application-time.d.ts +3 -1
- package/lib/models/booking-calendar-slot-session.d.ts +4 -1
- package/lib/models/booking-calendar-slot.d.ts +3 -1
- package/lib/models/booking-calendar.d.ts +5 -1
- package/lib/models/booking-slot-filter.d.ts +1 -0
- package/lib/models/invoice/index.d.ts +1 -0
- package/lib/models/invoice/payment-attempt.d.ts +3 -2
- package/lib/models/invoice/payment-order.d.ts +14 -0
- package/lib/services/bookable.service.d.ts +2 -1
- package/lib/services/booking-calendar.service.d.ts +2 -0
- package/lib/services/constant.service.d.ts +2 -0
- package/lib/services/constants.d.ts +1 -0
- package/lib/services/factories/payment-order-factory.d.ts +3 -0
- package/lib/services/invoice/index.d.ts +1 -0
- package/lib/services/invoice/payment-attempt.service.d.ts +14 -7
- package/lib/services/invoice/payment-order.service.d.ts +18 -0
- package/lib/store/actions/booking.actions.d.ts +60 -0
- package/lib/store/actions/constant.actions.d.ts +28 -0
- package/lib/store/actions/invoice.actions.d.ts +335 -55
- package/lib/store/effects/booking.effects.d.ts +15 -0
- package/lib/store/effects/constant.effects.d.ts +10 -0
- package/lib/store/effects/invoice.effects.d.ts +89 -25
- package/lib/store/selectors/booking.selectors.d.ts +3 -0
- package/lib/store/selectors/constant.selectors.d.ts +2 -0
- package/lib/store/selectors/invoice.selectors.d.ts +2 -0
- package/lib/store/state/booking.state.d.ts +4 -1
- package/lib/store/state/constant.state.d.ts +2 -0
- package/lib/store/state/invoice.state.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,31 +1,45 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { Actions, createEffect, ofType } from '@ngrx/effects';
|
|
3
|
-
import { InvoiceService, PaymentAttemptService } from '../../services';
|
|
4
|
-
import {
|
|
3
|
+
import { InvoiceService, PaymentAttemptService, PaymentOrderService } from '../../services';
|
|
4
|
+
import { createMondidoInvoicePaymentFailureAction, createMondidoInvoicePaymentSuccessAction, createMondidoMemberInvoicePaymentAction, createMondidoMemberPaymentOrderPaymentAction, createMondidoPaymentOrderPaymentFailureAction, createMondidoPaymentOrderPaymentSuccessAction, createMondidoPublicInvoicePaymentAction, createMondidoPublicPaymentOrderPaymentAction, createSwishInvoicePaymentFailureAction, createSwishInvoicePaymentSuccessAction, createSwishMemberInvoicePaymentAction, createSwishMemberPaymentOrderPaymentAction, createSwishPaymentOrderPaymentFailureAction, createSwishPaymentOrderPaymentSuccessAction, createSwishPublicInvoicePaymentAction, createSwishPublicPaymentOrderPaymentAction, createZimplerMemberPaymentAction, createZimplerPaymentFailureAction, createZimplerPaymentSuccessAction, createZimplerPublicPaymentAction, deletePaymentOrderAction, deletePaymentOrderFailureAction, deletePaymentOrderSuccessAction, listMemberInvoicesAction, listMemberInvoicesFailureAction, listMemberInvoicesSuccessAction, listMemberPaymentOrdersAction, listMemberPaymentOrdersFailureAction, listMemberPaymentOrdersSuccessAction, retrieveInvoiceSwishQRCodeFailureAction, retrieveInvoiceSwishQRCodeSuccessAction, retrieveMemberInvoiceAction, retrieveMemberInvoiceFailureAction, retrieveMemberInvoicePaymentAttemptAction, retrieveMemberInvoicePaymentAttemptFailureAction, retrieveMemberInvoicePaymentAttemptSuccessAction, retrieveMemberInvoiceSuccessAction, retrieveMemberInvoiceSwishQRCodeAction, retrieveMemberPaymentOrderPaymentAttemptAction, retrieveMemberPaymentOrderPaymentAttemptFailureAction, retrieveMemberPaymentOrderPaymentAttemptSuccessAction, retrieveMemberPaymentOrderSwishQRCodeAction, retrievePaymentOrderAction, retrievePaymentOrderFailureAction, retrievePaymentOrderSuccessAction, retrievePaymentOrderSwishQRCodeFailureAction, retrievePaymentOrderSwishQRCodeSuccessAction, retrievePublicInvoiceAction, retrievePublicInvoiceFailureAction, retrievePublicInvoiceLogoAction, retrievePublicInvoiceLogoFailureAction, retrievePublicInvoiceLogoSuccessAction, retrievePublicInvoicePaymentAttemptAction, retrievePublicInvoicePaymentAttemptFailureAction, retrievePublicInvoicePaymentAttemptSuccessAction, retrievePublicInvoiceSuccessAction, retrievePublicInvoiceSwishQRCodeAction, retrievePublicPaymentOrderAction, retrievePublicPaymentOrderFailureAction, retrievePublicPaymentOrderLogoAction, retrievePublicPaymentOrderLogoFailureAction, retrievePublicPaymentOrderLogoSuccessAction, retrievePublicPaymentOrderPaymentAttemptAction, retrievePublicPaymentOrderPaymentAttemptFailureAction, retrievePublicPaymentOrderPaymentAttemptSuccessAction, retrievePublicPaymentOrderSuccessAction, retrievePublicPaymentOrderSwishQRCodeAction } from '../actions';
|
|
5
5
|
import { exhaustMap, forkJoin, mergeMap, of } from 'rxjs';
|
|
6
6
|
import { catchError, map } from 'rxjs/operators';
|
|
7
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
export class InvoiceEffects {
|
|
9
10
|
actions$ = inject(Actions);
|
|
10
11
|
invoiceService = inject(InvoiceService);
|
|
12
|
+
paymentOrderService = inject(PaymentOrderService);
|
|
11
13
|
paymentAttemptService = inject(PaymentAttemptService);
|
|
12
|
-
|
|
13
|
-
.pipe(ofType(
|
|
14
|
-
.pipe(map((paymentAttempt) =>
|
|
15
|
-
|
|
16
|
-
.pipe(ofType(
|
|
17
|
-
.pipe(map((paymentAttempt) =>
|
|
14
|
+
createMemberInvoiceMondidoPayment$ = createEffect(() => this.actions$
|
|
15
|
+
.pipe(ofType(createMondidoMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, 'mondido')
|
|
16
|
+
.pipe(map((paymentAttempt) => createMondidoInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createMondidoInvoicePaymentFailureAction({ payload: error })))))));
|
|
17
|
+
createMemberInvoiceSwishPayment$ = createEffect(() => this.actions$
|
|
18
|
+
.pipe(ofType(createSwishMemberInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, 'swish', payload.telephoneNumber)
|
|
19
|
+
.pipe(map((paymentAttempt) => createSwishInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishInvoicePaymentFailureAction({ payload: error })))))));
|
|
20
|
+
createMemberPaymentOrderMondidoPayment$ = createEffect(() => this.actions$
|
|
21
|
+
.pipe(ofType(createMondidoMemberPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberPaymentOrderPaymentAttempt(payload.memberId, payload.paymentOrderId, 'mondido')
|
|
22
|
+
.pipe(map((paymentAttempt) => createMondidoPaymentOrderPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createMondidoPaymentOrderPaymentFailureAction({ payload: error })))))));
|
|
23
|
+
createMemberPaymentOrderSwishPayment$ = createEffect(() => this.actions$
|
|
24
|
+
.pipe(ofType(createSwishMemberPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberPaymentOrderPaymentAttempt(payload.memberId, payload.paymentOrderId, 'swish', payload.telephoneNumber)
|
|
25
|
+
.pipe(map((paymentAttempt) => createSwishPaymentOrderPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishPaymentOrderPaymentFailureAction({ payload: error })))))));
|
|
18
26
|
createMemberZimplerPayment$ = createEffect(() => this.actions$
|
|
19
|
-
.pipe(ofType(createZimplerMemberPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.
|
|
27
|
+
.pipe(ofType(createZimplerMemberPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, 'zimpler')
|
|
20
28
|
.pipe(map((paymentAttempt) => createZimplerPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createZimplerPaymentFailureAction({ payload: error })))))));
|
|
21
|
-
|
|
22
|
-
.pipe(ofType(
|
|
23
|
-
.pipe(map((paymentAttempt) =>
|
|
24
|
-
|
|
25
|
-
.pipe(ofType(
|
|
26
|
-
.pipe(map((paymentAttempt) =>
|
|
29
|
+
createPublicInvoiceMondidoPayment$ = createEffect(() => this.actions$
|
|
30
|
+
.pipe(ofType(createMondidoPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, 'mondido')
|
|
31
|
+
.pipe(map((paymentAttempt) => createMondidoInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createMondidoInvoicePaymentFailureAction({ payload: error })))))));
|
|
32
|
+
createPublicInvoiceSwishPayment$ = createEffect(() => this.actions$
|
|
33
|
+
.pipe(ofType(createSwishPublicInvoicePaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, 'swish', payload.telephoneNumber)
|
|
34
|
+
.pipe(map((paymentAttempt) => createSwishInvoicePaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishInvoicePaymentFailureAction({ payload: error })))))));
|
|
35
|
+
createPublicPaymentOrderMondidoPayment$ = createEffect(() => this.actions$
|
|
36
|
+
.pipe(ofType(createMondidoPublicPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicPaymentOrderPaymentAttempt(payload.paymentOrderId, payload.token, 'mondido')
|
|
37
|
+
.pipe(map((paymentAttempt) => createMondidoPaymentOrderPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createMondidoPaymentOrderPaymentFailureAction({ payload: error })))))));
|
|
38
|
+
createPublicPaymentOrderSwishPayment$ = createEffect(() => this.actions$
|
|
39
|
+
.pipe(ofType(createSwishPublicPaymentOrderPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicPaymentOrderPaymentAttempt(payload.paymentOrderId, payload.token, 'swish', payload.telephoneNumber)
|
|
40
|
+
.pipe(map((paymentAttempt) => createSwishPaymentOrderPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createSwishPaymentOrderPaymentFailureAction({ payload: error })))))));
|
|
27
41
|
createPublicZimplerPayment$ = createEffect(() => this.actions$
|
|
28
|
-
.pipe(ofType(createZimplerPublicPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.
|
|
42
|
+
.pipe(ofType(createZimplerPublicPaymentAction), exhaustMap(({ payload }) => this.paymentAttemptService.createPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, 'zimpler')
|
|
29
43
|
.pipe(map((paymentAttempt) => createZimplerPaymentSuccessAction({ payload: paymentAttempt })), catchError((error) => of(createZimplerPaymentFailureAction({ payload: error })))))));
|
|
30
44
|
listMemberInvoices$ = createEffect(() => this.actions$
|
|
31
45
|
.pipe(ofType(listMemberInvoicesAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.invoiceService.getMemberInvoices(id)
|
|
@@ -45,28 +59,74 @@ export class InvoiceEffects {
|
|
|
45
59
|
retrieveMemberInvoice$ = createEffect(() => this.actions$
|
|
46
60
|
.pipe(ofType(retrieveMemberInvoiceAction), exhaustMap(({ payload }) => this.invoiceService.getMemberInvoice(payload.memberId, payload.invoiceId)
|
|
47
61
|
.pipe(map((invoice) => retrieveMemberInvoiceSuccessAction({ payload: invoice })), catchError((error) => of(retrieveMemberInvoiceFailureAction({ payload: error })))))));
|
|
48
|
-
|
|
49
|
-
.pipe(ofType(
|
|
50
|
-
.pipe(map((
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
listMemberPaymentOrders$ = createEffect(() => this.actions$
|
|
63
|
+
.pipe(ofType(listMemberPaymentOrdersAction), mergeMap(({ payload }) => forkJoin(payload.map((id) => this.paymentOrderService.getMemberPaymentOrders(id)
|
|
64
|
+
.pipe(map((paymentOrders) => ({ id, paymentOrders: paymentOrders.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
|
|
65
|
+
const paymentOrderMap = new Map();
|
|
66
|
+
const errors = results.filter(result => result.error);
|
|
67
|
+
if (errors.length) {
|
|
68
|
+
return of(listMemberPaymentOrdersFailureAction({ payload: errors[0].error }));
|
|
69
|
+
}
|
|
70
|
+
results.forEach((result) => {
|
|
71
|
+
if (result.paymentOrders) {
|
|
72
|
+
paymentOrderMap.set(result.id, result.paymentOrders);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return of(listMemberPaymentOrdersSuccessAction({ payload: paymentOrderMap }));
|
|
76
|
+
})))));
|
|
77
|
+
retrievePaymentOrder$ = createEffect(() => this.actions$
|
|
78
|
+
.pipe(ofType(retrievePaymentOrderAction), exhaustMap(({ payload }) => this.paymentOrderService.getMemberPaymentOrder(payload.memberId, payload.paymentOrderId)
|
|
79
|
+
.pipe(map((paymentOrder) => retrievePaymentOrderSuccessAction({ payload: paymentOrder })), catchError((error) => of(retrievePaymentOrderFailureAction({ payload: error })))))));
|
|
80
|
+
deletePaymentOrder$ = createEffect(() => this.actions$
|
|
81
|
+
.pipe(ofType(deletePaymentOrderAction), exhaustMap(({ payload }) => this.paymentOrderService.deleteMemberPaymentOrder(payload.memberId, payload.paymentOrderId)
|
|
82
|
+
.pipe(map((value) => {
|
|
83
|
+
if (value) {
|
|
84
|
+
return deletePaymentOrderSuccessAction();
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return deletePaymentOrderFailureAction({ payload: new HttpErrorResponse({ status: 400 }) });
|
|
88
|
+
}
|
|
89
|
+
}), catchError((error) => of(deletePaymentOrderFailureAction({ payload: error })))))));
|
|
90
|
+
retrieveMemberInvoicePaymentAttempt$ = createEffect(() => this.actions$
|
|
91
|
+
.pipe(ofType(retrieveMemberInvoicePaymentAttemptAction), exhaustMap(({ payload }) => this.paymentAttemptService.getMemberInvoicePaymentAttempt(payload.memberId, payload.invoiceId, payload.paymentAttemptId)
|
|
92
|
+
.pipe(map((paymentAttempt) => retrieveMemberInvoicePaymentAttemptSuccessAction({ payload: paymentAttempt })), catchError((error) => of(retrieveMemberInvoicePaymentAttemptFailureAction({ payload: error })))))));
|
|
93
|
+
retrieveMemberInvoiceSwishQRCode$ = createEffect(() => this.actions$
|
|
94
|
+
.pipe(ofType(retrieveMemberInvoiceSwishQRCodeAction), exhaustMap(({ payload }) => this.paymentAttemptService.getMemberInvoiceSwishQRCode(payload.memberId, payload.invoiceId, payload.paymentAttemptId)
|
|
95
|
+
.pipe(map((swishQRCode) => retrieveInvoiceSwishQRCodeSuccessAction({ payload: swishQRCode })), catchError((error) => of(retrieveInvoiceSwishQRCodeFailureAction({ payload: error })))))));
|
|
96
|
+
retrieveMemberPaymentOrderSwishQRCode$ = createEffect(() => this.actions$
|
|
97
|
+
.pipe(ofType(retrieveMemberPaymentOrderSwishQRCodeAction), exhaustMap(({ payload }) => this.paymentAttemptService.getMemberPaymentOrderSwishQRCode(payload.memberId, payload.paymentOrderId, payload.paymentAttemptId)
|
|
98
|
+
.pipe(map((swishQRCode) => retrievePaymentOrderSwishQRCodeSuccessAction({ payload: swishQRCode })), catchError((error) => of(retrievePaymentOrderSwishQRCodeFailureAction({ payload: error })))))));
|
|
54
99
|
retrievePublicInvoice$ = createEffect(() => this.actions$
|
|
55
100
|
.pipe(ofType(retrievePublicInvoiceAction), exhaustMap(({ payload }) => this.invoiceService.getPublicInvoice(payload.invoiceId, payload.token)
|
|
56
101
|
.pipe(map((invoice) => retrievePublicInvoiceSuccessAction({ payload: invoice })), catchError((error) => of(retrievePublicInvoiceFailureAction({ payload: error })))))));
|
|
57
102
|
retrievePublicInvoiceLogo$ = createEffect(() => this.actions$
|
|
58
103
|
.pipe(ofType(retrievePublicInvoiceLogoAction), exhaustMap(({ payload }) => this.invoiceService.getPublicInvoiceLogo(payload.invoiceId, payload.token)
|
|
59
104
|
.pipe(map((image) => retrievePublicInvoiceLogoSuccessAction({ payload: image })), catchError((error) => of(retrievePublicInvoiceLogoFailureAction({ payload: error })))))));
|
|
60
|
-
|
|
61
|
-
.pipe(ofType(
|
|
62
|
-
.pipe(map((paymentAttempt) =>
|
|
63
|
-
|
|
64
|
-
.pipe(ofType(
|
|
65
|
-
.pipe(map((swishQRCode) =>
|
|
105
|
+
retrievePublicInvoicePaymentAttempt$ = createEffect(() => this.actions$
|
|
106
|
+
.pipe(ofType(retrievePublicInvoicePaymentAttemptAction), exhaustMap(({ payload }) => this.paymentAttemptService.getPublicInvoicePaymentAttempt(payload.invoiceId, payload.token, payload.paymentAttemptId)
|
|
107
|
+
.pipe(map((paymentAttempt) => retrievePublicInvoicePaymentAttemptSuccessAction({ payload: paymentAttempt })), catchError((error) => of(retrievePublicInvoicePaymentAttemptFailureAction({ payload: error })))))));
|
|
108
|
+
retrievePublicInvoiceSwishQRCode$ = createEffect(() => this.actions$
|
|
109
|
+
.pipe(ofType(retrievePublicInvoiceSwishQRCodeAction), exhaustMap(({ payload }) => this.paymentAttemptService.getPublicInvoiceSwishQRCode(payload.invoiceId, payload.token, payload.paymentAttemptId)
|
|
110
|
+
.pipe(map((swishQRCode) => retrieveInvoiceSwishQRCodeSuccessAction({ payload: swishQRCode })), catchError((error) => of(retrieveInvoiceSwishQRCodeFailureAction({ payload: error })))))));
|
|
111
|
+
retrieveMemberPaymentOrderPaymentAttempt$ = createEffect(() => this.actions$
|
|
112
|
+
.pipe(ofType(retrieveMemberPaymentOrderPaymentAttemptAction), exhaustMap(({ payload }) => this.paymentAttemptService.getMemberPaymentOrderPaymentAttempt(payload.memberId, payload.paymentOrderId, payload.paymentAttemptId)
|
|
113
|
+
.pipe(map((paymentAttempt) => retrieveMemberPaymentOrderPaymentAttemptSuccessAction({ payload: paymentAttempt })), catchError((error) => of(retrieveMemberPaymentOrderPaymentAttemptFailureAction({ payload: error })))))));
|
|
114
|
+
retrievePublicPaymentOrder$ = createEffect(() => this.actions$
|
|
115
|
+
.pipe(ofType(retrievePublicPaymentOrderAction), exhaustMap(({ payload }) => this.paymentOrderService.getPublicPaymentOrder(payload.paymentOrderId, payload.token)
|
|
116
|
+
.pipe(map((paymentOrder) => retrievePublicPaymentOrderSuccessAction({ payload: paymentOrder })), catchError((error) => of(retrievePublicPaymentOrderFailureAction({ payload: error })))))));
|
|
117
|
+
retrievePublicPaymentOrderLogo$ = createEffect(() => this.actions$
|
|
118
|
+
.pipe(ofType(retrievePublicPaymentOrderLogoAction), exhaustMap(({ payload }) => this.paymentOrderService.getPublicPaymentOrderLogo(payload.paymentOrderId, payload.token)
|
|
119
|
+
.pipe(map((image) => retrievePublicPaymentOrderLogoSuccessAction({ payload: image })), catchError((error) => of(retrievePublicPaymentOrderLogoFailureAction({ payload: error })))))));
|
|
120
|
+
retrievePublicPaymentOrderPaymentAttempt$ = createEffect(() => this.actions$
|
|
121
|
+
.pipe(ofType(retrievePublicPaymentOrderPaymentAttemptAction), exhaustMap(({ payload }) => this.paymentAttemptService.getPublicPaymentOrderPaymentAttempt(payload.paymentOrderId, payload.token, payload.paymentAttemptId)
|
|
122
|
+
.pipe(map((paymentAttempt) => retrievePublicPaymentOrderPaymentAttemptSuccessAction({ payload: paymentAttempt })), catchError((error) => of(retrievePublicPaymentOrderPaymentAttemptFailureAction({ payload: error })))))));
|
|
123
|
+
retrievePublicPaymentOrderSwishQRCode$ = createEffect(() => this.actions$
|
|
124
|
+
.pipe(ofType(retrievePublicPaymentOrderSwishQRCodeAction), exhaustMap(({ payload }) => this.paymentAttemptService.getPublicPaymentOrderSwishQRCode(payload.paymentOrderId, payload.token, payload.paymentAttemptId)
|
|
125
|
+
.pipe(map((swishQRCode) => retrievePaymentOrderSwishQRCodeSuccessAction({ payload: swishQRCode })), catchError((error) => of(retrievePaymentOrderSwishQRCodeFailureAction({ payload: error })))))));
|
|
66
126
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InvoiceEffects, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
127
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InvoiceEffects });
|
|
68
128
|
}
|
|
69
129
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InvoiceEffects, decorators: [{
|
|
70
130
|
type: Injectable
|
|
71
131
|
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ludm9pY2UuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyxnQ0FBZ0MsRUFDaEMsOEJBQThCLEVBQzlCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsOEJBQThCLEVBQzlCLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsaUNBQWlDLEVBQ2pDLGdDQUFnQyxFQUNoQyx3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQiwyQkFBMkIsRUFDM0Isa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMseUNBQXlDLEVBQ3pDLHlDQUF5QyxFQUN6QywrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQywrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0QyxrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLHlDQUF5QyxFQUN6Qyx5Q0FBeUMsRUFDekMsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDakMsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUs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QUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pHLENBQ0YsQ0FDRixDQUNGLENBQUM7dUdBaE1TLGNBQWM7MkdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEludm9pY2VTZXJ2aWNlLCBQYXltZW50QXR0ZW1wdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBjcmVhdGVNb25kaWRvTWVtYmVyUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb1BheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVNb25kaWRvUGF5bWVudFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZU1vbmRpZG9QdWJsaWNQYXltZW50QWN0aW9uLFxuICBjcmVhdGVTd2lzaE1lbWJlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUGF5bWVudFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoUHVibGljUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlWmltcGxlck1lbWJlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVppbXBsZXJQYXltZW50RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlWmltcGxlclBheW1lbnRTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVaaW1wbGVyUHVibGljUGF5bWVudEFjdGlvbixcbiAgbGlzdE1lbWJlckludm9pY2VzQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJTd2lzaFFSQ29kZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNTd2lzaFFSQ29kZUFjdGlvbixcbiAgcmV0cmlldmVTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZm9ya0pvaW4sIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2x1YkltYWdlLCBDb2xsZWN0aW9uLCBNZW1iZXJJbnZvaWNlLCBQYXltZW50QXR0ZW1wdCwgU2VhcmNoTWVtYmVySW52b2ljZSwgU3dpc2hRckNvZGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludm9pY2VFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBpbnZvaWNlU2VydmljZSA9IGluamVjdChJbnZvaWNlU2VydmljZSk7XG4gIHByaXZhdGUgcGF5bWVudEF0dGVtcHRTZXJ2aWNlID0gaW5qZWN0KFBheW1lbnRBdHRlbXB0U2VydmljZSk7XG5cbiAgY3JlYXRlTWVtYmVyTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvTWVtYmVyUGF5bWVudEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmd9fSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQsICdtb25kaWRvJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVNb25kaWRvUGF5bWVudEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclN3aXNoUGF5bWVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVN3aXNoTWVtYmVyUGF5bWVudEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHRlbGVwaG9uZU51bWJlcjogc3RyaW5nfX0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlclBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCAnc3dpc2gnLCBwYXlsb2FkLnRlbGVwaG9uZU51bWJlcilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlU3dpc2hQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlTWVtYmVyWmltcGxlclBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVaaW1wbGVyTWVtYmVyUGF5bWVudEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7bWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmd9fSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQsICd6aW1wbGVyJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVaaW1wbGVyUGF5bWVudEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY01vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb1B1YmxpY1BheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3Rva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nfX0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY1BheW1lbnRBdHRlbXB0KHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnRva2VuLCAnbW9uZGlkbycpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVNb25kaWRvUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlTW9uZGlkb1BheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaFB1YmxpY1BheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3Rva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZ319KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5jcmVhdGVQdWJsaWNQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgJ3N3aXNoJywgcGF5bG9hZC50ZWxlcGhvbmVOdW1iZXIpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaFBheW1lbnRTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50QXR0ZW1wdH0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoUGF5bWVudEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1ppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlclB1YmxpY1BheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge3Rva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nfX0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY1BheW1lbnRBdHRlbXB0KHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnRva2VuLCAnemltcGxlcicpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVaaW1wbGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlWmltcGxlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVySW52b2ljZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVySW52b2ljZXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHsgcGF5bG9hZCB9OiB7IHBheWxvYWQ6IEFycmF5PHN0cmluZz4gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgcGF5bG9hZC5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmludm9pY2VTZXJ2aWNlLmdldE1lbWJlckludm9pY2VzKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGludm9pY2VzOiBDb2xsZWN0aW9uPFNlYXJjaE1lbWJlckludm9pY2U+KSA9PiAoeyBpZCwgaW52b2ljZXM6IGludm9pY2VzLnRvQXJyYXkoKSB9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7IGlkLCBlcnJvciB9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIGludm9pY2VzPzogQXJyYXk8U2VhcmNoTWVtYmVySW52b2ljZT4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGludm9pY2VNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8U2VhcmNoTWVtYmVySW52b2ljZT4+KCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVySW52b2ljZXNGYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogZXJyb3JzWzBdLmVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pbnZvaWNlcykge1xuICAgICAgICAgICAgICAgIGludm9pY2VNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0Lmludm9pY2VzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVySW52b2ljZXNTdWNjZXNzQWN0aW9uKHsgcGF5bG9hZDogaW52b2ljZU1hcCB9KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckludm9pY2UkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckludm9pY2VBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge21lbWJlcklkOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nfX0pID0+IHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0TWVtYmVySW52b2ljZShwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChpbnZvaWNlOiBNZW1iZXJJbnZvaWNlKSA9PiByZXRyaWV2ZU1lbWJlckludm9pY2VTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbnZvaWNlfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJJbnZvaWNlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJQYXltZW50QXR0ZW1wdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyUGF5bWVudEF0dGVtcHRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7cGF5bG9hZDoge21lbWJlcklkOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfSB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRNZW1iZXJQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gcmV0cmlldmVNZW1iZXJQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlclN3aXNoUVJDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHttZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyfX0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldE1lbWJlclN3aXNoUVJDb2RlKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZVN3aXNoUVJDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogc3dpc2hRUkNvZGV9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNJbnZvaWNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZ319KSA9PiB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFB1YmxpY0ludm9pY2UocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoaW52b2ljZTogTWVtYmVySW52b2ljZSkgPT4gcmV0cmlldmVQdWJsaWNJbnZvaWNlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogaW52b2ljZX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljSW52b2ljZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljSW52b2ljZUxvZ28kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY0ludm9pY2VMb2dvQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZ319KSA9PiB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFB1YmxpY0ludm9pY2VMb2dvKHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnRva2VuKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGltYWdlOiBDbHViSW1hZ2UpID0+IHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbWFnZX0pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRBdHRlbXB0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtwYXlsb2FkOiB7dG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlcn19KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY1N3aXNoUVJDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge3BheWxvYWQ6IHt0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyfX0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldFB1YmxpY1N3aXNoUVJDb2RlKHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnRva2VuLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZVN3aXNoUVJDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogc3dpc2hRUkNvZGV9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ludm9pY2UuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFDTCx3Q0FBd0MsRUFDeEMsd0NBQXdDLEVBQ3hDLHVDQUF1QyxFQUN2Qyw0Q0FBNEMsRUFDNUMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3Qyx1Q0FBdUMsRUFDdkMsNENBQTRDLEVBQzVDLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMscUNBQXFDLEVBQ3JDLDBDQUEwQyxFQUMxQywyQ0FBMkMsRUFDM0MsMkNBQTJDLEVBQzNDLHFDQUFxQyxFQUNyQywwQ0FBMEMsRUFDMUMsZ0NBQWdDLEVBQ2hDLGlDQUFpQyxFQUNqQyxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMkJBQTJCLEVBQzNCLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMsZ0RBQWdELEVBQ2hELGdEQUFnRCxFQUNoRCxrQ0FBa0MsRUFDbEMsc0NBQXNDLEVBQ3RDLDhDQUE4QyxFQUM5QyxxREFBcUQsRUFDckQscURBQXFELEVBQ3JE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U0FDL0gsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFdBQXdCLEVBQUUsRUFBRSxDQUFDLDRDQUE0QyxDQUFDLEVBQUMsT0FBTyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUMsRUFDdkcsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDRDQUE0QyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUM3RyxDQUNKLENBQ0YsQ0FDRixDQUFDO3VHQS9hUyxjQUFjOzJHQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7SW52b2ljZVNlcnZpY2UsIFBheW1lbnRBdHRlbXB0U2VydmljZSwgUGF5bWVudE9yZGVyU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlTW9uZGlkb0ludm9pY2VQYXltZW50RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb0ludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlTW9uZGlkb01lbWJlckludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVNb25kaWRvTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb1BheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVNb25kaWRvUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZU1vbmRpZG9QdWJsaWNJbnZvaWNlUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlTW9uZGlkb1B1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlU3dpc2hNZW1iZXJJbnZvaWNlUGF5bWVudEFjdGlvbixcbiAgY3JlYXRlU3dpc2hNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QWN0aW9uLFxuICBjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVTd2lzaFB1YmxpY0ludm9pY2VQYXltZW50QWN0aW9uLFxuICBjcmVhdGVTd2lzaFB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24sXG4gIGNyZWF0ZVppbXBsZXJNZW1iZXJQYXltZW50QWN0aW9uLFxuICBjcmVhdGVaaW1wbGVyUGF5bWVudEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlWmltcGxlclB1YmxpY1BheW1lbnRBY3Rpb24sXG4gIGRlbGV0ZVBheW1lbnRPcmRlckFjdGlvbixcbiAgZGVsZXRlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlUGF5bWVudE9yZGVyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckludm9pY2VzQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVySW52b2ljZXNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyUGF5bWVudE9yZGVyc0FjdGlvbixcbiAgbGlzdE1lbWJlclBheW1lbnRPcmRlcnNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyUGF5bWVudE9yZGVyc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlSW52b2ljZVN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZUZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0QWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlU3dpc2hRUkNvZGVBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJTd2lzaFFSQ29kZUFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJBY3Rpb24sXG4gIHJldHJpZXZlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVBheW1lbnRPcmRlclN3aXNoUVJDb2RlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQYXltZW50T3JkZXJTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29TdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljSW52b2ljZVN3aXNoUVJDb2RlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckFjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ29BY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRBY3Rpb24sXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHtleGhhdXN0TWFwLCBmb3JrSm9pbiwgbWVyZ2VNYXAsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDbHViSW1hZ2UsXG4gIENvbGxlY3Rpb24sXG4gIE1lbWJlckludm9pY2UsXG4gIFBheW1lbnRBdHRlbXB0LFxuICBQYXltZW50T3JkZXIsXG4gIFNlYXJjaE1lbWJlckludm9pY2UsXG4gIFN3aXNoUXJDb2RlXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEludm9pY2VFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBpbnZvaWNlU2VydmljZSA9IGluamVjdChJbnZvaWNlU2VydmljZSk7XG4gIHByaXZhdGUgcGF5bWVudE9yZGVyU2VydmljZSA9IGluamVjdChQYXltZW50T3JkZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwYXltZW50QXR0ZW1wdFNlcnZpY2UgPSBpbmplY3QoUGF5bWVudEF0dGVtcHRTZXJ2aWNlKTtcblxuICBjcmVhdGVNZW1iZXJJbnZvaWNlTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvTWVtYmVySW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9JbnZvaWNlUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVNb25kaWRvSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlckludm9pY2VTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaE1lbWJlckludm9pY2VQYXltZW50QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHRlbGVwaG9uZU51bWJlcjogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCAnc3dpc2gnLCBwYXlsb2FkLnRlbGVwaG9uZU51bWJlcilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclBheW1lbnRPcmRlck1vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb01lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZCwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVNZW1iZXJQYXltZW50T3JkZXJTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaE1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQucGF5bWVudE9yZGVySWQsICdzd2lzaCcsIHBheWxvYWQudGVsZXBob25lTnVtYmVyKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZU1lbWJlclppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlck1lbWJlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZU1lbWJlckludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLm1lbWJlcklkLCBwYXlsb2FkLmludm9pY2VJZCwgJ3ppbXBsZXInKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVppbXBsZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNJbnZvaWNlTW9uZGlkb1BheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVNb25kaWRvUHVibGljSW52b2ljZVBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9JbnZvaWNlUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVNb25kaWRvSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY0ludm9pY2VTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaFB1YmxpY0ludm9pY2VQYXltZW50QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcsIHRlbGVwaG9uZU51bWJlcjogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlUHVibGljSW52b2ljZVBheW1lbnRBdHRlbXB0KHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnRva2VuLCAnc3dpc2gnLCBwYXlsb2FkLnRlbGVwaG9uZU51bWJlcilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiBjcmVhdGVTd2lzaEludm9pY2VQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVN3aXNoSW52b2ljZVBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1BheW1lbnRPcmRlck1vbmRpZG9QYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlTW9uZGlkb1B1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuY3JlYXRlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHQocGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC50b2tlbiwgJ21vbmRpZG8nKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZU1vbmRpZG9QYXltZW50T3JkZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVQdWJsaWNQYXltZW50T3JkZXJTd2lzaFBheW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVTd2lzaFB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCB0ZWxlcGhvbmVOdW1iZXI6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4sICdzd2lzaCcsIHBheWxvYWQudGVsZXBob25lTnVtYmVyKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVN3aXNoUGF5bWVudE9yZGVyUGF5bWVudFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVTd2lzaFBheW1lbnRPcmRlclBheW1lbnRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGNyZWF0ZVB1YmxpY1ppbXBsZXJQYXltZW50JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlWmltcGxlclB1YmxpY1BheW1lbnRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmNyZWF0ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdChwYXlsb2FkLmludm9pY2VJZCwgcGF5bG9hZC50b2tlbiwgJ3ppbXBsZXInKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50QXR0ZW1wdDogUGF5bWVudEF0dGVtcHQpID0+IGNyZWF0ZVppbXBsZXJQYXltZW50U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZVppbXBsZXJQYXltZW50RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVySW52b2ljZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVySW52b2ljZXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBcnJheTxzdHJpbmc+IH0pID0+XG4gICAgICAgIGZvcmtKb2luKFxuICAgICAgICAgIHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5pbnZvaWNlU2VydmljZS5nZXRNZW1iZXJJbnZvaWNlcyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChpbnZvaWNlczogQ29sbGVjdGlvbjxTZWFyY2hNZW1iZXJJbnZvaWNlPikgPT4gKHtpZCwgaW52b2ljZXM6IGludm9pY2VzLnRvQXJyYXkoKX0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHtpZCwgZXJyb3J9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7XG4gICAgICAgICAgICBpZDogc3RyaW5nLFxuICAgICAgICAgICAgaW52b2ljZXM/OiBBcnJheTxTZWFyY2hNZW1iZXJJbnZvaWNlPixcbiAgICAgICAgICAgIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2VcbiAgICAgICAgICB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW52b2ljZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxTZWFyY2hNZW1iZXJJbnZvaWNlPj4oKTtcbiAgICAgICAgICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdHMuZmlsdGVyKHJlc3VsdCA9PiByZXN1bHQuZXJyb3IpO1xuICAgICAgICAgICAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGxpc3RNZW1iZXJJbnZvaWNlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZX0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pbnZvaWNlcykge1xuICAgICAgICAgICAgICAgIGludm9pY2VNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0Lmludm9pY2VzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVySW52b2ljZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbnZvaWNlTWFwfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJJbnZvaWNlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJJbnZvaWNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmludm9pY2VTZXJ2aWNlLmdldE1lbWJlckludm9pY2UocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5pbnZvaWNlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGludm9pY2U6IE1lbWJlckludm9pY2UpID0+IHJldHJpZXZlTWVtYmVySW52b2ljZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGludm9pY2V9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVySW52b2ljZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdE1lbWJlclBheW1lbnRPcmRlcnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShsaXN0TWVtYmVyUGF5bWVudE9yZGVyc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IEFycmF5PHN0cmluZz4gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgcGF5bG9hZC5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLnBheW1lbnRPcmRlclNlcnZpY2UuZ2V0TWVtYmVyUGF5bWVudE9yZGVycyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChwYXltZW50T3JkZXJzOiBDb2xsZWN0aW9uPFBheW1lbnRPcmRlcj4pID0+ICh7aWQsIHBheW1lbnRPcmRlcnM6IHBheW1lbnRPcmRlcnMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgcGF5bWVudE9yZGVycz86IEFycmF5PFBheW1lbnRPcmRlcj4sIGVycm9yPzogSHR0cEVycm9yUmVzcG9uc2UgfT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBheW1lbnRPcmRlck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxQYXltZW50T3JkZXI+PigpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclBheW1lbnRPcmRlcnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2V9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQucGF5bWVudE9yZGVycykge1xuICAgICAgICAgICAgICAgIHBheW1lbnRPcmRlck1hcC5zZXQocmVzdWx0LmlkLCByZXN1bHQucGF5bWVudE9yZGVycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlclBheW1lbnRPcmRlcnNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50T3JkZXJNYXB9KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVBheW1lbnRPcmRlciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUGF5bWVudE9yZGVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudE9yZGVyU2VydmljZS5nZXRNZW1iZXJQYXltZW50T3JkZXIocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudE9yZGVyOiBQYXltZW50T3JkZXIpID0+IHJldHJpZXZlUGF5bWVudE9yZGVyU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudE9yZGVyfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVBheW1lbnRPcmRlckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlUGF5bWVudE9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZGVsZXRlUGF5bWVudE9yZGVyQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudE9yZGVyU2VydmljZS5kZWxldGVNZW1iZXJQYXltZW50T3JkZXIocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVBheW1lbnRPcmRlclN1Y2Nlc3NBY3Rpb24oKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVQYXltZW50T3JkZXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVySW52b2ljZVBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gcmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50QXR0ZW1wdH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJJbnZvaWNlUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVySW52b2ljZVN3aXNoUVJDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJJbnZvaWNlU3dpc2hRUkNvZGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyBtZW1iZXJJZDogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVySW52b2ljZVN3aXNoUVJDb2RlKHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQuaW52b2ljZUlkLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN3aXNoUVJDb2RlOiBTd2lzaFFyQ29kZSkgPT4gcmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBzd2lzaFFSQ29kZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVJbnZvaWNlU3dpc2hRUkNvZGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclN3aXNoUVJDb2RlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgbWVtYmVySWQ6IHN0cmluZywgcGF5bWVudE9yZGVySWQ6IHN0cmluZywgcGF5bWVudEF0dGVtcHRJZDogbnVtYmVyIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50QXR0ZW1wdFNlcnZpY2UuZ2V0TWVtYmVyUGF5bWVudE9yZGVyU3dpc2hRUkNvZGUocGF5bG9hZC5tZW1iZXJJZCwgcGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC5wYXltZW50QXR0ZW1wdElkKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChzd2lzaFFSQ29kZTogU3dpc2hRckNvZGUpID0+IHJldHJpZXZlUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBzd2lzaFFSQ29kZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQYXltZW50T3JkZXJTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNJbnZvaWNlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdG9rZW46IHN0cmluZywgaW52b2ljZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmludm9pY2VTZXJ2aWNlLmdldFB1YmxpY0ludm9pY2UocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGludm9pY2U6IE1lbWJlckludm9pY2UpID0+IHJldHJpZXZlUHVibGljSW52b2ljZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGludm9pY2V9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljSW52b2ljZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nbyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBpbnZvaWNlSWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuaW52b2ljZVNlcnZpY2UuZ2V0UHVibGljSW52b2ljZUxvZ28ocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGltYWdlOiBDbHViSW1hZ2UpID0+IHJldHJpZXZlUHVibGljSW52b2ljZUxvZ29TdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBpbWFnZX0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVQdWJsaWNJbnZvaWNlTG9nb0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNJbnZvaWNlUGF5bWVudEF0dGVtcHQocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiByZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY0ludm9pY2VQYXltZW50QXR0ZW1wdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNJbnZvaWNlU3dpc2hRUkNvZGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY0ludm9pY2VTd2lzaFFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIGludm9pY2VJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNJbnZvaWNlU3dpc2hRUkNvZGUocGF5bG9hZC5pbnZvaWNlSWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHN3aXNoUVJDb2RlfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUludm9pY2VTd2lzaFFSQ29kZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cblxuICByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdEFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IG1lbWJlcklkOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldE1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0KHBheWxvYWQubWVtYmVySWQsIHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgocGF5bWVudEF0dGVtcHQ6IFBheW1lbnRBdHRlbXB0KSA9PiByZXRyaWV2ZU1lbWJlclBheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogcGF5bWVudEF0dGVtcHR9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50T3JkZXJTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlcihwYXlsb2FkLnBheW1lbnRPcmRlcklkLCBwYXlsb2FkLnRva2VuKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChwYXltZW50T3JkZXI6IFBheW1lbnRPcmRlcikgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBwYXltZW50T3JkZXJ9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ28kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlckxvZ29BY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5wYXltZW50T3JkZXJTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlckxvZ28ocGF5bG9hZC5wYXltZW50T3JkZXJJZCwgcGF5bG9hZC50b2tlbilcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoaW1hZ2U6IENsdWJJbWFnZSkgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJMb2dvU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogaW1hZ2V9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyTG9nb0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlUHVibGljUGF5bWVudE9yZGVyUGF5bWVudEF0dGVtcHRBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0b2tlbjogc3RyaW5nLCBwYXltZW50T3JkZXJJZDogc3RyaW5nLCBwYXltZW50QXR0ZW1wdElkOiBudW1iZXIgfVxuICAgICAgICB9KSA9PiB0aGlzLnBheW1lbnRBdHRlbXB0U2VydmljZS5nZXRQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdChwYXlsb2FkLnBheW1lbnRPcmRlcklkLCBwYXlsb2FkLnRva2VuLCBwYXlsb2FkLnBheW1lbnRBdHRlbXB0SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHBheW1lbnRBdHRlbXB0OiBQYXltZW50QXR0ZW1wdCkgPT4gcmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJQYXltZW50QXR0ZW1wdFN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHBheW1lbnRBdHRlbXB0fSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclBheW1lbnRBdHRlbXB0RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVQdWJsaWNQYXltZW50T3JkZXJTd2lzaFFSQ29kZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRva2VuOiBzdHJpbmcsIHBheW1lbnRPcmRlcklkOiBzdHJpbmcsIHBheW1lbnRBdHRlbXB0SWQ6IG51bWJlciB9XG4gICAgICAgIH0pID0+IHRoaXMucGF5bWVudEF0dGVtcHRTZXJ2aWNlLmdldFB1YmxpY1BheW1lbnRPcmRlclN3aXNoUVJDb2RlKHBheWxvYWQucGF5bWVudE9yZGVySWQsIHBheWxvYWQudG9rZW4sIHBheWxvYWQucGF5bWVudEF0dGVtcHRJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3dpc2hRUkNvZGU6IFN3aXNoUXJDb2RlKSA9PiByZXRyaWV2ZVBheW1lbnRPcmRlclN3aXNoUVJDb2RlU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogc3dpc2hRUkNvZGV9KSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlUGF5bWVudE9yZGVyU3dpc2hRUkNvZGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
|
|
@@ -1,54 +1,105 @@
|
|
|
1
1
|
import { initialBookingState } from '../state';
|
|
2
2
|
import { createReducer, on } from '@ngrx/store';
|
|
3
|
-
import { clearStoreAction, listActivityTypeSuccessAction, listBookableGroupSuccessAction, listBookableItemSuccessAction, listBookableTagSuccessAction, listCalendarSuccessAction, listLocationSuccessAction, listTeamSuccessAction, resetBookingStateAction, retrieveBookingSettingsSuccessAction, retrieveSettingsSuccessAction, selectCurrentCalendarAction, updateBookingFilterAction } from '../actions';
|
|
3
|
+
import { clearStoreAction, listActivityTypeFailureAction, listActivityTypeSuccessAction, listBookableGroupFailureAction, listBookableGroupSuccessAction, listBookableItemFailureAction, listBookableItemSuccessAction, listBookableTagFailureAction, listBookableTagSuccessAction, listCalendarFailureAction, listCalendarSuccessAction, listLocationFailureAction, listLocationSuccessAction, listMemberBookingCalendarBookableSlotsFailureAction, listMemberBookingCalendarBookableSlotsSuccessAction, listMemberBookingCalendarSlotSessionFailureAction, listMemberBookingCalendarSlotSessionSuccessAction, listMemberCalendarFailureAction, listMemberCalendarSuccessAction, listTeamFailureAction, listTeamSuccessAction, resetBookingStateAction, retrieveBookingSettingsFailureAction, retrieveBookingSettingsSuccessAction, retrieveSettingsFailureAction, retrieveSettingsSuccessAction, selectCurrentCalendarAction, updateBookingFilterAction } from '../actions';
|
|
4
4
|
import { BookingSlotFilter } from '../../models';
|
|
5
|
-
import { listLoadSuccess, retrieveLoadSuccess } from './reducer-helpers';
|
|
5
|
+
import { listLoadFailure, listLoadSuccess, retrieveLoadFailure, retrieveLoadSuccess } from './reducer-helpers';
|
|
6
6
|
export const bookingReducer = createReducer(initialBookingState, on(clearStoreAction, () => initialBookingState), on(listCalendarSuccessAction, (state, { bookingCalendars }) => {
|
|
7
7
|
return {
|
|
8
8
|
...state,
|
|
9
9
|
calendars: listLoadSuccess(bookingCalendars),
|
|
10
10
|
};
|
|
11
|
-
}), on(
|
|
11
|
+
}), on(listCalendarFailureAction, (state, { payload }) => ({
|
|
12
|
+
...state,
|
|
13
|
+
calendars: listLoadFailure(payload)
|
|
14
|
+
})), on(listMemberCalendarSuccessAction, (state, { bookingCalendarsMap }) => {
|
|
15
|
+
return {
|
|
16
|
+
...state,
|
|
17
|
+
memberCalendars: retrieveLoadSuccess(bookingCalendarsMap),
|
|
18
|
+
};
|
|
19
|
+
}), on(listMemberCalendarFailureAction, (state, { payload }) => ({
|
|
20
|
+
...state,
|
|
21
|
+
memberCalendars: retrieveLoadFailure(payload)
|
|
22
|
+
})), on(listMemberBookingCalendarBookableSlotsSuccessAction, (state, { slotsMap }) => {
|
|
23
|
+
return {
|
|
24
|
+
...state,
|
|
25
|
+
memberSlots: retrieveLoadSuccess(slotsMap),
|
|
26
|
+
};
|
|
27
|
+
}), on(listMemberBookingCalendarBookableSlotsFailureAction, (state, { payload }) => ({
|
|
28
|
+
...state,
|
|
29
|
+
memberSlots: retrieveLoadFailure(payload)
|
|
30
|
+
})), on(listMemberBookingCalendarSlotSessionSuccessAction, (state, { sessionsMap }) => {
|
|
31
|
+
return {
|
|
32
|
+
...state,
|
|
33
|
+
memberSessions: retrieveLoadSuccess(sessionsMap),
|
|
34
|
+
};
|
|
35
|
+
}), on(listMemberBookingCalendarSlotSessionFailureAction, (state, { payload }) => ({
|
|
36
|
+
...state,
|
|
37
|
+
memberSessions: retrieveLoadFailure(payload)
|
|
38
|
+
})), on(listLocationSuccessAction, (state, { locations }) => {
|
|
12
39
|
return {
|
|
13
40
|
...state,
|
|
14
41
|
locations: listLoadSuccess(locations),
|
|
15
42
|
};
|
|
16
|
-
}), on(
|
|
43
|
+
}), on(listLocationFailureAction, (state, { payload }) => ({
|
|
44
|
+
...state,
|
|
45
|
+
locations: listLoadFailure(payload)
|
|
46
|
+
})), on(listBookableItemSuccessAction, (state, { items }) => {
|
|
17
47
|
return {
|
|
18
48
|
...state,
|
|
19
49
|
bookableItems: listLoadSuccess(items),
|
|
20
50
|
};
|
|
21
|
-
}), on(
|
|
51
|
+
}), on(listBookableItemFailureAction, (state, { payload }) => ({
|
|
52
|
+
...state,
|
|
53
|
+
bookableItems: listLoadFailure(payload)
|
|
54
|
+
})), on(listBookableGroupSuccessAction, (state, { groups }) => {
|
|
22
55
|
return {
|
|
23
56
|
...state,
|
|
24
57
|
bookableGroups: listLoadSuccess(groups),
|
|
25
58
|
};
|
|
26
|
-
}), on(
|
|
59
|
+
}), on(listBookableGroupFailureAction, (state, { payload }) => ({
|
|
60
|
+
...state,
|
|
61
|
+
bookableGroups: listLoadFailure(payload)
|
|
62
|
+
})), on(listBookableTagSuccessAction, (state, { tags }) => {
|
|
27
63
|
return {
|
|
28
64
|
...state,
|
|
29
65
|
bookableTags: listLoadSuccess(tags),
|
|
30
66
|
};
|
|
31
|
-
}), on(
|
|
67
|
+
}), on(listBookableTagFailureAction, (state, { payload }) => ({
|
|
68
|
+
...state,
|
|
69
|
+
bookableTags: listLoadFailure(payload)
|
|
70
|
+
})), on(listTeamSuccessAction, (state, { teams }) => {
|
|
32
71
|
return {
|
|
33
72
|
...state,
|
|
34
73
|
bookingTeams: listLoadSuccess(teams),
|
|
35
74
|
};
|
|
36
|
-
}), on(
|
|
75
|
+
}), on(listTeamFailureAction, (state, { payload }) => ({
|
|
76
|
+
...state,
|
|
77
|
+
bookingTeams: listLoadFailure(payload)
|
|
78
|
+
})), on(listActivityTypeSuccessAction, (state, { activityTypes }) => {
|
|
37
79
|
return {
|
|
38
80
|
...state,
|
|
39
81
|
activityTypes: listLoadSuccess(activityTypes),
|
|
40
82
|
};
|
|
41
|
-
}), on(
|
|
83
|
+
}), on(listActivityTypeFailureAction, (state, { payload }) => ({
|
|
84
|
+
...state,
|
|
85
|
+
activityTypes: listLoadFailure(payload)
|
|
86
|
+
})), on(retrieveSettingsSuccessAction, (state, { settings }) => {
|
|
42
87
|
return {
|
|
43
88
|
...state,
|
|
44
89
|
bookingActivitySettings: retrieveLoadSuccess(settings),
|
|
45
90
|
};
|
|
46
|
-
}), on(
|
|
91
|
+
}), on(retrieveSettingsFailureAction, (state, { payload }) => ({
|
|
92
|
+
...state,
|
|
93
|
+
bookingActivitySettings: retrieveLoadFailure(payload)
|
|
94
|
+
})), on(retrieveBookingSettingsSuccessAction, (state, { settings }) => {
|
|
47
95
|
return {
|
|
48
96
|
...state,
|
|
49
97
|
bookingSettings: retrieveLoadSuccess(settings),
|
|
50
98
|
};
|
|
51
|
-
}), on(
|
|
99
|
+
}), on(retrieveBookingSettingsFailureAction, (state, { payload }) => ({
|
|
100
|
+
...state,
|
|
101
|
+
bookingSettings: retrieveLoadFailure(payload)
|
|
102
|
+
})), on(selectCurrentCalendarAction, (state, { calendar }) => {
|
|
52
103
|
return {
|
|
53
104
|
...state,
|
|
54
105
|
currentCalendar: calendar,
|
|
@@ -76,4 +127,4 @@ export const bookingReducer = createReducer(initialBookingState, on(clearStoreAc
|
|
|
76
127
|
activityTypes: null,
|
|
77
128
|
};
|
|
78
129
|
}));
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvYm9va2luZy5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5Qiw2QkFBNkIsRUFDN0IsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUN2QixvQ0FBb0MsRUFDcEMsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDMUIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQVVMLGlCQUFpQixFQUVsQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHekUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FDekMsbUJBQW1CLEVBQ25CLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUMvQyxFQUFFLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxLQUFtQixFQUFFLEVBQUMsZ0JBQWdCLEVBRXBFLEVBQUUsRUFBRTtJQUNILE9BQU87UUFDTCxHQUFHLEtBQUs7UUFDUixTQUFTLEVBQUUsZUFBZSxDQUFDLGdCQUFnQixDQUFDO0tBQzdDLENBQUE7QUFDSCxDQUFDLENBQUMsRUFDRixFQUFFLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxLQUFtQixFQUFFLEVBQUMsU0FBUyxFQUF5QyxFQUFFLEVB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LFNBQVMsRUFBRSxJQUFJO1FBQ2YsU0FBUyxFQUFFLElBQUk7UUFDZixhQUFhLEVBQUUsSUFBSTtRQUNuQixjQUFjLEVBQUUsSUFBSTtRQUNwQixZQUFZLEVBQUUsSUFBSTtRQUNsQixhQUFhLEVBQUUsSUFBSTtLQUNwQixDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2tpbmdTdGF0ZSwgaW5pdGlhbEJvb2tpbmdTdGF0ZSB9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7IGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgY2xlYXJTdG9yZUFjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtU3VjY2Vzc0FjdGlvbixcbiAgcmVzZXRCb29raW5nU3RhdGVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHNlbGVjdEN1cnJlbnRDYWxlbmRhckFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0ZpbHRlckFjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQXV0aFRlYW0sXG4gIEJvb2thYmxlR3JvdXAsXG4gIEJvb2thYmxlSXRlbSxcbiAgQm9va2FibGVUYWcsXG4gIEJvb2tpbmdDYWxlbmRhcixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBCb29raW5nU2xvdEZpbHRlcixcbiAgU2VhcmNoVGVhbVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgbGlzdExvYWRTdWNjZXNzLCByZXRyaWV2ZUxvYWRTdWNjZXNzIH0gZnJvbSAnLi9yZWR1Y2VyLWhlbHBlcnMnO1xuXG5cbmV4cG9ydCBjb25zdCBib29raW5nUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gIGluaXRpYWxCb29raW5nU3RhdGUsXG4gIG9uKGNsZWFyU3RvcmVBY3Rpb24sICgpID0+IGluaXRpYWxCb29raW5nU3RhdGUpLFxuICBvbihsaXN0Q2FsZW5kYXJTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge2Jvb2tpbmdDYWxlbmRhcnN9OiB7XG4gICAgYm9va2luZ0NhbGVuZGFyczogQXJyYXk8Qm9va2luZ0NhbGVuZGFyPlxuICB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY2FsZW5kYXJzOiBsaXN0TG9hZFN1Y2Nlc3MoYm9va2luZ0NhbGVuZGFycyksXG4gICAgfVxuICB9KSxcbiAgb24obGlzdExvY2F0aW9uU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBCb29raW5nU3RhdGUsIHtsb2NhdGlvbnN9OiB7IGxvY2F0aW9uczogQXJyYXk8QWN0aXZpdHlMb2NhdGlvbj4gfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGxvY2F0aW9uczogbGlzdExvYWRTdWNjZXNzKGxvY2F0aW9ucyksXG4gICAgfVxuICB9KSxcbiAgb24obGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7aXRlbXN9OiB7IGl0ZW1zOiBBcnJheTxCb29rYWJsZUl0ZW0+IH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBib29rYWJsZUl0ZW1zOiBsaXN0TG9hZFN1Y2Nlc3MoaXRlbXMpLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBCb29raW5nU3RhdGUsIHtncm91cHN9OiB7IGdyb3VwczogQXJyYXk8Qm9va2FibGVHcm91cD4gfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGJvb2thYmxlR3JvdXBzOiBsaXN0TG9hZFN1Y2Nlc3MoZ3JvdXBzKSxcbiAgICB9XG4gIH0pLFxuICBvbihsaXN0Qm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge3RhZ3N9OiB7IHRhZ3M6IEFycmF5PEJvb2thYmxlVGFnPiB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2FibGVUYWdzOiBsaXN0TG9hZFN1Y2Nlc3ModGFncyksXG4gICAgfVxuICB9KSxcbiAgb24obGlzdFRlYW1TdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge3RlYW1zfTogeyB0ZWFtczogQXJyYXk8U2VhcmNoVGVhbSB8IEF1dGhUZWFtPiB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ1RlYW1zOiBsaXN0TG9hZFN1Y2Nlc3ModGVhbXMpLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge2FjdGl2aXR5VHlwZXN9OiB7XG4gICAgYWN0aXZpdHlUeXBlczogQXJyYXk8QWN0aXZpdHlUeXBlPlxuICB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYWN0aXZpdHlUeXBlczogbGlzdExvYWRTdWNjZXNzKGFjdGl2aXR5VHlwZXMpLFxuICAgIH1cbiAgfSksXG4gIG9uKHJldHJpZXZlU2V0dGluZ3NTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge3NldHRpbmdzfTogeyBzZXR0aW5nczogQWN0aXZpdHlTZXR0aW5ncyB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ0FjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlTG9hZFN1Y2Nlc3Moc2V0dGluZ3MpLFxuICAgIH1cbiAgfSksXG4gIG9uKHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBCb29raW5nU3RhdGUsIHtzZXR0aW5nc306IHsgc2V0dGluZ3M6IEJvb2tpbmdTZXR0aW5ncyB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ1NldHRpbmdzOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHNldHRpbmdzKSxcbiAgICB9XG4gIH0pLFxuICBvbihzZWxlY3RDdXJyZW50Q2FsZW5kYXJBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7Y2FsZW5kYXJ9OiB7IGNhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXIgfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGN1cnJlbnRDYWxlbmRhcjogY2FsZW5kYXIsXG4gICAgfVxuICB9KSxcbiAgb24odXBkYXRlQm9va2luZ0ZpbHRlckFjdGlvbiwgKHN0YXRlOiBCb29raW5nU3RhdGUsIHtmaWx0ZXJ9OiB7IGZpbHRlcjogQm9va2luZ1Nsb3RGaWx0ZXIgfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGJvb2tpbmdTbG90RmlsdGVyOiBmaWx0ZXIsXG4gICAgfVxuICB9KSxcbiAgb24ocmVzZXRCb29raW5nU3RhdGVBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlKSA9PiB7XG4gICAgY29uc3QgYm9va2luZ1Nsb3RGaWx0ZXIgPSBuZXcgQm9va2luZ1Nsb3RGaWx0ZXIoKTtcbiAgICBib29raW5nU2xvdEZpbHRlci5zdGFydERhdGUgPSBzdGF0ZS5ib29raW5nU2xvdEZpbHRlci5zdGFydERhdGU7XG4gICAgYm9va2luZ1Nsb3RGaWx0ZXIuZW5kRGF0ZSA9IHN0YXRlLmJvb2tpbmdTbG90RmlsdGVyLmVuZERhdGU7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ1Nsb3RGaWx0ZXI6IGJvb2tpbmdTbG90RmlsdGVyLFxuICAgICAgYm9va2luZ1NldHRpbmdzOiBudWxsLFxuICAgICAgdGVhbXM6IG51bGwsXG4gICAgICBzZXR0aW5nczogbnVsbCxcbiAgICAgIGNhbGVuZGFyczogbnVsbCxcbiAgICAgIGxvY2F0aW9uczogbnVsbCxcbiAgICAgIGJvb2thYmxlSXRlbXM6IG51bGwsXG4gICAgICBib29rYWJsZUdyb3VwczogbnVsbCxcbiAgICAgIGJvb2thYmxlVGFnczogbnVsbCxcbiAgICAgIGFjdGl2aXR5VHlwZXM6IG51bGwsXG4gICAgfVxuICB9KVxuKVxuIl19
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5yZWR1Y2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvcmVkdWNlcnMvYm9va2luZy5yZWR1Y2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsbUJBQW1CLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5Qiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLDZCQUE2QixFQUM3Qiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixtREFBbUQsRUFDbkQsbURBQW1ELEVBQ25ELGlEQUFpRCxFQUNqRCxpREFBaUQsRUFDakQsK0JBQStCLEVBQy9CLCtCQUErQixFQUMvQixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLHVCQUF1QixFQUFFLG9DQUFvQyxFQUM3RCxvQ0FBb0MsRUFBRSw2QkFBNkIsRUFDbkUsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDMUIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQVlMLGlCQUFpQixFQUVsQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRzdHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQ3pDLG1CQUFtQixFQUNuQixFQUFFLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUMsRUFDL0MsRUFBRSxD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QUFPLENBQUM7Q0FDL0QsQ0FBQyxDQUFDLEVBQ0gsRUFBRSxDQUFDLDJCQUEyQixFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFDLFFBQVEsRUFBZ0MsRUFBRSxFQUFFO0lBQ2pHLE9BQU87UUFDTCxHQUFHLEtBQUs7UUFDUixlQUFlLEVBQUUsUUFBUTtLQUMxQixDQUFBO0FBQ0gsQ0FBQyxDQUFDLEVBQ0YsRUFBRSxDQUFDLHlCQUF5QixFQUFFLENBQUMsS0FBbUIsRUFBRSxFQUFDLE1BQU0sRUFBZ0MsRUFBRSxFQUFFO0lBQzdGLE9BQU87UUFDTCxHQUFHLEtBQUs7UUFDUixpQkFBaUIsRUFBRSxNQUFNO0tBQzFCLENBQUE7QUFDSCxDQUFDLENBQUMsRUFDRixFQUFFLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxLQUFtQixFQUFFLEVBQUU7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFDbEQsaUJBQWlCLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7SUFDaEUsaUJBQWlCLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7SUFDNUQsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLGlCQUFpQixFQUFFLGlCQUFpQjtRQUNwQyxlQUFlLEVBQUUsSUFBSTtRQUNyQixLQUFLLEVBQUUsSUFBSTtRQUNYLFFBQVEsRUFBRSxJQUFJO1FBQ2QsU0FBUyxFQUFFLElBQUk7UUFDZixTQUFTLEVBQUUsSUFBSTtRQUNmLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLFlBQVksRUFBRSxJQUFJO1FBQ2xCLGFBQWEsRUFBRSxJQUFJO0tBQ3BCLENBQUE7QUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCb29raW5nU3RhdGUsIGluaXRpYWxCb29raW5nU3RhdGV9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB7Y3JlYXRlUmVkdWNlciwgb259IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIGNsZWFyU3RvcmVBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uLFxuICBsaXN0QWN0aXZpdHlUeXBlU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEJvb2thYmxlR3JvdXBGYWlsdXJlQWN0aW9uLFxuICBsaXN0Qm9va2FibGVHcm91cFN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgbGlzdENhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgbGlzdENhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdExvY2F0aW9uRmFpbHVyZUFjdGlvbixcbiAgbGlzdExvY2F0aW9uU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNGYWlsdXJlQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RUZWFtRmFpbHVyZUFjdGlvbixcbiAgbGlzdFRlYW1TdWNjZXNzQWN0aW9uLFxuICByZXNldEJvb2tpbmdTdGF0ZUFjdGlvbiwgcmV0cmlldmVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sIHJldHJpZXZlU2V0dGluZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgc2VsZWN0Q3VycmVudENhbGVuZGFyQWN0aW9uLFxuICB1cGRhdGVCb29raW5nRmlsdGVyQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHtcbiAgQWN0aXZpdHlMb2NhdGlvbixcbiAgQWN0aXZpdHlTZXR0aW5ncyxcbiAgQWN0aXZpdHlUeXBlLFxuICBBdXRoVGVhbSxcbiAgQm9va2FibGVHcm91cCxcbiAgQm9va2FibGVJdGVtLFxuICBCb29rYWJsZVRhZyxcbiAgQm9va2luZ0NhbGVuZGFyLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBCb29raW5nU2xvdEZpbHRlcixcbiAgU2VhcmNoVGVhbVxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtsaXN0TG9hZEZhaWx1cmUsIGxpc3RMb2FkU3VjY2VzcywgcmV0cmlldmVMb2FkRmFpbHVyZSwgcmV0cmlldmVMb2FkU3VjY2Vzc30gZnJvbSAnLi9yZWR1Y2VyLWhlbHBlcnMnO1xuXG5cbmV4cG9ydCBjb25zdCBib29raW5nUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIoXG4gIGluaXRpYWxCb29raW5nU3RhdGUsXG4gIG9uKGNsZWFyU3RvcmVBY3Rpb24sICgpID0+IGluaXRpYWxCb29raW5nU3RhdGUpLFxuICBvbihsaXN0Q2FsZW5kYXJTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge2Jvb2tpbmdDYWxlbmRhcnN9OiB7XG4gICAgYm9va2luZ0NhbGVuZGFyczogQXJyYXk8Qm9va2luZ0NhbGVuZGFyPlxuICB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgY2FsZW5kYXJzOiBsaXN0TG9hZFN1Y2Nlc3MoYm9va2luZ0NhbGVuZGFycyksXG4gICAgfVxuICB9KSxcbiAgb24obGlzdENhbGVuZGFyRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgY2FsZW5kYXJzOiBsaXN0TG9hZEZhaWx1cmU8Qm9va2luZ0NhbGVuZGFyPihwYXlsb2FkKVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7Ym9va2luZ0NhbGVuZGFyc01hcH06IHtcbiAgICBib29raW5nQ2FsZW5kYXJzTWFwOiBNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXI+PlxuICB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbWVtYmVyQ2FsZW5kYXJzOiByZXRyaWV2ZUxvYWRTdWNjZXNzKGJvb2tpbmdDYWxlbmRhcnNNYXApLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RNZW1iZXJDYWxlbmRhckZhaWx1cmVBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIG1lbWJlckNhbGVuZGFyczogcmV0cmlldmVMb2FkRmFpbHVyZTxNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXI+Pj4ocGF5bG9hZClcbiAgfSkpLFxuICBvbihsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c1N1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7c2xvdHNNYXB9OiB7XG4gICAgc2xvdHNNYXA6IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3Q+PlxuICB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgbWVtYmVyU2xvdHM6IHJldHJpZXZlTG9hZFN1Y2Nlc3Moc2xvdHNNYXApLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgbWVtYmVyU2xvdHM6IHJldHJpZXZlTG9hZEZhaWx1cmU8TWFwPHN0cmluZywgQXJyYXk8Qm9va2luZ0NhbGVuZGFyU2xvdD4+PihwYXlsb2FkKVxuICB9KSksXG4gIG9uKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7c2Vzc2lvbnNNYXB9OiB7XG4gICAgc2Vzc2lvbnNNYXA6IE1hcDxzdHJpbmcsIEFycmF5PEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPj5cbiAgfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIG1lbWJlclNlc3Npb25zOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHNlc3Npb25zTWFwKSxcbiAgICB9XG4gIH0pLFxuICBvbihsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZW1iZXJTZXNzaW9uczogcmV0cmlldmVMb2FkRmFpbHVyZTxNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4+PihwYXlsb2FkKVxuICB9KSksXG4gIG9uKGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7bG9jYXRpb25zfTogeyBsb2NhdGlvbnM6IEFycmF5PEFjdGl2aXR5TG9jYXRpb24+IH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBsb2NhdGlvbnM6IGxpc3RMb2FkU3VjY2Vzcyhsb2NhdGlvbnMpLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RMb2NhdGlvbkZhaWx1cmVBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGxvY2F0aW9uczogbGlzdExvYWRGYWlsdXJlPEFjdGl2aXR5TG9jYXRpb24+KHBheWxvYWQpXG4gIH0pKSxcbiAgb24obGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7aXRlbXN9OiB7IGl0ZW1zOiBBcnJheTxCb29rYWJsZUl0ZW0+IH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBib29rYWJsZUl0ZW1zOiBsaXN0TG9hZFN1Y2Nlc3MoaXRlbXMpLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBib29rYWJsZUl0ZW1zOiBsaXN0TG9hZEZhaWx1cmU8Qm9va2FibGVJdGVtPihwYXlsb2FkKVxuICB9KSksXG4gIG9uKGxpc3RCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBCb29raW5nU3RhdGUsIHtncm91cHN9OiB7IGdyb3VwczogQXJyYXk8Qm9va2FibGVHcm91cD4gfSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGJvb2thYmxlR3JvdXBzOiBsaXN0TG9hZFN1Y2Nlc3MoZ3JvdXBzKSxcbiAgICB9XG4gIH0pLFxuICBvbihsaXN0Qm9va2FibGVHcm91cEZhaWx1cmVBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGJvb2thYmxlR3JvdXBzOiBsaXN0TG9hZEZhaWx1cmU8Qm9va2FibGVHcm91cD4ocGF5bG9hZClcbiAgfSkpLFxuICBvbihsaXN0Qm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge3RhZ3N9OiB7IHRhZ3M6IEFycmF5PEJvb2thYmxlVGFnPiB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2FibGVUYWdzOiBsaXN0TG9hZFN1Y2Nlc3ModGFncyksXG4gICAgfVxuICB9KSxcbiAgb24obGlzdEJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgYm9va2FibGVUYWdzOiBsaXN0TG9hZEZhaWx1cmU8Qm9va2FibGVUYWc+KHBheWxvYWQpXG4gIH0pKSxcbiAgb24obGlzdFRlYW1TdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge3RlYW1zfTogeyB0ZWFtczogQXJyYXk8U2VhcmNoVGVhbSB8IEF1dGhUZWFtPiB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ1RlYW1zOiBsaXN0TG9hZFN1Y2Nlc3ModGVhbXMpLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RUZWFtRmFpbHVyZUFjdGlvbiwgKHN0YXRlLCB7cGF5bG9hZH0pID0+ICh7XG4gICAgLi4uc3RhdGUsXG4gICAgYm9va2luZ1RlYW1zOiBsaXN0TG9hZEZhaWx1cmU8U2VhcmNoVGVhbSB8IEF1dGhUZWFtPihwYXlsb2FkKVxuICB9KSksXG4gIG9uKGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge2FjdGl2aXR5VHlwZXN9OiB7XG4gICAgYWN0aXZpdHlUeXBlczogQXJyYXk8QWN0aXZpdHlUeXBlPlxuICB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYWN0aXZpdHlUeXBlczogbGlzdExvYWRTdWNjZXNzKGFjdGl2aXR5VHlwZXMpLFxuICAgIH1cbiAgfSksXG4gIG9uKGxpc3RBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBhY3Rpdml0eVR5cGVzOiBsaXN0TG9hZEZhaWx1cmU8QWN0aXZpdHlUeXBlPihwYXlsb2FkKVxuICB9KSksXG4gIG9uKHJldHJpZXZlU2V0dGluZ3NTdWNjZXNzQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge3NldHRpbmdzfTogeyBzZXR0aW5nczogQWN0aXZpdHlTZXR0aW5ncyB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ0FjdGl2aXR5U2V0dGluZ3M6IHJldHJpZXZlTG9hZFN1Y2Nlc3Moc2V0dGluZ3MpLFxuICAgIH1cbiAgfSksXG4gIG9uKHJldHJpZXZlU2V0dGluZ3NGYWlsdXJlQWN0aW9uLCAoc3RhdGUsIHtwYXlsb2FkfSkgPT4gKHtcbiAgICAuLi5zdGF0ZSxcbiAgICBib29raW5nQWN0aXZpdHlTZXR0aW5nczogcmV0cmlldmVMb2FkRmFpbHVyZTxBY3Rpdml0eVNldHRpbmdzPihwYXlsb2FkKVxuICB9KSksXG4gIG9uKHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbiwgKHN0YXRlOiBCb29raW5nU3RhdGUsIHtzZXR0aW5nc306IHsgc2V0dGluZ3M6IEJvb2tpbmdTZXR0aW5ncyB9KSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYm9va2luZ1NldHRpbmdzOiByZXRyaWV2ZUxvYWRTdWNjZXNzKHNldHRpbmdzKSxcbiAgICB9XG4gIH0pLFxuICBvbihyZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sIChzdGF0ZSwge3BheWxvYWR9KSA9PiAoe1xuICAgIC4uLnN0YXRlLFxuICAgIGJvb2tpbmdTZXR0aW5nczogcmV0cmlldmVMb2FkRmFpbHVyZTxCb29raW5nU2V0dGluZ3M+KHBheWxvYWQpXG4gIH0pKSxcbiAgb24oc2VsZWN0Q3VycmVudENhbGVuZGFyQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSwge2NhbGVuZGFyfTogeyBjYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyIH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBjdXJyZW50Q2FsZW5kYXI6IGNhbGVuZGFyLFxuICAgIH1cbiAgfSksXG4gIG9uKHVwZGF0ZUJvb2tpbmdGaWx0ZXJBY3Rpb24sIChzdGF0ZTogQm9va2luZ1N0YXRlLCB7ZmlsdGVyfTogeyBmaWx0ZXI6IEJvb2tpbmdTbG90RmlsdGVyIH0pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBib29raW5nU2xvdEZpbHRlcjogZmlsdGVyLFxuICAgIH1cbiAgfSksXG4gIG9uKHJlc2V0Qm9va2luZ1N0YXRlQWN0aW9uLCAoc3RhdGU6IEJvb2tpbmdTdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGJvb2tpbmdTbG90RmlsdGVyID0gbmV3IEJvb2tpbmdTbG90RmlsdGVyKCk7XG4gICAgYm9va2luZ1Nsb3RGaWx0ZXIuc3RhcnREYXRlID0gc3RhdGUuYm9va2luZ1Nsb3RGaWx0ZXIuc3RhcnREYXRlO1xuICAgIGJvb2tpbmdTbG90RmlsdGVyLmVuZERhdGUgPSBzdGF0ZS5ib29raW5nU2xvdEZpbHRlci5lbmREYXRlO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGJvb2tpbmdTbG90RmlsdGVyOiBib29raW5nU2xvdEZpbHRlcixcbiAgICAgIGJvb2tpbmdTZXR0aW5nczogbnVsbCxcbiAgICAgIHRlYW1zOiBudWxsLFxuICAgICAgc2V0dGluZ3M6IG51bGwsXG4gICAgICBjYWxlbmRhcnM6IG51bGwsXG4gICAgICBsb2NhdGlvbnM6IG51bGwsXG4gICAgICBib29rYWJsZUl0ZW1zOiBudWxsLFxuICAgICAgYm9va2FibGVHcm91cHM6IG51bGwsXG4gICAgICBib29rYWJsZVRhZ3M6IG51bGwsXG4gICAgICBhY3Rpdml0eVR5cGVzOiBudWxsLFxuICAgIH1cbiAgfSlcbilcbiJdfQ==
|