@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.
Files changed (93) hide show
  1. package/esm2022/lib/api-models/api-bookable-item.mjs +1 -1
  2. package/esm2022/lib/api-models/api-booking-calendar-application-time.mjs +1 -1
  3. package/esm2022/lib/api-models/api-booking-calendar-slot-session.mjs +1 -1
  4. package/esm2022/lib/api-models/api-booking-calendar-slot.mjs +1 -1
  5. package/esm2022/lib/api-models/api-booking-calendar.mjs +1 -1
  6. package/esm2022/lib/api-models/api-invoice/api-payment-attempt-create.mjs +12 -2
  7. package/esm2022/lib/api-models/api-invoice/api-payment-attempt.mjs +1 -1
  8. package/esm2022/lib/api-models/api-invoice/api-payment-order.mjs +2 -0
  9. package/esm2022/lib/api-models/api-invoice/index.mjs +2 -1
  10. package/esm2022/lib/models/activity-type.mjs +3 -3
  11. package/esm2022/lib/models/bookable-item.mjs +4 -2
  12. package/esm2022/lib/models/booking-calendar-application-time.mjs +6 -2
  13. package/esm2022/lib/models/booking-calendar-slot-session.mjs +8 -2
  14. package/esm2022/lib/models/booking-calendar-slot.mjs +5 -2
  15. package/esm2022/lib/models/booking-calendar.mjs +8 -2
  16. package/esm2022/lib/models/booking-slot-filter.mjs +4 -1
  17. package/esm2022/lib/models/invoice/index.mjs +2 -1
  18. package/esm2022/lib/models/invoice/payment-attempt.mjs +4 -2
  19. package/esm2022/lib/models/invoice/payment-order.mjs +25 -0
  20. package/esm2022/lib/services/activity.service.mjs +17 -6
  21. package/esm2022/lib/services/bookable.service.mjs +46 -14
  22. package/esm2022/lib/services/booking-calendar.service.mjs +94 -26
  23. package/esm2022/lib/services/constant.service.mjs +9 -1
  24. package/esm2022/lib/services/constants.mjs +2 -0
  25. package/esm2022/lib/services/factories/bookable-item-factory.mjs +2 -2
  26. package/esm2022/lib/services/factories/booking-calendar-application-time-factory.mjs +2 -2
  27. package/esm2022/lib/services/factories/booking-calendar-factory.mjs +2 -2
  28. package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +2 -2
  29. package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +2 -2
  30. package/esm2022/lib/services/factories/payment-attempt-factory.mjs +2 -2
  31. package/esm2022/lib/services/factories/payment-order-factory.mjs +5 -0
  32. package/esm2022/lib/services/feature-flags.service.mjs +5 -2
  33. package/esm2022/lib/services/invoice/index.mjs +2 -1
  34. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +44 -19
  35. package/esm2022/lib/services/invoice/payment-order.service.mjs +46 -0
  36. package/esm2022/lib/services/member.service.mjs +5 -2
  37. package/esm2022/lib/services/team.service.mjs +5 -2
  38. package/esm2022/lib/store/actions/booking.actions.mjs +19 -1
  39. package/esm2022/lib/store/actions/constant.actions.mjs +13 -1
  40. package/esm2022/lib/store/actions/invoice.actions.mjs +105 -37
  41. package/esm2022/lib/store/effects/booking.effects.mjs +49 -3
  42. package/esm2022/lib/store/effects/constant.effects.mjs +8 -2
  43. package/esm2022/lib/store/effects/invoice.effects.mjs +89 -29
  44. package/esm2022/lib/store/reducers/booking.reducers.mjs +63 -12
  45. package/esm2022/lib/store/reducers/constant.reducer.mjs +14 -2
  46. package/esm2022/lib/store/reducers/invoice.reducer.mjs +4 -4
  47. package/esm2022/lib/store/selectors/booking.selectors.mjs +4 -1
  48. package/esm2022/lib/store/selectors/constant.selectors.mjs +3 -1
  49. package/esm2022/lib/store/selectors/invoice.selectors.mjs +3 -1
  50. package/esm2022/lib/store/state/booking.state.mjs +4 -1
  51. package/esm2022/lib/store/state/constant.state.mjs +3 -1
  52. package/esm2022/lib/store/state/invoice.state.mjs +3 -1
  53. package/fesm2022/myclub_se-data-access.mjs +689 -152
  54. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  55. package/lib/api-models/api-bookable-item.d.ts +1 -0
  56. package/lib/api-models/api-booking-calendar-application-time.d.ts +2 -0
  57. package/lib/api-models/api-booking-calendar-slot-session.d.ts +3 -0
  58. package/lib/api-models/api-booking-calendar-slot.d.ts +1 -0
  59. package/lib/api-models/api-booking-calendar.d.ts +2 -0
  60. package/lib/api-models/api-invoice/api-payment-attempt-create.d.ts +7 -1
  61. package/lib/api-models/api-invoice/api-payment-attempt.d.ts +2 -1
  62. package/lib/api-models/api-invoice/api-payment-order.d.ts +13 -0
  63. package/lib/api-models/api-invoice/index.d.ts +1 -0
  64. package/lib/models/bookable-item.d.ts +2 -1
  65. package/lib/models/booking-calendar-application-time.d.ts +3 -1
  66. package/lib/models/booking-calendar-slot-session.d.ts +4 -1
  67. package/lib/models/booking-calendar-slot.d.ts +3 -1
  68. package/lib/models/booking-calendar.d.ts +5 -1
  69. package/lib/models/booking-slot-filter.d.ts +1 -0
  70. package/lib/models/invoice/index.d.ts +1 -0
  71. package/lib/models/invoice/payment-attempt.d.ts +3 -2
  72. package/lib/models/invoice/payment-order.d.ts +14 -0
  73. package/lib/services/bookable.service.d.ts +2 -1
  74. package/lib/services/booking-calendar.service.d.ts +2 -0
  75. package/lib/services/constant.service.d.ts +2 -0
  76. package/lib/services/constants.d.ts +1 -0
  77. package/lib/services/factories/payment-order-factory.d.ts +3 -0
  78. package/lib/services/invoice/index.d.ts +1 -0
  79. package/lib/services/invoice/payment-attempt.service.d.ts +14 -7
  80. package/lib/services/invoice/payment-order.service.d.ts +18 -0
  81. package/lib/store/actions/booking.actions.d.ts +60 -0
  82. package/lib/store/actions/constant.actions.d.ts +28 -0
  83. package/lib/store/actions/invoice.actions.d.ts +335 -55
  84. package/lib/store/effects/booking.effects.d.ts +15 -0
  85. package/lib/store/effects/constant.effects.d.ts +10 -0
  86. package/lib/store/effects/invoice.effects.d.ts +89 -25
  87. package/lib/store/selectors/booking.selectors.d.ts +3 -0
  88. package/lib/store/selectors/constant.selectors.d.ts +2 -0
  89. package/lib/store/selectors/invoice.selectors.d.ts +2 -0
  90. package/lib/store/state/booking.state.d.ts +4 -1
  91. package/lib/store/state/constant.state.d.ts +2 -0
  92. package/lib/store/state/invoice.state.d.ts +3 -1
  93. package/package.json +1 -1
@@ -1,9 +1,10 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
3
  import { exhaustMap, map, mergeMap } from 'rxjs/operators';
