@flower-city-online/itinerary-lib 0.0.50 → 0.0.52

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 (61) hide show
  1. package/esm2022/lib/itinerary-app/_services/bottom-navigation.service.mjs +8 -8
  2. package/esm2022/lib/itinerary-app/_services/navigation-helper.service.mjs +128 -0
  3. package/esm2022/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.mjs +20 -17
  4. package/esm2022/lib/itinerary-app/modules/itineraries/components/app-sidebar-desktop/app-sidebar-desktop.component.mjs +3 -3
  5. package/esm2022/lib/itinerary-app/modules/itineraries/itineraries.component.mjs +18 -15
  6. package/esm2022/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.mjs +23 -45
  7. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.mjs +23 -23
  8. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.mjs +21 -20
  9. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.mjs +23 -26
  10. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.mjs +17 -15
  11. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.mjs +12 -9
  12. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.mjs +19 -18
  13. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.mjs +16 -14
  14. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.mjs +17 -15
  15. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.mjs +13 -13
  16. package/esm2022/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.mjs +16 -14
  17. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.mjs +13 -10
  18. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.mjs +13 -10
  19. package/esm2022/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.mjs +15 -12
  20. package/esm2022/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.mjs +28 -43
  21. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.mjs +28 -36
  22. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.mjs +27 -31
  23. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.mjs +20 -16
  24. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.mjs +16 -16
  25. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.mjs +17 -14
  26. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.mjs +14 -9
  27. package/esm2022/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.mjs +14 -9
  28. package/esm2022/lib/itinerary-app/shared/comment/comment.component.mjs +17 -17
  29. package/esm2022/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.mjs +16 -11
  30. package/fesm2022/flower-city-online-itinerary-lib.mjs +628 -531
  31. package/fesm2022/flower-city-online-itinerary-lib.mjs.map +1 -1
  32. package/lib/itinerary-app/_services/bottom-navigation.service.d.ts +3 -3
  33. package/lib/itinerary-app/_services/navigation-helper.service.d.ts +19 -0
  34. package/lib/itinerary-app/modules/archives/pages/main-archives/main-archives.component.d.ts +5 -3
  35. package/lib/itinerary-app/modules/itineraries/itineraries.component.d.ts +3 -1
  36. package/lib/itinerary-app/modules/itineraries/pages/branched-itineraries/branched-itineraries.component.d.ts +4 -3
  37. package/lib/itinerary-app/modules/itineraries/pages/builder/builder.component.d.ts +5 -3
  38. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary/create-itinerary.component.d.ts +5 -3
  39. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/create-itinerary-draw-mode/create-itinerary-draw-mode.component.d.ts +4 -3
  40. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary/created-itinerary.component.d.ts +4 -3
  41. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/created-itinerary-preview/created-itinerary-preview.component.d.ts +3 -1
  42. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/location-picker/location-picker.component.d.ts +4 -3
  43. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/select-itinerary-event/select-itinerary-event.component.d.ts +4 -3
  44. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-location/suggested-events-location.component.d.ts +4 -3
  45. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-radius/suggested-events-route-radius.component.d.ts +4 -3
  46. package/lib/itinerary-app/modules/itineraries/pages/builder/pages/suggested-events-route-type/suggested-events-route-type.component.d.ts +4 -3
  47. package/lib/itinerary-app/modules/itineraries/pages/comments/comment-comparison/comment-comparison.component.d.ts +5 -3
  48. package/lib/itinerary-app/modules/itineraries/pages/comments/comment-search/comment-search.component.d.ts +5 -3
  49. package/lib/itinerary-app/modules/itineraries/pages/comments/comments-page.component.d.ts +3 -1
  50. package/lib/itinerary-app/modules/itineraries/pages/explore/explore.component.d.ts +5 -3
  51. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/details/details.component.d.ts +6 -4
  52. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/components/summary/summary.component.d.ts +5 -3
  53. package/lib/itinerary-app/modules/itineraries/pages/itinerary-detail/itinerary-detail.component.d.ts +5 -2
  54. package/lib/itinerary-app/modules/itineraries/pages/itinerary-members/user-list/user-list.component.d.ts +5 -3
  55. package/lib/itinerary-app/modules/itineraries/pages/itinerary-upvote-users/itinerary-upvote-users.component.d.ts +5 -3
  56. package/lib/itinerary-app/modules/itineraries/pages/itinerary-users/itinerary-users.component.d.ts +5 -2
  57. package/lib/itinerary-app/modules/itineraries/pages/itinerary-watching-users/itinerary-watching-users.component.d.ts +5 -2
  58. package/lib/itinerary-app/shared/comment/comment.component.d.ts +5 -3
  59. package/lib/itinerary-app/shared/custom-story-card/custom-story-card.component.d.ts +5 -3
  60. package/package.json +1 -1
  61. package/styles.css +1 -1
@@ -3,24 +3,27 @@ import { Validators, } from '@angular/forms';
3
3
  import { ItinerariesRoutesEnum } from '../../../../../../_enums/ItenariesRoutes.enum';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/router";
7
- import * as i3 from "../../../../../../_services/itinerary.service";
8
- import * as i4 from "@angular/forms";
9
- import * as i5 from "../../../../../../shared/users-stack/users-stack.component";
10
- import * as i6 from "../../../../../../shared/header/header.component";
11
- import * as i7 from "@naniteninja/ionic-lib";
6
+ import * as i2 from "../../../../../../_services/itinerary.service";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@angular/router";
9
+ import * as i5 from "../../../../../../_services/navigation-helper.service";
10
+ import * as i6 from "../../../../../../shared/users-stack/users-stack.component";
11
+ import * as i7 from "../../../../../../shared/header/header.component";
12
+ import * as i8 from "@naniteninja/ionic-lib";
12
13
  export class CreateItineraryComponent {
13
14
  location;
14
- router;
15
15
  itineraryService;
16
16
  fb;
17
+ route;
18
+ navHelper;
17
19
  form;
18
20
  settings = true;
19
- constructor(location, router, itineraryService, fb) {
21
+ constructor(location, itineraryService, fb, route, navHelper) {
20
22
  this.location = location;
21
- this.router = router;
22
23
  this.itineraryService = itineraryService;
23
24
  this.fb = fb;
25
+ this.route = route;
26
+ this.navHelper = navHelper;
24
27
  }
25
28
  ngOnInit() {
26
29
  this.form = this.fb.group({
@@ -66,24 +69,22 @@ export class CreateItineraryComponent {
66
69
  this.location.back();
67
70
  }
68
71
  navToStartLocation() {
69
- this.router.navigate([
70
- ItinerariesRoutesEnum.ITINERARY,
72
+ this.navHelper.navigate([
71
73
  ItinerariesRoutesEnum.CREATE_ITINERARY_ORIGIN,
72
74
  this.id.value,
73
- ]);
75
+ ], this.route);
74
76
  }
75
77
  navToMemberSearch() {
76
- this.router.navigate([
77
- ItinerariesRoutesEnum.ITINERARY,
78
+ this.navHelper.navigate([
78
79
  ItinerariesRoutesEnum.CREATE_ITINERARY_USER_SEARCH,
79
- 1,
80
- ]);
80
+ '1',
81
+ ], this.route);
81
82
  }
82
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryComponent, deps: [{ token: i1.Location }, { token: i2.Router }, { token: i3.ItineraryService }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateItineraryComponent, selector: "app-create-itinerary", ngImport: i0, template: "<app-header (firstButton)=\"back()\" heading=\"Create Itinerary\"></app-header>\r\n<form [formGroup]=\"form\" class=\"mb-32\">\r\n <div class=\"mt-4 ml-3 mr-2 mb-5\">\r\n <p class=\"mb-4\">\r\n Start creating your itinerary with a title and continue to the route\r\n details.\r\n </p>\r\n <lib-text-box\r\n formControlName=\"name\"\r\n class=\"textbox-1\"\r\n label=\"Itinerary Title\"\r\n ></lib-text-box>\r\n <hr style=\"margin: 40px 0px 20px 0px\" class=\"divider\" />\r\n\r\n <h1 class=\"text-lg font-Calistoga\">Members</h1>\r\n <p class=\"mb-4\">The users included will effect the suggested activities.</p>\r\n <lib-text-box class=\"textbox-1\" label=\"User Search\"></lib-text-box>\r\n <app-users-stack [size]=\"41\" class=\"mt-2\"></app-users-stack>\r\n <hr style=\"margin: 40px 0px 20px 0px\" class=\"divider\" />\r\n\r\n <h1 class=\"text-lg font-Calistoga\">Settings</h1>\r\n <div class=\"mt-3 flex items-center justify-between\">\r\n <div style=\"width: 85%\">\r\n <h1>100% Match</h1>\r\n <p>\r\n Do all the members need to be interested in each experience for it to\r\n be suggested?\r\n </p>\r\n </div>\r\n <div style=\"width: 15%\" class=\"flex justify-end\">\r\n <lib-dashed-checkbox\r\n class=\"checkbox-sm\"\r\n formControlName=\"fullMatch\"\r\n ></lib-dashed-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"mt-3 flex items-center justify-between\">\r\n <div style=\"width: 85%\">\r\n <h1>Another Setting</h1>\r\n <p>Lorem Ipsum</p>\r\n </div>\r\n <div style=\"width: 15%\" class=\"flex justify-end\">\r\n <lib-dashed-checkbox\r\n class=\"checkbox-sm\"\r\n formControlName=\"anotherSettings\"\r\n ></lib-dashed-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"builder-footer\">\r\n <lib-footer-shared\r\n (continueButtonClick)=\"create()\"\r\n [canContinue]=\"true\"\r\n continueButtonText=\"Continue\"\r\n ></lib-footer-shared>\r\n</div>\r\n", styles: [".builder-footer{position:fixed;width:100%;bottom:0;z-index:1000}\n"], dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.UsersStackComponent, selector: "app-users-stack", inputs: ["images", "maxVisible", "size", "loading", "class", "isSelectableVisible", "selectableOption"] }, { kind: "component", type: i6.HeaderComponent, selector: "app-header", inputs: ["heading", "headerRightIcon", "titleIcon", "cssClass", "headerSuffixTemplate"], outputs: ["firstButton", "titleIconClick"] }, { kind: "component", type: i7.TextBoxComponent, selector: "lib-text-box", inputs: ["label", "maxLength", "includeEmojiPicker", "emojiPickerConfig", "includeImageAttachment", "maxImageAttachmentLength"] }, { kind: "component", type: i7.DashedCheckboxComponent, selector: "lib-dashed-checkbox", inputs: ["checked", "disabled"], outputs: ["toggle"] }, { kind: "component", type: i7.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }] });
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryComponent, deps: [{ token: i1.Location }, { token: i2.ItineraryService }, { token: i3.FormBuilder }, { token: i4.ActivatedRoute }, { token: i5.NavigationHelperService }], target: i0.ɵɵFactoryTarget.Component });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateItineraryComponent, selector: "app-create-itinerary", ngImport: i0, template: "<app-header (firstButton)=\"back()\" heading=\"Create Itinerary\"></app-header>\r\n<form [formGroup]=\"form\" class=\"mb-32\">\r\n <div class=\"mt-4 ml-3 mr-2 mb-5\">\r\n <p class=\"mb-4\">\r\n Start creating your itinerary with a title and continue to the route\r\n details.\r\n </p>\r\n <lib-text-box\r\n formControlName=\"name\"\r\n class=\"textbox-1\"\r\n label=\"Itinerary Title\"\r\n ></lib-text-box>\r\n <hr style=\"margin: 40px 0px 20px 0px\" class=\"divider\" />\r\n\r\n <h1 class=\"text-lg font-Calistoga\">Members</h1>\r\n <p class=\"mb-4\">The users included will effect the suggested activities.</p>\r\n <lib-text-box class=\"textbox-1\" label=\"User Search\"></lib-text-box>\r\n <app-users-stack [size]=\"41\" class=\"mt-2\"></app-users-stack>\r\n <hr style=\"margin: 40px 0px 20px 0px\" class=\"divider\" />\r\n\r\n <h1 class=\"text-lg font-Calistoga\">Settings</h1>\r\n <div class=\"mt-3 flex items-center justify-between\">\r\n <div style=\"width: 85%\">\r\n <h1>100% Match</h1>\r\n <p>\r\n Do all the members need to be interested in each experience for it to\r\n be suggested?\r\n </p>\r\n </div>\r\n <div style=\"width: 15%\" class=\"flex justify-end\">\r\n <lib-dashed-checkbox\r\n class=\"checkbox-sm\"\r\n formControlName=\"fullMatch\"\r\n ></lib-dashed-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"mt-3 flex items-center justify-between\">\r\n <div style=\"width: 85%\">\r\n <h1>Another Setting</h1>\r\n <p>Lorem Ipsum</p>\r\n </div>\r\n <div style=\"width: 15%\" class=\"flex justify-end\">\r\n <lib-dashed-checkbox\r\n class=\"checkbox-sm\"\r\n formControlName=\"anotherSettings\"\r\n ></lib-dashed-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"builder-footer\">\r\n <lib-footer-shared\r\n (continueButtonClick)=\"create()\"\r\n [canContinue]=\"true\"\r\n continueButtonText=\"Continue\"\r\n ></lib-footer-shared>\r\n</div>\r\n", styles: [".builder-footer{position:fixed;width:100%;bottom:0;z-index:1000}\n"], dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.UsersStackComponent, selector: "app-users-stack", inputs: ["images", "maxVisible", "size", "loading", "class", "isSelectableVisible", "selectableOption"] }, { kind: "component", type: i7.HeaderComponent, selector: "app-header", inputs: ["heading", "headerRightIcon", "titleIcon", "cssClass", "headerSuffixTemplate"], outputs: ["firstButton", "titleIconClick"] }, { kind: "component", type: i8.TextBoxComponent, selector: "lib-text-box", inputs: ["label", "maxLength", "includeEmojiPicker", "emojiPickerConfig", "includeImageAttachment", "maxImageAttachmentLength"] }, { kind: "component", type: i8.DashedCheckboxComponent, selector: "lib-dashed-checkbox", inputs: ["checked", "disabled"], outputs: ["toggle"] }, { kind: "component", type: i8.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }] });
84
85
  }