4
- import { createBookableGroupAction, createBookableGroupFailureAction, createBookableGroupSuccessAction, createBookableItemAction, createBookableItemFailureAction, createBookableItemSuccessAction, createBookableTagAction, createBookableTagFailureAction, createBookableTagSuccessAction, createBookingCalendarAction, createBookingCalendarFailureAction, createBookingCalendarSlotAction, createBookingCalendarSlotFailureAction, createBookingCalendarSlotSessionAction, createBookingCalendarSlotSessionFailureAction, createBookingCalendarSlotSessionSuccessAction, createBookingCalendarSlotSuccessAction, createBookingCalendarSuccessAction, deleteBookableTagAction, deleteBookableTagFailureAction, deleteBookableTagSuccessAction, deleteBookingCalendarAction, deleteBookingCalendarFailureAction, deleteBookingCalendarRepeatableSlotAction, deleteBookingCalendarRepeatableSlotFailureAction, deleteBookingCalendarRepeatableSlotSessionAction, deleteBookingCalendarRepeatableSlotSessionFailureAction, deleteBookingCalendarRepeatableSlotSessionSuccessAction, deleteBookingCalendarRepeatableSlotSuccessAction, deleteBookingCalendarSlotAction, deleteBookingCalendarSlotFailureAction, deleteBookingCalendarSlotSessionAction, deleteBookingCalendarSlotSessionFailureAction, deleteBookingCalendarSlotSessionSuccessAction, deleteBookingCalendarSlotSuccessAction, deleteBookingCalendarSuccessAction, listActivityTypeAction, listActivityTypeFailureAction, listActivityTypeSuccessAction, listBookableGroupAction, listBookableGroupFailureAction, listBookableGroupSuccessAction, listBookableItemAction, listBookableItemFailureAction, listBookableItemSuccessAction, listBookableTagAction, listBookableTagFailureAction, listBookableTagSuccessAction, listCalendarAction, listCalendarFailureAction, listCalendarSuccessAction, listLocationAction, listLocationFailureAction, listLocationSuccessAction, listTeamAction, listTeamFailureAction, listTeamSuccessAction, retrieveBookingSettingsAction, retrieveBookingSettingsFailureAction, retrieveBookingSettingsSuccessAction, retrieveSettingsAction, retrieveSettingsFailureAction, retrieveSettingsSuccessAction, updateActivityTypeAction, updateActivityTypeFailureAction, updateActivityTypeSuccessAction, updateBookableGroupAction, updateBookableGroupFailureAction, updateBookableGroupSuccessAction, updateBookableItemAction, updateBookableItemFailureAction, updateBookableItemSuccessAction, updateBookableTagAction, updateBookableTagFailureAction, updateBookableTagSuccessAction, updateBookingCalendarAction, updateBookingCalendarFailureAction, updateBookingCalendarSlotAction, updateBookingCalendarSlotFailureAction, updateBookingCalendarSlotSessionAction, updateBookingCalendarSlotSessionFailureAction, updateBookingCalendarSlotSessionSuccessAction, updateBookingCalendarSlotSuccessAction, updateBookingCalendarSuccessAction, updateBookingSettingsAction, updateBookingSettingsFailureAction, updateBookingSettingsSuccessAction } from '../actions';
4
+ import { createBookableGroupAction, createBookableGroupFailureAction, createBookableGroupSuccessAction, createBookableItemAction, createBookableItemFailureAction, createBookableItemSuccessAction, createBookableTagAction, createBookableTagFailureAction, createBookableTagSuccessAction, createBookingCalendarAction, createBookingCalendarFailureAction, createBookingCalendarSlotAction, createBookingCalendarSlotFailureAction, createBookingCalendarSlotSessionAction, createBookingCalendarSlotSessionFailureAction, createBookingCalendarSlotSessionSuccessAction, createBookingCalendarSlotSuccessAction, createBookingCalendarSuccessAction, deleteBookableTagAction, deleteBookableTagFailureAction, deleteBookableTagSuccessAction, deleteBookingCalendarAction, deleteBookingCalendarFailureAction, deleteBookingCalendarRepeatableSlotAction, deleteBookingCalendarRepeatableSlotFailureAction, deleteBookingCalendarRepeatableSlotSessionAction, deleteBookingCalendarRepeatableSlotSessionFailureAction, deleteBookingCalendarRepeatableSlotSessionSuccessAction, deleteBookingCalendarRepeatableSlotSuccessAction, deleteBookingCalendarSlotAction, deleteBookingCalendarSlotFailureAction, deleteBookingCalendarSlotSessionAction, deleteBookingCalendarSlotSessionFailureAction, deleteBookingCalendarSlotSessionSuccessAction, deleteBookingCalendarSlotSuccessAction, deleteBookingCalendarSuccessAction, listActivityTypeAction, listActivityTypeFailureAction, listActivityTypeSuccessAction, listBookableGroupAction, listBookableGroupFailureAction, listBookableGroupSuccessAction, listBookableItemAction, listBookableItemFailureAction, listBookableItemSuccessAction, listBookableTagAction, listBookableTagFailureAction, listBookableTagSuccessAction, listCalendarAction, listCalendarFailureAction, listCalendarSuccessAction, listLocationAction, listLocationFailureAction, listLocationSuccessAction, listMemberBookingCalendarBookableSlotsAction, listMemberBookingCalendarBookableSlotsFailureAction, listMemberBookingCalendarBookableSlotsSuccessAction, listMemberBookingCalendarSlotSessionAction, listMemberBookingCalendarSlotSessionFailureAction, listMemberBookingCalendarSlotSessionSuccessAction, listMemberCalendarAction, listMemberCalendarFailureAction, listMemberCalendarSuccessAction, listTeamAction, listTeamFailureAction, listTeamSuccessAction, retrieveBookingSettingsAction, retrieveBookingSettingsFailureAction, retrieveBookingSettingsSuccessAction, retrieveSettingsAction, retrieveSettingsFailureAction, retrieveSettingsSuccessAction, updateActivityTypeAction, updateActivityTypeFailureAction, updateActivityTypeSuccessAction, updateBookableGroupAction, updateBookableGroupFailureAction, updateBookableGroupSuccessAction, updateBookableItemAction, updateBookableItemFailureAction, updateBookableItemSuccessAction, updateBookableTagAction, updateBookableTagFailureAction, updateBookableTagSuccessAction, updateBookingCalendarAction, updateBookingCalendarFailureAction, updateBookingCalendarSlotAction, updateBookingCalendarSlotFailureAction, updateBookingCalendarSlotSessionAction, updateBookingCalendarSlotSessionFailureAction, updateBookingCalendarSlotSessionSuccessAction, updateBookingCalendarSlotSuccessAction, updateBookingCalendarSuccessAction, updateBookingSettingsAction, updateBookingSettingsFailureAction, updateBookingSettingsSuccessAction } from '../actions';
5
+ import { Role, } from '../../models';
5
6
  import { ActivityService, BookableService, BookingCalendarService, TeamService } from '../../services';
6
- import { catchError, of } from 'rxjs';
7
+ import { catchError, forkJoin, of } from 'rxjs';
7
8
  import * as i0 from "@angular/core";