85
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryComponent, decorators: [{
86
87
  type: Component,
87
88
  args: [{ selector: 'app-create-itinerary', standalone: false, template: "<app-header (firstButton)=\"back()\" heading=\"Create Itinerary\"></app-header>\r\n<form [formGroup]=\"form\" class=\"mb-32\">\r\n <div class=\"mt-4 ml-3 mr-2 mb-5\">\r\n <p class=\"mb-4\">\r\n Start creating your itinerary with a title and continue to the route\r\n details.\r\n </p>\r\n <lib-text-box\r\n formControlName=\"name\"\r\n class=\"textbox-1\"\r\n label=\"Itinerary Title\"\r\n ></lib-text-box>\r\n <hr style=\"margin: 40px 0px 20px 0px\" class=\"divider\" />\r\n\r\n <h1 class=\"text-lg font-Calistoga\">Members</h1>\r\n <p class=\"mb-4\">The users included will effect the suggested activities.</p>\r\n <lib-text-box class=\"textbox-1\" label=\"User Search\"></lib-text-box>\r\n <app-users-stack [size]=\"41\" class=\"mt-2\"></app-users-stack>\r\n <hr style=\"margin: 40px 0px 20px 0px\" class=\"divider\" />\r\n\r\n <h1 class=\"text-lg font-Calistoga\">Settings</h1>\r\n <div class=\"mt-3 flex items-center justify-between\">\r\n <div style=\"width: 85%\">\r\n <h1>100% Match</h1>\r\n <p>\r\n Do all the members need to be interested in each experience for it to\r\n be suggested?\r\n </p>\r\n </div>\r\n <div style=\"width: 15%\" class=\"flex justify-end\">\r\n <lib-dashed-checkbox\r\n class=\"checkbox-sm\"\r\n formControlName=\"fullMatch\"\r\n ></lib-dashed-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"mt-3 flex items-center justify-between\">\r\n <div style=\"width: 85%\">\r\n <h1>Another Setting</h1>\r\n <p>Lorem Ipsum</p>\r\n </div>\r\n <div style=\"width: 15%\" class=\"flex justify-end\">\r\n <lib-dashed-checkbox\r\n class=\"checkbox-sm\"\r\n formControlName=\"anotherSettings\"\r\n ></lib-dashed-checkbox>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<div class=\"builder-footer\">\r\n <lib-footer-shared\r\n (continueButtonClick)=\"create()\"\r\n [canContinue]=\"true\"\r\n continueButtonText=\"Continue\"\r\n ></lib-footer-shared>\r\n</div>\r\n", styles: [".builder-footer{position:fixed;width:100%;bottom:0;z-index:1000}\n"] }]
88
- }], ctorParameters: () => [{ type: i1.Location }, { type: i2.Router }, { type: i3.ItineraryService }, { type: i4.FormBuilder }] });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9tb2R1bGVzL2l0aW5lcmFyaWVzL3BhZ2VzL2J1aWxkZXIvcGFnZXMvY3JlYXRlLWl0aW5lcmFyeS9jcmVhdGUtaXRpbmVyYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5L2NyZWF0ZS1pdGluZXJhcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7OztBQVV0RixNQUFNLE9BQU8sd0JBQXdCO0lBS3pCO0lBQ0E7SUFDQTtJQUNBO0lBUFYsSUFBSSxDQUFhO0lBQ2pCLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFFekIsWUFDVSxRQUFrQixFQUNsQixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLEVBQWU7UUFIZixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLE9BQUUsR0FBRixFQUFFLENBQWE7SUFDdEIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtJQUNWLElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQWdCLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFnQixDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxTQUFTLEdBQWM7WUFDM0IsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUM3QixXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxFQUFFO1lBQ1osYUFBYSxFQUFFLEVBQUU7WUFDakIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsV0FBVyxFQUFFLFNBQVM7WUFDdEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtJQUNiLElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDbkIscUJBQXFCLENBQUMsU0FBUztZQUMvQixxQkFBcUIsQ0FBQyx1QkFBdUI7WUFDN0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ25CLHFCQUFxQixDQUFDLFNBQVM7WUFDL0IscUJBQXFCLENBQUMsNEJBQTRCO1lBQ2xELENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO3dHQTNFVSx3QkFBd0I7NEZBQXhCLHdCQUF3Qiw0RENuQnJDLCtrRUEwREE7OzRGRHZDYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0ksc0JBQXNCLGNBR3BCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInOyBcclxuaW1wb3J0IHsgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2VudW1zL0l0ZW5hcmllc1JvdXRlcy5lbnVtJztcclxuaW1wb3J0IHsgSXRpbmVyYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX21vZGVscy9JdGluZXJhcnknO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL2l0aW5lcmFyeS5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtY3JlYXRlLWl0aW5lcmFyeScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS5jb21wb25lbnQuY3NzJyxcclxuICAgIHN0YW5kYWxvbmU6IGZhbHNlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcmVhdGVJdGluZXJhcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGZvcm0hOiBGb3JtR3JvdXA7XHJcbiAgc2V0dGluZ3M6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgaXRpbmVyYXJ5U2VydmljZTogSXRpbmVyYXJ5U2VydmljZSxcclxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgaWQ6IFtjcnlwdG8ucmFuZG9tVVVJRCgpXSxcclxuICAgICAgbmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBmdWxsTWF0Y2g6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgYW5vdGhlclNldHRpbmdzOiBbZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vVUkgTE9HSUNcclxuICBnZXQgaWQoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2lkJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZSgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnbmFtZScpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZ1bGxNYXRjaCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnZnVsbE1hdGNoJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgYW5vdGhlclNldHRpbmdzKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdhbm90aGVyU2V0dGluZ3MnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGNyZWF0ZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGl0aW5lcmFyeTogSXRpbmVyYXJ5ID0ge1xyXG4gICAgICBpZDogdGhpcy5pZC52YWx1ZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLnZhbHVlLm1lc3NhZ2UsXHJcbiAgICAgIGlzQ29tcGxldGVkOiBmYWxzZSxcclxuICAgICAgZGVzY3JpcHRpb246ICcnLFxyXG4gICAgICBkaXN0YW5jZTogJycsXHJcbiAgICAgIGRpc3RhbmNlVmFsdWU6ICcnLFxyXG4gICAgICBzdGFydExvY2F0aW9uOiB1bmRlZmluZWQsXHJcbiAgICAgIGVuZExvY2F0aW9uOiB1bmRlZmluZWQsXHJcbiAgICAgIHJvdXRlVHlwZXM6IFtdLFxyXG4gICAgICByb3V0ZVJhZGl1czogMCxcclxuICAgICAgdmlzaXRpbmdQbGFjZXM6IFtdLFxyXG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcclxuICAgIH07XHJcbiAgICB0aGlzLml0aW5lcmFyeVNlcnZpY2UuY3JlYXRlT3JVcGRhdGUoaXRpbmVyYXJ5KTtcclxuICAgIHRoaXMubmF2VG9TdGFydExvY2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICAvL05BVklHQVRJT05TXHJcbiAgYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgbmF2VG9TdGFydExvY2F0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9PUklHSU4sXHJcbiAgICAgIHRoaXMuaWQudmFsdWUsXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIG5hdlRvTWVtYmVyU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1xyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9VU0VSX1NFQVJDSCxcclxuICAgICAgMSxcclxuICAgIF0pO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWhlYWRlciAoZmlyc3RCdXR0b24pPVwiYmFjaygpXCIgaGVhZGluZz1cIkNyZWF0ZSBJdGluZXJhcnlcIj48L2FwcC1oZWFkZXI+XHJcbjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwibWItMzJcIj5cclxuICA8ZGl2IGNsYXNzPVwibXQtNCBtbC0zIG1yLTIgbWItNVwiPlxyXG4gICAgPHAgY2xhc3M9XCJtYi00XCI+XHJcbiAgICAgIFN0YXJ0IGNyZWF0aW5nIHlvdXIgaXRpbmVyYXJ5IHdpdGggYSB0aXRsZSBhbmQgY29udGludWUgdG8gdGhlIHJvdXRlXHJcbiAgICAgIGRldGFpbHMuXHJcbiAgICA8L3A+XHJcbiAgICA8bGliLXRleHQtYm94XHJcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxyXG4gICAgICBjbGFzcz1cInRleHRib3gtMVwiXHJcbiAgICAgIGxhYmVsPVwiSXRpbmVyYXJ5IFRpdGxlXCJcclxuICAgID48L2xpYi10ZXh0LWJveD5cclxuICAgIDxociBzdHlsZT1cIm1hcmdpbjogNDBweCAwcHggMjBweCAwcHhcIiBjbGFzcz1cImRpdmlkZXJcIiAvPlxyXG5cclxuICAgIDxoMSBjbGFzcz1cInRleHQtbGcgZm9udC1DYWxpc3RvZ2FcIj5NZW1iZXJzPC9oMT5cclxuICAgIDxwIGNsYXNzPVwibWItNFwiPlRoZSB1c2VycyBpbmNsdWRlZCB3aWxsIGVmZmVjdCB0aGUgc3VnZ2VzdGVkIGFjdGl2aXRpZXMuPC9wPlxyXG4gICAgPGxpYi10ZXh0LWJveCBjbGFzcz1cInRleHRib3gtMVwiIGxhYmVsPVwiVXNlciBTZWFyY2hcIj48L2xpYi10ZXh0LWJveD5cclxuICAgIDxhcHAtdXNlcnMtc3RhY2sgW3NpemVdPVwiNDFcIiBjbGFzcz1cIm10LTJcIj48L2FwcC11c2Vycy1zdGFjaz5cclxuICAgIDxociBzdHlsZT1cIm1hcmdpbjogNDBweCAwcHggMjBweCAwcHhcIiBjbGFzcz1cImRpdmlkZXJcIiAvPlxyXG5cclxuICAgIDxoMSBjbGFzcz1cInRleHQtbGcgZm9udC1DYWxpc3RvZ2FcIj5TZXR0aW5nczwvaDE+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA4NSVcIj5cclxuICAgICAgICA8aDE+MTAwJSBNYXRjaDwvaDE+XHJcbiAgICAgICAgPHA+XHJcbiAgICAgICAgICBEbyBhbGwgdGhlIG1lbWJlcnMgbmVlZCB0byBiZSBpbnRlcmVzdGVkIGluIGVhY2ggZXhwZXJpZW5jZSBmb3IgaXQgdG9cclxuICAgICAgICAgIGJlIHN1Z2dlc3RlZD9cclxuICAgICAgICA8L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDE1JVwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWVuZFwiPlxyXG4gICAgICAgIDxsaWItZGFzaGVkLWNoZWNrYm94XHJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LXNtXCJcclxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZ1bGxNYXRjaFwiXHJcbiAgICAgICAgPjwvbGliLWRhc2hlZC1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDg1JVwiPlxyXG4gICAgICAgIDxoMT5Bbm90aGVyIFNldHRpbmc8L2gxPlxyXG4gICAgICAgIDxwPkxvcmVtIElwc3VtPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxNSVcIiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmRcIj5cclxuICAgICAgICA8bGliLWRhc2hlZC1jaGVja2JveFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja2JveC1zbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbm90aGVyU2V0dGluZ3NcIlxyXG4gICAgICAgID48L2xpYi1kYXNoZWQtY2hlY2tib3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxkaXYgY2xhc3M9XCJidWlsZGVyLWZvb3RlclwiPlxyXG4gIDxsaWItZm9vdGVyLXNoYXJlZFxyXG4gICAgKGNvbnRpbnVlQnV0dG9uQ2xpY2spPVwiY3JlYXRlKClcIlxyXG4gICAgW2NhbkNvbnRpbnVlXT1cInRydWVcIlxyXG4gICAgY29udGludWVCdXR0b25UZXh0PVwiQ29udGludWVcIlxyXG4gID48L2xpYi1mb290ZXItc2hhcmVkPlxyXG48L2Rpdj5cclxuIl19
89
+ }], ctorParameters: () => [{ type: i1.Location }, { type: i2.ItineraryService }, { type: i3.FormBuilder }, { type: i4.ActivatedRoute }, { type: i5.NavigationHelperService }] });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9tb2R1bGVzL2l0aW5lcmFyaWVzL3BhZ2VzL2J1aWxkZXIvcGFnZXMvY3JlYXRlLWl0aW5lcmFyeS9jcmVhdGUtaXRpbmVyYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5L2NyZWF0ZS1pdGluZXJhcnkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBSUwsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0NBQStDLENBQUM7Ozs7Ozs7Ozs7QUFXdEYsTUFBTSxPQUFPLHdCQUF3QjtJQUt6QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUlYsSUFBSSxDQUFhO0lBQ2pCLFFBQVEsR0FBWSxJQUFJLENBQUM7SUFFekIsWUFDVSxRQUFrQixFQUNsQixnQkFBa0MsRUFDbEMsRUFBZSxFQUNmLEtBQXFCLEVBQ3JCLFNBQWtDO1FBSmxDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBeUI7SUFDekMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3hCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNoRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtJQUNWLElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQWdCLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFnQixDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxTQUFTLEdBQWM7WUFDM0IsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSztZQUNqQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUM3QixXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXLEVBQUUsRUFBRTtZQUNmLFFBQVEsRUFBRSxFQUFFO1lBQ1osYUFBYSxFQUFFLEVBQUU7WUFDakIsYUFBYSxFQUFFLFNBQVM7WUFDeEIsV0FBVyxFQUFFLFNBQVM7WUFDdEIsVUFBVSxFQUFFLEVBQUU7WUFDZCxXQUFXLEVBQUUsQ0FBQztZQUNkLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtTQUNwQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYTtJQUNiLElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDdEIscUJBQXFCLENBQUMsdUJBQXVCO1lBQzdDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSztTQUNkLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN0QixxQkFBcUIsQ0FBQyw0QkFBNEI7WUFDbEQsR0FBRztTQUNKLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7d0dBMUVVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLDREQ3BCckMsK2tFQTBEQTs7NEZEdENhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSxzQkFBc0IsY0FHcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJzsgXHJcbmltcG9ydCB7IEl0aW5lcmFyaWVzUm91dGVzRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19lbnVtcy9JdGVuYXJpZXNSb3V0ZXMuZW51bSc7XHJcbmltcG9ydCB7IEl0aW5lcmFyeSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19tb2RlbHMvSXRpbmVyYXJ5JztcclxuaW1wb3J0IHsgSXRpbmVyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9pdGluZXJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL25hdmlnYXRpb24taGVscGVyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtaXRpbmVyYXJ5JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtaXRpbmVyYXJ5LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsOiAnLi9jcmVhdGUtaXRpbmVyYXJ5LmNvbXBvbmVudC5jc3MnLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZUl0aW5lcmFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBzZXR0aW5nczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXHJcbiAgICBwcml2YXRlIGl0aW5lcmFyeVNlcnZpY2U6IEl0aW5lcmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBuYXZIZWxwZXI6IE5hdmlnYXRpb25IZWxwZXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpZDogW2NyeXB0by5yYW5kb21VVUlEKCldLFxyXG4gICAgICBuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGZ1bGxNYXRjaDogW2ZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxyXG4gICAgICBhbm90aGVyU2V0dGluZ3M6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9VSSBMT0dJQ1xyXG4gIGdldCBpZCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnaWQnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBuYW1lKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCduYW1lJykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBnZXQgZnVsbE1hdGNoKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCdmdWxsTWF0Y2gnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBhbm90aGVyU2V0dGluZ3MoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2Fub3RoZXJTZXR0aW5ncycpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXRpbmVyYXJ5OiBJdGluZXJhcnkgPSB7XHJcbiAgICAgIGlkOiB0aGlzLmlkLnZhbHVlLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUudmFsdWUubWVzc2FnZSxcclxuICAgICAgaXNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogJycsXHJcbiAgICAgIGRpc3RhbmNlOiAnJyxcclxuICAgICAgZGlzdGFuY2VWYWx1ZTogJycsXHJcbiAgICAgIHN0YXJ0TG9jYXRpb246IHVuZGVmaW5lZCxcclxuICAgICAgZW5kTG9jYXRpb246IHVuZGVmaW5lZCxcclxuICAgICAgcm91dGVUeXBlczogW10sXHJcbiAgICAgIHJvdXRlUmFkaXVzOiAwLFxyXG4gICAgICB2aXNpdGluZ1BsYWNlczogW10sXHJcbiAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxyXG4gICAgfTtcclxuICAgIHRoaXMuaXRpbmVyYXJ5U2VydmljZS5jcmVhdGVPclVwZGF0ZShpdGluZXJhcnkpO1xyXG4gICAgdGhpcy5uYXZUb1N0YXJ0TG9jYXRpb24oKTtcclxuICB9XHJcblxyXG4gIC8vTkFWSUdBVElPTlNcclxuICBiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcbiAgfVxyXG5cclxuICBuYXZUb1N0YXJ0TG9jYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdkhlbHBlci5uYXZpZ2F0ZShbXHJcbiAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX09SSUdJTixcclxuICAgICAgdGhpcy5pZC52YWx1ZSxcclxuICAgIF0sIHRoaXMucm91dGUpO1xyXG4gIH1cclxuXHJcbiAgbmF2VG9NZW1iZXJTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLm5hdkhlbHBlci5uYXZpZ2F0ZShbXHJcbiAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX1VTRVJfU0VBUkNILFxyXG4gICAgICAnMScsXHJcbiAgICBdLCB0aGlzLnJvdXRlKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1oZWFkZXIgKGZpcnN0QnV0dG9uKT1cImJhY2soKVwiIGhlYWRpbmc9XCJDcmVhdGUgSXRpbmVyYXJ5XCI+PC9hcHAtaGVhZGVyPlxyXG48Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cIm1iLTMyXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm10LTQgbWwtMyBtci0yIG1iLTVcIj5cclxuICAgIDxwIGNsYXNzPVwibWItNFwiPlxyXG4gICAgICBTdGFydCBjcmVhdGluZyB5b3VyIGl0aW5lcmFyeSB3aXRoIGEgdGl0bGUgYW5kIGNvbnRpbnVlIHRvIHRoZSByb3V0ZVxyXG4gICAgICBkZXRhaWxzLlxyXG4gICAgPC9wPlxyXG4gICAgPGxpYi10ZXh0LWJveFxyXG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcclxuICAgICAgY2xhc3M9XCJ0ZXh0Ym94LTFcIlxyXG4gICAgICBsYWJlbD1cIkl0aW5lcmFyeSBUaXRsZVwiXHJcbiAgICA+PC9saWItdGV4dC1ib3g+XHJcbiAgICA8aHIgc3R5bGU9XCJtYXJnaW46IDQwcHggMHB4IDIwcHggMHB4XCIgY2xhc3M9XCJkaXZpZGVyXCIgLz5cclxuXHJcbiAgICA8aDEgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtQ2FsaXN0b2dhXCI+TWVtYmVyczwvaDE+XHJcbiAgICA8cCBjbGFzcz1cIm1iLTRcIj5UaGUgdXNlcnMgaW5jbHVkZWQgd2lsbCBlZmZlY3QgdGhlIHN1Z2dlc3RlZCBhY3Rpdml0aWVzLjwvcD5cclxuICAgIDxsaWItdGV4dC1ib3ggY2xhc3M9XCJ0ZXh0Ym94LTFcIiBsYWJlbD1cIlVzZXIgU2VhcmNoXCI+PC9saWItdGV4dC1ib3g+XHJcbiAgICA8YXBwLXVzZXJzLXN0YWNrIFtzaXplXT1cIjQxXCIgY2xhc3M9XCJtdC0yXCI+PC9hcHAtdXNlcnMtc3RhY2s+XHJcbiAgICA8aHIgc3R5bGU9XCJtYXJnaW46IDQwcHggMHB4IDIwcHggMHB4XCIgY2xhc3M9XCJkaXZpZGVyXCIgLz5cclxuXHJcbiAgICA8aDEgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtQ2FsaXN0b2dhXCI+U2V0dGluZ3M8L2gxPlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogODUlXCI+XHJcbiAgICAgICAgPGgxPjEwMCUgTWF0Y2g8L2gxPlxyXG4gICAgICAgIDxwPlxyXG4gICAgICAgICAgRG8gYWxsIHRoZSBtZW1iZXJzIG5lZWQgdG8gYmUgaW50ZXJlc3RlZCBpbiBlYWNoIGV4cGVyaWVuY2UgZm9yIGl0IHRvXHJcbiAgICAgICAgICBiZSBzdWdnZXN0ZWQ/XHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiAxNSVcIiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmRcIj5cclxuICAgICAgICA8bGliLWRhc2hlZC1jaGVja2JveFxyXG4gICAgICAgICAgY2xhc3M9XCJjaGVja2JveC1zbVwiXHJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmdWxsTWF0Y2hcIlxyXG4gICAgICAgID48L2xpYi1kYXNoZWQtY2hlY2tib3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMyBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cclxuICAgICAgPGRpdiBzdHlsZT1cIndpZHRoOiA4NSVcIj5cclxuICAgICAgICA8aDE+QW5vdGhlciBTZXR0aW5nPC9oMT5cclxuICAgICAgICA8cD5Mb3JlbSBJcHN1bTwvcD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTUlXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kXCI+XHJcbiAgICAgICAgPGxpYi1kYXNoZWQtY2hlY2tib3hcclxuICAgICAgICAgIGNsYXNzPVwiY2hlY2tib3gtc21cIlxyXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5vdGhlclNldHRpbmdzXCJcclxuICAgICAgICA+PC9saWItZGFzaGVkLWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48ZGl2IGNsYXNzPVwiYnVpbGRlci1mb290ZXJcIj5cclxuICA8bGliLWZvb3Rlci1zaGFyZWRcclxuICAgIChjb250aW51ZUJ1dHRvbkNsaWNrKT1cImNyZWF0ZSgpXCJcclxuICAgIFtjYW5Db250aW51ZV09XCJ0cnVlXCJcclxuICAgIGNvbnRpbnVlQnV0dG9uVGV4dD1cIkNvbnRpbnVlXCJcclxuICA+PC9saWItZm9vdGVyLXNoYXJlZD5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -7,19 +7,20 @@ import * as i2 from "@angular/router";
7
7
  import * as i3 from "../../../../../../_services/itinerary.service";
8
8
  import * as i4 from "../../../../../../_services/location.service";
9
9
  import * as i5 from "../../../../../../_services/itinerary.drawmode.transfer";
10
- import * as i6 from "@naniteninja/ionic-lib";
11
- import * as i7 from "../create-itinerary-header/create-itinerary-header.component";
12
- import * as i8 from "@ngx-translate/core";
10
+ import * as i6 from "../../../../../../_services/navigation-helper.service";
11
+ import * as i7 from "@naniteninja/ionic-lib";
12
+ import * as i8 from "../create-itinerary-header/create-itinerary-header.component";
13
+ import * as i9 from "@ngx-translate/core";
13
14
  const defaultIcon = 'assets/icons/map-markers-yellow.svg';
14
15
  const selectedIcon = 'assets/icons/restu-icon-large.svg';
15
16
  export class CreateItineraryDrawModeComponent {
16
17
  location;
17
18
  cdr;
18
- router;
19
19
  activatedRoute;
20
20
  itineraryService;
21
21
  locationService;
22
22
  transferService;
23
+ navHelper;
23
24
  ICONS = ICONS;
24
25
  actions = [ICONS['location'], ICONS['pencil'], ICONS['ban']];
25
26
  selected = this.actions[1];
@@ -34,14 +35,14 @@ export class CreateItineraryDrawModeComponent {
34
35
  placesResult; //Places result required for preview
35
36
  placeMarkers = [];
36
37
  //LIFE CYCLES
37
- constructor(location, cdr, router, activatedRoute, itineraryService, locationService, transferService) {
38
+ constructor(location, cdr, activatedRoute, itineraryService, locationService, transferService, navHelper) {
38
39
  this.location = location;
39
40
  this.cdr = cdr;
40
- this.router = router;
41
41
  this.activatedRoute = activatedRoute;
42
42
  this.itineraryService = itineraryService;
43
43
  this.locationService = locationService;
44
44
  this.transferService = transferService;
45
+ this.navHelper = navHelper;
45
46
  }
46
47
  ngOnInit() {
47
48
  const id = this.activatedRoute.snapshot.params['id'];
@@ -53,19 +54,17 @@ export class CreateItineraryDrawModeComponent {
53
54
  updateAction(action) {
54
55
  this.selected = action;
55
56
  if (action === this.actions[0]) {
56
- this.router.navigate([
57
- ItinerariesRoutesEnum.ITINERARY,
57
+ this.navHelper.navigate([
58
58
  ItinerariesRoutesEnum.CREATE_ITINERARY_ORIGIN,
59
- this.itinerary?.id
60
- ]);
59
+ this.itinerary.id
60
+ ], this.activatedRoute);
61
61
  }
62
62
  if (action === this.actions[2]) {
63
- this.router.navigate([
64
- ItinerariesRoutesEnum.ITINERARY,
63
+ this.navHelper.navigate([
65
64
  ItinerariesRoutesEnum.CREATE_ITINERARY_NO_VISUAL_FILTER_MODE,
66
65
  ItinerariesRoutesEnum.CREATE_ITINERARY_NO_VISUAL_FILTER_MODE_CREATE,
67
- this.itinerary?.id
68
- ]);
66
+ this.itinerary.id
67
+ ], this.activatedRoute);
69
68
  }
70
69
  }
71
70
  showBottomModal() {
@@ -148,12 +147,11 @@ export class CreateItineraryDrawModeComponent {
148
147
  this.transferService.setPlaces(allPlaces);
149
148
  this.transferService.setSelectedPlaces(selectedPlaces);
150
149
  this.transferService.setCurrentLocation(this.initialLocation);
151
- this.router.navigate([
152
- ItinerariesRoutesEnum.ITINERARY,
150
+ this.navHelper.navigate([
153
151
  ItinerariesRoutesEnum.CREATE_ITINERARY_DRAW_MODE,
154
152
  ItinerariesRoutesEnum.CREATE_ITINERARY_DRAW_MODE_PREVIEW,
155
- this.itinerary?.id
156
- ]);
153
+ this.itinerary.id
154
+ ], this.activatedRoute);
157
155
  }
158
156
  clearPolygonIfExist() {
159
157
  if (this.polygon) {
@@ -240,11 +238,10 @@ export class CreateItineraryDrawModeComponent {
240
238
  this.location.back();
241
239
  }
242
240
  navToPickStartLocation() {
243
- this.router.navigate([
244
- ItinerariesRoutesEnum.ITINERARY,
241
+ this.navHelper.navigate([
245
242
  ItinerariesRoutesEnum.LOCATION_PICKER,
246
- this.itinerary?.id,
247
- ], { queryParams: { mode: 'start' } });
243
+ this.itinerary.id,
244
+ ], this.activatedRoute, { queryParams: { mode: 'start' } });
248
245
  }
249
246
  getClosestPointOnPolygon(polygon, point) {
250
247
  const path = polygon.getPath();
@@ -265,14 +262,14 @@ export class CreateItineraryDrawModeComponent {
265
262
  }
266
263
  return closestPoint;
267
264
  }
268
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryDrawModeComponent, deps: [{ token: i1.Location }, { token: i0.ChangeDetectorRef }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.ItineraryService }, { token: i4.LocationService }, { token: i5.ItineraryDrawModeTransferService }], target: i0.ɵɵFactoryTarget.Component });
269
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateItineraryDrawModeComponent, selector: "lib-create-itinerary-draw-mode", viewQueries: [{ propertyName: "libMap", first: true, predicate: ["libMap"], descendants: true }], ngImport: i0, template: "<app-create-itinerary-header\r\n [progressBarValue]=\"50\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n<lib-bottom-modal\r\n [showArrow]=\"true\"\r\n [(isOpen)]=\"isOpen\"\r\n [adaptToContentHeight]=\"true\"\r\n>\r\n <div class=\"\">\r\n <ng-container *ngIf=\"!mapDrawn\">\r\n <div class=\"flex items-center justify-between pl-4 pr-4\">\r\n <h3 class=\"font-Calistoga text-lg\">{{ \"ITINERARY.DRAW\" | translate }}</h3>\r\n <div class=\"selectables flex items-center\">\r\n <div\r\n (click)=\"updateAction(a)\"\r\n class=\"flex items-center justify-center actions\"\r\n *ngFor=\"let a of actions\"\r\n [ngClass]=\"{ selected: a === selected }\"\r\n >\r\n <img [src]=\"a\" alt=\"icon\" loading=\"lazy\" />\r\n </div>\r\n </div>\r\n </div>\r\n <p class=\"mt-3 px-4 mb-4\">{{ \"ITINERARY.DRAW_DESCRIPTION\" | translate }}</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"mapDrawn\">\r\n <div class=\"ml-auto flex items-center justify-center gap-x-2\">\r\n <div class=\"flex items-center gap-x-1 text-xs\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['locationWhite']\"\r\n alt=\"location\"\r\n />\r\n <span>&nbsp;{{ \"ITINERARY.SELECT_MIN_PLACES\" | translate }}</span>\r\n </div>\r\n <div class=\"h-4 border w-0 border-secondary\"></div>\r\n <div class=\"flex items-center justify-center gap-x-2 text-xs\">\r\n <img loading=\"lazy\" [src]=\"ICONS['clock']\" alt=\"\" />\r\n <span>&nbsp;0 minutes</span>\r\n <span class=\"text-secondary font-thin\">(0.0 km)</span>\r\n </div>\r\n </div>\r\n <div class=\"select-places-description mt-5 text-center mb-4\">\r\n {{ \"ITINERARY.SELECT_PLACES_INSTRUCTION\" | translate }}\r\n </div>\r\n </ng-container>\r\n\r\n <lib-footer-shared\r\n (continueButtonClick)=\"continue()\"\r\n (secondaryButtonClick)=\"clearMap()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'COMMON.CONTINUE' | translate\"\r\n [secondaryButtonText]=\"'COMMON.CLEAR' | translate\"\r\n ></lib-footer-shared>\r\n </div>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [":host{--lib-popup-modal-radius: 16px;--border-radius: var(--lib-popup-modal-radius);--lib-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--lib-popup-modal-color: #a8a8a8;--color: var(--lib-popup-modal-color, #a8a8a8);--max-width: var(--lib-bottom-modal-max-width, 500px);--lib-popup-modal-shadow: 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) !important;--box-shadow: var( --lib-popup-modal-shadow, 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) )}.selectables{background:#28252d;box-shadow:4.1px 4.1px 8.2px #00000052 inset;box-shadow:-2.46px -2.46px 3.28px #ffffff1a inset;border-radius:27.9px}.actions{width:42px;height:28px;border-radius:82.05px}.selected{background:linear-gradient(94.44deg,#fe3c72 1.26%,#e15561);box-shadow:3.28px 3.28px 6.56px #00000040;box-shadow:-1.64px -1.64px 8.2px #ffffff40}.select-places-text,.select-places-description{font-size:var(--font-size-small)}.button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "directive", type: i6.LazyImageDirective, selector: "img" }, { kind: "component", type: i6.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }, { kind: "component", type: i6.LibMapsComponent, selector: "lib-map", inputs: ["disableNotification", "markers", "initialLocation", "mapType", "enableDrag", "locations", "searchMapsString", "mapOptions", "directions$", "directionRenderOptions"], outputs: ["mapActionEvent"] }, { kind: "component", type: i7.CreateItineraryHeaderComponent, selector: "app-create-itinerary-header", inputs: ["heading", "progressBarValue", "discardItineraryId", "class"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
265
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryDrawModeComponent, deps: [{ token: i1.Location }, { token: i0.ChangeDetectorRef }, { token: i2.ActivatedRoute }, { token: i3.ItineraryService }, { token: i4.LocationService }, { token: i5.ItineraryDrawModeTransferService }, { token: i6.NavigationHelperService }], target: i0.ɵɵFactoryTarget.Component });
266
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateItineraryDrawModeComponent, selector: "lib-create-itinerary-draw-mode", viewQueries: [{ propertyName: "libMap", first: true, predicate: ["libMap"], descendants: true }], ngImport: i0, template: "<app-create-itinerary-header\r\n [progressBarValue]=\"50\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n<lib-bottom-modal\r\n [showArrow]=\"true\"\r\n [(isOpen)]=\"isOpen\"\r\n [adaptToContentHeight]=\"true\"\r\n>\r\n <div class=\"\">\r\n <ng-container *ngIf=\"!mapDrawn\">\r\n <div class=\"flex items-center justify-between pl-4 pr-4\">\r\n <h3 class=\"font-Calistoga text-lg\">{{ \"ITINERARY.DRAW\" | translate }}</h3>\r\n <div class=\"selectables flex items-center\">\r\n <div\r\n (click)=\"updateAction(a)\"\r\n class=\"flex items-center justify-center actions\"\r\n *ngFor=\"let a of actions\"\r\n [ngClass]=\"{ selected: a === selected }\"\r\n >\r\n <img [src]=\"a\" alt=\"icon\" loading=\"lazy\" />\r\n </div>\r\n </div>\r\n </div>\r\n <p class=\"mt-3 px-4 mb-4\">{{ \"ITINERARY.DRAW_DESCRIPTION\" | translate }}</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"mapDrawn\">\r\n <div class=\"ml-auto flex items-center justify-center gap-x-2\">\r\n <div class=\"flex items-center gap-x-1 text-xs\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['locationWhite']\"\r\n alt=\"location\"\r\n />\r\n <span>&nbsp;{{ \"ITINERARY.SELECT_MIN_PLACES\" | translate }}</span>\r\n </div>\r\n <div class=\"h-4 border w-0 border-secondary\"></div>\r\n <div class=\"flex items-center justify-center gap-x-2 text-xs\">\r\n <img loading=\"lazy\" [src]=\"ICONS['clock']\" alt=\"\" />\r\n <span>&nbsp;0 minutes</span>\r\n <span class=\"text-secondary font-thin\">(0.0 km)</span>\r\n </div>\r\n </div>\r\n <div class=\"select-places-description mt-5 text-center mb-4\">\r\n {{ \"ITINERARY.SELECT_PLACES_INSTRUCTION\" | translate }}\r\n </div>\r\n </ng-container>\r\n\r\n <lib-footer-shared\r\n (continueButtonClick)=\"continue()\"\r\n (secondaryButtonClick)=\"clearMap()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'COMMON.CONTINUE' | translate\"\r\n [secondaryButtonText]=\"'COMMON.CLEAR' | translate\"\r\n ></lib-footer-shared>\r\n </div>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [":host{--lib-popup-modal-radius: 16px;--border-radius: var(--lib-popup-modal-radius);--lib-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--lib-popup-modal-color: #a8a8a8;--color: var(--lib-popup-modal-color, #a8a8a8);--max-width: var(--lib-bottom-modal-max-width, 500px);--lib-popup-modal-shadow: 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) !important;--box-shadow: var( --lib-popup-modal-shadow, 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) )}.selectables{background:#28252d;box-shadow:4.1px 4.1px 8.2px #00000052 inset;box-shadow:-2.46px -2.46px 3.28px #ffffff1a inset;border-radius:27.9px}.actions{width:42px;height:28px;border-radius:82.05px}.selected{background:linear-gradient(94.44deg,#fe3c72 1.26%,#e15561);box-shadow:3.28px 3.28px 6.56px #00000040;box-shadow:-1.64px -1.64px 8.2px #ffffff40}.select-places-text,.select-places-description{font-size:var(--font-size-small)}.button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.BottomModalComponent, selector: "lib-bottom-modal", inputs: ["breakpoints", "initialBreakpoint", "isOpen", "canDismiss", "showArrow", "showBackBtn", "showConfirm", "showCloseBtn", "loading", "showHeaderSeparator", "title", "confirmationTitle", "confirmationMsg", "confirmButton", "confirmCancelButton", "description", "secondaryButtonTitle", "submitButtonTitle", "cancelButtonTitle", "validModal", "adaptToContentHeight", "customClass"], outputs: ["isOpenChange", "breakpointChange", "closeModal", "submitModal", "secondaryButtonClick", "backClick", "showConfirmChange", "confirmEvent"] }, { kind: "directive", type: i7.LazyImageDirective, selector: "img" }, { kind: "component", type: i7.FooterSharedComponent, selector: "lib-footer-shared", inputs: ["loading$", "canContinue", "continueButtonText", "secondaryButtonText", "showBackButton", "continueButtonParameter$"], outputs: ["secondaryButtonClick", "continueButtonClick"] }, { kind: "component", type: i7.LibMapsComponent, selector: "lib-map", inputs: ["disableNotification", "markers", "initialLocation", "mapType", "enableDrag", "locations", "searchMapsString", "mapOptions", "directions$", "directionRenderOptions"], outputs: ["mapActionEvent"] }, { kind: "component", type: i8.CreateItineraryHeaderComponent, selector: "app-create-itinerary-header", inputs: ["heading", "progressBarValue", "discardItineraryId", "class"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
270
267
  }
271
268
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateItineraryDrawModeComponent, decorators: [{
272
269
  type: Component,
273
270
  args: [{ selector: 'lib-create-itinerary-draw-mode', standalone: false, template: "<app-create-itinerary-header\r\n [progressBarValue]=\"50\"\r\n heading=\"Create Itinerary\"\r\n></app-create-itinerary-header>\r\n<lib-map #libMap class=\"maps-100vh\"></lib-map>\r\n<lib-bottom-modal\r\n [showArrow]=\"true\"\r\n [(isOpen)]=\"isOpen\"\r\n [adaptToContentHeight]=\"true\"\r\n>\r\n <div class=\"\">\r\n <ng-container *ngIf=\"!mapDrawn\">\r\n <div class=\"flex items-center justify-between pl-4 pr-4\">\r\n <h3 class=\"font-Calistoga text-lg\">{{ \"ITINERARY.DRAW\" | translate }}</h3>\r\n <div class=\"selectables flex items-center\">\r\n <div\r\n (click)=\"updateAction(a)\"\r\n class=\"flex items-center justify-center actions\"\r\n *ngFor=\"let a of actions\"\r\n [ngClass]=\"{ selected: a === selected }\"\r\n >\r\n <img [src]=\"a\" alt=\"icon\" loading=\"lazy\" />\r\n </div>\r\n </div>\r\n </div>\r\n <p class=\"mt-3 px-4 mb-4\">{{ \"ITINERARY.DRAW_DESCRIPTION\" | translate }}</p>\r\n </ng-container>\r\n <ng-container *ngIf=\"mapDrawn\">\r\n <div class=\"ml-auto flex items-center justify-center gap-x-2\">\r\n <div class=\"flex items-center gap-x-1 text-xs\">\r\n <img\r\n loading=\"lazy\"\r\n [src]=\"ICONS['locationWhite']\"\r\n alt=\"location\"\r\n />\r\n <span>&nbsp;{{ \"ITINERARY.SELECT_MIN_PLACES\" | translate }}</span>\r\n </div>\r\n <div class=\"h-4 border w-0 border-secondary\"></div>\r\n <div class=\"flex items-center justify-center gap-x-2 text-xs\">\r\n <img loading=\"lazy\" [src]=\"ICONS['clock']\" alt=\"\" />\r\n <span>&nbsp;0 minutes</span>\r\n <span class=\"text-secondary font-thin\">(0.0 km)</span>\r\n </div>\r\n </div>\r\n <div class=\"select-places-description mt-5 text-center mb-4\">\r\n {{ \"ITINERARY.SELECT_PLACES_INSTRUCTION\" | translate }}\r\n </div>\r\n </ng-container>\r\n\r\n <lib-footer-shared\r\n (continueButtonClick)=\"continue()\"\r\n (secondaryButtonClick)=\"clearMap()\"\r\n [canContinue]=\"true\"\r\n [continueButtonText]=\"'COMMON.CONTINUE' | translate\"\r\n [secondaryButtonText]=\"'COMMON.CLEAR' | translate\"\r\n ></lib-footer-shared>\r\n </div>\r\n</lib-bottom-modal>\r\n<div\r\n (click)=\"showBottomModal()\"\r\n class=\"absolute bottom-0 cursor-pointer z-10\"\r\n style=\"left: 50%\"\r\n>\r\n <img\r\n style=\"transform: rotate(270deg)\"\r\n [src]=\"ICONS['rightArrow']\"\r\n alt=\"icon\"\r\n height=\"15\"\r\n width=\"15\"\r\n />\r\n</div>\r\n", styles: [":host{--lib-popup-modal-radius: 16px;--border-radius: var(--lib-popup-modal-radius);--lib-popup-modal-background: #28252d !important;--background: #28252d !important;--overflow: hidden !important;--lib-popup-modal-color: #a8a8a8;--color: var(--lib-popup-modal-color, #a8a8a8);--max-width: var(--lib-bottom-modal-max-width, 500px);--lib-popup-modal-shadow: 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) !important;--box-shadow: var( --lib-popup-modal-shadow, 5px 5px 95px 0px rgba(255, 255, 255, .32), -3px -3px 16px 0px rgba(255, 255, 255, .1) )}.selectables{background:#28252d;box-shadow:4.1px 4.1px 8.2px #00000052 inset;box-shadow:-2.46px -2.46px 3.28px #ffffff1a inset;border-radius:27.9px}.actions{width:42px;height:28px;border-radius:82.05px}.selected{background:linear-gradient(94.44deg,#fe3c72 1.26%,#e15561);box-shadow:3.28px 3.28px 6.56px #00000040;box-shadow:-1.64px -1.64px 8.2px #ffffff40}.select-places-text,.select-places-description{font-size:var(--font-size-small)}.button-container{background-color:#27242c;box-shadow:inset 0 6px 6px -6px #8a8a8aab}\n"] }]
274
- }], ctorParameters: () => [{ type: i1.Location }, { type: i0.ChangeDetectorRef }, { type: i2.Router }, { type: i2.ActivatedRoute }, { type: i3.ItineraryService }, { type: i4.LocationService }, { type: i5.ItineraryDrawModeTransferService }], propDecorators: { libMap: [{
271
+ }], ctorParameters: () => [{ type: i1.Location }, { type: i0.ChangeDetectorRef }, { type: i2.ActivatedRoute }, { type: i3.ItineraryService }, { type: i4.LocationService }, { type: i5.ItineraryDrawModeTransferService }, { type: i6.NavigationHelperService }], propDecorators: { libMap: [{
275
272
  type: ViewChild,
276
273
  args: ['libMap']
277
274
  }] } });
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS1kcmF3LW1vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXRpbmVyYXJ5LWxpYi9zcmMvbGliL2l0aW5lcmFyeS1hcHAvbW9kdWxlcy9pdGluZXJhcmllcy9wYWdlcy9idWlsZGVyL3BhZ2VzL2NyZWF0ZS1pdGluZXJhcnktZHJhdy1tb2RlL2NyZWF0ZS1pdGluZXJhcnktZHJhdy1tb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LWRyYXctbW9kZS9jcmVhdGUtaXRpbmVyYXJ5LWRyYXctbW9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7O0FBSXRGLE1BQU0sV0FBVyxHQUFHLHFDQUFxQyxDQUFDO0FBQzFELE1BQU0sWUFBWSxHQUFHLG1DQUFtQyxDQUFDO0FBUXpELE1BQU0sT0FBTyxnQ0FBZ0M7SUFxQmpDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBMUJWLEtBQUssR0FBVSxLQUFLLENBQUM7SUFDckIsT0FBTyxHQUFhLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxRQUFR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QUFDO3dHQXpTVSxnQ0FBZ0M7NEZBQWhDLGdDQUFnQyx3S0NwQjdDLHFtRkF1RUE7OzRGRG5EYSxnQ0FBZ0M7a0JBTjVDLFNBQVM7K0JBQ0ksZ0NBQWdDLGNBRzlCLEtBQUs7MlFBUUUsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSUNPTlMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fY29uc3RhbnRzL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IElpY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2ludGVyZmFjZS9pY29uJztcclxuaW1wb3J0IHsgSXRpbmVyYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX21vZGVscy9JdGluZXJhcnknO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSXRpbmVyYXJ5U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9pdGluZXJhcnkuc2VydmljZSc7XHJcbmltcG9ydCB7IEl0aW5lcmFyaWVzUm91dGVzRW51bSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19lbnVtcy9JdGVuYXJpZXNSb3V0ZXMuZW51bSc7XHJcbmltcG9ydCB7IExpYk1hcHNDb21wb25lbnQgfSBmcm9tICdAbmFuaXRlbmluamEvaW9uaWMtbGliJztcclxuaW1wb3J0IHsgTG9jYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL2xvY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlEcmF3TW9kZVRyYW5zZmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19zZXJ2aWNlcy9pdGluZXJhcnkuZHJhd21vZGUudHJhbnNmZXInO1xyXG5jb25zdCBkZWZhdWx0SWNvbiA9ICdhc3NldHMvaWNvbnMvbWFwLW1hcmtlcnMteWVsbG93LnN2Zyc7XHJcbmNvbnN0IHNlbGVjdGVkSWNvbiA9ICdhc3NldHMvaWNvbnMvcmVzdHUtaWNvbi1sYXJnZS5zdmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtaXRpbmVyYXJ5LWRyYXctbW9kZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS1kcmF3LW1vZGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2NyZWF0ZS1pdGluZXJhcnktZHJhdy1tb2RlLmNvbXBvbmVudC5jc3MnLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZUl0aW5lcmFyeURyYXdNb2RlQ29tcG9uZW50IHtcclxuICBJQ09OUzogSWljb24gPSBJQ09OUztcclxuICBhY3Rpb25zOiBzdHJpbmdbXSA9IFtJQ09OU1snbG9jYXRpb24nXSwgSUNPTlNbJ3BlbmNpbCddLCBJQ09OU1snYmFuJ11dO1xyXG4gIHNlbGVjdGVkOiBzdHJpbmcgPSB0aGlzLmFjdGlvbnNbMV07XHJcbiAgaXNPcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuICBpdGluZXJhcnkhOiBJdGluZXJhcnkgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnbGliTWFwJykgbGliTWFwITogTGliTWFwc0NvbXBvbmVudDtcclxuICBtYXBEcmF3bjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwb2x5Z29uITogZ29vZ2xlLm1hcHMuUG9seWdvbjsvL1RoZSBwb2x5Z29uIHJlbmRlcmVkIG9uIG1hcFxyXG4gIGluaXRpYWxMb2NhdGlvbiA9IHsgbGF0OiAyNC44NjA3LCBsbmc6IDY3LjAwMTEgfTsvL0xvY2F0aW9uIG9mIHRoZSB1c2VyXHJcbiAgcGxvdHRlZE1hcmtlcnM6IGdvb2dsZS5tYXBzLk1hcmtlcltdID0gW107Ly9QbG90dGVkIG1hcmtlcnMgb24gdGhlIG1hcFxyXG4gIHNlbGVjdGVkTWFya2VyczogZ29vZ2xlLm1hcHMuTWFya2VyW10gPSBbXTsvL1NlbGVjdGVkIG1hcmtlcnMgb24gdGhlIG1hcFxyXG4gIHBsYWNlc1Jlc3VsdCE6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdFtdOy8vUGxhY2VzIHJlc3VsdCByZXF1aXJlZCBmb3IgcHJldmlld1xyXG4gIHBsYWNlTWFya2Vyczoge1xyXG4gICAgbWFya2VyOiBnb29nbGUubWFwcy5NYXJrZXIsXHJcbiAgICBwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0XHJcbiAgfVtdID0gW107XHJcblxyXG4gIC8vTElGRSBDWUNMRVNcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBpdGluZXJhcnlTZXJ2aWNlOiBJdGluZXJhcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNmZXJTZXJ2aWNlOiBJdGluZXJhcnlEcmF3TW9kZVRyYW5zZmVyU2VydmljZVxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBpZCA9IHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3QucGFyYW1zWydpZCddO1xyXG4gICAgaWYgKGlkKSB7XHJcbiAgICAgIHRoaXMuaXRpbmVyYXJ5ID0gdGhpcy5pdGluZXJhcnlTZXJ2aWNlLmdldEJ5SWQoaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9VSSBMT0dJQ1xyXG4gIHVwZGF0ZUFjdGlvbihhY3Rpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZCA9IGFjdGlvbjtcclxuICAgIGlmKGFjdGlvbiA9PT0gdGhpcy5hY3Rpb25zWzBdKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcclxuICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX09SSUdJTixcclxuICAgICAgICB0aGlzLml0aW5lcmFyeT8uaWRcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgICBpZihhY3Rpb24gPT09IHRoaXMuYWN0aW9uc1syXSkge1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXHJcbiAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLklUSU5FUkFSWSxcclxuICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9OT19WSVNVQUxfRklMVEVSX01PREUsXHJcbiAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfTk9fVklTVUFMX0ZJTFRFUl9NT0RFX0NSRUFURSxcclxuICAgICAgICB0aGlzLml0aW5lcmFyeT8uaWRcclxuICAgICAgXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93Qm90dG9tTW9kYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZWFyY2hSZXN0YXVyYW50c0luUG9seWdvbihcclxuICAgIHBvbHlnb25Db29yZHM6XHJcbiAgICAgIHwgQXJyYXk8e1xyXG4gICAgICAgICAgbGF0OiBudW1iZXI7XHJcbiAgICAgICAgICBsbmc6IG51bWJlcjtcclxuICAgICAgICB9PlxyXG4gICAgICB8IHVuZGVmaW5lZCxcclxuICApIHtcclxuICAgIGlmIChwb2x5Z29uQ29vcmRzKSB7XHJcbiAgICAgIHRoaXMubWFwRHJhd24gPSB0cnVlO1xyXG4gICAgICBjb25zdCBib3VuZHMgPSBuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKCk7XHJcbiAgICAgIHBvbHlnb25Db29yZHMuZm9yRWFjaCgoY29vcmQpID0+IGJvdW5kcy5leHRlbmQoY29vcmQpKTtcclxuXHJcbiAgICAgIGNvbnN0IHNlcnZpY2UgPSBuZXcgZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2UoXHJcbiAgICAgICAgdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCEsXHJcbiAgICAgICk7XHJcblxyXG4gICAgICBzZXJ2aWNlLm5lYXJieVNlYXJjaChcclxuICAgICAgICB7XHJcbiAgICAgICAgICBib3VuZHM6IGJvdW5kcyxcclxuICAgICAgICAgIHR5cGU6ICdyZXN0YXVyYW50JyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIChcclxuICAgICAgICAgIHJlc3VsdHM6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdFtdIHwgbnVsbCxcclxuICAgICAgICAgIHN0YXR1czogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMsXHJcbiAgICAgICAgKSA9PiB7XHJcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VzU2VydmljZVN0YXR1cy5PSyAmJiByZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKChwbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gcGxhY2UuZ2VvbWV0cnk/LmxvY2F0aW9uO1xyXG4gICAgICAgICAgICAgIGlmICghbG9jYXRpb24pIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICByZXR1cm4gZ29vZ2xlLm1hcHMuZ2VvbWV0cnkucG9seS5jb250YWluc0xvY2F0aW9uKGxvY2F0aW9uLCB0aGlzLnBvbHlnb24pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucGxhY2VzUmVzdWx0ID0gZmlsdGVyZWRSZXN1bHRzO1xyXG4gICAgICAgICAgICBmaWx0ZXJlZFJlc3VsdHMuZm9yRWFjaCgocGxhY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuYWRkQ3VzdG9tTWFya2VyKHBsYWNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMubWFwRHJhd24gPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGRDdXN0b21NYXJrZXIocGxhY2U6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdCkge1xyXG4gICAgY29uc3QgbWFya2VyID0gbmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7XHJcbiAgICAgIG1hcDogdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCxcclxuICAgICAgcG9zaXRpb246IHBsYWNlLmdlb21ldHJ5Py5sb2NhdGlvbixcclxuICAgICAgdGl0bGU6IHBsYWNlLm5hbWUsXHJcbiAgICAgIGljb246IHtcclxuICAgICAgICB1cmw6ICdhc3NldHMvaWNvbnMvbWFwLW1hcmtlcnMteWVsbG93LnN2ZycsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMucGxvdHRlZE1hcmtlcnMucHVzaChtYXJrZXIpO1xyXG4gICAgdGhpcy5wbGFjZU1hcmtlcnMucHVzaCh7XHJcbiAgICAgIHBsYWNlOiBwbGFjZSxcclxuICAgICAgbWFya2VyOiBtYXJrZXJcclxuICAgIH0pO1xyXG4gICAgbWFya2VyLmFkZExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgLy8gVG9nZ2xlIHNlbGVjdGlvblxyXG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRNYXJrZXJzLmluZGV4T2YobWFya2VyKTtcclxuXHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgLy8gTWFya2VyIHdhcyBhbHJlYWR5IHNlbGVjdGVkIOKGkiBkZXNlbGVjdFxyXG4gICAgICAgIG1hcmtlci5zZXRJY29uKGRlZmF1bHRJY29uKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWFya2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIFNlbGVjdCBtYXJrZXJcclxuICAgICAgICBtYXJrZXIuc2V0SWNvbihzZWxlY3RlZEljb24pO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRNYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjbGVhck1hcCgpIHtcclxuICAgIHRoaXMubWFwRHJhd24gPSBmYWxzZTtcclxuICAgIGlmKHRoaXMucG9seWdvbikge1xyXG4gICAgICB0aGlzLnBvbHlnb24uc2V0TWFwKG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGVhck1hcmtlcnMoKTtcclxuICB9XHJcblxyXG4gIGNvbnRpbnVlKCkge1xyXG4gICAgY29uc3QgY29vcmRpbmF0ZXM6IEFycmF5PHsgbGF0OiBudW1iZXI7IGxuZzogbnVtYmVyIH0+ID0gW107XHJcbiAgICB0aGlzLnBvbHlnb24uZ2V0UGF0aCgpLmZvckVhY2goY29vcmQgPT4ge1xyXG4gICAgICBjb29yZGluYXRlcy5wdXNoKHsgbGF0OiBjb29yZC5sYXQoKSwgbG5nOiBjb29yZC5sbmcoKSB9KTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2Uuc2V0UG9seWdvbihjb29yZGluYXRlcyk7XHJcblxyXG4gICAgY29uc3Qgc2VsZWN0ZWRQbGFjZXMgPSB0aGlzLnNlbGVjdGVkTWFya2Vycy5tYXAoKHNlbGVjdGVkTWFya2VyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBsYWNlTWFya2VyID0gdGhpcy5wbGFjZU1hcmtlcnMuZmluZChwbGFjZU1hcmtlciA9PiBwbGFjZU1hcmtlci5tYXJrZXIgPT09IHNlbGVjdGVkTWFya2VyKTtcclxuICAgICAgcmV0dXJuIHBsYWNlTWFya2VyIS5wbGFjZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGFsbFBsYWNlcyA9IHRoaXMucGxhY2VNYXJrZXJzLm1hcChwbGFjZU1hcmtlciA9PiBwbGFjZU1hcmtlci5wbGFjZSk7XHJcblxyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2Uuc2V0UGxhY2VzKGFsbFBsYWNlcyk7XHJcbiAgICB0aGlzLnRyYW5zZmVyU2VydmljZS5zZXRTZWxlY3RlZFBsYWNlcyhzZWxlY3RlZFBsYWNlcyk7XHJcbiAgICB0aGlzLnRyYW5zZmVyU2VydmljZS5zZXRDdXJyZW50TG9jYXRpb24odGhpcy5pbml0aWFsTG9jYXRpb24pO1xyXG5cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcclxuICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLklUSU5FUkFSWSxcclxuICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfRFJBV19NT0RFLFxyXG4gICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uQ1JFQVRFX0lUSU5FUkFSWV9EUkFXX01PREVfUFJFVklFVyxcclxuICAgICAgdGhpcy5pdGluZXJhcnk/LmlkXHJcbiAgICBdKTtcclxuICB9XHJcblxyXG4gIGNsZWFyUG9seWdvbklmRXhpc3QoKSB7XHJcbiAgICBpZih0aGlzLnBvbHlnb24pIHtcclxuICAgICAgdGhpcy5wb2x5Z29uLnNldE1hcChudWxsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyTWFya2VycygpIHtcclxuICAgIGlmKHRoaXMucGxvdHRlZE1hcmtlcnM/Lmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnBsb3R0ZWRNYXJrZXJzPy5mb3JFYWNoKChwbG90dGVkTWFya2VyKSA9PiBwbG90dGVkTWFya2VyLnNldE1hcChudWxsKSk7XHJcbiAgICB9IFxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLmxvY2F0aW9uU2VydmljZS5nZXRDdXJyZW50TG9jYXRpb24oKVxyXG4gICAgICAuc3Vic2NyaWJlKChsb2NhdGlvbikgPT4ge1xyXG4gICAgICAgIHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXA/LnNldENlbnRlcih7XHJcbiAgICAgICAgICBsYXQ6IGxvY2F0aW9uLmxhdCxcclxuICAgICAgICAgIGxuZzogbG9jYXRpb24ubG9uZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvL1NldCB0aGUgaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgdXNlclxyXG4gICAgICAgIHRoaXMuaW5pdGlhbExvY2F0aW9uID0ge1xyXG4gICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICBsbmc6IGxvY2F0aW9uLmxvbmdcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcD8uc2V0Wm9vbSgxNSk7XHJcblxyXG4gICAgICAgIC8vQWRkIG1hcmtlciBmb3IgdXNlciBwb3NpdGlvblxyXG4gICAgICAgIG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICAgICAgbWFwOiB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwLFxyXG4gICAgICAgICAgcG9zaXRpb246IHtcclxuICAgICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICAgIGxuZzogbG9jYXRpb24ubG9uZ1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRpdGxlOiAnWW91IGFyZSBoZXJlJyxcclxuICAgICAgICAgIGljb246IHtcclxuICAgICAgICAgICAgdXJsOiAnYXNzZXRzL2N1cnJlbnRfbG9jYXRpb24uc3ZnJyxcclxuICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoNDAsIDQwKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIEVuYWJsZSBwb2x5Z29uIGRyYXdpbmdcclxuICAgICAgICBjb25zdCBkcmF3aW5nTWFuYWdlciA9IG5ldyBnb29nbGUubWFwcy5kcmF3aW5nLkRyYXdpbmdNYW5hZ2VyKHtcclxuICAgICAgICAgIGRyYXdpbmdNb2RlOiBnb29nbGUubWFwcy5kcmF3aW5nLk92ZXJsYXlUeXBlLlBPTFlHT04sXHJcbiAgICAgICAgICBkcmF3aW5nQ29udHJvbDogdHJ1ZSxcclxuICAgICAgICAgIGRyYXdpbmdDb250cm9sT3B0aW9uczoge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZ29vZ2xlLm1hcHMuQ29udHJvbFBvc2l0aW9uLlJJR0hUX0NFTlRFUixcclxuICAgICAgICAgICAgZHJhd2luZ01vZGVzOiBbZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5VHlwZS5QT0xZR09OXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwb2x5Z29uT3B0aW9uczoge1xyXG4gICAgICAgICAgICBzdHJva2VDb2xvcjogJyNFMTc1NzUnLFxyXG4gICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAwLFxyXG4gICAgICAgICAgICBzdHJva2VXZWlnaHQ6IDAsXHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogJyNFMTc1NzUnLFxyXG4gICAgICAgICAgICBmaWxsT3BhY2l0eTogMC4zLFxyXG4gICAgICAgICAgICBjbGlja2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGVkaXRhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICB6SW5kZXg6IDEsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGRyYXdpbmdNYW5hZ2VyLnNldE1hcCh0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwISk7XHJcblxyXG4gICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKGRyYXdpbmdNYW5hZ2VyLCAnZHJhd2luZ21vZGVfY2hhbmdlZCcsICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1vZGUgPSBkcmF3aW5nTWFuYWdlci5nZXREcmF3aW5nTW9kZSgpO1xyXG4gICAgICAgICAgaWYgKG1vZGUgPT09IGdvb2dsZS5tYXBzLmRyYXdpbmcuT3ZlcmxheVR5cGUuUE9MWUdPTikge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFyUG9seWdvbklmRXhpc3QoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gTGlzdGVuIGZvciBwb2x5Z29uIGNvbXBsZXRpb25cclxuICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihkcmF3aW5nTWFuYWdlciwgJ292ZXJsYXljb21wbGV0ZScsIChldmVudDogZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5Q29tcGxldGVFdmVudCkgPT4ge1xyXG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IGdvb2dsZS5tYXBzLmRyYXdpbmcuT3ZlcmxheVR5cGUuUE9MWUdPTikge1xyXG4gICAgICAgICAgICBjb25zdCBwb2x5Z29uID0gZXZlbnQub3ZlcmxheSBhcyBnb29nbGUubWFwcy5Qb2x5Z29uO1xyXG4gICAgICAgICAgICB0aGlzLnBvbHlnb24gPSBwb2x5Z29uO1xyXG4gICAgICAgICAgICAvLyBEaXNhYmxlIGRyYXdpbmcgYWZ0ZXIgb25lIHBvbHlnb25cclxuICAgICAgICAgICAgZHJhd2luZ01hbmFnZXIuc2V0RHJhd2luZ01vZGUobnVsbCk7XHJcblxyXG4gICAgICAgICAgICAvLyBBY2Nlc3MgdGhlIHBvbHlnb24gY29vcmRpbmF0ZXNcclxuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHBvbHlnb24uZ2V0UGF0aCgpO1xyXG4gICAgICAgICAgICBjb25zdCBjb29yZGluYXRlczogQXJyYXk8eyBsYXQ6IG51bWJlcjsgbG5nOiBudW1iZXIgfT4gPSBbXTtcclxuICAgICAgICAgICAgcGF0aC5mb3JFYWNoKChjb29yZDogZ29vZ2xlLm1hcHMuTGF0TG5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXMucHVzaCh7IGxhdDogY29vcmQubGF0KCksIGxuZzogY29vcmQubG5nKCkgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN0YXVyYW50c0luUG9seWdvbihjb29yZGluYXRlcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vTkFWSUdBVElPTlNcclxuICBiYWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcbiAgfVxyXG5cclxuICBuYXZUb1BpY2tTdGFydExvY2F0aW9uKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXHJcbiAgICAgIFtcclxuICAgICAgICBJdGluZXJhcmllc1JvdXRlc0VudW0uSVRJTkVSQVJZLFxyXG4gICAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5MT0NBVElPTl9QSUNLRVIsXHJcbiAgICAgICAgdGhpcy5pdGluZXJhcnk/LmlkLFxyXG4gICAgICBdLFxyXG4gICAgICB7IHF1ZXJ5UGFyYW1zOiB7IG1vZGU6ICdzdGFydCcgfSB9LFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldENsb3Nlc3RQb2ludE9uUG9seWdvbihwb2x5Z29uOiBnb29nbGUubWFwcy5Qb2x5Z29uLCBwb2ludDogZ29vZ2xlLm1hcHMuTGF0TG5nKTogZ29vZ2xlLm1hcHMuTGF0TG5nIHtcclxuICAgIGNvbnN0IHBhdGggPSBwb2x5Z29uLmdldFBhdGgoKTtcclxuICAgIGxldCBjbG9zZXN0UG9pbnQgPSBudWxsO1xyXG4gICAgbGV0IG1pbkRpc3RhbmNlID0gSW5maW5pdHk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoLmdldExlbmd0aCgpOyBpKyspIHtcclxuICAgICAgY29uc3Qgc3RhcnQgPSBwYXRoLmdldEF0KGkpO1xyXG4gICAgICBjb25zdCBlbmQgPSBwYXRoLmdldEF0KChpICsgMSkgJSBwYXRoLmdldExlbmd0aCgpKTtcclxuXHJcbiAgICAgIC8vIEludGVycG9sYXRlIHBvaW50cyBhbG9uZyB0aGUgc2VnbWVudFxyXG4gICAgICBmb3IgKGxldCB0ID0gMDsgdCA8PSAxOyB0ICs9IDAuMDUpIHtcclxuICAgICAgICBjb25zdCBpbnRlcnAgPSBnb29nbGUubWFwcy5nZW9tZXRyeS5zcGhlcmljYWwuaW50ZXJwb2xhdGUoc3RhcnQsIGVuZCwgdCk7XHJcbiAgICAgICAgY29uc3QgZGlzdCA9IGdvb2dsZS5tYXBzLmdlb21ldHJ5LnNwaGVyaWNhbC5jb21wdXRlRGlzdGFuY2VCZXR3ZWVuKHBvaW50LCBpbnRlcnApO1xyXG4gICAgICAgIGlmIChkaXN0IDwgbWluRGlzdGFuY2UpIHtcclxuICAgICAgICAgIG1pbkRpc3RhbmNlID0gZGlzdDtcclxuICAgICAgICAgIGNsb3Nlc3RQb2ludCA9IGludGVycDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY2xvc2VzdFBvaW50ITtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1jcmVhdGUtaXRpbmVyYXJ5LWhlYWRlclxyXG4gIFtwcm9ncmVzc0JhclZhbHVlXT1cIjUwXCJcclxuICBoZWFkaW5nPVwiQ3JlYXRlIEl0aW5lcmFyeVwiXHJcbj48L2FwcC1jcmVhdGUtaXRpbmVyYXJ5LWhlYWRlcj5cclxuPGxpYi1tYXAgI2xpYk1hcCBjbGFzcz1cIm1hcHMtMTAwdmhcIj48L2xpYi1tYXA+XHJcbjxsaWItYm90dG9tLW1vZGFsXHJcbiAgW3Nob3dBcnJvd109XCJ0cnVlXCJcclxuICBbKGlzT3BlbildPVwiaXNPcGVuXCJcclxuICBbYWRhcHRUb0NvbnRlbnRIZWlnaHRdPVwidHJ1ZVwiXHJcbj5cclxuICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1hcERyYXduXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcGwtNCBwci00XCI+XHJcbiAgICAgICAgPGgzIGNsYXNzPVwiZm9udC1DYWxpc3RvZ2EgdGV4dC1sZ1wiPnt7IFwiSVRJTkVSQVJZLkRSQVdcIiB8IHRyYW5zbGF0ZSB9fTwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGFibGVzIGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVBY3Rpb24oYSlcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGFjdGlvbnNcIlxyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgYSBvZiBhY3Rpb25zXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBzZWxlY3RlZDogYSA9PT0gc2VsZWN0ZWQgfVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJhXCIgYWx0PVwiaWNvblwiIGxvYWRpbmc9XCJsYXp5XCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHAgY2xhc3M9XCJtdC0zIHB4LTQgbWItNFwiPnt7IFwiSVRJTkVSQVJZLkRSQVdfREVTQ1JJUFRJT05cIiB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1hcERyYXduXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtbC1hdXRvIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC14LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLXgtMSB0ZXh0LXhzXCI+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgICBbc3JjXT1cIklDT05TWydsb2NhdGlvbldoaXRlJ11cIlxyXG4gICAgICAgICAgICBhbHQ9XCJsb2NhdGlvblwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPiZuYnNwO3t7IFwiSVRJTkVSQVJZLlNFTEVDVF9NSU5fUExBQ0VTXCIgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImgtNCBib3JkZXIgdy0wIGJvcmRlci1zZWNvbmRhcnlcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLXgtMiB0ZXh0LXhzXCI+XHJcbiAgICAgICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBbc3JjXT1cIklDT05TWydjbG9jayddXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgPHNwYW4+Jm5ic3A7MCBtaW51dGVzPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5IGZvbnQtdGhpblwiPigwLjAga20pPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1wbGFjZXMtZGVzY3JpcHRpb24gbXQtNSB0ZXh0LWNlbnRlciBtYi00XCI+XHJcbiAgICAgICAge3sgXCJJVElORVJBUlkuU0VMRUNUX1BMQUNFU19JTlNUUlVDVElPTlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgPGxpYi1mb290ZXItc2hhcmVkXHJcbiAgICAoY29udGludWVCdXR0b25DbGljayk9XCJjb250aW51ZSgpXCJcclxuICAgIChzZWNvbmRhcnlCdXR0b25DbGljayk9XCJjbGVhck1hcCgpXCJcclxuICAgIFtjYW5Db250aW51ZV09XCJ0cnVlXCJcclxuICAgIFtjb250aW51ZUJ1dHRvblRleHRdPVwiJ0NPTU1PTi5DT05USU5VRScgfCB0cmFuc2xhdGVcIlxyXG4gICAgW3NlY29uZGFyeUJ1dHRvblRleHRdPVwiJ0NPTU1PTi5DTEVBUicgfCB0cmFuc2xhdGVcIlxyXG4gICAgPjwvbGliLWZvb3Rlci1zaGFyZWQ+XHJcbiAgPC9kaXY+XHJcbjwvbGliLWJvdHRvbS1tb2RhbD5cclxuPGRpdlxyXG4gIChjbGljayk9XCJzaG93Qm90dG9tTW9kYWwoKVwiXHJcbiAgY2xhc3M9XCJhYnNvbHV0ZSBib3R0b20tMCBjdXJzb3ItcG9pbnRlciB6LTEwXCJcclxuICBzdHlsZT1cImxlZnQ6IDUwJVwiXHJcbj5cclxuICA8aW1nXHJcbiAgICBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDI3MGRlZylcIlxyXG4gICAgW3NyY109XCJJQ09OU1sncmlnaHRBcnJvdyddXCJcclxuICAgIGFsdD1cImljb25cIlxyXG4gICAgaGVpZ2h0PVwiMTVcIlxyXG4gICAgd2lkdGg9XCIxNVwiXHJcbiAgLz5cclxuPC9kaXY+XHJcbiJdfQ==
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWl0aW5lcmFyeS1kcmF3LW1vZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXRpbmVyYXJ5LWxpYi9zcmMvbGliL2l0aW5lcmFyeS1hcHAvbW9kdWxlcy9pdGluZXJhcmllcy9wYWdlcy9idWlsZGVyL3BhZ2VzL2NyZWF0ZS1pdGluZXJhcnktZHJhdy1tb2RlL2NyZWF0ZS1pdGluZXJhcnktZHJhdy1tb2RlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2l0aW5lcmFyeS1saWIvc3JjL2xpYi9pdGluZXJhcnktYXBwL21vZHVsZXMvaXRpbmVyYXJpZXMvcGFnZXMvYnVpbGRlci9wYWdlcy9jcmVhdGUtaXRpbmVyYXJ5LWRyYXctbW9kZS9jcmVhdGUtaXRpbmVyYXJ5LWRyYXctbW9kZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBSy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDOzs7Ozs7Ozs7OztBQUt0RixNQUFNLFdBQVcsR0FBRyxxQ0FBcUMsQ0FBQztBQUMxRCxNQUFNLFlBQVksR0FBRyxtQ0FBbUMsQ0FBQztBQVF6RCxNQUFNLE9BQU8sZ0NBQWdDO0lBcUJqQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTFCVixLQUFLLEdBQVUsS0FBSyxDQUFDO0lBQ3JCLE9BQU8sR0FBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkUsUUFBUSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsTUFBTSxHQUFZLElBQUksQ0FBQztJQUN2QixTQUFTLENBQXlCO0lBQ2IsTUFBTSxDQUFvQjtJQUMvQyxRQUFRLEdBQVksS0FBSyxDQUFDO0lBRTFCLE9BQU8sQ0FBdUIsQ0FBQSw2QkFBNkI7SUFDM0QsZUFBZSxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQSxzQkFBc0I7SUFDdkUsY0FBYyxHQUF5QixFQUFFLENBQUMsQ0FBQSw0QkFBNEI7SUFDdEUsZUFBZSxHQUF5QixFQUFFLENBQUMsQ0FBQSw2QkFBNkI7SUFDeEUsWUFBWSxDQUFvQyxDQUFBLG9DQUFvQztJQUNwRixZQUFZLEdBR04sRUFBRSxDQUFDO0lBRVQsYUFBYTtJQUNiLFlBQ1UsUUFBa0IsRUFDbEIsR0FBc0IsRUFDdEIsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLGVBQWdDLEVBQ2hDLGVBQWlELEVBQ2pELFNBQWtDO1FBTmxDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLG9CQUFlLEdBQWYsZUFBZSxDQUFrQztRQUNqRCxjQUFTLEdBQVQsU0FBUyxDQUF5QjtJQUN6QyxDQUFDO0lBRUosUUFBUTtRQUNOLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRCxVQUFVO0lBQ1YsWUFBWSxDQUFDLE1BQWM7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBRyxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQkFDdEIscUJBQXFCLENBQUMsdUJBQXVCO2dCQUM3QyxJQUFJLENBQUMsU0FBVSxDQUFDLEVBQUU7YUFDbkIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDekI7UUFDRCxJQUFHLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO2dCQUN0QixxQkFBcUIsQ0FBQyxzQ0FBc0M7Z0JBQzVELHFCQUFxQixDQUFDLDZDQUE2QztnQkFDbkUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxFQUFFO2FBQ25CLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCwwQkFBMEIsQ0FDeEIsYUFLYTtRQUViLElBQUksYUFBYSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM5QyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFFdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVUsQ0FDM0IsQ0FBQztZQUVGLE9BQU8sQ0FBQyxZQUFZLENBQ2xCO2dCQUNFLE1BQU0sRUFBRSxNQUFNO2dCQUNkLElBQUksRUFBRSxZQUFZO2FBQ25CLEVBQ0QsQ0FDRSxPQUFnRCxFQUNoRCxNQUE4QyxFQUM5QyxFQUFFO2dCQUNGLElBQUksTUFBTSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUU7b0JBQ25FLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTt3QkFDL0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7d0JBQzFDLElBQUksQ0FBQyxRQUFROzRCQUFFLE9BQU8sS0FBSyxDQUFDO3dCQUM1QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUM1RSxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsWUFBWSxHQUFHLGVBQWUsQ0FBQztvQkFDcEMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQXFDLEVBQUUsRUFBRTt3QkFDaEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDOUIsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7aUJBQ3RCO1lBQ0gsQ0FBQyxDQUNGLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsS0FBcUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNwQyxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUztZQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRO1lBQ2xDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNqQixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLHFDQUFxQzthQUMzQztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxLQUFLO1lBQ1osTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDL0IsbUJBQW1CO1lBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5ELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNkLHlDQUF5QztnQkFDekMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLGdCQUFnQjtnQkFDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbkM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLFdBQVcsR0FBd0MsRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLENBQUM7WUFDakcsT0FBTyxXQUFZLENBQUMsS0FBSyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztZQUN0QixxQkFBcUIsQ0FBQywwQkFBMEI7WUFDaEQscUJBQXFCLENBQUMsa0NBQWtDO1lBQ3hELElBQUksQ0FBQyxTQUFVLENBQUMsRUFBRTtTQUNuQixFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxFQUFFO1lBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUU7YUFDeEMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQztnQkFDbkMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxHQUFHO2dCQUNqQixHQUFHLEVBQUUsUUFBUSxDQUFDLElBQUk7YUFDbkIsQ0FBQyxDQUFDO1lBRUgsc0NBQXNDO1lBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUc7Z0JBQ3JCLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztnQkFDakIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJO2FBQ25CLENBQUE7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRXZDLDhCQUE4QjtZQUM5QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNyQixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUztnQkFDOUIsUUFBUSxFQUFFO29CQUNSLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztvQkFDakIsR0FBRyxFQUFFLFFBQVEsQ0FBQyxJQUFJO2lCQUNuQjtnQkFDRCxLQUFLLEVBQUUsY0FBYztnQkFDckIsSUFBSSxFQUFFO29CQUNKLEdBQUcsRUFBRSw2QkFBNkI7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQ3pDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgseUJBQXlCO1lBQ3pCLE1BQU0sY0FBYyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUM1RCxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU87Z0JBQ3BELGNBQWMsRUFBRSxJQUFJO2dCQUNwQixxQkFBcUIsRUFBRTtvQkFDckIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVk7b0JBQ2xELFlBQVksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7aUJBQ3hEO2dCQUNELGNBQWMsRUFBRTtvQkFDZCxXQUFXLEVBQUUsU0FBUztvQkFDdEIsYUFBYSxFQUFFLENBQUM7b0JBQ2hCLFlBQVksRUFBRSxDQUFDO29CQUNmLFNBQVMsRUFBRSxTQUFTO29CQUNwQixXQUFXLEVBQUUsR0FBRztvQkFDaEIsU0FBUyxFQUFFLElBQUk7b0JBQ2YsUUFBUSxFQUFFLElBQUk7b0JBQ2QsTUFBTSxFQUFFLENBQUM7aUJBQ1Y7YUFDRixDQUFDLENBQUM7WUFDSCxjQUFjLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVUsQ0FBQyxDQUFDO1lBRWxELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUscUJBQXFCLEVBQUUsR0FBRyxFQUFFO2dCQUN4RSxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzdDLElBQUksSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUU7b0JBQ3BELElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2lCQUM1QjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsZ0NBQWdDO1lBQ2hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxLQUErQyxFQUFFLEVBQUU7Z0JBQ25ILElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFO29CQUMxRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBOEIsQ0FBQztvQkFDckQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7b0JBQ3ZCLG9DQUFvQztvQkFDcEMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFcEMsaUNBQWlDO29CQUNqQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQy9CLE1BQU0sV0FBVyxHQUF3QyxFQUFFLENBQUM7b0JBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUF5QixFQUFFLEVBQUU7d0JBQ3pDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMzRCxDQUFDLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsMEJBQTBCLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQzlDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO0lBQ2IsSUFBSTtRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FDckI7WUFDRSxxQkFBcUIsQ0FBQyxlQUFlO1lBQ3JDLElBQUksQ0FBQyxTQUFVLENBQUMsRUFBRTtTQUNuQixFQUNELElBQUksQ0FBQyxjQUFjLEVBQ25CLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQsd0JBQXdCLENBQUMsT0FBNEIsRUFBRSxLQUF5QjtRQUM5RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUUzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUVuRCx1Q0FBdUM7WUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2xGLElBQUksSUFBSSxHQUFHLFdBQVcsRUFBRTtvQkFDdEIsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDbkIsWUFBWSxHQUFHLE1BQU0sQ0FBQztpQkFDdkI7YUFDRjtTQUNGO1FBRUQsT0FBTyxZQUFhLENBQUM7SUFDdkIsQ0FBQzt3R0F0U1UsZ0NBQWdDOzRGQUFoQyxnQ0FBZ0Msd0tDckI3QyxxbUZBdUVBOzs0RkRsRGEsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNJLGdDQUFnQyxjQUc5QixLQUFLOzRSQVFFLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElDT05TIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2NvbnN0YW50cy9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBJaWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19pbnRlcmZhY2UvaWNvbic7XHJcbmltcG9ydCB7IEl0aW5lcmFyeSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL19tb2RlbHMvSXRpbmVyYXJ5JztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL2l0aW5lcmFyeS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX2VudW1zL0l0ZW5hcmllc1JvdXRlcy5lbnVtJztcclxuaW1wb3J0IHsgTGliTWFwc0NvbXBvbmVudCB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9fc2VydmljZXMvbG9jYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEl0aW5lcmFyeURyYXdNb2RlVHJhbnNmZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL2l0aW5lcmFyeS5kcmF3bW9kZS50cmFuc2Zlcic7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25IZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vX3NlcnZpY2VzL25hdmlnYXRpb24taGVscGVyLnNlcnZpY2UnO1xyXG5jb25zdCBkZWZhdWx0SWNvbiA9ICdhc3NldHMvaWNvbnMvbWFwLW1hcmtlcnMteWVsbG93LnN2Zyc7XHJcbmNvbnN0IHNlbGVjdGVkSWNvbiA9ICdhc3NldHMvaWNvbnMvcmVzdHUtaWNvbi1sYXJnZS5zdmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2xpYi1jcmVhdGUtaXRpbmVyYXJ5LWRyYXctbW9kZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLWl0aW5lcmFyeS1kcmF3LW1vZGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmw6ICcuL2NyZWF0ZS1pdGluZXJhcnktZHJhdy1tb2RlLmNvbXBvbmVudC5jc3MnLFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZUl0aW5lcmFyeURyYXdNb2RlQ29tcG9uZW50IHtcclxuICBJQ09OUzogSWljb24gPSBJQ09OUztcclxuICBhY3Rpb25zOiBzdHJpbmdbXSA9IFtJQ09OU1snbG9jYXRpb24nXSwgSUNPTlNbJ3BlbmNpbCddLCBJQ09OU1snYmFuJ11dO1xyXG4gIHNlbGVjdGVkOiBzdHJpbmcgPSB0aGlzLmFjdGlvbnNbMV07XHJcbiAgaXNPcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuICBpdGluZXJhcnkhOiBJdGluZXJhcnkgfCB1bmRlZmluZWQ7XHJcbiAgQFZpZXdDaGlsZCgnbGliTWFwJykgbGliTWFwITogTGliTWFwc0NvbXBvbmVudDtcclxuICBtYXBEcmF3bjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwb2x5Z29uITogZ29vZ2xlLm1hcHMuUG9seWdvbjsvL1RoZSBwb2x5Z29uIHJlbmRlcmVkIG9uIG1hcFxyXG4gIGluaXRpYWxMb2NhdGlvbiA9IHsgbGF0OiAyNC44NjA3LCBsbmc6IDY3LjAwMTEgfTsvL0xvY2F0aW9uIG9mIHRoZSB1c2VyXHJcbiAgcGxvdHRlZE1hcmtlcnM6IGdvb2dsZS5tYXBzLk1hcmtlcltdID0gW107Ly9QbG90dGVkIG1hcmtlcnMgb24gdGhlIG1hcFxyXG4gIHNlbGVjdGVkTWFya2VyczogZ29vZ2xlLm1hcHMuTWFya2VyW10gPSBbXTsvL1NlbGVjdGVkIG1hcmtlcnMgb24gdGhlIG1hcFxyXG4gIHBsYWNlc1Jlc3VsdCE6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZVJlc3VsdFtdOy8vUGxhY2VzIHJlc3VsdCByZXF1aXJlZCBmb3IgcHJldmlld1xyXG4gIHBsYWNlTWFya2Vyczoge1xyXG4gICAgbWFya2VyOiBnb29nbGUubWFwcy5NYXJrZXIsXHJcbiAgICBwbGFjZTogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlUmVzdWx0XHJcbiAgfVtdID0gW107XHJcblxyXG4gIC8vTElGRSBDWUNMRVNcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIGl0aW5lcmFyeVNlcnZpY2U6IEl0aW5lcmFyeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2ZlclNlcnZpY2U6IEl0aW5lcmFyeURyYXdNb2RlVHJhbnNmZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuYXZIZWxwZXI6IE5hdmlnYXRpb25IZWxwZXJTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlkID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2lkJ107XHJcbiAgICBpZiAoaWQpIHtcclxuICAgICAgdGhpcy5pdGluZXJhcnkgPSB0aGlzLml0aW5lcmFyeVNlcnZpY2UuZ2V0QnlJZChpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL1VJIExPR0lDXHJcbiAgdXBkYXRlQWN0aW9uKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gYWN0aW9uO1xyXG4gICAgaWYoYWN0aW9uID09PSB0aGlzLmFjdGlvbnNbMF0pIHtcclxuICAgICAgdGhpcy5uYXZIZWxwZXIubmF2aWdhdGUoW1xyXG4gICAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX09SSUdJTixcclxuICAgICAgICB0aGlzLml0aW5lcmFyeSEuaWRcclxuICAgICAgXSwgdGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgICB9XHJcbiAgICBpZihhY3Rpb24gPT09IHRoaXMuYWN0aW9uc1syXSkge1xyXG4gICAgICB0aGlzLm5hdkhlbHBlci5uYXZpZ2F0ZShbXHJcbiAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfTk9fVklTVUFMX0ZJTFRFUl9NT0RFLFxyXG4gICAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX05PX1ZJU1VBTF9GSUxURVJfTU9ERV9DUkVBVEUsXHJcbiAgICAgICAgdGhpcy5pdGluZXJhcnkhLmlkXHJcbiAgICAgIF0sIHRoaXMuYWN0aXZhdGVkUm91dGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2hvd0JvdHRvbU1vZGFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2VhcmNoUmVzdGF1cmFudHNJblBvbHlnb24oXHJcbiAgICBwb2x5Z29uQ29vcmRzOlxyXG4gICAgICB8IEFycmF5PHtcclxuICAgICAgICAgIGxhdDogbnVtYmVyO1xyXG4gICAgICAgICAgbG5nOiBudW1iZXI7XHJcbiAgICAgICAgfT5cclxuICAgICAgfCB1bmRlZmluZWQsXHJcbiAgKSB7XHJcbiAgICBpZiAocG9seWdvbkNvb3Jkcykge1xyXG4gICAgICB0aGlzLm1hcERyYXduID0gdHJ1ZTtcclxuICAgICAgY29uc3QgYm91bmRzID0gbmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcygpO1xyXG4gICAgICBwb2x5Z29uQ29vcmRzLmZvckVhY2goKGNvb3JkKSA9PiBib3VuZHMuZXh0ZW5kKGNvb3JkKSk7XHJcblxyXG4gICAgICBjb25zdCBzZXJ2aWNlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlKFxyXG4gICAgICAgIHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAhLFxyXG4gICAgICApO1xyXG5cclxuICAgICAgc2VydmljZS5uZWFyYnlTZWFyY2goXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYm91bmRzOiBib3VuZHMsXHJcbiAgICAgICAgICB0eXBlOiAncmVzdGF1cmFudCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoXHJcbiAgICAgICAgICByZXN1bHRzOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHRbXSB8IG51bGwsXHJcbiAgICAgICAgICBzdGF0dXM6IGdvb2dsZS5tYXBzLnBsYWNlcy5QbGFjZXNTZXJ2aWNlU3RhdHVzLFxyXG4gICAgICAgICkgPT4ge1xyXG4gICAgICAgICAgaWYgKHN0YXR1cyA9PT0gZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlc1NlcnZpY2VTdGF0dXMuT0sgJiYgcmVzdWx0cykge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFJlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigocGxhY2UpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHBsYWNlLmdlb21ldHJ5Py5sb2NhdGlvbjtcclxuICAgICAgICAgICAgICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGdvb2dsZS5tYXBzLmdlb21ldHJ5LnBvbHkuY29udGFpbnNMb2NhdGlvbihsb2NhdGlvbiwgdGhpcy5wb2x5Z29uKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBsYWNlc1Jlc3VsdCA9IGZpbHRlcmVkUmVzdWx0cztcclxuICAgICAgICAgICAgZmlsdGVyZWRSZXN1bHRzLmZvckVhY2goKHBsYWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmFkZEN1c3RvbU1hcmtlcihwbGFjZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLm1hcERyYXduID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkQ3VzdG9tTWFya2VyKHBsYWNlOiBnb29nbGUubWFwcy5wbGFjZXMuUGxhY2VSZXN1bHQpIHtcclxuICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xyXG4gICAgICBtYXA6IHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXAsXHJcbiAgICAgIHBvc2l0aW9uOiBwbGFjZS5nZW9tZXRyeT8ubG9jYXRpb24sXHJcbiAgICAgIHRpdGxlOiBwbGFjZS5uYW1lLFxyXG4gICAgICBpY29uOiB7XHJcbiAgICAgICAgdXJsOiAnYXNzZXRzL2ljb25zL21hcC1tYXJrZXJzLXllbGxvdy5zdmcnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnBsb3R0ZWRNYXJrZXJzLnB1c2gobWFya2VyKTtcclxuICAgIHRoaXMucGxhY2VNYXJrZXJzLnB1c2goe1xyXG4gICAgICBwbGFjZTogcGxhY2UsXHJcbiAgICAgIG1hcmtlcjogbWFya2VyXHJcbiAgICB9KTtcclxuICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XHJcbiAgICAgIC8vIFRvZ2dsZSBzZWxlY3Rpb25cclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkTWFya2Vycy5pbmRleE9mKG1hcmtlcik7XHJcblxyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIC8vIE1hcmtlciB3YXMgYWxyZWFkeSBzZWxlY3RlZCDihpIgZGVzZWxlY3RcclxuICAgICAgICBtYXJrZXIuc2V0SWNvbihkZWZhdWx0SWNvbik7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZE1hcmtlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBTZWxlY3QgbWFya2VyXHJcbiAgICAgICAgbWFya2VyLnNldEljb24oc2VsZWN0ZWRJY29uKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkTWFya2Vycy5wdXNoKG1hcmtlcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJNYXAoKSB7XHJcbiAgICB0aGlzLm1hcERyYXduID0gZmFsc2U7XHJcbiAgICBpZih0aGlzLnBvbHlnb24pIHtcclxuICAgICAgdGhpcy5wb2x5Z29uLnNldE1hcChudWxsKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xlYXJNYXJrZXJzKCk7XHJcbiAgfVxyXG5cclxuICBjb250aW51ZSgpIHtcclxuICAgIGNvbnN0IGNvb3JkaW5hdGVzOiBBcnJheTx7IGxhdDogbnVtYmVyOyBsbmc6IG51bWJlciB9PiA9IFtdO1xyXG4gICAgdGhpcy5wb2x5Z29uLmdldFBhdGgoKS5mb3JFYWNoKGNvb3JkID0+IHtcclxuICAgICAgY29vcmRpbmF0ZXMucHVzaCh7IGxhdDogY29vcmQubGF0KCksIGxuZzogY29vcmQubG5nKCkgfSk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNldFBvbHlnb24oY29vcmRpbmF0ZXMpO1xyXG5cclxuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2VzID0gdGhpcy5zZWxlY3RlZE1hcmtlcnMubWFwKChzZWxlY3RlZE1hcmtlcikgPT4ge1xyXG4gICAgICBjb25zdCBwbGFjZU1hcmtlciA9IHRoaXMucGxhY2VNYXJrZXJzLmZpbmQocGxhY2VNYXJrZXIgPT4gcGxhY2VNYXJrZXIubWFya2VyID09PSBzZWxlY3RlZE1hcmtlcik7XHJcbiAgICAgIHJldHVybiBwbGFjZU1hcmtlciEucGxhY2U7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBhbGxQbGFjZXMgPSB0aGlzLnBsYWNlTWFya2Vycy5tYXAocGxhY2VNYXJrZXIgPT4gcGxhY2VNYXJrZXIucGxhY2UpO1xyXG5cclxuICAgIHRoaXMudHJhbnNmZXJTZXJ2aWNlLnNldFBsYWNlcyhhbGxQbGFjZXMpO1xyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2Uuc2V0U2VsZWN0ZWRQbGFjZXMoc2VsZWN0ZWRQbGFjZXMpO1xyXG4gICAgdGhpcy50cmFuc2ZlclNlcnZpY2Uuc2V0Q3VycmVudExvY2F0aW9uKHRoaXMuaW5pdGlhbExvY2F0aW9uKTtcclxuXHJcbiAgICB0aGlzLm5hdkhlbHBlci5uYXZpZ2F0ZShbXHJcbiAgICAgIEl0aW5lcmFyaWVzUm91dGVzRW51bS5DUkVBVEVfSVRJTkVSQVJZX0RSQVdfTU9ERSxcclxuICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkNSRUFURV9JVElORVJBUllfRFJBV19NT0RFX1BSRVZJRVcsXHJcbiAgICAgIHRoaXMuaXRpbmVyYXJ5IS5pZFxyXG4gICAgXSwgdGhpcy5hY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgfVxyXG5cclxuICBjbGVhclBvbHlnb25JZkV4aXN0KCkge1xyXG4gICAgaWYodGhpcy5wb2x5Z29uKSB7XHJcbiAgICAgIHRoaXMucG9seWdvbi5zZXRNYXAobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhck1hcmtlcnMoKSB7XHJcbiAgICBpZih0aGlzLnBsb3R0ZWRNYXJrZXJzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5wbG90dGVkTWFya2Vycz8uZm9yRWFjaCgocGxvdHRlZE1hcmtlcikgPT4gcGxvdHRlZE1hcmtlci5zZXRNYXAobnVsbCkpO1xyXG4gICAgfSBcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgdGhpcy5sb2NhdGlvblNlcnZpY2UuZ2V0Q3VycmVudExvY2F0aW9uKClcclxuICAgICAgLnN1YnNjcmliZSgobG9jYXRpb24pID0+IHtcclxuICAgICAgICB0aGlzLmxpYk1hcC5tYXAuZ29vZ2xlTWFwPy5zZXRDZW50ZXIoe1xyXG4gICAgICAgICAgbGF0OiBsb2NhdGlvbi5sYXQsXHJcbiAgICAgICAgICBsbmc6IGxvY2F0aW9uLmxvbmdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy9TZXQgdGhlIGluaXRpYWwgbG9jYXRpb24gb2YgdGhlIHVzZXJcclxuICAgICAgICB0aGlzLmluaXRpYWxMb2NhdGlvbiA9IHtcclxuICAgICAgICAgIGxhdDogbG9jYXRpb24ubGF0LFxyXG4gICAgICAgICAgbG5nOiBsb2NhdGlvbi5sb25nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGliTWFwLm1hcC5nb29nbGVNYXA/LnNldFpvb20oMTUpO1xyXG5cclxuICAgICAgICAvL0FkZCBtYXJrZXIgZm9yIHVzZXIgcG9zaXRpb25cclxuICAgICAgICBuZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtcclxuICAgICAgICAgIG1hcDogdGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCxcclxuICAgICAgICAgIHBvc2l0aW9uOiB7XHJcbiAgICAgICAgICAgIGxhdDogbG9jYXRpb24ubGF0LFxyXG4gICAgICAgICAgICBsbmc6IGxvY2F0aW9uLmxvbmdcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB0aXRsZTogJ1lvdSBhcmUgaGVyZScsXHJcbiAgICAgICAgICBpY29uOiB7XHJcbiAgICAgICAgICAgIHVybDogJ2Fzc2V0cy9jdXJyZW50X2xvY2F0aW9uLnN2ZycsXHJcbiAgICAgICAgICAgIHNjYWxlZFNpemU6IG5ldyBnb29nbGUubWFwcy5TaXplKDQwLCA0MCksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBFbmFibGUgcG9seWdvbiBkcmF3aW5nXHJcbiAgICAgICAgY29uc3QgZHJhd2luZ01hbmFnZXIgPSBuZXcgZ29vZ2xlLm1hcHMuZHJhd2luZy5EcmF3aW5nTWFuYWdlcih7XHJcbiAgICAgICAgICBkcmF3aW5nTW9kZTogZ29vZ2xlLm1hcHMuZHJhd2luZy5PdmVybGF5VHlwZS5QT0xZR09OLFxyXG4gICAgICAgICAgZHJhd2luZ0NvbnRyb2w6IHRydWUsXHJcbiAgICAgICAgICBkcmF3aW5nQ29udHJvbE9wdGlvbnM6IHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGdvb2dsZS5tYXBzLkNvbnRyb2xQb3NpdGlvbi5SSUdIVF9DRU5URVIsXHJcbiAgICAgICAgICAgIGRyYXdpbmdNb2RlczogW2dvb2dsZS5tYXBzLmRyYXdpbmcuT3ZlcmxheVR5cGUuUE9MWUdPTl0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgcG9seWdvbk9wdGlvbnM6IHtcclxuICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICcjRTE3NTc1JyxcclxuICAgICAgICAgICAgc3Ryb2tlT3BhY2l0eTogMCxcclxuICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAwLFxyXG4gICAgICAgICAgICBmaWxsQ29sb3I6ICcjRTE3NTc1JyxcclxuICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuMyxcclxuICAgICAgICAgICAgY2xpY2thYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgekluZGV4OiAxLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgICBkcmF3aW5nTWFuYWdlci5zZXRNYXAodGhpcy5saWJNYXAubWFwLmdvb2dsZU1hcCEpO1xyXG5cclxuICAgICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihkcmF3aW5nTWFuYWdlciwgJ2RyYXdpbmdtb2RlX2NoYW5nZWQnLCAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtb2RlID0gZHJhd2luZ01hbmFnZXIuZ2V0RHJhd2luZ01vZGUoKTtcclxuICAgICAgICAgIGlmIChtb2RlID09PSBnb29nbGUubWFwcy5kcmF3aW5nLk92ZXJsYXlUeXBlLlBPTFlHT04pIHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhclBvbHlnb25JZkV4aXN0KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIExpc3RlbiBmb3IgcG9seWdvbiBjb21wbGV0aW9uXHJcbiAgICAgICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoZHJhd2luZ01hbmFnZXIsICdvdmVybGF5Y29tcGxldGUnLCAoZXZlbnQ6IGdvb2dsZS5tYXBzLmRyYXdpbmcuT3ZlcmxheUNvbXBsZXRlRXZlbnQpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudC50eXBlID09PSBnb29nbGUubWFwcy5kcmF3aW5nLk92ZXJsYXlUeXBlLlBPTFlHT04pIHtcclxuICAgICAgICAgICAgY29uc3QgcG9seWdvbiA9IGV2ZW50Lm92ZXJsYXkgYXMgZ29vZ2xlLm1hcHMuUG9seWdvbjtcclxuICAgICAgICAgICAgdGhpcy5wb2x5Z29uID0gcG9seWdvbjtcclxuICAgICAgICAgICAgLy8gRGlzYWJsZSBkcmF3aW5nIGFmdGVyIG9uZSBwb2x5Z29uXHJcbiAgICAgICAgICAgIGRyYXdpbmdNYW5hZ2VyLnNldERyYXdpbmdNb2RlKG51bGwpO1xyXG5cclxuICAgICAgICAgICAgLy8gQWNjZXNzIHRoZSBwb2x5Z29uIGNvb3JkaW5hdGVzXHJcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBwb2x5Z29uLmdldFBhdGgoKTtcclxuICAgICAgICAgICAgY29uc3QgY29vcmRpbmF0ZXM6IEFycmF5PHsgbGF0OiBudW1iZXI7IGxuZzogbnVtYmVyIH0+ID0gW107XHJcbiAgICAgICAgICAgIHBhdGguZm9yRWFjaCgoY29vcmQ6IGdvb2dsZS5tYXBzLkxhdExuZykgPT4ge1xyXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzLnB1c2goeyBsYXQ6IGNvb3JkLmxhdCgpLCBsbmc6IGNvb3JkLmxuZygpIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdGF1cmFudHNJblBvbHlnb24oY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL05BVklHQVRJT05TXHJcbiAgYmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgbmF2VG9QaWNrU3RhcnRMb2NhdGlvbigpIHtcclxuICAgIHRoaXMubmF2SGVscGVyLm5hdmlnYXRlKFxyXG4gICAgICBbXHJcbiAgICAgICAgSXRpbmVyYXJpZXNSb3V0ZXNFbnVtLkxPQ0FUSU9OX1BJQ0tFUixcclxuICAgICAgICB0aGlzLml0aW5lcmFyeSEuaWQsXHJcbiAgICAgIF0sXHJcbiAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUsXHJcbiAgICAgIHsgcXVlcnlQYXJhbXM6IHsgbW9kZTogJ3N0YXJ0JyB9IH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRDbG9zZXN0UG9pbnRPblBvbHlnb24ocG9seWdvbjogZ29vZ2xlLm1hcHMuUG9seWdvbiwgcG9pbnQ6IGdvb2dsZS5tYXBzLkxhdExuZyk6IGdvb2dsZS5tYXBzLkxhdExuZyB7XHJcbiAgICBjb25zdCBwYXRoID0gcG9seWdvbi5nZXRQYXRoKCk7XHJcbiAgICBsZXQgY2xvc2VzdFBvaW50ID0gbnVsbDtcclxuICAgIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5nZXRMZW5ndGgoKTsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHN0YXJ0ID0gcGF0aC5nZXRBdChpKTtcclxuICAgICAgY29uc3QgZW5kID0gcGF0aC5nZXRBdCgoaSArIDEpICUgcGF0aC5nZXRMZW5ndGgoKSk7XHJcblxyXG4gICAgICAvLyBJbnRlcnBvbGF0ZSBwb2ludHMgYWxvbmcgdGhlIHNlZ21lbnRcclxuICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPD0gMTsgdCArPSAwLjA1KSB7XHJcbiAgICAgICAgY29uc3QgaW50ZXJwID0gZ29vZ2xlLm1hcHMuZ2VvbWV0cnkuc3BoZXJpY2FsLmludGVycG9sYXRlKHN0YXJ0LCBlbmQsIHQpO1xyXG4gICAgICAgIGNvbnN0IGRpc3QgPSBnb29nbGUubWFwcy5nZW9tZXRyeS5zcGhlcmljYWwuY29tcHV0ZURpc3RhbmNlQmV0d2Vlbihwb2ludCwgaW50ZXJwKTtcclxuICAgICAgICBpZiAoZGlzdCA8IG1pbkRpc3RhbmNlKSB7XHJcbiAgICAgICAgICBtaW5EaXN0YW5jZSA9IGRpc3Q7XHJcbiAgICAgICAgICBjbG9zZXN0UG9pbnQgPSBpbnRlcnA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNsb3Nlc3RQb2ludCE7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXJcclxuICBbcHJvZ3Jlc3NCYXJWYWx1ZV09XCI1MFwiXHJcbiAgaGVhZGluZz1cIkNyZWF0ZSBJdGluZXJhcnlcIlxyXG4+PC9hcHAtY3JlYXRlLWl0aW5lcmFyeS1oZWFkZXI+XHJcbjxsaWItbWFwICNsaWJNYXAgY2xhc3M9XCJtYXBzLTEwMHZoXCI+PC9saWItbWFwPlxyXG48bGliLWJvdHRvbS1tb2RhbFxyXG4gIFtzaG93QXJyb3ddPVwidHJ1ZVwiXHJcbiAgWyhpc09wZW4pXT1cImlzT3BlblwiXHJcbiAgW2FkYXB0VG9Db250ZW50SGVpZ2h0XT1cInRydWVcIlxyXG4+XHJcbiAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtYXBEcmF3blwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHBsLTQgcHItNFwiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImZvbnQtQ2FsaXN0b2dhIHRleHQtbGdcIj57eyBcIklUSU5FUkFSWS5EUkFXXCIgfCB0cmFuc2xhdGUgfX08L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RhYmxlcyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlQWN0aW9uKGEpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBhY3Rpb25zXCJcclxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGEgb2YgYWN0aW9uc1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgc2VsZWN0ZWQ6IGEgPT09IHNlbGVjdGVkIH1cIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiYVwiIGFsdD1cImljb25cIiBsb2FkaW5nPVwibGF6eVwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxwIGNsYXNzPVwibXQtMyBweC00IG1iLTRcIj57eyBcIklUSU5FUkFSWS5EUkFXX0RFU0NSSVBUSU9OXCIgfCB0cmFuc2xhdGUgfX08L3A+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtYXBEcmF3blwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWwtYXV0byBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAteC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC14LTEgdGV4dC14c1wiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcclxuICAgICAgICAgICAgW3NyY109XCJJQ09OU1snbG9jYXRpb25XaGl0ZSddXCJcclxuICAgICAgICAgICAgYWx0PVwibG9jYXRpb25cIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8c3Bhbj4mbmJzcDt7eyBcIklUSU5FUkFSWS5TRUxFQ1RfTUlOX1BMQUNFU1wiIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJoLTQgYm9yZGVyIHctMCBib3JkZXItc2Vjb25kYXJ5XCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC14LTIgdGV4dC14c1wiPlxyXG4gICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJJQ09OU1snY2xvY2snXVwiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDxzcGFuPiZuYnNwOzAgbWludXRlczwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNlY29uZGFyeSBmb250LXRoaW5cIj4oMC4wIGttKTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtcGxhY2VzLWRlc2NyaXB0aW9uIG10LTUgdGV4dC1jZW50ZXIgbWItNFwiPlxyXG4gICAgICAgIHt7IFwiSVRJTkVSQVJZLlNFTEVDVF9QTEFDRVNfSU5TVFJVQ1RJT05cIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgIDxsaWItZm9vdGVyLXNoYXJlZFxyXG4gICAgKGNvbnRpbnVlQnV0dG9uQ2xpY2spPVwiY29udGludWUoKVwiXHJcbiAgICAoc2Vjb25kYXJ5QnV0dG9uQ2xpY2spPVwiY2xlYXJNYXAoKVwiXHJcbiAgICBbY2FuQ29udGludWVdPVwidHJ1ZVwiXHJcbiAgICBbY29udGludWVCdXR0b25UZXh0XT1cIidDT01NT04uQ09OVElOVUUnIHwgdHJhbnNsYXRlXCJcclxuICAgIFtzZWNvbmRhcnlCdXR0b25UZXh0XT1cIidDT01NT04uQ0xFQVInIHwgdHJhbnNsYXRlXCJcclxuICAgID48L2xpYi1mb290ZXItc2hhcmVkPlxyXG4gIDwvZGl2PlxyXG48L2xpYi1ib3R0b20tbW9kYWw+XHJcbjxkaXZcclxuICAoY2xpY2spPVwic2hvd0JvdHRvbU1vZGFsKClcIlxyXG4gIGNsYXNzPVwiYWJzb2x1dGUgYm90dG9tLTAgY3Vyc29yLXBvaW50ZXIgei0xMFwiXHJcbiAgc3R5bGU9XCJsZWZ0OiA1MCVcIlxyXG4+XHJcbiAgPGltZ1xyXG4gICAgc3R5bGU9XCJ0cmFuc2Zvcm06IHJvdGF0ZSgyNzBkZWcpXCJcclxuICAgIFtzcmNdPVwiSUNPTlNbJ3JpZ2h0QXJyb3cnXVwiXHJcbiAgICBhbHQ9XCJpY29uXCJcclxuICAgIGhlaWdodD1cIjE1XCJcclxuICAgIHdpZHRoPVwiMTVcIlxyXG4gIC8+XHJcbjwvZGl2PlxyXG4iXX0=