8
9
  export class BookingEffects {
9
10
  actions$ = inject(Actions);
@@ -12,6 +13,51 @@ export class BookingEffects {
12
13
  activityService = inject(ActivityService);
13
14
  teamService = inject(TeamService);
14
15
  listCalendars$ = createEffect(() => this.actions$.pipe(ofType(listCalendarAction), exhaustMap(({ role, clubOrSectionOrTeamId }) => this.bookingCalendarService.getBookingCalendars(role, clubOrSectionOrTeamId).pipe(map((calendars) => listCalendarSuccessAction({ bookingCalendars: calendars.toArray() })))), catchError((error) => of(listCalendarFailureAction({ payload: error })))));
16
+ listMemberCalendars$ = createEffect(() => this.actions$
17
+ .pipe(ofType(listMemberCalendarAction), mergeMap(({ memberIds }) => forkJoin(memberIds.map((id) => this.bookingCalendarService.getBookingCalendars(Role.MemberAdmin, id)
18
+ .pipe(map((calendars) => ({ id, calendars: calendars.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
19
+ const calendarMap = new Map();
20
+ const errors = results.filter(result => result.error);
21
+ if (errors.length) {
22
+ return of(listMemberCalendarFailureAction({ payload: errors[0].error }));
23
+ }
24
+ results.forEach((result) => {
25
+ if (result.calendars) {
26
+ calendarMap.set(result.id, result.calendars);
27
+ }
28
+ });
29
+ return of(listMemberCalendarSuccessAction({ bookingCalendarsMap: calendarMap }));
30
+ })))));
31
+ listMemberSessions$ = createEffect(() => this.actions$
32
+ .pipe(ofType(listMemberBookingCalendarSlotSessionAction), mergeMap(({ memberIds }) => forkJoin(memberIds.map((id) => this.bookingCalendarService.getMemberBookingCalendarSlotSessions(id)
33
+ .pipe(map((sessions) => ({ id, sessions: sessions.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
34
+ const sessionsMap = new Map();
35
+ const errors = results.filter(result => result.error);
36
+ if (errors.length) {
37
+ return of(listMemberBookingCalendarSlotSessionFailureAction({ payload: errors[0].error }));
38
+ }
39
+ results.forEach((result) => {
40
+ if (result.sessions) {
41
+ sessionsMap.set(result.id, result.sessions);
42
+ }
43
+ });
44
+ return of(listMemberBookingCalendarSlotSessionSuccessAction({ sessionsMap: sessionsMap }));
45
+ })))));
46
+ listMemberBookableSlots$ = createEffect(() => this.actions$
47
+ .pipe(ofType(listMemberBookingCalendarBookableSlotsAction), mergeMap(({ bookableId, memberIds, startDate, endDate }) => forkJoin(memberIds.map((id) => this.bookingCalendarService.getMemberBookingCalendarBookableSlots(id, bookableId, startDate, endDate)
48
+ .pipe(map((slots) => ({ id, slots: slots.toArray() })), catchError((error) => of({ id, error }))))).pipe(mergeMap((results) => {
49
+ const slotsMap = new Map();
50
+ const errors = results.filter(result => result.error);
51
+ if (errors.length) {
52
+ return of(listMemberBookingCalendarBookableSlotsFailureAction({ payload: errors[0].error }));
53
+ }
54
+ results.forEach((result) => {
55
+ if (result.slots) {
56
+ slotsMap.set(result.id, result.slots);
57
+ }
58
+ });
59
+ return of(listMemberBookingCalendarBookableSlotsSuccessAction({ slotsMap: slotsMap }));
60
+ })))));
15
61
  listLocations$ = createEffect(() => this.actions$.pipe(ofType(listLocationAction), exhaustMap(({ role, clubOrSectionOrTeamId }) => this.activityService.getActivityLocations(role, clubOrSectionOrTeamId, true).pipe(map((locations) => listLocationSuccessAction({ locations: locations.toArray() })))), catchError((error) => of(listLocationFailureAction({ payload: error })))));
16
62
  listBookableItems$ = createEffect(() => this.actions$.pipe(ofType(listBookableItemAction), exhaustMap(({ role, clubOrSectionOrTeamId }) => this.bookableService.getBookableItems(role, clubOrSectionOrTeamId).pipe(map((bookableItems) => listBookableItemSuccessAction({ items: bookableItems.toArray() })))), catchError((error) => of(listBookableItemFailureAction({ payload: error })))));
17
63
  listBookableGroups$ = createEffect(() => this.actions$.pipe(ofType(listBookableGroupAction), exhaustMap(({ role, clubOrSectionOrTeamId }) => this.bookableService.getBookableGroups(role, clubOrSectionOrTeamId).pipe(map((bookableGroups) => listBookableGroupSuccessAction({ groups: bookableGroups.toArray() })))), catchError((error) => of(listBookableGroupFailureAction({ payload: error })))));
@@ -99,4 +145,4 @@ export class BookingEffects {
99
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: BookingEffects, decorators: [{
100
146
  type: Injectable
101
147
  }] });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2tpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMseUNBQXlDLEVBQ3pDLGdEQUFnRCxFQUNoRCxnREFBZ0QsRUFDaEQsdURBQXVELEVBQ3ZELHVEQUF1RCxFQUN2RCxnREFBZ0QsRUFDaEQsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsNEJBQTRCLEVBQzVCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGtCQUFrQixFQUNsQix5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3BDLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ25DLE1BQU0sWUFBWSxDQUFDO0FBZ0JwQixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLdEMsTUFBTSxPQUFPLGNBQWM7SUFDakIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixzQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN4RCxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDMUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUUxQyxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNwRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFDMUIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQ3JGLEdBQUcsQ0FDRCxDQUFDLFNBQXNDLEVBQUUsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FDL0csQ0FDRixDQUNGLEVBQ0QsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUMxRixDQUFDLENBQUM7SUFFSCxjQUFjLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNwRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFDMUIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDckYsR0FBRyxDQUNELENBQUMsU0FBbUQsRUFBRSxFQUFFLENBQUMseUJBQXlCLENBQUMsRUFBQyxTQUFTLEVBQUcsU0FBMEMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxDQUFDLENBQ3ZKLENBQ0YsQ0FDRixFQUNELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUYsQ0FBQyxDQUFDO0lBRUgsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsc0JBQXNCLENBQUMsRUFDOUIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUMzRSxHQUFHLENBQ0QsQ0FBQyxhQUFtRCxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLEtBQUssRUFBRyxhQUEwQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FDdkosQ0FDRixDQUNGLEVBQ0QsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDZCQUE2QixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RixDQUFDLENBQUM7SUFFSCxtQkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3pELE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxFQUMvQixVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFHNUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQzVFLEdBQUcsQ0FDRCxDQUFDLGNBQXFELEVBQUUsRUFBRSxDQUFDLDhCQUE4QixDQUFDLEVBQUMsTUFBTSxFQUFHLGNBQTRDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUM3SixDQUNGLENBQ0YsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsOEJBQThCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQy9GLENBQUMsQ0FBQztJQUVILGlCQUFpQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkQsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQzdCLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUc1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQzFFLEdBQUcsQ0FDRCxDQUFDLFlBQWlELEVBQUUsRUFBRSxDQUFDLDRCQUE0QixDQUFDLEVBQUMsSUFBSSxFQUFHLFlBQXdDLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUNqSixDQUNGLENBQ0YsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzdGLENBQUMsQ0FBQztJQUVILFVBQVUsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hELE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFDdEIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FDL0QsR0FBRyxDQUNELENBQUMsS0FBNkIsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FDbkYsQ0FDRixDQUNGLEVBQ0QsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUN0RixDQUFDLENBQUM7SUFFSCxpQkFBaUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUM5QixVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFHNUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQzlFLEdBQUcsQ0FDRCxDQUFDLFFBQTBCLEVBQUUsRUFBRSxDQUFDLDZCQUE2QixDQUFDLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQ3BGLENBQ0YsQ0FDRixFQUNELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUYsQ0FBQyxDQUFBO0lBRUYsd0JBQXdCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM5RCxNQUFNLENBQUMsNkJBQTZCLENBQUMsRUFDckMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQ3BGLEdBQUcsQ0FDRCxDQUFDLGVBQWdDLEVBQUUsRUFBRSxDQUFDLG9DQUFvQyxDQUFDLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBQyxDQUFDLENBQ3hHLENBQ0YsQ0FDRixFQUNELFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxvQ0FBb0MsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckcsQ0FBQyxDQUFBO0lBRUYsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsc0JBQXNCLENBQUMsRUFDOUIsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBRzVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUMsSUFBSSxDQUMzRSxHQUFHLENBQ0QsQ0FBQyxhQUF1QyxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxFQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUNySCxDQUNGLENBQ0YsRUFDRCxVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQzlGLENBQUMsQ0FBQztJQUVILG1CQUFtQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDekQsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEVBQ2hDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFJMUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUMzRixRQUFRLENBQUMsQ0FBQyxZQUEwQixFQUFFLEVBQUUsQ0FBQztRQUN2QywrQkFBK0IsQ0FBQyxFQUFDLFlBQVksRUFBRSxZQUFZLEVBQUMsQ0FBQztRQUM3RCxzQkFBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ3RELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsK0JBQStCLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2hHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxtQkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3pELE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNoQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBSWxDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDeEYsUUFBUSxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFLENBQUM7UUFDdkMsK0JBQStCLENBQUMsRUFBQyxJQUFJLEVBQUUsWUFBWSxFQUFDLENBQUM7UUFDckQsc0JBQXNCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUN0RCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsbUJBQW1CLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6RCxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFDaEMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUlsQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hGLFFBQVEsQ0FBQyxDQUFDLFlBQTBCLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLCtCQUErQixDQUFDLEVBQUMsSUFBSSxFQUFFLFlBQVksRUFBQyxDQUFDO1FBQ3JELHNCQUFzQixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFDLENBQUM7UUFDckQsdUJBQXVCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUN2RCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsdUJBQXVCLENBQUMsRUFDL0IsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUlqQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFDLEdBQUcsR0FBRyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RGLFFBQVEsQ0FBQyxDQUFDLEdBQWdCLEVBQUUsRUFBRSxDQUFDO1FBQzdCLDhCQUE4QixDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxDQUFDO1FBQzFDLHFCQUFxQixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFDLENBQUM7S0FDckQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0YsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILGtCQUFrQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDeEQsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEVBQy9CLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsRUFJakMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLEdBQUcsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RixRQUFRLENBQUMsQ0FBQyxHQUFnQixFQUFFLEVBQUUsQ0FBQztRQUM3Qiw4QkFBOEIsQ0FBQyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsQ0FBQztLQUMzQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDhCQUE4QixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUMvRixDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN4RCxNQUFNLENBQUMsdUJBQXVCLENBQUMsRUFDL0IsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUlqQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ2pGLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLDhCQUE4QixDQUFDLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBQyxDQUFDO1FBQzFDLHFCQUFxQixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFDLENBQUM7S0FDckQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDL0YsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILG9CQUFvQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDMUQsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQ2pDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFJbkMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLEtBQUssRUFBQyxDQUFDLENBQUMsSUFBSSxDQUMxRixRQUFRLENBQUMsQ0FBQyxhQUE0QixFQUFFLEVBQUUsQ0FBQztRQUN6QyxnQ0FBZ0MsQ0FBQyxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUMsQ0FBQztRQUN4RCx1QkFBdUIsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ3ZELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxvQkFBb0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFELE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxFQUNqQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBSW5DLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxLQUFLLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDMUYsUUFBUSxDQUFDLENBQUMsYUFBNEIsRUFBRSxFQUFFLENBQUM7UUFDekMsZ0NBQWdDLENBQUMsRUFBQyxLQUFLLEVBQUUsYUFBYSxFQUFDLENBQUM7UUFDeEQsdUJBQXVCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztRQUN0RCxrQkFBa0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ2xELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0NBQWdDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxzQkFBc0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUNuQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBSXRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLFFBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RyxRQUFRLENBQUMsQ0FBQyxlQUFnQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxrQ0FBa0MsQ0FBQyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsQ0FBQztRQUMvRCxrQkFBa0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ2xELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25HLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxzQkFBc0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUNuQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBSXRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLFFBQVEsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUN0RyxRQUFRLENBQUMsQ0FBQyxlQUFnQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxrQ0FBa0MsQ0FBQyxFQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUMsQ0FBQztRQUMvRCxrQkFBa0IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBQyxDQUFDO0tBQ2xELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsa0NBQWtDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25HLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxzQkFBc0IsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzVELE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxFQUNuQyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBSXRDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDcEcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2Isa0NBQWtDLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUM7UUFDeEQsa0JBQWtCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUNsRCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsc0JBQXNCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM1RCxNQUFNLENBQUMsMkJBQTJCLENBQUMsRUFDbkMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUl0QyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDakcsUUFBUSxDQUFDLENBQUMsV0FBNEIsRUFBRSxFQUFFLENBQUM7UUFDekMsa0NBQWtDLENBQUMsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUM7UUFDM0QsNkJBQTZCLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUMsQ0FBQztLQUM3RCxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGtDQUFrQyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNuRyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsMEJBQTBCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoRSxNQUFNLENBQUMsK0JBQStCLENBQUMsRUFDdkMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxFQUlsQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBWSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDOUcsUUFBUSxDQUFDLENBQUMsSUFBeUIsRUFBRSxFQUFFLENBQUM7UUFDdEMsc0NBQXNDLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7S0FDckQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILDBCQUEwQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEUsTUFBTSxDQUFDLCtCQUErQixDQUFDLEVBQ3ZDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFJbEMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RHLFFBQVEsQ0FBQyxDQUFDLElBQXlCLEVBQUUsRUFBRSxDQUFDO1FBQ3RDLHNDQUFzQyxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0tBQ3JELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsc0NBQXNDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZHLENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCwwQkFBMEIsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hFLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxFQUN2QyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBSWxDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDcEcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2Isc0NBQXNDLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7S0FDckQsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxzQ0FBc0MsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILG9DQUFvQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDMUUsTUFBTSxDQUFDLHlDQUF5QyxDQUFDLEVBQ2pELFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxlQUFlLEVBS25ELEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQy9ILFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNiLGdEQUFnRCxDQUFDLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxDQUFDO0tBQy9ELENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0RBQWdELENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2pILENBQUMsQ0FDTCxDQUFDLENBQUM7SUFFSCxpQ0FBaUMsR0FBRyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ3ZFLE1BQU0sQ0FBQyxzQ0FBc0MsQ0FBQyxFQUM5QyxVQUFVLENBQ1IsQ0FBQyxFQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBSXJDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsRUFBQyxHQUFHLE9BQU8sRUFBQyxDQUFDLENBQUMsSUFBSSxDQUNoSCxRQUFRLENBQUMsQ0FBQyxPQUFtQyxFQUFFLEVBQUUsQ0FBQztRQUNoRCw2Q0FBNkMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztLQUNsRSxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDZDQUE2QyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsaUNBQWlDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN2RSxNQUFNLENBQUMsc0NBQXNDLENBQUMsRUFDOUMsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUlyQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUMsR0FBRyxPQUFPLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FDaEgsUUFBUSxDQUFDLENBQUMsT0FBbUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsNkNBQTZDLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7S0FDbEUsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUcsQ0FBQyxDQUNMLENBQUMsQ0FBQztJQUVILGlDQUFpQyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDdkUsTUFBTSxDQUFDLHNDQUFzQyxDQUFDLEVBQzlDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sRUFJckMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdDQUFnQyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM5RyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDYiw2Q0FBNkMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsQ0FBQztLQUNsRSxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLDZDQUE2QyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RyxDQUFDLENBQ0wsQ0FBQyxDQUFDO0lBRUgsMkNBQTJDLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNqRixNQUFNLENBQUMsZ0RBQWdELENBQUMsRUFDeEQsVUFBVSxDQUNSLENBQUMsRUFBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFLdEQsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDBDQUEwQyxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDekksUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2IsdURBQXVELENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7S0FDNUUsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyx1REFBdUQsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDeEgsQ0FBQyxDQUNMLENBQUMsQ0FBQzt1R0F2Y1EsY0FBYzsyR0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBjcmVhdGVCb29rYWJsZUdyb3VwQWN0aW9uLFxuICBjcmVhdGVCb29rYWJsZUdyb3VwRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVHcm91cFN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlSXRlbUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29rYWJsZVRhZ0FjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICBsaXN0QWN0aXZpdHlUeXBlQWN0aW9uLFxuICBsaXN0QWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUdyb3VwQWN0aW9uLFxuICBsaXN0Qm9va2FibGVHcm91cEZhaWx1cmVBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbUFjdGlvbixcbiAgbGlzdEJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uLFxuICBsaXN0Qm9va2FibGVUYWdBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24sXG4gIGxpc3RCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RDYWxlbmRhckFjdGlvbixcbiAgbGlzdENhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgbGlzdENhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdExvY2F0aW9uQWN0aW9uLFxuICBsaXN0TG9jYXRpb25GYWlsdXJlQWN0aW9uLFxuICBsaXN0TG9jYXRpb25TdWNjZXNzQWN0aW9uLFxuICBsaXN0VGVhbUFjdGlvbixcbiAgbGlzdFRlYW1GYWlsdXJlQWN0aW9uLFxuICBsaXN0VGVhbVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc0FjdGlvbixcbiAgcmV0cmlldmVTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlU2V0dGluZ3NTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVBY3Rpdml0eVR5cGVBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2thYmxlR3JvdXBBY3Rpb24sXG4gIHVwZGF0ZUJvb2thYmxlR3JvdXBGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7XG4gIEFjdGl2aXR5TG9jYXRpb24sXG4gIEFjdGl2aXR5U2V0dGluZ3MsXG4gIEFjdGl2aXR5VHlwZSxcbiAgQm9va2FibGVHcm91cCxcbiAgQm9va2FibGVJdGVtLFxuICBCb29rYWJsZVRhZyxcbiAgQm9va2luZ0NhbGVuZGFyLFxuICBCb29raW5nQ2FsZW5kYXJTbG90LFxuICBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgQm9va2luZ1NldHRpbmdzLFxuICBDb2xsZWN0aW9uLFxuICBSb2xlLFxuICBTZWFyY2hUZWFtLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgQWN0aXZpdHlTZXJ2aWNlLCBCb29rYWJsZVNlcnZpY2UsIEJvb2tpbmdDYWxlbmRhclNlcnZpY2UsIFRlYW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCb29raW5nRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYm9va2luZ0NhbGVuZGFyU2VydmljZSA9IGluamVjdChCb29raW5nQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBib29rYWJsZVNlcnZpY2UgPSBpbmplY3QoQm9va2FibGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhY3Rpdml0eVNlcnZpY2UgPSBpbmplY3QoQWN0aXZpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0ZWFtU2VydmljZSA9IGluamVjdChUZWFtU2VydmljZSk7XG5cbiAgbGlzdENhbGVuZGFycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Q2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5nZXRCb29raW5nQ2FsZW5kYXJzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChjYWxlbmRhcnM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyPikgPT4gbGlzdENhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Ym9va2luZ0NhbGVuZGFyczogY2FsZW5kYXJzLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdENhbGVuZGFyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0TG9jYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RMb2NhdGlvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlMb2NhdGlvbnMocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0cnVlKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGxvY2F0aW9uczogQ29sbGVjdGlvbjxBY3Rpdml0eUxvY2F0aW9uPiB8IHVuZGVmaW5lZCkgPT4gbGlzdExvY2F0aW9uU3VjY2Vzc0FjdGlvbih7bG9jYXRpb25zOiAobG9jYXRpb25zIGFzIENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4pLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0TG9jYXRpb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIGxpc3RCb29rYWJsZUl0ZW1zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmdldEJvb2thYmxlSXRlbXMocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGJvb2thYmxlSXRlbXM6IENvbGxlY3Rpb248Qm9va2FibGVJdGVtPiB8IHVuZGVmaW5lZCkgPT4gbGlzdEJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24oe2l0ZW1zOiAoYm9va2FibGVJdGVtcyBhcyBDb2xsZWN0aW9uPEJvb2thYmxlSXRlbT4pLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0Qm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0Qm9va2FibGVHcm91cHMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEJvb2thYmxlR3JvdXBBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmdldEJvb2thYmxlR3JvdXBzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29rYWJsZUdyb3VwczogQ29sbGVjdGlvbjxCb29rYWJsZUdyb3VwPiB8IHVuZGVmaW5lZCkgPT4gbGlzdEJvb2thYmxlR3JvdXBTdWNjZXNzQWN0aW9uKHtncm91cHM6IChib29rYWJsZUdyb3VwcyBhcyBDb2xsZWN0aW9uPEJvb2thYmxlR3JvdXA+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEJvb2thYmxlR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIGxpc3RCb29rYWJsZVRhZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdEJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZVRhZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGJvb2thYmxlVGFnczogQ29sbGVjdGlvbjxCb29rYWJsZVRhZz4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24oe3RhZ3M6IChib29rYWJsZVRhZ3MgYXMgQ29sbGVjdGlvbjxCb29rYWJsZVRhZz4pLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0Qm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIGxpc3RUZWFtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0VGVhbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy50ZWFtU2VydmljZS5nZXRUZWFtcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAodGVhbXM6IENvbGxlY3Rpb248U2VhcmNoVGVhbT4pID0+IGxpc3RUZWFtU3VjY2Vzc0FjdGlvbih7dGVhbXM6IHRlYW1zLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdFRlYW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpO1xuXG4gIHJldHJpZXZlU2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUocmV0cmlldmVTZXR0aW5nc0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UuZ2V0QWN0aXZpdHlTZXR0aW5ncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoc2V0dGluZ3M6IEFjdGl2aXR5U2V0dGluZ3MpID0+IHJldHJpZXZlU2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtzZXR0aW5nczogc2V0dGluZ3N9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSksXG4gICkpXG5cbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUocmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5nZXRCb29raW5nU2V0dGluZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGJvb2tpbmdTZXR0aW5nczogQm9va2luZ1NldHRpbmdzKSA9PiByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3NldHRpbmdzOiBib29raW5nU2V0dGluZ3N9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKVxuXG4gIGxpc3RBY3Rpdml0eVR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RBY3Rpdml0eVR5cGVBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5VHlwZXMocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKGFjdGl2aXR5VHlwZXM6IENvbGxlY3Rpb248QWN0aXZpdHlUeXBlPikgPT4gbGlzdEFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24oe2FjdGl2aXR5VHlwZXM6IGFjdGl2aXR5VHlwZXMudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihsaXN0QWN0aXZpdHlUeXBlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICB1cGRhdGVBY3Rpdml0eVR5cGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQWN0aXZpdHlUeXBlQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGFjdGl2aXR5VHlwZX06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGFjdGl2aXR5VHlwZTogQWN0aXZpdHlUeXBlXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS51cGRhdGVBY3Rpdml0eVR5cGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBhY3Rpdml0eVR5cGUpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZSkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUFjdGl2aXR5VHlwZVN1Y2Nlc3NBY3Rpb24oe2FjdGl2aXR5VHlwZTogYWN0aXZpdHlUeXBlfSksXG4gICAgICAgICAgbGlzdEFjdGl2aXR5VHlwZUFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2FibGVJdGVtJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlSXRlbUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBpdGVtfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgaXRlbTogUGFydGlhbDxCb29rYWJsZUl0ZW0+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5jcmVhdGVCb29rYWJsZUl0ZW0ocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uaXRlbX0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUl0ZW06IEJvb2thYmxlSXRlbSkgPT4gW1xuICAgICAgICAgIGNyZWF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24oe2l0ZW06IGJvb2thYmxlSXRlbX0pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2thYmxlSXRlbSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29rYWJsZUl0ZW1BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgaXRlbX06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UudXBkYXRlQm9va2FibGVJdGVtKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLml0ZW19KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYm9va2FibGVJdGVtOiBCb29rYWJsZUl0ZW0pID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtOiBib29rYWJsZUl0ZW19KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVJdGVtQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVHcm91cEFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2FibGVUYWckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2FibGVUYWdBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgdGFnOiBQYXJ0aWFsPEJvb2thYmxlVGFnPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UuY3JlYXRlQm9va2FibGVUYWcocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4udGFnfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHRhZzogQm9va2FibGVUYWcpID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24oe3RhZzogdGFnfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlVGFnQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLnVwZGF0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnRhZ30pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh0YWc6IEJvb2thYmxlVGFnKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2FibGVUYWckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2FibGVUYWdBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgdGFnOiBCb29rYWJsZVRhZ1xuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UuZGVsZXRlQm9va2FibGVUYWcocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWcpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29rYWJsZVRhZ1N1Y2Nlc3NBY3Rpb24oe3RhZzogdGFnfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlVGFnQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2thYmxlR3JvdXAkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2FibGVHcm91cEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBncm91cH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGdyb3VwOiBQYXJ0aWFsPEJvb2thYmxlR3JvdXA+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5jcmVhdGVCb29rYWJsZUdyb3VwKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLmdyb3VwfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2thYmxlR3JvdXA6IEJvb2thYmxlR3JvdXApID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbih7Z3JvdXA6IGJvb2thYmxlR3JvdXB9KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVHcm91cEFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2thYmxlR3JvdXAkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2FibGVHcm91cEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBncm91cH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGdyb3VwOiBQYXJ0aWFsPEJvb2thYmxlR3JvdXA+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZUdyb3VwKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLmdyb3VwfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2thYmxlR3JvdXA6IEJvb2thYmxlR3JvdXApID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbih7Z3JvdXA6IGJvb2thYmxlR3JvdXB9KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVHcm91cEFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgICAgbGlzdENhbGVuZGFyQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2FibGVHcm91cEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhcn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhcj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5jcmVhdGVCb29raW5nQ2FsZW5kYXIocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uY2FsZW5kYXJ9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYm9va2luZ0NhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXIpID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtjYWxlbmRhcjogYm9va2luZ0NhbGVuZGFyfSksXG4gICAgICAgICAgbGlzdENhbGVuZGFyQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZUJvb2tpbmdDYWxlbmRhcihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5jYWxlbmRhcn0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29raW5nQ2FsZW5kYXI6IEJvb2tpbmdDYWxlbmRhcikgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclN1Y2Nlc3NBY3Rpb24oe2NhbGVuZGFyOiBib29raW5nQ2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShkZWxldGVCb29raW5nQ2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXJ9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXIuaWQpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtjYWxlbmRhcjogY2FsZW5kYXJ9KSxcbiAgICAgICAgICBsaXN0Q2FsZW5kYXJBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nU2V0dGluZ3NBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2V0dGluZ3N9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXR0aW5nczogQm9va2luZ1NldHRpbmdzXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ1NldHRpbmdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2V0dGluZ3MpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChuZXdTZXR0aW5nczogQm9va2luZ1NldHRpbmdzKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2luZ1NldHRpbmdzU3VjY2Vzc0FjdGlvbih7c2V0dGluZ3M6IG5ld1NldHRpbmdzfSksXG4gICAgICAgICAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90fToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90PlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3Qocm9sZSBhcyBSb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5zbG90fSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QpID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbih7c2xvdDogc2xvdH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNsb3R9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCkgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90fToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdFxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3Qocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3QkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdCwgZGVsZXRlVW50aWxEYXRlfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2xvdDogQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgICAgICAgZGVsZXRlVW50aWxEYXRlOiBzdHJpbmcgfCBudWxsXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFJlcGVhdGFibGUocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzbG90LmlkLCBkZWxldGVVbnRpbERhdGUpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNlc3Npb259KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uPlxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnNlc3Npb259KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24pID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb259OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbi5pZCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9uLCBkZWxldGVVbnRpbERhdGV9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzZXNzaW9uOiBCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbixcbiAgICAgICAgZGVsZXRlVW50aWxEYXRlOiBzdHJpbmcgfCBudWxsXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25SZXBlYXRhYmxlKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbi5pZCwgZGVsZXRlVW50aWxEYXRlKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7c2Vzc2lvbjogc2Vzc2lvbn0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG59XG4iXX0=
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2Jvb2tpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQ0FBZ0MsRUFDaEMsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLDJCQUEyQixFQUMzQixrQ0FBa0MsRUFDbEMseUNBQXlDLEVBQ3pDLGdEQUFnRCxFQUNoRCxnREFBZ0QsRUFDaEQsdURBQXVELEVBQ3ZELHVEQUF1RCxFQUN2RCxnREFBZ0QsRUFDaEQsK0JBQStCLEVBQy9CLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsNkNBQTZDLEVBQzdDLDZDQUE2QyxFQUM3QyxzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLHNCQUFzQixFQUN0Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJB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LGNBQWM7MkdBQWQsY0FBYzs7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgbWFwLCBtZXJnZU1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgY3JlYXRlQm9va2FibGVHcm91cEFjdGlvbixcbiAgY3JlYXRlQm9va2FibGVHcm91cEZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlR3JvdXBTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29rYWJsZUl0ZW1BY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlSXRlbVN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnQWN0aW9uLFxuICBjcmVhdGVCb29rYWJsZVRhZ0ZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdEZhaWx1cmVBY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbkFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uLFxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUFjdGlvbixcbiAgbGlzdEFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24sXG4gIGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLFxuICBsaXN0Qm9va2FibGVHcm91cEFjdGlvbixcbiAgbGlzdEJvb2thYmxlR3JvdXBGYWlsdXJlQWN0aW9uLFxuICBsaXN0Qm9va2FibGVHcm91cFN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RCb29rYWJsZUl0ZW1BY3Rpb24sXG4gIGxpc3RCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uLFxuICBsaXN0Qm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgbGlzdEJvb2thYmxlVGFnQWN0aW9uLFxuICBsaXN0Qm9va2FibGVUYWdGYWlsdXJlQWN0aW9uLFxuICBsaXN0Qm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICBsaXN0Q2FsZW5kYXJBY3Rpb24sXG4gIGxpc3RDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIGxpc3RDYWxlbmRhclN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RMb2NhdGlvbkFjdGlvbixcbiAgbGlzdExvY2F0aW9uRmFpbHVyZUFjdGlvbixcbiAgbGlzdExvY2F0aW9uU3VjY2Vzc0FjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhckJvb2thYmxlU2xvdHNTdWNjZXNzQWN0aW9uLFxuICBsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25BY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkZhaWx1cmVBY3Rpb24sXG4gIGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIGxpc3RNZW1iZXJDYWxlbmRhckFjdGlvbixcbiAgbGlzdE1lbWJlckNhbGVuZGFyRmFpbHVyZUFjdGlvbixcbiAgbGlzdE1lbWJlckNhbGVuZGFyU3VjY2Vzc0FjdGlvbixcbiAgbGlzdFRlYW1BY3Rpb24sXG4gIGxpc3RUZWFtRmFpbHVyZUFjdGlvbixcbiAgbGlzdFRlYW1TdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2V0dGluZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlU2V0dGluZ3NBY3Rpb24sXG4gIHJldHJpZXZlU2V0dGluZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVNldHRpbmdzU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQWN0aXZpdHlUeXBlQWN0aW9uLFxuICB1cGRhdGVBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUdyb3VwQWN0aW9uLFxuICB1cGRhdGVCb29rYWJsZUdyb3VwRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVHcm91cFN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2thYmxlSXRlbUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdBY3Rpb24sXG4gIHVwZGF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbixcbiAgdXBkYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbixcbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uLFxuICB1cGRhdGVCb29raW5nU2V0dGluZ3NBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24sXG4gIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQge1xuICBBY3Rpdml0eUxvY2F0aW9uLFxuICBBY3Rpdml0eVNldHRpbmdzLFxuICBBY3Rpdml0eVR5cGUsXG4gIEJvb2thYmxlR3JvdXAsXG4gIEJvb2thYmxlSXRlbSxcbiAgQm9va2FibGVUYWcsXG4gIEJvb2tpbmdDYWxlbmRhcixcbiAgQm9va2luZ0NhbGVuZGFyU2xvdCxcbiAgQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24sXG4gIEJvb2tpbmdTZXR0aW5ncyxcbiAgQ29sbGVjdGlvbixcbiAgUm9sZSxcbiAgU2VhcmNoVGVhbSxcbn0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEFjdGl2aXR5U2VydmljZSwgQm9va2FibGVTZXJ2aWNlLCBCb29raW5nQ2FsZW5kYXJTZXJ2aWNlLCBUZWFtU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgZm9ya0pvaW4sIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCb29raW5nRWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgYm9va2luZ0NhbGVuZGFyU2VydmljZSA9IGluamVjdChCb29raW5nQ2FsZW5kYXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBib29rYWJsZVNlcnZpY2UgPSBpbmplY3QoQm9va2FibGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhY3Rpdml0eVNlcnZpY2UgPSBpbmplY3QoQWN0aXZpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0ZWFtU2VydmljZSA9IGluamVjdChUZWFtU2VydmljZSk7XG5cbiAgbGlzdENhbGVuZGFycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Q2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5nZXRCb29raW5nQ2FsZW5kYXJzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChjYWxlbmRhcnM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyPikgPT4gbGlzdENhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Ym9va2luZ0NhbGVuZGFyczogY2FsZW5kYXJzLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdENhbGVuZGFyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0TWVtYmVyQ2FsZW5kYXJzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUobGlzdE1lbWJlckNhbGVuZGFyQWN0aW9uKSxcbiAgICAgIG1lcmdlTWFwKCh7IG1lbWJlcklkcyB9OiB7IG1lbWJlcklkczogQXJyYXk8c3RyaW5nPiB9KSA9PlxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICBtZW1iZXJJZHMubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmdldEJvb2tpbmdDYWxlbmRhcnMoUm9sZS5NZW1iZXJBZG1pbiwgaWQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoY2FsZW5kYXJzOiBDb2xsZWN0aW9uPEJvb2tpbmdDYWxlbmRhcj4pID0+ICh7IGlkLCBjYWxlbmRhcnM6IGNhbGVuZGFycy50b0FycmF5KCkgfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoeyBpZCwgZXJyb3IgfSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgocmVzdWx0czogQXJyYXk8eyBpZDogc3RyaW5nLCBjYWxlbmRhcnM/OiBBcnJheTxCb29raW5nQ2FsZW5kYXI+LCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlIH0+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYWxlbmRhck1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXI+PigpO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JzID0gcmVzdWx0cy5maWx0ZXIocmVzdWx0ID0+IHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckNhbGVuZGFyRmFpbHVyZUFjdGlvbih7IHBheWxvYWQ6IGVycm9yc1swXS5lcnJvciBhcyBIdHRwRXJyb3JSZXNwb25zZSB9KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXN1bHQuY2FsZW5kYXJzKSB7XG4gICAgICAgICAgICAgICAgY2FsZW5kYXJNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0LmNhbGVuZGFycyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckNhbGVuZGFyU3VjY2Vzc0FjdGlvbih7IGJvb2tpbmdDYWxlbmRhcnNNYXA6IGNhbGVuZGFyTWFwIH0pKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxpc3RNZW1iZXJTZXNzaW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoeyBtZW1iZXJJZHMgfTogeyBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4gfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgbWVtYmVySWRzLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5nZXRNZW1iZXJCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbnMoaWQpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc2Vzc2lvbnM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+KSA9PiAoeyBpZCwgc2Vzc2lvbnM6IHNlc3Npb25zLnRvQXJyYXkoKSB9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7IGlkLCBlcnJvciB9KSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChyZXN1bHRzOiBBcnJheTx7IGlkOiBzdHJpbmcsIHNlc3Npb25zPzogQXJyYXk8Qm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24+LCBlcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlIH0+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj4+KCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHsgcGF5bG9hZDogZXJyb3JzWzBdLmVycm9yIGFzIEh0dHBFcnJvclJlc3BvbnNlIH0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zZXNzaW9ucykge1xuICAgICAgICAgICAgICAgIHNlc3Npb25zTWFwLnNldChyZXN1bHQuaWQsIHJlc3VsdC5zZXNzaW9ucyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gb2YobGlzdE1lbWJlckJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uU3VjY2Vzc0FjdGlvbih7IHNlc3Npb25zTWFwOiBzZXNzaW9uc01hcCB9KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsaXN0TWVtYmVyQm9va2FibGVTbG90cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGxpc3RNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzQWN0aW9uKSxcbiAgICAgIG1lcmdlTWFwKCh7IGJvb2thYmxlSWQsIG1lbWJlcklkcywgc3RhcnREYXRlLCBlbmREYXRlIH06IHsgYm9va2FibGVJZDogc3RyaW5nLCBtZW1iZXJJZHM6IEFycmF5PHN0cmluZz4sIHN0YXJ0RGF0ZTogc3RyaW5nLCBlbmREYXRlOiBzdHJpbmcgfSkgPT5cbiAgICAgICAgZm9ya0pvaW4oXG4gICAgICAgICAgbWVtYmVySWRzLm1hcCgoaWQ6IHN0cmluZykgPT5cbiAgICAgICAgICAgIHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5nZXRNZW1iZXJCb29raW5nQ2FsZW5kYXJCb29rYWJsZVNsb3RzKGlkLCBib29rYWJsZUlkLCBzdGFydERhdGUsIGVuZERhdGUpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoc2xvdHM6IENvbGxlY3Rpb248Qm9va2luZ0NhbGVuZGFyU2xvdD4pID0+ICh7IGlkLCBzbG90czogc2xvdHMudG9BcnJheSgpIH0pKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHsgaWQsIGVycm9yIH0pKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKHJlc3VsdHM6IEFycmF5PHsgaWQ6IHN0cmluZywgc2xvdHM/OiBBcnJheTxCb29raW5nQ2FsZW5kYXJTbG90PiwgZXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZSB9PikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2xvdHNNYXAgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8Qm9va2luZ0NhbGVuZGFyU2xvdD4+KCk7XG4gICAgICAgICAgICBjb25zdCBlcnJvcnMgPSByZXN1bHRzLmZpbHRlcihyZXN1bHQgPT4gcmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c0ZhaWx1cmVBY3Rpb24oeyBwYXlsb2FkOiBlcnJvcnNbMF0uZXJyb3IgYXMgSHR0cEVycm9yUmVzcG9uc2UgfSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzdWx0LnNsb3RzKSB7XG4gICAgICAgICAgICAgICAgc2xvdHNNYXAuc2V0KHJlc3VsdC5pZCwgcmVzdWx0LnNsb3RzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBvZihsaXN0TWVtYmVyQm9va2luZ0NhbGVuZGFyQm9va2FibGVTbG90c1N1Y2Nlc3NBY3Rpb24oeyBzbG90c01hcDogc2xvdHNNYXAgfSkpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGlzdExvY2F0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0TG9jYXRpb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5TG9jYXRpb25zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdHJ1ZSkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChsb2NhdGlvbnM6IENvbGxlY3Rpb248QWN0aXZpdHlMb2NhdGlvbj4gfCB1bmRlZmluZWQpID0+IGxpc3RMb2NhdGlvblN1Y2Nlc3NBY3Rpb24oe2xvY2F0aW9uczogKGxvY2F0aW9ucyBhcyBDb2xsZWN0aW9uPEFjdGl2aXR5TG9jYXRpb24+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdExvY2F0aW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0Qm9va2FibGVJdGVtcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0Qm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZUl0ZW1zKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29rYWJsZUl0ZW1zOiBDb2xsZWN0aW9uPEJvb2thYmxlSXRlbT4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtczogKGJvb2thYmxlSXRlbXMgYXMgQ29sbGVjdGlvbjxCb29rYWJsZUl0ZW0+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEJvb2thYmxlSXRlbUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgbGlzdEJvb2thYmxlR3JvdXBzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RCb29rYWJsZUdyb3VwQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS5nZXRCb29rYWJsZUdyb3Vwcyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoYm9va2FibGVHcm91cHM6IENvbGxlY3Rpb248Qm9va2FibGVHcm91cD4gfCB1bmRlZmluZWQpID0+IGxpc3RCb29rYWJsZUdyb3VwU3VjY2Vzc0FjdGlvbih7Z3JvdXBzOiAoYm9va2FibGVHcm91cHMgYXMgQ29sbGVjdGlvbjxCb29rYWJsZUdyb3VwPikudG9BcnJheSgpfSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RCb29rYWJsZUdyb3VwRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0Qm9va2FibGVUYWdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGxpc3RCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UuZ2V0Qm9va2FibGVUYWdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29rYWJsZVRhZ3M6IENvbGxlY3Rpb248Qm9va2FibGVUYWc+IHwgdW5kZWZpbmVkKSA9PiBsaXN0Qm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWdzOiAoYm9va2FibGVUYWdzIGFzIENvbGxlY3Rpb248Qm9va2FibGVUYWc+KS50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICBsaXN0VGVhbXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUobGlzdFRlYW1BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMudGVhbVNlcnZpY2UuZ2V0VGVhbXMocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKHRlYW1zOiBDb2xsZWN0aW9uPFNlYXJjaFRlYW0+KSA9PiBsaXN0VGVhbVN1Y2Nlc3NBY3Rpb24oe3RlYW1zOiB0ZWFtcy50b0FycmF5KCl9KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGxpc3RUZWFtRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKTtcblxuICByZXRyaWV2ZVNldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHJldHJpZXZlU2V0dGluZ3NBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgIH0pID0+IHRoaXMuYWN0aXZpdHlTZXJ2aWNlLmdldEFjdGl2aXR5U2V0dGluZ3Mocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkKS5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgKHNldHRpbmdzOiBBY3Rpdml0eVNldHRpbmdzKSA9PiByZXRyaWV2ZVNldHRpbmdzU3VjY2Vzc0FjdGlvbih7c2V0dGluZ3M6IHNldHRpbmdzfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZVNldHRpbmdzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpLFxuICApKVxuXG4gIHJldHJpZXZlQm9va2luZ1NldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ1NldHRpbmdzQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuZ2V0Qm9va2luZ1NldHRpbmdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChib29raW5nU2V0dGluZ3M6IEJvb2tpbmdTZXR0aW5ncykgPT4gcmV0cmlldmVCb29raW5nU2V0dGluZ3NTdWNjZXNzQWN0aW9uKHtzZXR0aW5nczogYm9va2luZ1NldHRpbmdzfSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICksXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUJvb2tpbmdTZXR0aW5nc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSlcblxuICBsaXN0QWN0aXZpdHlUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShsaXN0QWN0aXZpdHlUeXBlQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nXG4gICAgICB9KSA9PiB0aGlzLmFjdGl2aXR5U2VydmljZS5nZXRBY3Rpdml0eVR5cGVzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCkucGlwZShcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChhY3Rpdml0eVR5cGVzOiBDb2xsZWN0aW9uPEFjdGl2aXR5VHlwZT4pID0+IGxpc3RBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uKHthY3Rpdml0eVR5cGVzOiBhY3Rpdml0eVR5cGVzLnRvQXJyYXkoKX0pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICApLFxuICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YobGlzdEFjdGl2aXR5VHlwZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKSxcbiAgKSk7XG5cbiAgdXBkYXRlQWN0aXZpdHlUeXBlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUFjdGl2aXR5VHlwZUFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBhY3Rpdml0eVR5cGV9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBhY3Rpdml0eVR5cGU6IEFjdGl2aXR5VHlwZVxuICAgICAgfSkgPT4gdGhpcy5hY3Rpdml0eVNlcnZpY2UudXBkYXRlQWN0aXZpdHlUeXBlKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgYWN0aXZpdHlUeXBlKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYWN0aXZpdHlUeXBlOiBBY3Rpdml0eVR5cGUpID0+IFtcbiAgICAgICAgICB1cGRhdGVBY3Rpdml0eVR5cGVTdWNjZXNzQWN0aW9uKHthY3Rpdml0eVR5cGU6IGFjdGl2aXR5VHlwZX0pLFxuICAgICAgICAgIGxpc3RBY3Rpdml0eVR5cGVBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVBY3Rpdml0eVR5cGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2thYmxlSXRlbSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29rYWJsZUl0ZW1BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgaXRlbX06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGl0ZW06IFBhcnRpYWw8Qm9va2FibGVJdGVtPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UuY3JlYXRlQm9va2FibGVJdGVtKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLml0ZW19KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYm9va2FibGVJdGVtOiBCb29rYWJsZUl0ZW0pID0+IFtcbiAgICAgICAgICBjcmVhdGVCb29rYWJsZUl0ZW1TdWNjZXNzQWN0aW9uKHtpdGVtOiBib29rYWJsZUl0ZW19KSxcbiAgICAgICAgICBsaXN0Qm9va2FibGVJdGVtQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2FibGVJdGVtRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29rYWJsZUl0ZW0kID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2FibGVJdGVtQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGl0ZW19OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBpdGVtOiBQYXJ0aWFsPEJvb2thYmxlSXRlbT5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLnVwZGF0ZUJvb2thYmxlSXRlbShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5pdGVtfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2thYmxlSXRlbTogQm9va2FibGVJdGVtKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2FibGVJdGVtU3VjY2Vzc0FjdGlvbih7aXRlbTogYm9va2FibGVJdGVtfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlSXRlbUFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlR3JvdXBBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29rYWJsZUl0ZW1GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogUGFydGlhbDxCb29rYWJsZVRhZz5cbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmNyZWF0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLnRhZ30pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCh0YWc6IEJvb2thYmxlVGFnKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29rYWJsZVRhZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29rYWJsZVRhZ0FjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB0YWd9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICB0YWc6IFBhcnRpYWw8Qm9va2FibGVUYWc+XG4gICAgICB9KSA9PiB0aGlzLmJvb2thYmxlU2VydmljZS51cGRhdGVCb29rYWJsZVRhZyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi50YWd9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgodGFnOiBCb29rYWJsZVRhZykgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2thYmxlVGFnU3VjY2Vzc0FjdGlvbih7dGFnOiB0YWd9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2FibGVUYWdGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2thYmxlVGFnJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2thYmxlVGFnQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHRhZ306IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHRhZzogQm9va2FibGVUYWdcbiAgICAgIH0pID0+IHRoaXMuYm9va2FibGVTZXJ2aWNlLmRlbGV0ZUJvb2thYmxlVGFnKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgdGFnKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2FibGVUYWdTdWNjZXNzQWN0aW9uKHt0YWc6IHRhZ30pLFxuICAgICAgICAgIGxpc3RCb29rYWJsZVRhZ0FjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2thYmxlVGFnRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29rYWJsZUdyb3VwJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2thYmxlR3JvdXBBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgZ3JvdXB9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBncm91cDogUGFydGlhbDxCb29rYWJsZUdyb3VwPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UuY3JlYXRlQm9va2FibGVHcm91cChyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5ncm91cH0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUdyb3VwOiBCb29rYWJsZUdyb3VwKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2FibGVHcm91cFN1Y2Nlc3NBY3Rpb24oe2dyb3VwOiBib29rYWJsZUdyb3VwfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlR3JvdXBBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVCb29rYWJsZUdyb3VwRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29rYWJsZUdyb3VwJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2thYmxlR3JvdXBBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgZ3JvdXB9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBncm91cDogUGFydGlhbDxCb29rYWJsZUdyb3VwPlxuICAgICAgfSkgPT4gdGhpcy5ib29rYWJsZVNlcnZpY2UudXBkYXRlQm9va2FibGVHcm91cChyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5ncm91cH0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChib29rYWJsZUdyb3VwOiBCb29rYWJsZUdyb3VwKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2FibGVHcm91cFN1Y2Nlc3NBY3Rpb24oe2dyb3VwOiBib29rYWJsZUdyb3VwfSksXG4gICAgICAgICAgbGlzdEJvb2thYmxlR3JvdXBBY3Rpb24oe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZH0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2thYmxlR3JvdXBGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGNyZWF0ZUJvb2tpbmdDYWxlbmRhciQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29raW5nQ2FsZW5kYXJBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgY2FsZW5kYXJ9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBjYWxlbmRhcjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXI+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UuY3JlYXRlQm9va2luZ0NhbGVuZGFyKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgey4uLmNhbGVuZGFyfSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKGJvb2tpbmdDYWxlbmRhcjogQm9va2luZ0NhbGVuZGFyKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Y2FsZW5kYXI6IGJvb2tpbmdDYWxlbmRhcn0pLFxuICAgICAgICAgIGxpc3RDYWxlbmRhckFjdGlvbih7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2tpbmdDYWxlbmRhckZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKHVwZGF0ZUJvb2tpbmdDYWxlbmRhckFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBjYWxlbmRhcn06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhcj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nQ2FsZW5kYXIocm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uY2FsZW5kYXJ9KS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoYm9va2luZ0NhbGVuZGFyOiBCb29raW5nQ2FsZW5kYXIpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTdWNjZXNzQWN0aW9uKHtjYWxlbmRhcjogYm9va2luZ0NhbGVuZGFyfSksXG4gICAgICAgICAgbGlzdENhbGVuZGFyQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXIkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoZGVsZXRlQm9va2luZ0NhbGVuZGFyQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IEJvb2tpbmdDYWxlbmRhclxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhcihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIGNhbGVuZGFyLmlkKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyU3VjY2Vzc0FjdGlvbih7Y2FsZW5kYXI6IGNhbGVuZGFyfSksXG4gICAgICAgICAgbGlzdENhbGVuZGFyQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nU2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUodXBkYXRlQm9va2luZ1NldHRpbmdzQWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNldHRpbmdzfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2V0dGluZ3M6IEJvb2tpbmdTZXR0aW5nc1xuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLnVwZGF0ZUJvb2tpbmdTZXR0aW5ncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNldHRpbmdzKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgobmV3U2V0dGluZ3M6IEJvb2tpbmdTZXR0aW5ncykgPT4gW1xuICAgICAgICAgIHVwZGF0ZUJvb2tpbmdTZXR0aW5nc1N1Y2Nlc3NBY3Rpb24oe3NldHRpbmdzOiBuZXdTZXR0aW5nc30pLFxuICAgICAgICAgIHJldHJpZXZlQm9va2luZ1NldHRpbmdzQWN0aW9uKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YodXBkYXRlQm9va2luZ1NldHRpbmdzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IFBhcnRpYWw8Qm9va2luZ0NhbGVuZGFyU2xvdD5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5jcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUgYXMgUm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCB7Li4uc2xvdH0pLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKChzbG90OiBCb29raW5nQ2FsZW5kYXJTbG90KSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFN1Y2Nlc3NBY3Rpb24oe3Nsb3Q6IHNsb3R9KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdEZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgKSlcbiAgKSk7XG5cbiAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3R9OiB7XG4gICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgIGNsdWJPclNlY3Rpb25PclRlYW1JZDogc3RyaW5nLFxuICAgICAgICBzbG90OiBQYXJ0aWFsPEJvb2tpbmdDYWxlbmRhclNsb3Q+XG4gICAgICB9KSA9PiB0aGlzLmJvb2tpbmdDYWxlbmRhclNlcnZpY2UudXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdChyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5zbG90fSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QpID0+IFtcbiAgICAgICAgICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U3VjY2Vzc0FjdGlvbih7c2xvdDogc2xvdH0pLFxuICAgICAgICBdKSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RBY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdH06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3RcbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXJTbG90KHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdC5pZCkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgb2ZUeXBlKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90QWN0aW9uKSxcbiAgICBleGhhdXN0TWFwKFxuICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNsb3QsIGRlbGV0ZVVudGlsRGF0ZX06IHtcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmcsXG4gICAgICAgIHNsb3Q6IEJvb2tpbmdDYWxlbmRhclNsb3QsXG4gICAgICAgIGRlbGV0ZVVudGlsRGF0ZTogc3RyaW5nIHwgbnVsbFxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RSZXBlYXRhYmxlKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2xvdC5pZCwgZGVsZXRlVW50aWxEYXRlKS5waXBlKFxuICAgICAgICBtZXJnZU1hcCgoKSA9PiBbXG4gICAgICAgICAgZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTdWNjZXNzQWN0aW9uKHtzbG90OiBzbG90fSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShjcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5jcmVhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5zZXNzaW9ufSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKSA9PiBbXG4gICAgICAgICAgY3JlYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGNyZWF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICB1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZSh1cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbjogUGFydGlhbDxCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbj5cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS51cGRhdGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHsuLi5zZXNzaW9ufSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKHNlc3Npb246IEJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uKSA9PiBbXG4gICAgICAgICAgdXBkYXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25TdWNjZXNzQWN0aW9uKHtzZXNzaW9uOiBzZXNzaW9ufSksXG4gICAgICAgIF0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHVwZGF0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxuICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbkFjdGlvbiksXG4gICAgZXhoYXVzdE1hcChcbiAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkLCBzZXNzaW9ufToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25cbiAgICAgIH0pID0+IHRoaXMuYm9va2luZ0NhbGVuZGFyU2VydmljZS5kZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvbihyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb24uaWQpLnBpcGUoXG4gICAgICAgIG1lcmdlTWFwKCgpID0+IFtcbiAgICAgICAgICBkZWxldGVCb29raW5nQ2FsZW5kYXJTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb25GYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICkpXG4gICkpO1xuXG4gIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgIG9mVHlwZShkZWxldGVCb29raW5nQ2FsZW5kYXJSZXBlYXRhYmxlU2xvdFNlc3Npb25BY3Rpb24pLFxuICAgIGV4aGF1c3RNYXAoXG4gICAgICAoe3JvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZCwgc2Vzc2lvbiwgZGVsZXRlVW50aWxEYXRlfToge1xuICAgICAgICByb2xlOiBSb2xlLFxuICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZyxcbiAgICAgICAgc2Vzc2lvbjogQm9va2luZ0NhbGVuZGFyU2xvdFNlc3Npb24sXG4gICAgICAgIGRlbGV0ZVVudGlsRGF0ZTogc3RyaW5nIHwgbnVsbFxuICAgICAgfSkgPT4gdGhpcy5ib29raW5nQ2FsZW5kYXJTZXJ2aWNlLmRlbGV0ZUJvb2tpbmdDYWxlbmRhclNsb3RTZXNzaW9uUmVwZWF0YWJsZShyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQsIHNlc3Npb24uaWQsIGRlbGV0ZVVudGlsRGF0ZSkucGlwZShcbiAgICAgICAgbWVyZ2VNYXAoKCkgPT4gW1xuICAgICAgICAgIGRlbGV0ZUJvb2tpbmdDYWxlbmRhclJlcGVhdGFibGVTbG90U2Vzc2lvblN1Y2Nlc3NBY3Rpb24oe3Nlc3Npb246IHNlc3Npb259KSxcbiAgICAgICAgXSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlQm9va2luZ0NhbGVuZGFyUmVwZWF0YWJsZVNsb3RTZXNzaW9uRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICApKVxuICApKTtcblxufVxuIl19
@@ -1,6 +1,6 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
- import { retrieveActivityMaxAttendantsTypesConstantsAction, retrieveActivityMaxAttendantsTypesConstantsFailureAction, retrieveActivityMaxAttendantsTypesConstantsSuccessAction, retrieveActivityMeetUpTimesConstantsAction, retrieveActivityMeetUpTimesConstantsFailureAction, retrieveActivityMeetUpTimesConstantsSuccessAction, retrieveActivityReminderDaysConstantsAction, retrieveActivityReminderDaysConstantsFailureAction, retrieveActivityReminderDaysConstantsSuccessAction, retrieveActivityReminderReceiversConstantsAction, retrieveActivityReminderReceiversConstantsFailureAction, retrieveActivityReminderReceiversConstantsSuccessAction, retrieveActivityReminderTimesConstantsAction, retrieveActivityReminderTimesConstantsFailureAction, retrieveActivityReminderTimesConstantsSuccessAction, retrieveActivityRepeatOptionsConstantsAction, retrieveActivityRepeatOptionsConstantsFailureAction, retrieveActivityRepeatOptionsConstantsSuccessAction, retrieveActivityRepeatTypeOptionsConstantsAction, retrieveActivityRepeatTypeOptionsConstantsFailureAction, retrieveActivityRepeatTypeOptionsConstantsSuccessAction, retrieveActivitySettingsConstantsAction, retrieveActivitySettingsConstantsFailureAction, retrieveActivitySettingsConstantsSuccessAction, retrieveBookingCalendarStatusesAction, retrieveBookingCalendarStatusesFailureAction, retrieveBookingCalendarStatusesSuccessAction, retrieveBookingCalendarTypesAction, retrieveBookingCalendarTypesFailureAction, retrieveBookingCalendarTypesSuccessAction, retrieveBookingSlotReservedTimePositionsAction, retrieveBookingSlotReservedTimePositionsFailureAction, retrieveBookingSlotReservedTimePositionsSuccessAction, retrieveBookingSlotSessionTypesAction, retrieveBookingSlotSessionTypesFailureAction, retrieveBookingSlotSessionTypesSuccessAction, retrieveBookingSlotTypesAction, retrieveBookingSlotTypesFailureAction, retrieveBookingSlotTypesSuccessAction, retrieveCountriesConstantsAction, retrieveCountriesConstantsFailureAction, retrieveCountriesConstantsSuccessAction, retrieveFeatureFlagsAction, retrieveFeatureFlagsFailureAction, retrieveFeatureFlagsSuccessAction, retrieveLanguagesConstantsAction, retrieveLanguagesConstantsFailureAction, retrieveLanguagesConstantsSuccessAction, retrieveMemberContactTypesConstantsAction, retrieveMemberContactTypesConstantsFailureAction, retrieveMemberContactTypesConstantsSuccessAction } from '../actions';
3
+ import { retrieveActivityMaxAttendantsTypesConstantsAction, retrieveActivityMaxAttendantsTypesConstantsFailureAction, retrieveActivityMaxAttendantsTypesConstantsSuccessAction, retrieveActivityMeetUpTimesConstantsAction, retrieveActivityMeetUpTimesConstantsFailureAction, retrieveActivityMeetUpTimesConstantsSuccessAction, retrieveActivityReminderDaysConstantsAction, retrieveActivityReminderDaysConstantsFailureAction, retrieveActivityReminderDaysConstantsSuccessAction, retrieveActivityReminderReceiversConstantsAction, retrieveActivityReminderReceiversConstantsFailureAction, retrieveActivityReminderReceiversConstantsSuccessAction, retrieveActivityReminderTimesConstantsAction, retrieveActivityReminderTimesConstantsFailureAction, retrieveActivityReminderTimesConstantsSuccessAction, retrieveActivityRepeatOptionsConstantsAction, retrieveActivityRepeatOptionsConstantsFailureAction, retrieveActivityRepeatOptionsConstantsSuccessAction, retrieveActivityRepeatTypeOptionsConstantsAction, retrieveActivityRepeatTypeOptionsConstantsFailureAction, retrieveActivityRepeatTypeOptionsConstantsSuccessAction, retrieveActivitySettingsConstantsAction, retrieveActivitySettingsConstantsFailureAction, retrieveActivitySettingsConstantsSuccessAction, retrieveBookingCalendarStatusesAction, retrieveBookingCalendarStatusesFailureAction, retrieveBookingCalendarStatusesSuccessAction, retrieveBookingCalendarTypesAction, retrieveBookingCalendarTypesFailureAction, retrieveBookingCalendarTypesSuccessAction, retrieveBookingSlotReservedTimePositionsAction, retrieveBookingSlotReservedTimePositionsFailureAction, retrieveBookingSlotReservedTimePositionsSuccessAction, retrieveBookingSlotSessionTypesAction, retrieveBookingSlotSessionTypesFailureAction, retrieveBookingSlotSessionTypesSuccessAction, retrieveBookingSlotTypesAction, retrieveBookingSlotTypesFailureAction, retrieveBookingSlotTypesSuccessAction, retrieveCountriesConstantsAction, retrieveCountriesConstantsFailureAction, retrieveCountriesConstantsSuccessAction, retrieveFeatureFlagsAction, retrieveFeatureFlagsFailureAction, retrieveFeatureFlagsSuccessAction, retrieveLanguagesConstantsAction, retrieveLanguagesConstantsFailureAction, retrieveLanguagesConstantsSuccessAction, retrieveMemberBookingSlotTypesAction, retrieveMemberBookingSlotTypesFailureAction, retrieveMemberBookingSlotTypesSuccessAction, retrieveMemberContactTypesConstantsAction, retrieveMemberContactTypesConstantsFailureAction, retrieveMemberContactTypesConstantsSuccessAction, retrieveTeamBookingSlotTypesAction, retrieveTeamBookingSlotTypesFailureAction, retrieveTeamBookingSlotTypesSuccessAction } from '../actions';
4
4
  import { ConstantService, FeatureFlagsService } from '../../services';
5
5
  import { exhaustMap, of } from 'rxjs';
6
6
  import { catchError, map } from 'rxjs/operators';
@@ -45,6 +45,12 @@ export class ConstantEffects {
45
45
  retrieveBookingSlotTypes$ = createEffect(() => this.actions$
46
46
  .pipe(ofType(retrieveBookingSlotTypesAction), exhaustMap(() => this.constantService.getBookingSlotTypes()
47
47
  .pipe(map((constants) => retrieveBookingSlotTypesSuccessAction({ payload: constants })), catchError((error) => of(retrieveBookingSlotTypesFailureAction({ payload: error })))))));
48
+ retrieveTeamBookingSlotTypes$ = createEffect(() => this.actions$
49
+ .pipe(ofType(retrieveTeamBookingSlotTypesAction), exhaustMap(() => this.constantService.getTeamBookingSlotTypes()
50
+ .pipe(map((constants) => retrieveTeamBookingSlotTypesSuccessAction({ payload: constants })), catchError((error) => of(retrieveTeamBookingSlotTypesFailureAction({ payload: error })))))));
51
+ retrieveMemberBookingSlotTypes$ = createEffect(() => this.actions$
52
+ .pipe(ofType(retrieveMemberBookingSlotTypesAction), exhaustMap(() => this.constantService.getMemberBookingSlotTypes()
53
+ .pipe(map((constants) => retrieveMemberBookingSlotTypesSuccessAction({ payload: constants })), catchError((error) => of(retrieveMemberBookingSlotTypesFailureAction({ payload: error })))))));
48
54
  retrieveBookingSlotReservedTimePositions$ = createEffect(() => this.actions$
49
55
  .pipe(ofType(retrieveBookingSlotReservedTimePositionsAction), exhaustMap(() => this.constantService.getBookingSlotReservedTimePositions()
50
56
  .pipe(map((constants) => retrieveBookingSlotReservedTimePositionsSuccessAction({ payload: constants })), catchError((error) => of(retrieveBookingSlotReservedTimePositionsFailureAction({ payload: error })))))));
@@ -66,4 +72,4 @@ export class ConstantEffects {
66
72
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConstantEffects, decorators: [{
67
73
  type: Injectable
68
74
  }] });
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9jb25zdGFudC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsaURBQWlELEVBQ2pELHdEQUF3RCxFQUN4RCx3REFBd0QsRUFDeEQsMENBQTBDLEVBQzFDLGlEQUFpRCxFQUNqRCxpREFBaUQsRUFDakQsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUNsRCxrREFBa0QsRUFDbEQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsdUNBQXVDLEVBQ3ZDLDhDQUE4QyxFQUM5Qyw4Q0FBOEMsRUFDOUMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsa0NBQWtDLEVBQ2xDLHlDQUF5QyxFQUN6Qyx5Q0FBeUMsRUFDekMsOENBQThDLEVBQzlDLHFEQUFxRCxFQUNyRCxxREFBcUQsRUFDckQscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNqQyxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hD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QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLHVCQUF1QixFQUFFO1NBQzVELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxTQUFpQyxFQUFFLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQzNHLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUcsQ0FDRixDQUNGLENBQ0YsQ0FBQztJQUVGLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUNyRCxJQUFJLENBQ0gsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQ2xDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUc1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQztTQUN4RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFLENBQUMsaUNBQWlDLENBQUMsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQyxFQUMvRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUNBQWlDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xHLENBQ0osQ0FDRixDQUNGLENBQUM7dUdBbk5TLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUZlYXR1cmVGbGFnc0FjdGlvbixcbiAgcmV0cmlldmVGZWF0dXJlRmxhZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUZlYXR1cmVGbGFnc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgQ29uc3RhbnRTZXJ2aWNlLCBGZWF0dXJlRmxhZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgT3B0aW9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBleGhhdXN0TWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ3MsIFJvbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25zdGFudEVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGNvbnN0YW50U2VydmljZSA9IGluamVjdChDb25zdGFudFNlcnZpY2UpO1xuICBwcml2YXRlIGZlYXR1cmVGbGFnc1NlcnZpY2UgPSBpbmplY3QoRmVhdHVyZUZsYWdzU2VydmljZSk7XG5cbiAgcmV0cmlldmVMYW5ndWFnZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldExhbmd1YWdlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlJbnZpdGVTZXR0aW5ncygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlNZWV0VXBUaW1lcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJEYXlzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlckRheXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSZW1pbmRlclJlY2VpdmVycygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJSZWNlaXZlcnNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJSZWNlaXZlcnNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSZW1pbmRlclRpbWVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZXBlYXRPcHRpb25zQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSZXBlYXRPcHRpb25zKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlSZXBlYXRPcHRpb25zQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9uc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQ291bnRyaWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRDb3VudHJpZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUNvdW50cmllc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRNZW1iZXJDb250YWN0VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEJvb2tpbmdTbG90VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUJvb2tpbmdTbG90UmVzZXJ2ZWRUaW1lUG9zaXRpb25zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Qm9va2luZ1Nsb3RTZXNzaW9uVHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEJvb2tpbmdDYWxlbmRhclN0YXR1c2VzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQm9va2luZ0NhbGVuZGFyU3RhdHVzZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nQ2FsZW5kYXJUeXBlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlRmVhdHVyZUZsYWdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVGZWF0dXJlRmxhZ3NBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcChcbiAgICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgICB9KSA9PiB0aGlzLmZlYXR1cmVGbGFnc1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MpID0+IHJldHJpZXZlRmVhdHVyZUZsYWdzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogZmVhdHVyZUZsYWdzfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUZlYXR1cmVGbGFnc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9jb25zdGFudC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsaURBQWlELEVBQ2pELHdEQUF3RCxFQUN4RCx3REFBd0QsRUFDeEQsMENBQTBDLEVBQzFDLGlEQUFpRCxFQUNqRCxpREFBaUQsRUFDakQsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUNsRCxrREFBa0QsRUFDbEQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsdUNBQXVDLEVBQ3ZDLDhDQUE4QyxFQUM5Qyw4Q0FBOEMsRUFDOUMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsa0NBQWtDLEVBQ2xDLHlDQUF5QyxFQUN6Qyx5Q0FBeUMsRUFDekMsOENBQThDLEVBQzlDLHFEQUFxRCxFQUNyRCxxREFBcUQsRUFDckQscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNqQyxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hD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O1NBQzVELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxTQUFpQyxFQUFFLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQzNHLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDMUcsQ0FDRixDQUNGLENBQ0YsQ0FBQztJQUVGLHFCQUFxQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUNyRCxJQUFJLENBQ0gsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQ2xDLFVBQVUsQ0FDUixDQUFDLEVBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUc1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQztTQUN4RSxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsWUFBMEIsRUFBRSxFQUFFLENBQUMsaUNBQWlDLENBQUMsRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFDLENBQUMsQ0FBQyxFQUMvRixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUNBQWlDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQ2xHLENBQ0osQ0FDRixDQUNGLENBQUM7dUdBM09TLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7XG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUZlYXR1cmVGbGFnc0FjdGlvbixcbiAgcmV0cmlldmVGZWF0dXJlRmxhZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUZlYXR1cmVGbGFnc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJCb29raW5nU2xvdFR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IENvbnN0YW50U2VydmljZSwgRmVhdHVyZUZsYWdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE9wdGlvbkludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzLCBSb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBjb25zdGFudFNlcnZpY2UgPSBpbmplY3QoQ29uc3RhbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmZWF0dXJlRmxhZ3NTZXJ2aWNlID0gaW5qZWN0KEZlYXR1cmVGbGFnc1NlcnZpY2UpO1xuXG4gIHJldHJpZXZlTGFuZ3VhZ2VzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVMYW5ndWFnZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRMYW5ndWFnZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVMYW5ndWFnZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlTZXR0aW5nc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5SW52aXRlU2V0dGluZ3MoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5TWVldFVwVGltZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlckRheXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eVJlbWluZGVyRGF5cygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJSZWNlaXZlcnMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJUaW1lcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVwZWF0T3B0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZXBlYXRPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUNvdW50cmllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Q291bnRyaWVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0TWVtYmVyQ29udGFjdFR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUJvb2tpbmdTbG90VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTbG90VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nU2xvdFR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0VGVhbUJvb2tpbmdTbG90VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVUZWFtQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRNZW1iZXJCb29raW5nU2xvdFR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTbG90UmVzZXJ2ZWRUaW1lUG9zaXRpb25zQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Qm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEJvb2tpbmdTbG90U2Vzc2lvblR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ0NhbGVuZGFyU3RhdHVzZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nQ2FsZW5kYXJTdGF0dXNlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFyVHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUZlYXR1cmVGbGFncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlRmVhdHVyZUZsYWdzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoXG4gICAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgICAgfSkgPT4gdGhpcy5mZWF0dXJlRmxhZ3NTZXJ2aWNlLmdldEZlYXR1cmVGbGFncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzKSA9PiByZXRyaWV2ZUZlYXR1cmVGbGFnc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGZlYXR1cmVGbGFnc30pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVGZWF0dXJlRmxhZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19