@openziti/ziti-console-lib 0.6.7 → 0.7.0

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 (94) hide show
  1. package/assets/scripts/components/codemirror/codemirror.css +25 -25
  2. package/assets/scripts/components/codemirror/modes/addons/show-hint.css +8 -8
  3. package/assets/scripts/components/column.css +28 -28
  4. package/assets/scripts/components/leaflet/leaflet.css +94 -94
  5. package/assets/scripts/components/network/vis-network.css +209 -209
  6. package/assets/scripts/components/network/vis-network.min.css +1 -1
  7. package/assets/styles/chart.min.css +1 -1
  8. package/assets/styles/dark.css +2 -2
  9. package/assets/styles/datetimepicker.css +1 -1
  10. package/assets/styles/forms.css +119 -119
  11. package/assets/styles/global.scss +233 -232
  12. package/assets/styles/growler.css +50 -50
  13. package/assets/styles/header.css +65 -65
  14. package/assets/styles/navigation.css +45 -45
  15. package/assets/styles/select2.css +84 -84
  16. package/assets/styles/spectrum.css +79 -79
  17. package/assets/styles/tables.css +118 -118
  18. package/assets/styles/tooltip.css +18 -18
  19. package/assets/styles/ziti.css +728 -728
  20. package/esm2022/lib/features/card/card.component.mjs +2 -2
  21. package/esm2022/lib/features/card-list/card-list.component.mjs +2 -2
  22. package/esm2022/lib/features/config-editor/config-editor.component.mjs +17 -10
  23. package/esm2022/lib/features/confirm/confirm.component.mjs +2 -2
  24. package/esm2022/lib/features/creation-summary-dialog/creation-summary-dialog.component.mjs +2 -2
  25. package/esm2022/lib/features/data-table/cells/table-cell-menu/table-cell-menu.component.mjs +2 -2
  26. package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +2 -2
  27. package/esm2022/lib/features/data-table/cells/table-cell-select/table-cell-select.component.mjs +2 -2
  28. package/esm2022/lib/features/data-table/column-headers/table-column-default/table-column-default.component.mjs +2 -2
  29. package/esm2022/lib/features/data-table/column-headers/table-column-filter/table-column-filter.component.mjs +2 -2
  30. package/esm2022/lib/features/data-table/column-headers/table-column-menu/table-column-menu.component.mjs +2 -2
  31. package/esm2022/lib/features/data-table/column-headers/table-column-select/table-column-select.component.mjs +2 -2
  32. package/esm2022/lib/features/data-table/data-table.component.mjs +12 -29
  33. package/esm2022/lib/features/data-table/table-filter-bar/filter-bar.component.mjs +2 -2
  34. package/esm2022/lib/features/data-table/table-hidden-columns-bar/hidden-columns-bar.component.mjs +2 -2
  35. package/esm2022/lib/features/dynamic-widgets/checkbox-list/checkbox-list-input.component.mjs +2 -2
  36. package/esm2022/lib/features/dynamic-widgets/forwarding-config/forwarding-config.component.mjs +2 -2
  37. package/esm2022/lib/features/dynamic-widgets/number/number-input.component.mjs +2 -2
  38. package/esm2022/lib/features/dynamic-widgets/object/object.component.mjs +2 -2
  39. package/esm2022/lib/features/dynamic-widgets/protocol-address-port/protocol-address-port-input.component.mjs +2 -2
  40. package/esm2022/lib/features/dynamic-widgets/selector/selector-input.component.mjs +2 -2
  41. package/esm2022/lib/features/dynamic-widgets/string/string-input.component.mjs +2 -2
  42. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +9 -8
  43. package/esm2022/lib/features/json-view/json-view.component.mjs +2 -2
  44. package/esm2022/lib/features/list-page-features/list-page-form/list-page-form.component.mjs +2 -2
  45. package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +2 -2
  46. package/esm2022/lib/features/loading-indicator/loading-indicator.component.mjs +2 -2
  47. package/esm2022/lib/features/messaging/growler.component.mjs +2 -2
  48. package/esm2022/lib/features/multi-action-button/multi-action-button.component.mjs +2 -2
  49. package/esm2022/lib/features/no-items/no-items.component.mjs +2 -2
  50. package/esm2022/lib/features/overrides/overrides.component.mjs +2 -2
  51. package/esm2022/lib/features/preview-list/preview-list.component.mjs +2 -2
  52. package/esm2022/lib/features/preview-selections/preview-selections.component.mjs +2 -2
  53. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +2 -2
  54. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +2 -2
  55. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -2
  56. package/esm2022/lib/features/projectable-forms/form-field-container/form-field-container.component.mjs +2 -2
  57. package/esm2022/lib/features/projectable-forms/form-field-toggle/form-field-toggle.component.mjs +2 -2
  58. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +2 -2
  59. package/esm2022/lib/features/projectable-forms/identity/identity-form.component.mjs +3 -3
  60. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +18 -3
  61. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +2 -2
  62. package/esm2022/lib/features/projectable-forms/service/simple-service/simple-service.component.mjs +2 -2
  63. package/esm2022/lib/features/projectable-forms/terminator/terminator-form.component.mjs +2 -2
  64. package/esm2022/lib/features/qr-code/qr-code.component.mjs +2 -2
  65. package/esm2022/lib/features/reset-enrollment/reset-enrollment.component.mjs +2 -2
  66. package/esm2022/lib/features/side-modal/side-modal.component.mjs +2 -2
  67. package/esm2022/lib/features/sidebars/side-banner/side-banner.component.mjs +2 -2
  68. package/esm2022/lib/features/sidebars/side-navbar/side-navbar.component.mjs +2 -2
  69. package/esm2022/lib/features/sidebars/side-toolbar/side-toolbar.component.mjs +2 -2
  70. package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
  71. package/esm2022/lib/features/visualizer/identity-service-path/identity-service-path.component.mjs +2 -2
  72. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.component.mjs +20 -7
  73. package/esm2022/lib/features/visualizer/network-visualizer/network-visualizer.helper.mjs +162 -265
  74. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +2 -2
  75. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
  76. package/esm2022/lib/pages/identities/identities-page.component.mjs +10 -3
  77. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +2 -2
  78. package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
  79. package/esm2022/lib/version.mjs +2 -2
  80. package/fesm2022/openziti-ziti-console-lib.mjs +342 -420
  81. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  82. package/lib/features/config-editor/config-editor.component.d.ts +2 -0
  83. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  84. package/lib/features/data-table/data-table.component.d.ts +1 -0
  85. package/lib/features/data-table/data-table.component.d.ts.map +1 -1
  86. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts +1 -0
  87. package/lib/features/dynamic-widgets/text-list/text-list-input.component.d.ts.map +1 -1
  88. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +1 -0
  89. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
  90. package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts +1 -0
  91. package/lib/features/visualizer/network-visualizer/network-visualizer.component.d.ts.map +1 -1
  92. package/lib/features/visualizer/network-visualizer/network-visualizer.helper.d.ts.map +1 -1
  93. package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
  94. package/package.json +1 -1
@@ -13,12 +13,12 @@ class CardComponent {
13
13
  event.preventDefault();
14
14
  }
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardComponent, selector: "lib-card", inputs: { imageUrl: "imageUrl", title: "title", content: "content", buttonText: "buttonText", id: "id", href: "href" }, ngImport: i0, template: "<a href=\"/{{href}}\" (click)=\"linkClicked($event)\">\n <div class=\"service-card-container\">\n <div class=\"buttonCard selectType\" [id]=\"id\">\n <div style=\"background-image: url({{imageUrl}})\" class=\"icon\"></div>\n <div class=\"title\">{{title}}</div>\n <div class=\"content\">\n {{ content }}\n </div>\n <div class=\"row center buttonArea\">\n <button class=\"save\">{{buttonText}}</button>\n </div>\n </div>\n </div>\n</a>", styles: [".buttonCard .title{top:230px}.buttonCard .content{font-size:14px;bottom:80px;display:flex;flex-direction:column;align-items:center;text-align:center}.red{color:var(--red);font-weight:650;background-color:unset}.disabled{background:var(--inputBorder);box-shadow:none;color:var(--icon)}.save{margin-top:3px;font-size:14px;font-family:Open Sans;font-weight:600;display:inline-block;min-width:150px;clear:both;overflow:hidden;height:45px;padding:13px;width:-moz-fit-content;width:fit-content;text-transform:uppercase;text-align:center;border-radius:var(--inputBorderRadius);position:relative;border:0;background:var(--primaryColor);color:#fff;white-space:nowrap;transition:all .15s ease;cursor:pointer;box-shadow:0 3px 9px 0 var(--primaryColorOpaque)}.padTop{padding-top:12px}.linkButton{margin-top:unset}.subtext{color:var(--stroke)}.buttonCard{max-width:320px;width:320px;position:relative;float:none;cursor:pointer;padding-bottom:25px;margin:20px 20px 0;background-color:var(--navigation);box-shadow:0 12px 23px 0 var(--shadow);transition:box-shadow .3s;border-radius:var(--inputBorderRadius);min-height:405px;display:flex;flex-direction:column;align-items:center;justify-content:center}.buttonCard.shadow{box-shadow:0 12px 23px 0 var(--shadow)}.buttonCard.shadow .icon{background-size:50%;background-position:center top}.buttonCard:hover{filter:brightness(99.5%);box-shadow:0 3px 3px 0 var(--shadow);transition:box-shadow .3s}.buttonCard:active{filter:brightness(99%);box-shadow:0 1px 1px 0 var(--shadow);transition:box-shadow .3s}.buttonCard .title{font-size:16px;color:var(--tableText);text-align:center;text-transform:uppercase;padding-top:0;font-weight:600;font-family:Open Sans;position:absolute;top:220px;width:100%}.buttonCard .buttonArea{position:absolute;bottom:25px;width:100%}.buttonCard .subButton{position:absolute;bottom:10px}.buttonCard .content{color:var(--text);font-size:13px;height:80px;margin-top:15px;margin-bottom:30px;padding-left:30px;padding-right:30px;padding-top:30px;bottom:70px;position:absolute;font-weight:400;font-family:Open Sans}.buttonCard .icon{position:absolute;top:30px;left:10px;right:10px;height:185px;background-position:center bottom;background-size:contain;z-index:unset;width:unset;min-width:unset;min-height:unset}.buttonCard .buttonArea{bottom:30px}\n"] }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardComponent, selector: "lib-card", inputs: { imageUrl: "imageUrl", title: "title", content: "content", buttonText: "buttonText", id: "id", href: "href" }, ngImport: i0, template: "<a href=\"/{{href}}\" (click)=\"linkClicked($event)\">\n <div class=\"service-card-container\">\n <div class=\"buttonCard selectType\" [id]=\"id\">\n <div style=\"background-image: url({{imageUrl}})\" class=\"icon\"></div>\n <div class=\"title\">{{title}}</div>\n <div class=\"content\">\n {{ content }}\n </div>\n <div class=\"row center buttonArea\">\n <button class=\"save\">{{buttonText}}</button>\n </div>\n </div>\n </div>\n</a>", styles: [".buttonCard .title{top:14.375rem}.buttonCard .content{font-size:.875rem;bottom:5rem;display:flex;flex-direction:column;align-items:center;text-align:center}.red{color:var(--red);font-weight:650;background-color:unset}.disabled{background:var(--inputBorder);box-shadow:none;color:var(--icon)}.save{margin-top:.1875rem;font-size:.875rem;font-family:Open Sans;font-weight:600;display:inline-block;min-width:9.375rem;clear:both;overflow:hidden;height:2.8125rem;padding:.8125rem;width:-moz-fit-content;width:fit-content;text-transform:uppercase;text-align:center;border-radius:var(--inputBorderRadius);position:relative;border:0;background:var(--primaryColor);color:#fff;white-space:nowrap;transition:all .15s ease;cursor:pointer;box-shadow:0 .1875rem .5625rem 0 var(--primaryColorOpaque)}.padTop{padding-top:.75rem}.linkButton{margin-top:unset}.subtext{color:var(--stroke)}.buttonCard{max-width:20rem;width:20rem;position:relative;float:none;cursor:pointer;padding-bottom:1.5625rem;margin:0 auto;margin-right:1.25rem;margin-left:1.25rem;margin-top:1.25rem;background-color:var(--navigation);box-shadow:0 .75rem 1.4375rem 0 var(--shadow);transition:box-shadow .3s;border-radius:var(--inputBorderRadius);min-height:25.3125rem;display:flex;flex-direction:column;align-items:center;justify-content:center}.buttonCard.shadow{box-shadow:0 .75rem 1.4375rem 0 var(--shadow)}.buttonCard.shadow .icon{background-size:50%;background-position:center top}.buttonCard:hover{filter:brightness(99.5%);box-shadow:0 .1875rem .1875rem 0 var(--shadow);transition:box-shadow .3s}.buttonCard:active{filter:brightness(99%);box-shadow:0 .0625rem .0625rem 0 var(--shadow);transition:box-shadow .3s}.buttonCard .title{font-size:1rem;color:var(--tableText);text-align:center;text-transform:uppercase;padding-top:0rem;font-weight:600;font-family:Open Sans;position:absolute;top:13.75rem;width:100%}.buttonCard .buttonArea{position:absolute;bottom:1.5625rem;width:100%}.buttonCard .subButton{position:absolute;bottom:.625rem}.buttonCard .content{color:var(--text);font-size:.8125rem;height:5rem;margin-top:.9375rem;margin-bottom:1.875rem;padding-left:1.875rem;padding-right:1.875rem;padding-top:1.875rem;bottom:4.375rem;position:absolute;font-weight:400;font-family:Open Sans}.buttonCard .icon{position:absolute;top:1.875rem;left:.625rem;right:.625rem;height:11.5625rem;background-position:center bottom;background-size:contain;z-index:unset;width:unset;min-width:unset;min-height:unset}.buttonCard .buttonArea{bottom:1.875rem}\n"] }); }
17
17
  }
18
18
  export { CardComponent };
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardComponent, decorators: [{
20
20
  type: Component,
21
- args: [{ selector: 'lib-card', template: "<a href=\"/{{href}}\" (click)=\"linkClicked($event)\">\n <div class=\"service-card-container\">\n <div class=\"buttonCard selectType\" [id]=\"id\">\n <div style=\"background-image: url({{imageUrl}})\" class=\"icon\"></div>\n <div class=\"title\">{{title}}</div>\n <div class=\"content\">\n {{ content }}\n </div>\n <div class=\"row center buttonArea\">\n <button class=\"save\">{{buttonText}}</button>\n </div>\n </div>\n </div>\n</a>", styles: [".buttonCard .title{top:230px}.buttonCard .content{font-size:14px;bottom:80px;display:flex;flex-direction:column;align-items:center;text-align:center}.red{color:var(--red);font-weight:650;background-color:unset}.disabled{background:var(--inputBorder);box-shadow:none;color:var(--icon)}.save{margin-top:3px;font-size:14px;font-family:Open Sans;font-weight:600;display:inline-block;min-width:150px;clear:both;overflow:hidden;height:45px;padding:13px;width:-moz-fit-content;width:fit-content;text-transform:uppercase;text-align:center;border-radius:var(--inputBorderRadius);position:relative;border:0;background:var(--primaryColor);color:#fff;white-space:nowrap;transition:all .15s ease;cursor:pointer;box-shadow:0 3px 9px 0 var(--primaryColorOpaque)}.padTop{padding-top:12px}.linkButton{margin-top:unset}.subtext{color:var(--stroke)}.buttonCard{max-width:320px;width:320px;position:relative;float:none;cursor:pointer;padding-bottom:25px;margin:20px 20px 0;background-color:var(--navigation);box-shadow:0 12px 23px 0 var(--shadow);transition:box-shadow .3s;border-radius:var(--inputBorderRadius);min-height:405px;display:flex;flex-direction:column;align-items:center;justify-content:center}.buttonCard.shadow{box-shadow:0 12px 23px 0 var(--shadow)}.buttonCard.shadow .icon{background-size:50%;background-position:center top}.buttonCard:hover{filter:brightness(99.5%);box-shadow:0 3px 3px 0 var(--shadow);transition:box-shadow .3s}.buttonCard:active{filter:brightness(99%);box-shadow:0 1px 1px 0 var(--shadow);transition:box-shadow .3s}.buttonCard .title{font-size:16px;color:var(--tableText);text-align:center;text-transform:uppercase;padding-top:0;font-weight:600;font-family:Open Sans;position:absolute;top:220px;width:100%}.buttonCard .buttonArea{position:absolute;bottom:25px;width:100%}.buttonCard .subButton{position:absolute;bottom:10px}.buttonCard .content{color:var(--text);font-size:13px;height:80px;margin-top:15px;margin-bottom:30px;padding-left:30px;padding-right:30px;padding-top:30px;bottom:70px;position:absolute;font-weight:400;font-family:Open Sans}.buttonCard .icon{position:absolute;top:30px;left:10px;right:10px;height:185px;background-position:center bottom;background-size:contain;z-index:unset;width:unset;min-width:unset;min-height:unset}.buttonCard .buttonArea{bottom:30px}\n"] }]
21
+ args: [{ selector: 'lib-card', template: "<a href=\"/{{href}}\" (click)=\"linkClicked($event)\">\n <div class=\"service-card-container\">\n <div class=\"buttonCard selectType\" [id]=\"id\">\n <div style=\"background-image: url({{imageUrl}})\" class=\"icon\"></div>\n <div class=\"title\">{{title}}</div>\n <div class=\"content\">\n {{ content }}\n </div>\n <div class=\"row center buttonArea\">\n <button class=\"save\">{{buttonText}}</button>\n </div>\n </div>\n </div>\n</a>", styles: [".buttonCard .title{top:14.375rem}.buttonCard .content{font-size:.875rem;bottom:5rem;display:flex;flex-direction:column;align-items:center;text-align:center}.red{color:var(--red);font-weight:650;background-color:unset}.disabled{background:var(--inputBorder);box-shadow:none;color:var(--icon)}.save{margin-top:.1875rem;font-size:.875rem;font-family:Open Sans;font-weight:600;display:inline-block;min-width:9.375rem;clear:both;overflow:hidden;height:2.8125rem;padding:.8125rem;width:-moz-fit-content;width:fit-content;text-transform:uppercase;text-align:center;border-radius:var(--inputBorderRadius);position:relative;border:0;background:var(--primaryColor);color:#fff;white-space:nowrap;transition:all .15s ease;cursor:pointer;box-shadow:0 .1875rem .5625rem 0 var(--primaryColorOpaque)}.padTop{padding-top:.75rem}.linkButton{margin-top:unset}.subtext{color:var(--stroke)}.buttonCard{max-width:20rem;width:20rem;position:relative;float:none;cursor:pointer;padding-bottom:1.5625rem;margin:0 auto;margin-right:1.25rem;margin-left:1.25rem;margin-top:1.25rem;background-color:var(--navigation);box-shadow:0 .75rem 1.4375rem 0 var(--shadow);transition:box-shadow .3s;border-radius:var(--inputBorderRadius);min-height:25.3125rem;display:flex;flex-direction:column;align-items:center;justify-content:center}.buttonCard.shadow{box-shadow:0 .75rem 1.4375rem 0 var(--shadow)}.buttonCard.shadow .icon{background-size:50%;background-position:center top}.buttonCard:hover{filter:brightness(99.5%);box-shadow:0 .1875rem .1875rem 0 var(--shadow);transition:box-shadow .3s}.buttonCard:active{filter:brightness(99%);box-shadow:0 .0625rem .0625rem 0 var(--shadow);transition:box-shadow .3s}.buttonCard .title{font-size:1rem;color:var(--tableText);text-align:center;text-transform:uppercase;padding-top:0rem;font-weight:600;font-family:Open Sans;position:absolute;top:13.75rem;width:100%}.buttonCard .buttonArea{position:absolute;bottom:1.5625rem;width:100%}.buttonCard .subButton{position:absolute;bottom:.625rem}.buttonCard .content{color:var(--text);font-size:.8125rem;height:5rem;margin-top:.9375rem;margin-bottom:1.875rem;padding-left:1.875rem;padding-right:1.875rem;padding-top:1.875rem;bottom:4.375rem;position:absolute;font-weight:400;font-family:Open Sans}.buttonCard .icon{position:absolute;top:1.875rem;left:.625rem;right:.625rem;height:11.5625rem;background-position:center bottom;background-size:contain;z-index:unset;width:unset;min-width:unset;min-height:unset}.buttonCard .buttonArea{bottom:1.875rem}\n"] }]
22
22
  }], propDecorators: { imageUrl: [{
23
23
  type: Input
24
24
  }], title: [{
@@ -30,12 +30,12 @@ class CardListComponent extends ProjectableForm {
30
30
  this.router.navigateByUrl(`/services/${type}`);
31
31
  }
32
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardListComponent, deps: [{ token: SETTINGS_SERVICE }, { token: i1.ServiceFormService }, { token: ZITI_DATA_SERVICE }, { token: i2.GrowlerService }, { token: SERVICE_EXTENSION_SERVICE }, { token: i3.Router }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardListComponent, selector: "lib-card-list", outputs: { close: "close", selected: "selected" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:26px;filter:brightness(50%);padding-top:35px;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0;font-size:32px;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:63px;height:63px;font-size:30px;top:20px;right:20px;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:40px;font-family:zac!important;font-variant:normal;border-radius:33px;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:30px}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 2px 3px 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-2px;width:100%;text-align:center;font-size:12px;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: i4.CardComponent, selector: "lib-card", inputs: ["imageUrl", "title", "content", "buttonText", "id", "href"] }] }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CardListComponent, selector: "lib-card-list", outputs: { close: "close", selected: "selected" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:1.625rem;filter:brightness(50%);padding-top:2.1875rem;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0rem;font-size:2rem;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:3.9375rem;height:3.9375rem;font-size:1.875rem;top:1.25rem;right:1.25rem;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:2.5rem;font-family:zac!important;font-variant:normal;border-radius:2.0625rem;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:1.875rem}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 .125rem .1875rem 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-.125rem;width:100%;text-align:center;font-size:.75rem;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: i4.CardComponent, selector: "lib-card", inputs: ["imageUrl", "title", "content", "buttonText", "id", "href"] }] }); }
34
34
  }
35
35
  export { CardListComponent };
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CardListComponent, decorators: [{
37
37
  type: Component,
38
- args: [{ selector: 'lib-card-list', template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:26px;filter:brightness(50%);padding-top:35px;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0;font-size:32px;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:63px;height:63px;font-size:30px;top:20px;right:20px;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:40px;font-family:zac!important;font-variant:normal;border-radius:33px;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:30px}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 2px 3px 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-2px;width:100%;text-align:center;font-size:12px;text-transform:uppercase}\n"] }]
38
+ args: [{ selector: 'lib-card-list', template: "<div class=\"card-list-wrapper ziti-page-container fullModal opened\">\n <div class=\"title\" style=\"filter: brightness(50%)\">Create a service</div>\n <div class=\"subtitle\">Choose a service type</div>\n <div class=\"card-list-container\">\n <lib-card\n (click)=\"cardSelected('simple')\"\n [imageUrl]=\"'/assets/svgs/Simple.svg'\"\n [title]=\"'Simple'\"\n [content]=\"'Simple services required fewer details, only asking for the most commonly used fields.'\"\n [buttonText]=\"'Create Simple Service'\"\n [id]=\"'SimpleServiceCard'\"\n [href]=\"'services/simple'\"\n ></lib-card>\n <lib-card\n (click)=\"cardSelected('advanced')\"\n [imageUrl]=\"'/assets/svgs/Advanced.svg'\"\n [title]=\"'Advanced'\"\n [content]=\"'Advanced services allow you to configure any option supported by the controller but are subsequently a bit more complex.'\"\n [buttonText]=\"'Create Advanced Service'\"\n [id]=\"'AdvancedServiceCard'\"\n [href]=\"'services/advanced'\"\n ></lib-card>\n </div>\n <div (click)=\"returnToListPage()\" class=\"buttonBall close\" id=\"EscZitiAWClose\">\n <div class=\"buttonLabel\">ESC</div>\n </div>\n\n</div>\n", styles: [":host{--shadow: rgba(0, 0, 0, .08)}.card-list-wrapper>.title{font-size:1.625rem;filter:brightness(50%);padding-top:2.1875rem;text-align:center;width:100%;color:var(--primaryColor);font-family:Russo One;text-transform:uppercase;position:relative;font-weight:400}.card-list-wrapper>.subtitle{text-align:center;width:100%;color:var(--tableText);position:relative;margin-bottom:0rem;font-size:2rem;font-weight:300;font-family:Open Sans;float:left}.card-list-wrapper .card-list-container{display:flex;flex-direction:row;width:100%;justify-content:center}.card-list-wrapper .buttonBall.close{font-style:normal;font-weight:600;-webkit-font-smoothing:antialiased;cursor:pointer;position:absolute;width:3.9375rem;height:3.9375rem;font-size:1.875rem;top:1.25rem;right:1.25rem;left:unset;z-index:20;color:var(--stroke);text-transform:uppercase;text-align:center;line-height:2.5rem;font-family:zac!important;font-variant:normal;border-radius:2.0625rem;transition:all .3s ease 0s}.card-list-wrapper .buttonBall.close:before{content:\"\\e91b\";font-size:1.875rem}.card-list-wrapper .buttonBall:hover{background-color:var(--primaryColor);color:var(--white);box-shadow:0 .125rem .1875rem 0 var(--primaryColorOpaque);transition:all .2s ease 0s}.card-list-wrapper .buttonBall:hover:before{color:var(--white)}.card-list-wrapper .buttonBall .buttonLabel{font-weight:600;font-family:Open Sans,Arial,sans-serif;position:absolute;bottom:-.125rem;width:100%;text-align:center;font-size:.75rem;text-transform:uppercase}\n"] }]
39
39
  }], ctorParameters: function () { return [{ type: i5.SettingsService, decorators: [{
40
40
  type: Inject,
41
41
  args: [SETTINGS_SERVICE]
@@ -1,6 +1,6 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef } from '@angular/core';
2
2
  import { JsonEditorComponent } from "ang-jsoneditor";
3
- import { debounce, defer, delay, isBoolean, isEmpty, isNil, keys } from "lodash";
3
+ import { debounce, defer, isBoolean, isEmpty, isNil, keys } from "lodash";
4
4
  import Ajv from 'ajv';
5
5
  import addFormats from 'ajv-formats';
6
6
  import { GrowlerModel } from "../messaging/growler.model";
@@ -8,10 +8,12 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../services/schema.service";
9
9
  import * as i2 from "../messaging/growler.service";
10
10
  import * as i3 from "@angular/common";
11
- import * as i4 from "../json-view/json-view.component";
11
+ import * as i4 from "ng-click-outside";
12
+ import * as i5 from "../json-view/json-view.component";
12
13
  class ConfigEditorComponent {
13
14
  set configData(data) {
14
15
  this._configData = data;
16
+ this.initFormData();
15
17
  }
16
18
  ;
17
19
  get configData() {
@@ -26,6 +28,7 @@ class ConfigEditorComponent {
26
28
  }
27
29
  set schema(schema) {
28
30
  this._schema = schema;
31
+ this.initFormData();
29
32
  this.createForm();
30
33
  this.updateConfigData();
31
34
  }
@@ -35,6 +38,7 @@ class ConfigEditorComponent {
35
38
  constructor(schemaSvc, growlerService) {
36
39
  this.schemaSvc = schemaSvc;
37
40
  this.growlerService = growlerService;
41
+ this.configDataInit = false;
38
42
  this.items = [];
39
43
  this.lColorArray = [
40
44
  'white',
@@ -56,9 +60,6 @@ class ConfigEditorComponent {
56
60
  }
57
61
  ngOnInit() {
58
62
  this.createForm();
59
- defer(() => {
60
- this.formDataChanged();
61
- });
62
63
  }
63
64
  createForm() {
64
65
  this.clearForm();
@@ -275,10 +276,16 @@ class ConfigEditorComponent {
275
276
  const growlerData = new GrowlerModel('error', 'Error', `Error Validating Config`, validationMessage);
276
277
  this.growlerService.show(growlerData);
277
278
  }
279
+ initFormData() {
280
+ if (!this.configDataInit && !isEmpty(this._configData) && !isEmpty(this.schema)) {
281
+ this.configDataInit = true;
282
+ this.formDataChanged();
283
+ }
284
+ }
278
285
  formDataChanged() {
279
- delay(() => {
286
+ defer(() => {
280
287
  this.getConfigDataFromForm();
281
- }, 200);
288
+ });
282
289
  }
283
290
  jsonDataChanged(event) {
284
291
  defer(() => {
@@ -300,12 +307,12 @@ class ConfigEditorComponent {
300
307
  return data;
301
308
  }
302
309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigEditorComponent, deps: [{ token: i1.SchemaService }, { token: i2.GrowlerService }], target: i0.ɵɵFactoryTarget.Component }); }
303
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigEditorComponent, selector: "lib-config-editor", inputs: { configErrors: "configErrors", configData: "configData", showJsonView: "showJsonView", schema: "schema" }, outputs: { configErrorsChange: "configErrorsChange", configDataChange: "configDataChange" }, viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["dynamicform"], descendants: true, read: ViewContainerRef }, { propertyName: "editor", first: true, predicate: JsonEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
310
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfigEditorComponent, selector: "lib-config-editor", inputs: { configErrors: "configErrors", configData: "configData", showJsonView: "showJsonView", schema: "schema" }, outputs: { configErrorsChange: "configErrorsChange", configDataChange: "configDataChange" }, viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["dynamicform"], descendants: true, read: ViewContainerRef }, { propertyName: "editor", first: true, predicate: JsonEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\" (clickOutside)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: i5.JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
304
311
  }
305
312
  export { ConfigEditorComponent };
306
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfigEditorComponent, decorators: [{
307
314
  type: Component,
308
- args: [{ selector: 'lib-config-editor', template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>" }]
315
+ args: [{ selector: 'lib-config-editor', template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\" (clickOutside)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n<lib-json-view *ngIf=\"showJsonView && !hideConfigJSON\" (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n<lib-json-view *ngIf=\"showJsonView && hideConfigJSON\" [(data)]=\"configData\"></lib-json-view>" }]
309
316
  }], ctorParameters: function () { return [{ type: i1.SchemaService }, { type: i2.GrowlerService }]; }, propDecorators: { configErrors: [{
310
317
  type: Input
311
318
  }], configErrorsChange: [{
@@ -325,4 +332,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
325
332
  type: ViewChild,
326
333
  args: [JsonEditorComponent, { static: false }]
327
334
  }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRS9FLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFHeEQsTUFLYSxxQkFBcUI7SUFtQmhDLElBQWEsVUFBVSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUFBLENBQUM7SUFFRixJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQWEsWUFBWSxDQUFDLFlBQXFCO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUdELElBQWEsTUFBTSxDQUFDLE1BQVc7UUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQU1ELFlBQW9CLFNBQXdCLEVBQVUsY0FBOEI7UUFBaEUsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQWpEcEYsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFHO1lBQ1osT0FBTztZQUNQLE9BQU87U0FDUixDQUFBO1FBRUQsZ0JBQVcsR0FBRztZQUNaLGtCQUFrQjtZQUNsQixxQkFBcUI7U0FDdEIsQ0FBQTtRQUNELG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRWQsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdEIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUV2RCxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUlaLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFLckQsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFTdEIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQVdoQiw2QkFBd0IsR0FBUSxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDL0UsNkJBQXdCLEdBQVEsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBSS9FLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLElBQUksRUFBRSxTQUFTO2dCQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQVc7UUFDdEIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDakcsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUMxQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN6QyxJQUFJLElBQUksRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFO29CQUM5QixNQUFNLEtBQUssR0FBYyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztvQkFDakQsSUFBSSxTQUFTLENBQUM7b0JBQ2QsSUFBRyxLQUFLO3dCQUFFLFNBQVMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN0Qyw0RUFBNEU7aUJBQzdFO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixLQUFLLENBQUMsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFZLEVBQUU7UUFDbEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO29CQUN6QixJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTt3QkFDekMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUMzRDtvQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ3JDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pEO2FBQ0Y7aUJBQU0sSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7Z0JBQ25ELElBQUksR0FBRyxDQUFDO2dCQUNSLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDaEIsS0FBSyxrQkFBa0I7d0JBQ3JCLEdBQUcsR0FBRzs0QkFDSixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7NEJBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzs0QkFDckIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJOzRCQUNmLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTs0QkFDckMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjOzRCQUNuQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7NEJBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7NEJBQ3ZDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7NEJBQ3ZDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7eUJBQzFDLENBQUE7d0JBQ0QsTUFBTTtvQkFDUixLQUFLLEtBQUs7d0JBQ1IsR0FBRyxHQUFHOzRCQUNKLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7NEJBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO3lCQUN4QixDQUFBO3dCQUNELE1BQU07b0JBQ1I7d0JBQ0UsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3JCLE1BQU07aUJBQ1Q7Z0JBQ0QsSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQy9DO2lCQUFNLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDdkQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUssRUFBRSxPQUFZLEVBQUUsRUFBRSxVQUFVLEdBQUcsUUFBUTtRQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7aUJBQ2xDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNyQjthQUNGO2lCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUN4QixJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ25FLGFBQWEsR0FBRyxJQUFJLENBQUM7cUJBQ3RCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUU7b0JBQzVDLEtBQUssR0FBRyxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQztpQkFDcEQ7cUJBQU0sSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtvQkFDcEMsS0FBSyxHQUFHLENBQUMsRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQztpQkFDdEU7Z0JBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFPLEVBQUUsV0FBVyxHQUFHLElBQUk7UUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksTUFBTSxFQUFFO1lBQ1YsaUJBQWlCO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7WUFDdkMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbEMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDdkMsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQixDQUFDLENBQUM7YUFDakQ7U0FDRjtRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsMEJBQTBCLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCO1FBQ2hFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLGVBQWUsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDO2FBQzlDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEIscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLFNBQVMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFVBQVUsR0FBRyxRQUFRLEVBQUUsSUFBSSxHQUFHLEVBQUUsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFO1FBQ2hGLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtnQkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsRUFBRTtvQkFDN0YsT0FBTyxHQUFHLEtBQUssQ0FBQztpQkFDakI7YUFDRjtpQkFBTSxJQUFJLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFO2dCQUN6RCxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTthQUN2RTtpQkFBTTtnQkFDTCxNQUFNLGtCQUFrQixHQUFRLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUMvRCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO29CQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsZUFBZSxDQUFDLEVBQUU7d0JBQzVDLFVBQVUsSUFBSSxHQUFHLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUM7cUJBQ3BEO29CQUNELE1BQU0sT0FBTyxHQUFHLFVBQVUsS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN2RCxPQUFPLE9BQU8sQ0FBQztnQkFDakIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUU7b0JBQ3pDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQzVEO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxxQkFBcUI7UUFDdkMsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzNCLGlCQUFpQixJQUFJLE9BQU8scUJBQXFCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztZQUNoRSxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsRUFBRTtZQUM5QixpQkFBaUIsR0FBRywyRkFBMkYsQ0FBQztTQUNqSDthQUFNO1lBQ0wsaUJBQWlCLEdBQUcsZ0NBQWdDLGlCQUFpQixPQUFPLENBQUM7U0FDOUU7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLFlBQVksQ0FDaEMsT0FBTyxFQUNQLE9BQU8sRUFDUCx5QkFBeUIsRUFDekIsaUJBQWlCLENBQ3BCLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTtRQUNiLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUMvQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUs7UUFDbkIsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBSTtRQUM1QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkIsT0FBTyxJQUFJO2lCQUNOLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakQsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1NBQ3pDO2FBQU0sSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtZQUNwRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2lCQUNmLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO2lCQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDM0UsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQWpUVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixpV0FpREMsZ0JBQWdCLHNEQUN0QyxtQkFBbUIsZ0RDaEVoQyxpZEFJNEY7O1NEVS9FLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1CQUFtQjtpSUFtQnBCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUdNLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQU1NLFlBQVk7c0JBQXhCLEtBQUs7Z0JBU08sTUFBTTtzQkFBbEIsS0FBSztnQkFZOEMsV0FBVztzQkFBOUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBQ0QsTUFBTTtzQkFBdEQsU0FBUzt1QkFBQyxtQkFBbUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SnNvbkVkaXRvckNvbXBvbmVudCwgSnNvbkVkaXRvck9wdGlvbnN9IGZyb20gXCJhbmctanNvbmVkaXRvclwiO1xuaW1wb3J0IHtkZWJvdW5jZSwgZGVmZXIsIGRlbGF5LCBpc0Jvb2xlYW4sIGlzRW1wdHksIGlzTmlsLCBrZXlzfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQge1NjaGVtYVNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2hlbWEuc2VydmljZVwiO1xuaW1wb3J0IEFqdiBmcm9tICdhanYnO1xuaW1wb3J0IGFkZEZvcm1hdHMgZnJvbSAnYWp2LWZvcm1hdHMnO1xuaW1wb3J0IHtHcm93bGVyTW9kZWx9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5tb2RlbFwiO1xuaW1wb3J0IHtHcm93bGVyU2VydmljZX0gZnJvbSBcIi4uL21lc3NhZ2luZy9ncm93bGVyLnNlcnZpY2VcIjsgIC8vIEltcG9ydCBhanYtZm9ybWF0c1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY29uZmlnLWVkaXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maWctZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlnLWVkaXRvci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ0VkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgaXRlbXM6IGFueVtdID0gW107XG5cbiAgbENvbG9yQXJyYXkgPSBbXG4gICAgJ3doaXRlJyxcbiAgICAnd2hpdGUnLFxuICBdXG5cbiAgYkNvbG9yQXJyYXkgPSBbXG4gICAgJ3ZhcigtLWZvcm1Hcm91cCknLFxuICAgICd2YXIoLS1mb3JtU3ViR3JvdXApJ1xuICBdXG4gIGhpZGVDb25maWdKU09OID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY29uZmlnRXJyb3JzOiBhbnkgPSB7fTtcbiAgQE91dHB1dCgpIGNvbmZpZ0Vycm9yc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIF9jb25maWdEYXRhOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgc2V0IGNvbmZpZ0RhdGEoZGF0YSkge1xuICAgIHRoaXMuX2NvbmZpZ0RhdGEgPSBkYXRhO1xuICB9O1xuICBAT3V0cHV0KCkgY29uZmlnRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBnZXQgY29uZmlnRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnRGF0YTtcbiAgfVxuXG4gIF9zaG93SnNvblZpZXcgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNob3dKc29uVmlldyhzaG93SnNvblZpZXc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93SnNvblZpZXcgPSBzaG93SnNvblZpZXc7XG4gICAgdGhpcy51cGRhdGVDb25maWdEYXRhKCk7XG4gIH1cbiAgZ2V0IHNob3dKc29uVmlldygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0pzb25WaWV3O1xuICB9XG5cbiAgX3NjaGVtYSA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2NoZW1hKHNjaGVtYTogYW55KSB7XG4gICAgdGhpcy5fc2NoZW1hID0gc2NoZW1hO1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIHRoaXMudXBkYXRlQ29uZmlnRGF0YSgpO1xuICB9XG5cbiAgZ2V0IHNjaGVtYSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2NoZW1hO1xuICB9XG5cbiAgZm9ybURhdGFDaGFuZ2VkRGVib3VuY2VkOiBhbnkgPSBkZWJvdW5jZSh0aGlzLmZvcm1EYXRhQ2hhbmdlZC5iaW5kKHRoaXMpLCAzNTApO1xuICBqc29uRGF0YUNoYW5nZWREZWJvdW5jZWQ6IGFueSA9IGRlYm91bmNlKHRoaXMuanNvbkRhdGFDaGFuZ2VkLmJpbmQodGhpcyksIDM1MCk7XG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljZm9ybVwiLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pIGR5bmFtaWNGb3JtITogVmlld0NvbnRhaW5lclJlZjtcbiAgQFZpZXdDaGlsZChKc29uRWRpdG9yQ29tcG9uZW50LCB7c3RhdGljOiBmYWxzZX0pIGVkaXRvciE6IEpzb25FZGl0b3JDb21wb25lbnQ7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2NoZW1hU3ZjOiBTY2hlbWFTZXJ2aWNlLCBwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtRGF0YUNoYW5nZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm0oKSB7XG4gICAgdGhpcy5jbGVhckZvcm0oKTtcbiAgICBpZiAodGhpcy5keW5hbWljRm9ybSAmJiB0aGlzLnNjaGVtYSkge1xuICAgICAgdGhpcy5yZW5kZXJTY2hlbWEodGhpcy5zY2hlbWEpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybSgpIHtcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0/LmNvbXBvbmVudCkgaXRlbS5jb21wb25lbnQuZGVzdHJveSgpO1xuICAgIH0pO1xuICAgIHRoaXMuY29uZmlnRXJyb3JzID0ge307XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICB9XG5cbiAgcmVuZGVyU2NoZW1hKHNjaGVtYTogYW55KSB7XG4gICAgaWYgKHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICB0aGlzLml0ZW1zID0gdGhpcy5zY2hlbWFTdmMucmVuZGVyKHNjaGVtYSwgdGhpcy5keW5hbWljRm9ybSwgdGhpcy5sQ29sb3JBcnJheSwgdGhpcy5iQ29sb3JBcnJheSk7XG4gICAgICBmb3IgKGxldCBvYmogb2YgdGhpcy5pdGVtcykge1xuICAgICAgICBjb25zdCBjUmVmID0gb2JqLmNvbXBvbmVudDtcbiAgICAgICAgY1JlZi5pbnN0YW5jZS5lcnJvcnMgPSB0aGlzLmNvbmZpZ0Vycm9ycztcbiAgICAgICAgaWYgKGNSZWY/Lmluc3RhbmNlLnZhbHVlQ2hhbmdlKSB7XG4gICAgICAgICAgY29uc3QgcE5hbWU6IHN0cmluZ1tdICA9IGNSZWYuaW5zdGFuY2UucGFyZW50YWdlO1xuICAgICAgICAgIGxldCBwYXJlbnRLZXk7XG4gICAgICAgICAgaWYocE5hbWUpIHBhcmVudEtleSA9IHBOYW1lLmpvaW4oJy4nKTtcbiAgICAgICAgICAvL2lmIChwYXJlbnRLZXkgJiYgIXRoaXMuZm9ybURhdGFbcGFyZW50S2V5XSkgdGhpcy5mb3JtRGF0YVtwYXJlbnRLZXldID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVDb25maWdEYXRhKCkge1xuICAgIGlmICghdGhpcy5zaG93SnNvblZpZXcpIHtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcodGhpcy5pdGVtcywgdGhpcy5jb25maWdEYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oaWRlQ29uZmlnSlNPTiA9IHRydWU7XG4gICAgICBkZWZlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuZ2V0Q29uZmlnRGF0YUZyb21Gb3JtKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGb3JtVmlldyhpdGVtcywgZGF0YTogYW55ID0ge30pIHtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5pdGVtcykge1xuICAgICAgICBpZiAoaXRlbS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgICAgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmFkZGVkSXRlbXMpIHtcbiAgICAgICAgICAgIGl0ZW0uYWRkZWRJdGVtcyA9IGRhdGFbaXRlbS5rZXldIHx8IFtdO1xuICAgICAgICAgICAgaXRlbS5jb21wb25lbnQuaW5zdGFuY2UuYWRkZWRJdGVtcyA9IGRhdGFbaXRlbS5rZXldIHx8IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1WaWV3KGl0ZW0uaXRlbXMsIHt9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1WaWV3KGl0ZW0uaXRlbXMsIGRhdGFbaXRlbS5rZXldKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRQcm9wZXJ0aWVzKSB7XG4gICAgICAgIGxldCB2YWw7XG4gICAgICAgIHN3aXRjaCAoaXRlbS5rZXkpIHtcbiAgICAgICAgICBjYXNlICdmb3J3YXJkaW5nY29uZmlnJzpcbiAgICAgICAgICAgIHZhbCA9IHtcbiAgICAgICAgICAgICAgcHJvdG9jb2w6IGRhdGEucHJvdG9jb2wsXG4gICAgICAgICAgICAgIGFkZHJlc3M6IGRhdGEuYWRkcmVzcyxcbiAgICAgICAgICAgICAgcG9ydDogZGF0YS5wb3J0LFxuICAgICAgICAgICAgICBmb3J3YXJkUHJvdG9jb2w6IGRhdGEuZm9yd2FyZFByb3RvY29sLFxuICAgICAgICAgICAgICBmb3J3YXJkQWRkcmVzczogZGF0YS5mb3J3YXJkQWRkcmVzcyxcbiAgICAgICAgICAgICAgZm9yd2FyZFBvcnQ6IGRhdGEuZm9yd2FyZFBvcnQsXG4gICAgICAgICAgICAgIGFsbG93ZWRQcm90b2NvbHM6IGRhdGEuYWxsb3dlZFByb3RvY29scyxcbiAgICAgICAgICAgICAgYWxsb3dlZEFkZHJlc3NlczogZGF0YS5hbGxvd2VkQWRkcmVzc2VzLFxuICAgICAgICAgICAgICBhbGxvd2VkUG9ydFJhbmdlczogZGF0YS5hbGxvd2VkUG9ydFJhbmdlc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncGFwJzpcbiAgICAgICAgICAgIHZhbCA9IHtcbiAgICAgICAgICAgICAgcHJvdG9jb2w6IGRhdGEucHJvdG9jb2wsXG4gICAgICAgICAgICAgIGFkZHJlc3M6IGRhdGEuYWRkcmVzcyxcbiAgICAgICAgICAgICAgcG9ydDogZGF0YS5wb3J0LFxuICAgICAgICAgICAgICBob3N0bmFtZTogZGF0YS5ob3N0bmFtZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YWwgPSBkYXRhW2l0ZW0ua2V5XTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldFByb3BlcnRpZXModmFsKTtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5zZXRJbnB1dCkge1xuICAgICAgICBpdGVtLmNvbXBvbmVudC5zZXRJbnB1dCgnZmllbGRWYWx1ZScsIGRhdGFbaXRlbS5rZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldENvbmZpZ0RhdGFGcm9tRm9ybSgpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgdGhpcy5hZGRJdGVtc1RvQ29uZmlnKHRoaXMuaXRlbXMsIGRhdGEpO1xuICAgIHRoaXMuX2NvbmZpZ0RhdGEgPSBkYXRhO1xuICAgIHRoaXMuaGlkZUNvbmZpZ0pTT04gPSBmYWxzZTtcbiAgICB0aGlzLmNvbmZpZ0RhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZ0RhdGEpO1xuICB9XG5cbiAgYWRkSXRlbXNUb0NvbmZpZyhpdGVtcywgZGF0YTogYW55ID0ge30sIHBhcmVudFR5cGUgPSAnb2JqZWN0Jykge1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgaWYgKGl0ZW0uYWRkZWRJdGVtcykge1xuICAgICAgICAgIGRhdGFbaXRlbS5rZXldID0gaXRlbS5hZGRlZEl0ZW1zO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFbaXRlbS5rZXldID0gW107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmFkZEl0ZW1zVG9Db25maWcoaXRlbS5pdGVtcywge30sIGl0ZW0udHlwZSk7XG4gICAgICAgIGxldCBoYXNEZWZpbml0aW9uID0gZmFsc2U7XG4gICAgICAgIGtleXModmFsKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBpZiAoaXNCb29sZWFuKHZhbFtrZXldKSB8fCAoIWlzRW1wdHkodmFsW2tleV0pICYmICFpc05pbCh2YWxba2V5XSkpKSB7XG4gICAgICAgICAgICBoYXNEZWZpbml0aW9uID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IGhhc0RlZmluaXRpb24gPyB2YWwgOiB1bmRlZmluZWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJvcHMgPSBbXTtcbiAgICAgICAgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmdldFByb3BlcnRpZXMpIHtcbiAgICAgICAgICBwcm9wcyA9IGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmdldFByb3BlcnRpZXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlKSB7XG4gICAgICAgICAgcHJvcHMgPSBbe2tleTogaXRlbS5rZXksIHZhbHVlOiBpdGVtLmNvbXBvbmVudC5pbnN0YW5jZS5maWVsZFZhbHVlfV07XG4gICAgICAgIH1cbiAgICAgICAgcHJvcHMuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgIGRhdGFbcHJvcC5rZXldID0gcHJvcC52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YWxpZGF0ZUNvbmZpZyhzY2hlbWE/LCBzaG93R3Jvd2xlciA9IHRydWUpIHtcbiAgICB0aGlzLmNvbmZpZ0RhdGEgPSB0aGlzLnJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXModGhpcy5jb25maWdEYXRhKTtcbiAgICBsZXQgdmFsaWRhdGlvbkVycm9ycztcbiAgICBsZXQgdmFsaWQgPSB0cnVlO1xuICAgIGlmIChzY2hlbWEpIHtcbiAgICAgIC8vIEluaXRpYWxpemUgQWp2XG4gICAgICBjb25zdCBhanYgPSBuZXcgQWp2KHthbGxFcnJvcnM6IHRydWV9KTtcbiAgICAgIGFkZEZvcm1hdHMoYWp2KTtcbiAgICAgIGFqdi5hZGRGb3JtYXQoJ2lkbi1ob3N0bmFtZScsIC9eLiskLyk7XG4gICAgICBjb25zdCB2YWxpZGF0ZSA9IGFqdi5jb21waWxlKHNjaGVtYSk7XG4gICAgICB2YWxpZCA9IHZhbGlkYXRlKHRoaXMuY29uZmlnRGF0YSk7XG4gICAgICB2YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGUuZXJyb3JzO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ0Vycm9ycyA9IHt9O1xuICAgIGNvbnN0IHByb3BlcnR5VmFsaWRhdGlvbk1hcCA9IHt9O1xuICAgIHRoaXMudmFsaWRhdGVDb25maWdJdGVtcyh0aGlzLml0ZW1zLCB1bmRlZmluZWQsICcnLCB2YWxpZGF0aW9uRXJyb3JzKTtcbiAgICB0aGlzLmJ1aWxkUHJvcGVydHlWYWxpZGF0aW9uTWFwKHZhbGlkYXRpb25FcnJvcnMsIHByb3BlcnR5VmFsaWRhdGlvbk1hcCk7XG4gICAgaWYgKCF2YWxpZCkge1xuICAgICAgdGhpcy5jb25maWdFcnJvcnNbJ2NvbmZpZ0RhdGEnXSA9IHRydWU7XG4gICAgICBpZiAoc2hvd0dyb3dsZXIpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlnRXJyb3JzKHByb3BlcnR5VmFsaWRhdGlvbk1hcCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlnRXJyb3JzQ2hhbmdlLmVtaXQodGhpcy5jb25maWdFcnJvcnMpO1xuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuY29uZmlnRXJyb3JzKTtcbiAgfVxuXG4gIGJ1aWxkUHJvcGVydHlWYWxpZGF0aW9uTWFwKHZhbGlkYXRpb25FcnJvcnMsIHByb3BlcnR5VmFsaWRhdGlvbk1hcCkge1xuICAgIHZhbGlkYXRpb25FcnJvcnM/LmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICBsZXQgcGF0aCA9IGVycm9yLmluc3RhbmNlUGF0aDtcbiAgICAgIGlmICghaXNFbXB0eShlcnJvcj8ucGFyYW1zPy5taXNzaW5nUHJvcGVydHkpKSB7XG4gICAgICAgIHBhdGggKz0gJy8nICsgZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5O1xuICAgICAgfVxuICAgICAgaWYgKCFpc0VtcHR5KHBhdGgpKSB7XG4gICAgICAgIHByb3BlcnR5VmFsaWRhdGlvbk1hcFtwYXRoXSA9IGA8Yj4ke3BhdGh9PC9iPjogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YWxpZGF0ZUNvbmZpZ0l0ZW1zKGl0ZW1zLCBwYXJlbnRUeXBlID0gJ29iamVjdCcsIHBhdGggPSAnJywgdmFsaWRhdGlvbkVycm9ycyA9IFtdKSB7XG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHZhbGlkYXRpb25FcnJvcnMpO1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDb25maWdJdGVtcyhpdGVtLml0ZW1zLCBpdGVtLnR5cGUsIHBhdGggKyAnLycgKyBpdGVtLmtleSwgdmFsaWRhdGlvbkVycm9ycykpIHtcbiAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0VmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgICBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRWYWxpZGF0aW9uRXJyb3JzKHBhdGgsIHZhbGlkYXRpb25FcnJvcnMpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBoYXNWYWxpZGF0aW9uRXJyb3I6IGFueSA9IHZhbGlkYXRpb25FcnJvcnM/LnNvbWUoKGVycm9yKSA9PiB7XG4gICAgICAgICAgbGV0IHBhdGhUb01hY2ggPSBlcnJvci5pbnN0YW5jZVBhdGg7XG4gICAgICAgICAgaWYgKCFpc0VtcHR5KGVycm9yPy5wYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHBhdGhUb01hY2ggKz0gJy8nICsgZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtYXRjaGVkID0gcGF0aFRvTWFjaCA9PT0gKHBhdGggKyAnLycgKyBpdGVtLmtleSk7XG4gICAgICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0SXNWYWxpZCkge1xuICAgICAgICAgIGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldElzVmFsaWQoIWhhc1ZhbGlkYXRpb25FcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIGRpc3BsYXlDb25maWdFcnJvcnMocHJvcGVydHlWYWxpZGF0aW9uTWFwKSB7XG4gICAgbGV0IHZhbGlkYXRpb25NZXNzYWdlID0gJyc7XG4gICAgaWYgKCFpc0VtcHR5KHByb3BlcnR5VmFsaWRhdGlvbk1hcCkpIHtcbiAgICAgIGNvbnN0IHByb3BzID0ga2V5cyhwcm9wZXJ0eVZhbGlkYXRpb25NYXApO1xuICAgICAgcHJvcHMuZm9yRWFjaCgoa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICB2YWxpZGF0aW9uTWVzc2FnZSArPSBgPGxpPiR7cHJvcGVydHlWYWxpZGF0aW9uTWFwW2tleV19PC9saT5gO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChpc0VtcHR5KHZhbGlkYXRpb25NZXNzYWdlKSkge1xuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSAnVGhlIGVudGVyZWQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLiBQbGVhc2UgdXBkYXRlIG1pc3NpbmcvaW52YWxpZCBmaWVsZHMgYW5kIHRyeSBhZ2Fpbi4nO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZGF0aW9uTWVzc2FnZSA9IGA8dWwgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHg7XCI+JHt2YWxpZGF0aW9uTWVzc2FnZX08L3VsPmA7XG4gICAgfVxuICAgIGNvbnN0IGdyb3dsZXJEYXRhID0gbmV3IEdyb3dsZXJNb2RlbChcbiAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgJ0Vycm9yJyxcbiAgICAgICAgYEVycm9yIFZhbGlkYXRpbmcgQ29uZmlnYCxcbiAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UsXG4gICAgKTtcbiAgICB0aGlzLmdyb3dsZXJTZXJ2aWNlLnNob3coZ3Jvd2xlckRhdGEpO1xuICB9XG5cbiAgZm9ybURhdGFDaGFuZ2VkKCkge1xuICAgIGRlbGF5KCgpID0+IHtcbiAgICAgIHRoaXMuZ2V0Q29uZmlnRGF0YUZyb21Gb3JtKCk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIGpzb25EYXRhQ2hhbmdlZChldmVudCkge1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnRGF0YUNoYW5nZS5lbWl0KHRoaXMuY29uZmlnRGF0YSk7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WaWV3KHRoaXMuaXRlbXMsIHRoaXMuY29uZmlnRGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGRhdGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgcmV0dXJuIGRhdGFcbiAgICAgICAgICAubWFwKGl0ZW0gPT4gdGhpcy5yZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKGl0ZW0pKVxuICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSB1bmRlZmluZWQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIGRhdGEgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoW18sIHZhbHVlXSkgPT4gdmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBba2V5LCB0aGlzLnJlbW92ZVVuZGVmaW5lZFByb3BlcnRpZXModmFsdWUpXSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1leHRlbmRlZC1maWVsZHNcIiBbaGlkZGVuXT1cInNob3dKc29uVmlld1wiIChtb3VzZXVwKT1cImZvcm1EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCIgKGtleXVwKT1cImZvcm1EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjZHluYW1pY2Zvcm0+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxsaWItanNvbi12aWV3ICpuZ0lmPVwic2hvd0pzb25WaWV3ICYmICFoaWRlQ29uZmlnSlNPTlwiIChkYXRhQ2hhbmdlKT1cImpzb25EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCIgWyhkYXRhKV09XCJjb25maWdEYXRhXCI+PC9saWItanNvbi12aWV3PlxuPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJzaG93SnNvblZpZXcgJiYgaGlkZUNvbmZpZ0pTT05cIiBbKGRhdGEpXT1cImNvbmZpZ0RhdGFcIj48L2xpYi1qc29uLXZpZXc+Il19
335
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFeEUsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sVUFBVSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7QUFHeEQsTUFLYSxxQkFBcUI7SUFxQmhDLElBQWEsVUFBVSxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFBQSxDQUFDO0lBR0YsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFHRCxJQUFhLFlBQVksQ0FBQyxZQUFxQjtRQUM3QyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FB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ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtKc29uRWRpdG9yQ29tcG9uZW50LCBKc29uRWRpdG9yT3B0aW9uc30gZnJvbSBcImFuZy1qc29uZWRpdG9yXCI7XG5pbXBvcnQge2RlYm91bmNlLCBkZWZlciwgaXNCb29sZWFuLCBpc0VtcHR5LCBpc05pbCwga2V5c30gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtTY2hlbWFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2NoZW1hLnNlcnZpY2VcIjtcbmltcG9ydCBBanYgZnJvbSAnYWp2JztcbmltcG9ydCBhZGRGb3JtYXRzIGZyb20gJ2Fqdi1mb3JtYXRzJztcbmltcG9ydCB7R3Jvd2xlck1vZGVsfSBmcm9tIFwiLi4vbWVzc2FnaW5nL2dyb3dsZXIubW9kZWxcIjtcbmltcG9ydCB7R3Jvd2xlclNlcnZpY2V9IGZyb20gXCIuLi9tZXNzYWdpbmcvZ3Jvd2xlci5zZXJ2aWNlXCI7ICAvLyBJbXBvcnQgYWp2LWZvcm1hdHNcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbmZpZy1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlnLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbmZpZ0RhdGFJbml0ID0gZmFsc2U7XG5cbiAgaXRlbXM6IGFueVtdID0gW107XG5cbiAgbENvbG9yQXJyYXkgPSBbXG4gICAgJ3doaXRlJyxcbiAgICAnd2hpdGUnLFxuICBdXG5cbiAgYkNvbG9yQXJyYXkgPSBbXG4gICAgJ3ZhcigtLWZvcm1Hcm91cCknLFxuICAgICd2YXIoLS1mb3JtU3ViR3JvdXApJ1xuICBdXG4gIGhpZGVDb25maWdKU09OID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY29uZmlnRXJyb3JzOiBhbnkgPSB7fTtcbiAgQE91dHB1dCgpIGNvbmZpZ0Vycm9yc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIF9jb25maWdEYXRhOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgc2V0IGNvbmZpZ0RhdGEoZGF0YSkge1xuICAgIHRoaXMuX2NvbmZpZ0RhdGEgPSBkYXRhO1xuICAgIHRoaXMuaW5pdEZvcm1EYXRhKCk7XG4gIH07XG5cbiAgQE91dHB1dCgpIGNvbmZpZ0RhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgZ2V0IGNvbmZpZ0RhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZ0RhdGE7XG4gIH1cblxuICBfc2hvd0pzb25WaWV3ID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzaG93SnNvblZpZXcoc2hvd0pzb25WaWV3OiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0pzb25WaWV3ID0gc2hvd0pzb25WaWV3O1xuICAgIHRoaXMudXBkYXRlQ29uZmlnRGF0YSgpO1xuICB9XG4gIGdldCBzaG93SnNvblZpZXcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dKc29uVmlldztcbiAgfVxuXG4gIF9zY2hlbWEgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNjaGVtYShzY2hlbWE6IGFueSkge1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLmluaXRGb3JtRGF0YSgpO1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIHRoaXMudXBkYXRlQ29uZmlnRGF0YSgpO1xuICB9XG5cbiAgZ2V0IHNjaGVtYSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2NoZW1hO1xuICB9XG5cbiAgZm9ybURhdGFDaGFuZ2VkRGVib3VuY2VkOiBhbnkgPSBkZWJvdW5jZSh0aGlzLmZvcm1EYXRhQ2hhbmdlZC5iaW5kKHRoaXMpLCAzNTApO1xuICBqc29uRGF0YUNoYW5nZWREZWJvdW5jZWQ6IGFueSA9IGRlYm91bmNlKHRoaXMuanNvbkRhdGFDaGFuZ2VkLmJpbmQodGhpcyksIDM1MCk7XG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljZm9ybVwiLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pIGR5bmFtaWNGb3JtITogVmlld0NvbnRhaW5lclJlZjtcbiAgQFZpZXdDaGlsZChKc29uRWRpdG9yQ29tcG9uZW50LCB7c3RhdGljOiBmYWxzZX0pIGVkaXRvciE6IEpzb25FZGl0b3JDb21wb25lbnQ7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2NoZW1hU3ZjOiBTY2hlbWFTZXJ2aWNlLCBwcml2YXRlIGdyb3dsZXJTZXJ2aWNlOiBHcm93bGVyU2VydmljZSkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtKCk7XG4gICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0gJiYgdGhpcy5zY2hlbWEpIHtcbiAgICAgIHRoaXMucmVuZGVyU2NoZW1hKHRoaXMuc2NoZW1hKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZvcm0oKSB7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtPy5jb21wb25lbnQpIGl0ZW0uY29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ0Vycm9ycyA9IHt9O1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgfVxuXG4gIHJlbmRlclNjaGVtYShzY2hlbWE6IGFueSkge1xuICAgIGlmIChzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuc2NoZW1hU3ZjLnJlbmRlcihzY2hlbWEsIHRoaXMuZHluYW1pY0Zvcm0sIHRoaXMubENvbG9yQXJyYXksIHRoaXMuYkNvbG9yQXJyYXkpO1xuICAgICAgZm9yIChsZXQgb2JqIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgY29uc3QgY1JlZiA9IG9iai5jb21wb25lbnQ7XG4gICAgICAgIGNSZWYuaW5zdGFuY2UuZXJyb3JzID0gdGhpcy5jb25maWdFcnJvcnM7XG4gICAgICAgIGlmIChjUmVmPy5pbnN0YW5jZS52YWx1ZUNoYW5nZSkge1xuICAgICAgICAgIGNvbnN0IHBOYW1lOiBzdHJpbmdbXSAgPSBjUmVmLmluc3RhbmNlLnBhcmVudGFnZTtcbiAgICAgICAgICBsZXQgcGFyZW50S2V5O1xuICAgICAgICAgIGlmKHBOYW1lKSBwYXJlbnRLZXkgPSBwTmFtZS5qb2luKCcuJyk7XG4gICAgICAgICAgLy9pZiAocGFyZW50S2V5ICYmICF0aGlzLmZvcm1EYXRhW3BhcmVudEtleV0pIHRoaXMuZm9ybURhdGFbcGFyZW50S2V5XSA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29uZmlnRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0pzb25WaWV3KSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WaWV3KHRoaXMuaXRlbXMsIHRoaXMuY29uZmlnRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNvbmZpZ0pTT04gPSB0cnVlO1xuICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRm9ybVZpZXcoaXRlbXMsIGRhdGE6IGFueSA9IHt9KSB7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5hZGRlZEl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtLmFkZGVkSXRlbXMgPSBkYXRhW2l0ZW0ua2V5XSB8fCBbXTtcbiAgICAgICAgICAgIGl0ZW0uY29tcG9uZW50Lmluc3RhbmNlLmFkZGVkSXRlbXMgPSBkYXRhW2l0ZW0ua2V5XSB8fCBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyhpdGVtLml0ZW1zLCB7fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyhpdGVtLml0ZW1zLCBkYXRhW2l0ZW0ua2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0UHJvcGVydGllcykge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBzd2l0Y2ggKGl0ZW0ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnZm9yd2FyZGluZ2NvbmZpZyc6XG4gICAgICAgICAgICB2YWwgPSB7XG4gICAgICAgICAgICAgIHByb3RvY29sOiBkYXRhLnByb3RvY29sLFxuICAgICAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsXG4gICAgICAgICAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgICAgICAgICAgZm9yd2FyZFByb3RvY29sOiBkYXRhLmZvcndhcmRQcm90b2NvbCxcbiAgICAgICAgICAgICAgZm9yd2FyZEFkZHJlc3M6IGRhdGEuZm9yd2FyZEFkZHJlc3MsXG4gICAgICAgICAgICAgIGZvcndhcmRQb3J0OiBkYXRhLmZvcndhcmRQb3J0LFxuICAgICAgICAgICAgICBhbGxvd2VkUHJvdG9jb2xzOiBkYXRhLmFsbG93ZWRQcm90b2NvbHMsXG4gICAgICAgICAgICAgIGFsbG93ZWRBZGRyZXNzZXM6IGRhdGEuYWxsb3dlZEFkZHJlc3NlcyxcbiAgICAgICAgICAgICAgYWxsb3dlZFBvcnRSYW5nZXM6IGRhdGEuYWxsb3dlZFBvcnRSYW5nZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3BhcCc6XG4gICAgICAgICAgICB2YWwgPSB7XG4gICAgICAgICAgICAgIHByb3RvY29sOiBkYXRhLnByb3RvY29sLFxuICAgICAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsXG4gICAgICAgICAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgICAgICAgICAgaG9zdG5hbWU6IGRhdGEuaG9zdG5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFsID0gZGF0YVtpdGVtLmtleV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRQcm9wZXJ0aWVzKHZhbCk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uc2V0SW5wdXQpIHtcbiAgICAgICAgaXRlbS5jb21wb25lbnQuc2V0SW5wdXQoJ2ZpZWxkVmFsdWUnLCBkYXRhW2l0ZW0ua2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRDb25maWdEYXRhRnJvbUZvcm0oKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIHRoaXMuYWRkSXRlbXNUb0NvbmZpZyh0aGlzLml0ZW1zLCBkYXRhKTtcbiAgICB0aGlzLl9jb25maWdEYXRhID0gZGF0YTtcbiAgICB0aGlzLmhpZGVDb25maWdKU09OID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWdEYXRhQ2hhbmdlLmVtaXQodGhpcy5jb25maWdEYXRhKTtcbiAgfVxuXG4gIGFkZEl0ZW1zVG9Db25maWcoaXRlbXMsIGRhdGE6IGFueSA9IHt9LCBwYXJlbnRUeXBlID0gJ29iamVjdCcpIHtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChpdGVtLmFkZGVkSXRlbXMpIHtcbiAgICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IGl0ZW0uYWRkZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5hZGRJdGVtc1RvQ29uZmlnKGl0ZW0uaXRlbXMsIHt9LCBpdGVtLnR5cGUpO1xuICAgICAgICBsZXQgaGFzRGVmaW5pdGlvbiA9IGZhbHNlO1xuICAgICAgICBrZXlzKHZhbCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQm9vbGVhbih2YWxba2V5XSkgfHwgKCFpc0VtcHR5KHZhbFtrZXldKSAmJiAhaXNOaWwodmFsW2tleV0pKSkge1xuICAgICAgICAgICAgaGFzRGVmaW5pdGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBoYXNEZWZpbml0aW9uID8gdmFsIDogdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHByb3BzID0gW107XG4gICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5nZXRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgcHJvcHMgPSBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZSkge1xuICAgICAgICAgIHByb3BzID0gW3trZXk6IGl0ZW0ua2V5LCB2YWx1ZTogaXRlbS5jb21wb25lbnQuaW5zdGFuY2UuZmllbGRWYWx1ZX1dO1xuICAgICAgICB9XG4gICAgICAgIHByb3BzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBkYXRhW3Byb3Aua2V5XSA9IHByb3AudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFsaWRhdGVDb25maWcoc2NoZW1hPywgc2hvd0dyb3dsZXIgPSB0cnVlKSB7XG4gICAgdGhpcy5jb25maWdEYXRhID0gdGhpcy5yZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKHRoaXMuY29uZmlnRGF0YSk7XG4gICAgbGV0IHZhbGlkYXRpb25FcnJvcnM7XG4gICAgbGV0IHZhbGlkID0gdHJ1ZTtcbiAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAvLyBJbml0aWFsaXplIEFqdlxuICAgICAgY29uc3QgYWp2ID0gbmV3IEFqdih7YWxsRXJyb3JzOiB0cnVlfSk7XG4gICAgICBhZGRGb3JtYXRzKGFqdik7XG4gICAgICBhanYuYWRkRm9ybWF0KCdpZG4taG9zdG5hbWUnLCAvXi4rJC8pO1xuICAgICAgY29uc3QgdmFsaWRhdGUgPSBhanYuY29tcGlsZShzY2hlbWEpO1xuICAgICAgdmFsaWQgPSB2YWxpZGF0ZSh0aGlzLmNvbmZpZ0RhdGEpO1xuICAgICAgdmFsaWRhdGlvbkVycm9ycyA9IHZhbGlkYXRlLmVycm9ycztcbiAgICB9XG4gICAgdGhpcy5jb25maWdFcnJvcnMgPSB7fTtcbiAgICBjb25zdCBwcm9wZXJ0eVZhbGlkYXRpb25NYXAgPSB7fTtcbiAgICB0aGlzLnZhbGlkYXRlQ29uZmlnSXRlbXModGhpcy5pdGVtcywgdW5kZWZpbmVkLCAnJywgdmFsaWRhdGlvbkVycm9ycyk7XG4gICAgdGhpcy5idWlsZFByb3BlcnR5VmFsaWRhdGlvbk1hcCh2YWxpZGF0aW9uRXJyb3JzLCBwcm9wZXJ0eVZhbGlkYXRpb25NYXApO1xuICAgIGlmICghdmFsaWQpIHtcbiAgICAgIHRoaXMuY29uZmlnRXJyb3JzWydjb25maWdEYXRhJ10gPSB0cnVlO1xuICAgICAgaWYgKHNob3dHcm93bGVyKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpZ0Vycm9ycyhwcm9wZXJ0eVZhbGlkYXRpb25NYXApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvbmZpZ0Vycm9yc0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnRXJyb3JzKTtcbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmNvbmZpZ0Vycm9ycyk7XG4gIH1cblxuICBidWlsZFByb3BlcnR5VmFsaWRhdGlvbk1hcCh2YWxpZGF0aW9uRXJyb3JzLCBwcm9wZXJ0eVZhbGlkYXRpb25NYXApIHtcbiAgICB2YWxpZGF0aW9uRXJyb3JzPy5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgbGV0IHBhdGggPSBlcnJvci5pbnN0YW5jZVBhdGg7XG4gICAgICBpZiAoIWlzRW1wdHkoZXJyb3I/LnBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5KSkge1xuICAgICAgICBwYXRoICs9ICcvJyArIGVycm9yPy5wYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNFbXB0eShwYXRoKSkge1xuICAgICAgICBwcm9wZXJ0eVZhbGlkYXRpb25NYXBbcGF0aF0gPSBgPGI+JHtwYXRofTwvYj46ICR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdmFsaWRhdGVDb25maWdJdGVtcyhpdGVtcywgcGFyZW50VHlwZSA9ICdvYmplY3QnLCBwYXRoID0gJycsIHZhbGlkYXRpb25FcnJvcnMgPSBbXSkge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zb2xlLmxvZyh2YWxpZGF0aW9uRXJyb3JzKTtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29uZmlnSXRlbXMoaXRlbS5pdGVtcywgaXRlbS50eXBlLCBwYXRoICsgJy8nICsgaXRlbS5rZXksIHZhbGlkYXRpb25FcnJvcnMpKSB7XG4gICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldFZhbGlkYXRpb25FcnJvcnMpIHtcbiAgICAgICAgaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0VmFsaWRhdGlvbkVycm9ycyhwYXRoLCB2YWxpZGF0aW9uRXJyb3JzKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaGFzVmFsaWRhdGlvbkVycm9yOiBhbnkgPSB2YWxpZGF0aW9uRXJyb3JzPy5zb21lKChlcnJvcikgPT4ge1xuICAgICAgICAgIGxldCBwYXRoVG9NYWNoID0gZXJyb3IuaW5zdGFuY2VQYXRoO1xuICAgICAgICAgIGlmICghaXNFbXB0eShlcnJvcj8ucGFyYW1zPy5taXNzaW5nUHJvcGVydHkpKSB7XG4gICAgICAgICAgICBwYXRoVG9NYWNoICs9ICcvJyArIGVycm9yPy5wYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbWF0Y2hlZCA9IHBhdGhUb01hY2ggPT09IChwYXRoICsgJy8nICsgaXRlbS5rZXkpO1xuICAgICAgICAgIHJldHVybiBtYXRjaGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldElzVmFsaWQpIHtcbiAgICAgICAgICBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRJc1ZhbGlkKCFoYXNWYWxpZGF0aW9uRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBkaXNwbGF5Q29uZmlnRXJyb3JzKHByb3BlcnR5VmFsaWRhdGlvbk1hcCkge1xuICAgIGxldCB2YWxpZGF0aW9uTWVzc2FnZSA9ICcnO1xuICAgIGlmICghaXNFbXB0eShwcm9wZXJ0eVZhbGlkYXRpb25NYXApKSB7XG4gICAgICBjb25zdCBwcm9wcyA9IGtleXMocHJvcGVydHlWYWxpZGF0aW9uTWFwKTtcbiAgICAgIHByb3BzLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgKz0gYDxsaT4ke3Byb3BlcnR5VmFsaWRhdGlvbk1hcFtrZXldfTwvbGk+YDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoaXNFbXB0eSh2YWxpZGF0aW9uTWVzc2FnZSkpIHtcbiAgICAgIHZhbGlkYXRpb25NZXNzYWdlID0gJ1RoZSBlbnRlcmVkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4gUGxlYXNlIHVwZGF0ZSBtaXNzaW5nL2ludmFsaWQgZmllbGRzIGFuZCB0cnkgYWdhaW4uJztcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRhdGlvbk1lc3NhZ2UgPSBgPHVsIHN0eWxlPVwibWFyZ2luLXRvcDogNXB4O1wiPiR7dmFsaWRhdGlvbk1lc3NhZ2V9PC91bD5gO1xuICAgIH1cbiAgICBjb25zdCBncm93bGVyRGF0YSA9IG5ldyBHcm93bGVyTW9kZWwoXG4gICAgICAgICdlcnJvcicsXG4gICAgICAgICdFcnJvcicsXG4gICAgICAgIGBFcnJvciBWYWxpZGF0aW5nIENvbmZpZ2AsXG4gICAgICAgIHZhbGlkYXRpb25NZXNzYWdlLFxuICAgICk7XG4gICAgdGhpcy5ncm93bGVyU2VydmljZS5zaG93KGdyb3dsZXJEYXRhKTtcbiAgfVxuXG4gIGluaXRGb3JtRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnRGF0YUluaXQgJiYgIWlzRW1wdHkodGhpcy5fY29uZmlnRGF0YSkgJiYgIWlzRW1wdHkodGhpcy5zY2hlbWEpKSB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGFJbml0ID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkKCk7XG4gICAgfVxuICB9XG5cbiAgZm9ybURhdGFDaGFuZ2VkKCkge1xuICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBqc29uRGF0YUNoYW5nZWQoZXZlbnQpIHtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZ0RhdGEpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyh0aGlzLml0ZW1zLCB0aGlzLmNvbmZpZ0RhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhkYXRhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgIHJldHVybiBkYXRhXG4gICAgICAgICAgLm1hcChpdGVtID0+IHRoaXMucmVtb3ZlVW5kZWZpbmVkUHJvcGVydGllcyhpdGVtKSlcbiAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4gaXRlbSAhPT0gdW5kZWZpbmVkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiBkYXRhICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGRhdGEpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgdGhpcy5yZW1vdmVVbmRlZmluZWRQcm9wZXJ0aWVzKHZhbHVlKV0pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtZXh0ZW5kZWQtZmllbGRzXCIgW2hpZGRlbl09XCJzaG93SnNvblZpZXdcIiAobW91c2V1cCk9XCJmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiIChrZXl1cCk9XCJmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiIChjbGlja091dHNpZGUpPVwiZm9ybURhdGFDaGFuZ2VkRGVib3VuY2VkKCRldmVudClcIj5cbiAgICA8bmctY29udGFpbmVyICNkeW5hbWljZm9ybT48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJzaG93SnNvblZpZXcgJiYgIWhpZGVDb25maWdKU09OXCIgKGRhdGFDaGFuZ2UpPVwianNvbkRhdGFDaGFuZ2VkRGVib3VuY2VkKCRldmVudClcIiBbKGRhdGEpXT1cImNvbmZpZ0RhdGFcIj48L2xpYi1qc29uLXZpZXc+XG48bGliLWpzb24tdmlldyAqbmdJZj1cInNob3dKc29uVmlldyAmJiBoaWRlQ29uZmlnSlNPTlwiIFsoZGF0YSldPVwiY29uZmlnRGF0YVwiPjwvbGliLWpzb24tdmlldz4iXX0=
@@ -65,12 +65,12 @@ class ConfirmComponent {
65
65
  this.dataObj.secondaryConfirmed = !this.dataObj.secondaryConfirmed;
66
66
  }
67
67
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmComponent, selector: "lib-confirm", ngImport: i0, template: "<div class=\"confirm-modal-container\">\n <div class=\"close icon-close\" (click)=\"cancel()\"></div>\n <div class=\"confirm-model-body\">\n <div class=\"confirm-modal-content\">\n <div class=\"confirm-title-container\">\n <span class=\"confirm-title\">{{dataObj.title}}</span>\n <span class=\"confirm-subtitle\">{{dataObj.subtitle}}</span>\n </div>\n <div class=\"confirm-modal-main\">\n <div class=\"confirm-modal-icon\" style=\"background-image: url({{dataObj.imageUrl}})\"></div>\n <div>\n <div class=\"confirm-message-content\">\n <span [innerHTML]=\"dataObj.message\"></span>\n </div>\n <div class=\"confirm-message-bullet-list\">\n <ul>\n <li *ngFor=\"let item of dataObj.bulletList\" class=\"confirm-item-name\">{{item}}</li>\n </ul>\n </div>\n <div *ngIf=\"dataObj.submessage && dataObj.submessage.length > 0\" class=\"confirm-message-sub-content\">\n <span [innerHTML]=\"dataObj.submessage\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"secondary-confirm-container\" *ngIf=\"dataObj.showSecondaryConfirm\">\n <div class=\"cSelect\" [ngClass]=\"{'selected': dataObj.secondaryConfirmed}\" (click)=\"toggleSecondary($event)\"></div>\n <div class=\"secondary-confirm-label\">{{dataObj.secondaryConfirmLabel}}</div>\n <div\n *ngIf=\"dataObj.secondaryInfoLabel\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{dataObj.secondaryInfoLabel}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <div class=\"confirm-buttons-container\">\n <div class=\"linkButton cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelLink\">{{dataObj.cancelLabel}}</div>\n <button class=\"button save secondary-button\" (click)=\"secondaryAction()\" *ngIf=\"dataObj.secondaryActionLabel && dataObj.secondaryConfirmed\">{{dataObj.secondaryActionLabel}}</button>\n <button class=\"button save cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelButton\">{{dataObj.cancelLabel}}</button>\n <button class=\"button save confirm\" (click)=\"confirm()\">{{dataObj.confirmLabelAlt && dataObj.secondaryConfirmed ? dataObj.confirmLabelAlt : dataObj.confirmLabel}}</button>\n </div>\n</div>\n", styles: [".confirm-modal-container{display:flex;flex-direction:column;background-color:var(--background);border-radius:25px;width:600px}.confirm-modal-container .confirm-model-body{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-content{display:flex;flex-direction:column}.confirm-modal-container .confirm-model-body .confirm-modal-main{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-icon{width:120px;height:120px;background-size:contain;z-index:20;box-sizing:var(--shadow);margin-left:15px}.confirm-modal-container .confirm-title-container{width:100%;display:flex;flex-direction:column}.confirm-modal-container .confirm-title-container .confirm-title{color:var(--primaryColor);font-size:30px;position:relative;padding-left:0;width:400px;background:none;text-transform:none;height:auto;font-family:Russo One;margin-top:30px;margin-left:150px;filter:brightness(50%)}.confirm-modal-container .confirm-message-sub-content,.confirm-modal-container .confirm-message-content{color:var(--text);font-size:14px;position:relative;margin:5px 15px 15px;padding:0;font-weight:600;font-family:Open Sans;overflow:auto;display:flex;align-items:center;justify-content:flex-start;color:var(--tableText);max-width:400px}.confirm-modal-container .confirm-message-bullet-list{margin-left:20px;margin-bottom:15px;margin-right:20px;max-height:200px;overflow:auto}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name{color:var(--primaryColor);text-decoration:none;transition:.5s ease}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name::marker{color:var(--tableText)}.confirm-modal-container .confirm-message-bullet-list ul{margin:0}.confirm-modal-container .secondary-confirm-container{height:35px;width:100%;position:relative;display:flex;flex-direction:row;align-items:center;padding-left:35px;padding-top:35px;padding-bottom:25px}.confirm-modal-container .secondary-confirm-container.disabled{opacity:.5;filter:grayscale(1);cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect{cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect:hover,.confirm-modal-container .secondary-confirm-container.disabled .cSelect:active{transform:none;border:2px var(--inputBorder) solid}.confirm-modal-container .secondary-confirm-container .cSelect{position:relative;top:initial;left:initial;height:25px;width:25px}.confirm-modal-container .secondary-confirm-container .secondary-confirm-label{font-size:14px;font-weight:600;color:var(--tableText);margin-left:7px}.confirm-modal-container .secondary-confirm-container .infoicon{filter:brightness(.8)}.confirm-modal-container .confirm-buttons-container{display:flex;justify-content:flex-end;flex-direction:row;width:100%;padding-right:20px;padding-bottom:20px;align-items:flex-end}.confirm-modal-container .confirm-buttons-container .linkButton{position:absolute;left:25px;color:var(--subText);font-weight:600}.confirm-modal-container .confirm-buttons-container .secondary-button{margin-right:10px;background-color:var(--primary)}.confirm-modal-container button{width:100px;height:40px;color:var(--white);display:flex;align-items:center;justify-content:center;font-size:12px}.confirm-modal-container button.confirm{background-color:var(--secondary)}.confirm-modal-container button.cancel{background-color:var(--primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ConfirmComponent, selector: "lib-confirm", ngImport: i0, template: "<div class=\"confirm-modal-container\">\n <div class=\"close icon-close\" (click)=\"cancel()\"></div>\n <div class=\"confirm-model-body\">\n <div class=\"confirm-modal-content\">\n <div class=\"confirm-title-container\">\n <span class=\"confirm-title\">{{dataObj.title}}</span>\n <span class=\"confirm-subtitle\">{{dataObj.subtitle}}</span>\n </div>\n <div class=\"confirm-modal-main\">\n <div class=\"confirm-modal-icon\" style=\"background-image: url({{dataObj.imageUrl}})\"></div>\n <div>\n <div class=\"confirm-message-content\">\n <span [innerHTML]=\"dataObj.message\"></span>\n </div>\n <div class=\"confirm-message-bullet-list\">\n <ul>\n <li *ngFor=\"let item of dataObj.bulletList\" class=\"confirm-item-name\">{{item}}</li>\n </ul>\n </div>\n <div *ngIf=\"dataObj.submessage && dataObj.submessage.length > 0\" class=\"confirm-message-sub-content\">\n <span [innerHTML]=\"dataObj.submessage\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"secondary-confirm-container\" *ngIf=\"dataObj.showSecondaryConfirm\">\n <div class=\"cSelect\" [ngClass]=\"{'selected': dataObj.secondaryConfirmed}\" (click)=\"toggleSecondary($event)\"></div>\n <div class=\"secondary-confirm-label\">{{dataObj.secondaryConfirmLabel}}</div>\n <div\n *ngIf=\"dataObj.secondaryInfoLabel\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{dataObj.secondaryInfoLabel}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <div class=\"confirm-buttons-container\">\n <div class=\"linkButton cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelLink\">{{dataObj.cancelLabel}}</div>\n <button class=\"button save secondary-button\" (click)=\"secondaryAction()\" *ngIf=\"dataObj.secondaryActionLabel && dataObj.secondaryConfirmed\">{{dataObj.secondaryActionLabel}}</button>\n <button class=\"button save cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelButton\">{{dataObj.cancelLabel}}</button>\n <button class=\"button save confirm\" (click)=\"confirm()\">{{dataObj.confirmLabelAlt && dataObj.secondaryConfirmed ? dataObj.confirmLabelAlt : dataObj.confirmLabel}}</button>\n </div>\n</div>\n", styles: [".confirm-modal-container{display:flex;flex-direction:column;background-color:var(--background);border-radius:1.5625rem;width:37.5rem}.confirm-modal-container .confirm-model-body{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-content{display:flex;flex-direction:column}.confirm-modal-container .confirm-model-body .confirm-modal-main{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-icon{width:7.5rem;height:7.5rem;background-size:contain;z-index:20;box-sizing:var(--shadow);margin-left:.9375rem}.confirm-modal-container .confirm-title-container{width:100%;display:flex;flex-direction:column}.confirm-modal-container .confirm-title-container .confirm-title{color:var(--primaryColor);font-size:1.875rem;position:relative;padding-left:0;width:25rem;background:none;text-transform:none;height:auto;font-family:Russo One;margin-top:1.875rem;margin-left:9.375rem;filter:brightness(50%)}.confirm-modal-container .confirm-message-sub-content,.confirm-modal-container .confirm-message-content{color:var(--text);font-size:.875rem;position:relative;margin:.3125rem .9375rem .9375rem;padding:0;font-weight:600;font-family:Open Sans;overflow:auto;display:flex;align-items:center;justify-content:flex-start;color:var(--tableText);max-width:25rem}.confirm-modal-container .confirm-message-bullet-list{margin-left:1.25rem;margin-bottom:.9375rem;margin-right:1.25rem;max-height:12.5rem;overflow:auto}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name{color:var(--primaryColor);text-decoration:none;transition:.5s ease}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name::marker{color:var(--tableText)}.confirm-modal-container .confirm-message-bullet-list ul{margin:0}.confirm-modal-container .secondary-confirm-container{height:2.1875rem;width:100%;position:relative;display:flex;flex-direction:row;align-items:center;padding-left:2.1875rem;padding-top:2.1875rem;padding-bottom:1.5625rem}.confirm-modal-container .secondary-confirm-container.disabled{opacity:.5;filter:grayscale(1);cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect{cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect:hover,.confirm-modal-container .secondary-confirm-container.disabled .cSelect:active{transform:none;border:.125rem var(--inputBorder) solid}.confirm-modal-container .secondary-confirm-container .cSelect{position:relative;top:initial;left:initial;height:1.5625rem;width:1.5625rem}.confirm-modal-container .secondary-confirm-container .secondary-confirm-label{font-size:.875rem;font-weight:600;color:var(--tableText);margin-left:.4375rem}.confirm-modal-container .secondary-confirm-container .infoicon{filter:brightness(.8)}.confirm-modal-container .confirm-buttons-container{display:flex;justify-content:flex-end;flex-direction:row;width:100%;padding-right:1.25rem;padding-bottom:1.25rem;align-items:flex-end}.confirm-modal-container .confirm-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.confirm-modal-container .confirm-buttons-container .secondary-button{margin-right:.625rem;background-color:var(--primary)}.confirm-modal-container button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center;font-size:.75rem}.confirm-modal-container button.confirm{background-color:var(--secondary)}.confirm-modal-container button.cancel{background-color:var(--primary)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
69
69
  }
70
70
  export { ConfirmComponent };
71
71
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ConfirmComponent, decorators: [{
72
72
  type: Component,
73
- args: [{ selector: 'lib-confirm', template: "<div class=\"confirm-modal-container\">\n <div class=\"close icon-close\" (click)=\"cancel()\"></div>\n <div class=\"confirm-model-body\">\n <div class=\"confirm-modal-content\">\n <div class=\"confirm-title-container\">\n <span class=\"confirm-title\">{{dataObj.title}}</span>\n <span class=\"confirm-subtitle\">{{dataObj.subtitle}}</span>\n </div>\n <div class=\"confirm-modal-main\">\n <div class=\"confirm-modal-icon\" style=\"background-image: url({{dataObj.imageUrl}})\"></div>\n <div>\n <div class=\"confirm-message-content\">\n <span [innerHTML]=\"dataObj.message\"></span>\n </div>\n <div class=\"confirm-message-bullet-list\">\n <ul>\n <li *ngFor=\"let item of dataObj.bulletList\" class=\"confirm-item-name\">{{item}}</li>\n </ul>\n </div>\n <div *ngIf=\"dataObj.submessage && dataObj.submessage.length > 0\" class=\"confirm-message-sub-content\">\n <span [innerHTML]=\"dataObj.submessage\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"secondary-confirm-container\" *ngIf=\"dataObj.showSecondaryConfirm\">\n <div class=\"cSelect\" [ngClass]=\"{'selected': dataObj.secondaryConfirmed}\" (click)=\"toggleSecondary($event)\"></div>\n <div class=\"secondary-confirm-label\">{{dataObj.secondaryConfirmLabel}}</div>\n <div\n *ngIf=\"dataObj.secondaryInfoLabel\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{dataObj.secondaryInfoLabel}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <div class=\"confirm-buttons-container\">\n <div class=\"linkButton cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelLink\">{{dataObj.cancelLabel}}</div>\n <button class=\"button save secondary-button\" (click)=\"secondaryAction()\" *ngIf=\"dataObj.secondaryActionLabel && dataObj.secondaryConfirmed\">{{dataObj.secondaryActionLabel}}</button>\n <button class=\"button save cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelButton\">{{dataObj.cancelLabel}}</button>\n <button class=\"button save confirm\" (click)=\"confirm()\">{{dataObj.confirmLabelAlt && dataObj.secondaryConfirmed ? dataObj.confirmLabelAlt : dataObj.confirmLabel}}</button>\n </div>\n</div>\n", styles: [".confirm-modal-container{display:flex;flex-direction:column;background-color:var(--background);border-radius:25px;width:600px}.confirm-modal-container .confirm-model-body{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-content{display:flex;flex-direction:column}.confirm-modal-container .confirm-model-body .confirm-modal-main{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-icon{width:120px;height:120px;background-size:contain;z-index:20;box-sizing:var(--shadow);margin-left:15px}.confirm-modal-container .confirm-title-container{width:100%;display:flex;flex-direction:column}.confirm-modal-container .confirm-title-container .confirm-title{color:var(--primaryColor);font-size:30px;position:relative;padding-left:0;width:400px;background:none;text-transform:none;height:auto;font-family:Russo One;margin-top:30px;margin-left:150px;filter:brightness(50%)}.confirm-modal-container .confirm-message-sub-content,.confirm-modal-container .confirm-message-content{color:var(--text);font-size:14px;position:relative;margin:5px 15px 15px;padding:0;font-weight:600;font-family:Open Sans;overflow:auto;display:flex;align-items:center;justify-content:flex-start;color:var(--tableText);max-width:400px}.confirm-modal-container .confirm-message-bullet-list{margin-left:20px;margin-bottom:15px;margin-right:20px;max-height:200px;overflow:auto}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name{color:var(--primaryColor);text-decoration:none;transition:.5s ease}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name::marker{color:var(--tableText)}.confirm-modal-container .confirm-message-bullet-list ul{margin:0}.confirm-modal-container .secondary-confirm-container{height:35px;width:100%;position:relative;display:flex;flex-direction:row;align-items:center;padding-left:35px;padding-top:35px;padding-bottom:25px}.confirm-modal-container .secondary-confirm-container.disabled{opacity:.5;filter:grayscale(1);cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect{cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect:hover,.confirm-modal-container .secondary-confirm-container.disabled .cSelect:active{transform:none;border:2px var(--inputBorder) solid}.confirm-modal-container .secondary-confirm-container .cSelect{position:relative;top:initial;left:initial;height:25px;width:25px}.confirm-modal-container .secondary-confirm-container .secondary-confirm-label{font-size:14px;font-weight:600;color:var(--tableText);margin-left:7px}.confirm-modal-container .secondary-confirm-container .infoicon{filter:brightness(.8)}.confirm-modal-container .confirm-buttons-container{display:flex;justify-content:flex-end;flex-direction:row;width:100%;padding-right:20px;padding-bottom:20px;align-items:flex-end}.confirm-modal-container .confirm-buttons-container .linkButton{position:absolute;left:25px;color:var(--subText);font-weight:600}.confirm-modal-container .confirm-buttons-container .secondary-button{margin-right:10px;background-color:var(--primary)}.confirm-modal-container button{width:100px;height:40px;color:var(--white);display:flex;align-items:center;justify-content:center;font-size:12px}.confirm-modal-container button.confirm{background-color:var(--secondary)}.confirm-modal-container button.cancel{background-color:var(--primary)}\n"] }]
73
+ args: [{ selector: 'lib-confirm', template: "<div class=\"confirm-modal-container\">\n <div class=\"close icon-close\" (click)=\"cancel()\"></div>\n <div class=\"confirm-model-body\">\n <div class=\"confirm-modal-content\">\n <div class=\"confirm-title-container\">\n <span class=\"confirm-title\">{{dataObj.title}}</span>\n <span class=\"confirm-subtitle\">{{dataObj.subtitle}}</span>\n </div>\n <div class=\"confirm-modal-main\">\n <div class=\"confirm-modal-icon\" style=\"background-image: url({{dataObj.imageUrl}})\"></div>\n <div>\n <div class=\"confirm-message-content\">\n <span [innerHTML]=\"dataObj.message\"></span>\n </div>\n <div class=\"confirm-message-bullet-list\">\n <ul>\n <li *ngFor=\"let item of dataObj.bulletList\" class=\"confirm-item-name\">{{item}}</li>\n </ul>\n </div>\n <div *ngIf=\"dataObj.submessage && dataObj.submessage.length > 0\" class=\"confirm-message-sub-content\">\n <span [innerHTML]=\"dataObj.submessage\"></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"secondary-confirm-container\" *ngIf=\"dataObj.showSecondaryConfirm\">\n <div class=\"cSelect\" [ngClass]=\"{'selected': dataObj.secondaryConfirmed}\" (click)=\"toggleSecondary($event)\"></div>\n <div class=\"secondary-confirm-label\">{{dataObj.secondaryConfirmLabel}}</div>\n <div\n *ngIf=\"dataObj.secondaryInfoLabel\"\n class=\"form-field-info infoicon\"\n matTooltip=\"{{dataObj.secondaryInfoLabel}}\"\n matTooltipPosition=\"above\"\n ></div>\n </div>\n <div class=\"confirm-buttons-container\">\n <div class=\"linkButton cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelLink\">{{dataObj.cancelLabel}}</div>\n <button class=\"button save secondary-button\" (click)=\"secondaryAction()\" *ngIf=\"dataObj.secondaryActionLabel && dataObj.secondaryConfirmed\">{{dataObj.secondaryActionLabel}}</button>\n <button class=\"button save cancel\" (click)=\"cancel()\" *ngIf=\"dataObj.showCancelButton\">{{dataObj.cancelLabel}}</button>\n <button class=\"button save confirm\" (click)=\"confirm()\">{{dataObj.confirmLabelAlt && dataObj.secondaryConfirmed ? dataObj.confirmLabelAlt : dataObj.confirmLabel}}</button>\n </div>\n</div>\n", styles: [".confirm-modal-container{display:flex;flex-direction:column;background-color:var(--background);border-radius:1.5625rem;width:37.5rem}.confirm-modal-container .confirm-model-body{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-content{display:flex;flex-direction:column}.confirm-modal-container .confirm-model-body .confirm-modal-main{display:flex;flex-direction:row;align-items:center}.confirm-modal-container .confirm-model-body .confirm-modal-icon{width:7.5rem;height:7.5rem;background-size:contain;z-index:20;box-sizing:var(--shadow);margin-left:.9375rem}.confirm-modal-container .confirm-title-container{width:100%;display:flex;flex-direction:column}.confirm-modal-container .confirm-title-container .confirm-title{color:var(--primaryColor);font-size:1.875rem;position:relative;padding-left:0;width:25rem;background:none;text-transform:none;height:auto;font-family:Russo One;margin-top:1.875rem;margin-left:9.375rem;filter:brightness(50%)}.confirm-modal-container .confirm-message-sub-content,.confirm-modal-container .confirm-message-content{color:var(--text);font-size:.875rem;position:relative;margin:.3125rem .9375rem .9375rem;padding:0;font-weight:600;font-family:Open Sans;overflow:auto;display:flex;align-items:center;justify-content:flex-start;color:var(--tableText);max-width:25rem}.confirm-modal-container .confirm-message-bullet-list{margin-left:1.25rem;margin-bottom:.9375rem;margin-right:1.25rem;max-height:12.5rem;overflow:auto}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name{color:var(--primaryColor);text-decoration:none;transition:.5s ease}.confirm-modal-container .confirm-message-bullet-list .confirm-item-name::marker{color:var(--tableText)}.confirm-modal-container .confirm-message-bullet-list ul{margin:0}.confirm-modal-container .secondary-confirm-container{height:2.1875rem;width:100%;position:relative;display:flex;flex-direction:row;align-items:center;padding-left:2.1875rem;padding-top:2.1875rem;padding-bottom:1.5625rem}.confirm-modal-container .secondary-confirm-container.disabled{opacity:.5;filter:grayscale(1);cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect{cursor:not-allowed}.confirm-modal-container .secondary-confirm-container.disabled .cSelect:hover,.confirm-modal-container .secondary-confirm-container.disabled .cSelect:active{transform:none;border:.125rem var(--inputBorder) solid}.confirm-modal-container .secondary-confirm-container .cSelect{position:relative;top:initial;left:initial;height:1.5625rem;width:1.5625rem}.confirm-modal-container .secondary-confirm-container .secondary-confirm-label{font-size:.875rem;font-weight:600;color:var(--tableText);margin-left:.4375rem}.confirm-modal-container .secondary-confirm-container .infoicon{filter:brightness(.8)}.confirm-modal-container .confirm-buttons-container{display:flex;justify-content:flex-end;flex-direction:row;width:100%;padding-right:1.25rem;padding-bottom:1.25rem;align-items:flex-end}.confirm-modal-container .confirm-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.confirm-modal-container .confirm-buttons-container .secondary-button{margin-right:.625rem;background-color:var(--primary)}.confirm-modal-container button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center;font-size:.75rem}.confirm-modal-container button.confirm{background-color:var(--secondary)}.confirm-modal-container button.cancel{background-color:var(--primary)}\n"] }]
74
74
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
75
75
  type: Inject,
76
76
  args: [MAT_DIALOG_DATA]
@@ -79,12 +79,12 @@ class CreationSummaryDialogComponent {
79
79
  this.dialogRef.close('new');
80
80
  }
81
81
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreationSummaryDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.GrowlerService }], target: i0.ɵɵFactoryTarget.Component }); }
82
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreationSummaryDialogComponent, selector: "lib-creation-summary-dialog", ngImport: i0, template: "<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>", styles: [".creation-summary-dialog-container{background-color:var(--formBackground);min-width:475px;border-radius:var(--modalBorderRadius);padding:var(--paddingXXL)}.creation-summary-dialog-container .title-row{display:flex;align-items:center;flex-direction:column;margin-bottom:var(--marginLarge)}.creation-summary-dialog-container .subtitle{color:var(--text)}.creation-summary-dialog-container .close{font-size:25px;top:15px;right:15px;width:35px;font-weight:600}.resource-type-container{display:flex;flex-direction:column;padding-left:var(--paddingLarge);padding-right:var(--paddingLarge)}.resource-type-container.disabled{opacity:.5}.resource-type-container.disabled select{cursor:not-allowed}.resource-type-container .resource-type-content{margin-top:20px;flex-wrap:wrap}.entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-moz-fit-content;width:fit-content}.summary-group ul{padding-inline-start:0px;margin-block-start:var(--marginSmall);max-height:650px;overflow:auto;overflow-x:hidden}.summary-group .entity-item{display:flex;align-items:center;gap:5px;font-weight:600;font-size:16px;padding-top:3px;padding-bottom:3px;position:relative;cursor:pointer;border-left-width:5px;border-left-color:transparent;border-left-style:solid}.summary-group .entity-item:hover{background-color:#2196f31a;border-left-width:5px;border-left-color:var(--primaryColor)}.summary-group .entity-item[hidden]{display:none}.summary-group .entity-item.no-results{font-weight:400}.summary-group .entity-item.no-results:hover{background-color:transparent;border-left-color:transparent;cursor:default}.summary-groups-container{overflow:auto;height:100%;width:100%;max-width:300px;display:flex;position:relative;flex-direction:column}.summary-group-title{margin-left:0;color:var(--primaryColor);font-weight:700;font-size:15px;filter:brightness(65%);text-transform:uppercase}.exec-operations-group{padding:0}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%;padding-top:var(--paddingMedium)}.confirm-buttons-container .linkButton{position:absolute;left:25px;color:var(--subText);font-weight:600}.confirm-buttons-container .button{text-align:center;line-height:normal}button{width:100px;height:40px;color:var(--white);display:flex;align-items:center;justify-content:center}button.confirm{background-color:var(--secondary)}button.cancel{background-color:var(--primary)}.spinner{right:1em;top:1em;display:inline-block;width:16px;height:16px;border-radius:50%;background:transparent;border-top:2px solid var(--placeholder);border-right:2px solid var(--placeholder);border-bottom:2px solid transparent;border-left:2px solid transparent;animation:loading .5s infinite linear}.config-check,.success-check{width:17px;height:17px;cursor:pointer;background-color:var(--navigation);margin:4px 0 0}.config-check:checked,.success-check:checked{background-color:var(--green)!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAABdElEQVRIia3UPWsUURSH8f9GRRvtFKtIgoKggo2CYO0XsLKzsbARbNKJYGPndxEEO8VGRRvBF6xFBAkplPiyb/lZzAx7d9jE3ewcmOLOPTyc85x7bw/pKI4keZ7kUpIHQVffIwxU0e91VPHlJK+T9Or19y7Ah5N8TLJeg3eSXO9CwcNCwQCPkWWhFzE2iZ84viz4ED4X4DFuNPvLgO8XCoZ4Wu7vF3oeo0LBL5xcFnwA7wsFI9xs5+0HvFG33ih4NitvUejZAgp/sLoseAVvC7dD3NotfxHw3ZaCl+jtBT6qOn+n94CuoV8o+Fv/27WQ4E3dXh9XZyT18Kql4M7/OozJsdnBb1xoJd0uFIxqzyvzgJ+Y3KAxtrBeJ6yqJt/EEGfmmUlwDB9aVX3FCbwwPbCNeaANOKoX6UvL41axHuOd6tYtBA5OYdP0a9XECOfmhbbBUT0u26pBNjHAvUWgs8DBFdPD/ISDXYCDa/iBb3UXC0GRf9rA4qSLGyBIAAAAAElFTkSuQmCC);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}.config-check:checked:disabled,.success-check:checked:disabled{opacity:1!important}.success-check{border-radius:100%;top:13px;left:10px;transition:var(--transition);border:2px var(--offWhite) solid}.config-check{border-radius:0}.config-check:checked{background-size:10px}.icon-clear{color:var(--red);margin-top:4px}.retry{background-image:url(/assets/svgs/refresh.svg);background-size:18px;background-repeat:no-repeat;height:18px;width:18px;margin-left:5px}.copy-links-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gapMedium)}.copy-links-container .copy-links-title{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:375px}.copy-links-container .copy-links-title .title-container{display:flex}.copy-links-container .copy-links-title .title{font-size:20px;line-height:20px}.copy-links-container .copy-links-title .subtitle{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--red)}.copy-links-container .copy-links-title .copy-icon{background-image:url(/assets/svgs/copy.svg);background-size:18px;background-repeat:no-repeat;height:20px;width:20px;margin-left:7px}.copy-links-container .copy-links{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:var(--paddingMedium);width:100%}.copy-links-container .copy-links .link-button{color:var(--subText);font-size:16px;font-weight:600;cursor:pointer}.copy-links-container .copy-links .link-button:hover{text-decoration:underline}.visibility-config-container{display:flex;flex-direction:row;align-items:center;width:100%;justify-content:flex-start;gap:5px;margin-top:var(--marginMedium)}::ng-deep .creation-summary-dialog-container .form-field-content{gap:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }] }); }
82
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreationSummaryDialogComponent, selector: "lib-creation-summary-dialog", ngImport: i0, template: "<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>", styles: [".creation-summary-dialog-container{background-color:var(--formBackground);min-width:29.6875rem;border-radius:var(--modalBorderRadius);padding:var(--paddingXXL)}.creation-summary-dialog-container .title-row{display:flex;align-items:center;flex-direction:column;margin-bottom:var(--marginLarge)}.creation-summary-dialog-container .subtitle{color:var(--text)}.creation-summary-dialog-container .close{font-size:1.5625rem;top:.9375rem;right:.9375rem;width:2.1875rem;font-weight:600}.resource-type-container{display:flex;flex-direction:column;padding-left:var(--paddingLarge);padding-right:var(--paddingLarge)}.resource-type-container.disabled{opacity:.5}.resource-type-container.disabled select{cursor:not-allowed}.resource-type-container .resource-type-content{margin-top:1.25rem;flex-wrap:wrap}.entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-moz-fit-content;width:fit-content}.summary-group ul{padding-inline-start:0rem;margin-block-start:var(--marginSmall);max-height:40.625rem;overflow:auto;overflow-x:hidden}.summary-group .entity-item{display:flex;align-items:center;gap:.3125rem;font-weight:600;font-size:1rem;padding-top:.1875rem;padding-bottom:.1875rem;position:relative;cursor:pointer;border-left-width:.3125rem;border-left-color:transparent;border-left-style:solid}.summary-group .entity-item:hover{background-color:#2196f31a;border-left-width:.3125rem;border-left-color:var(--primaryColor)}.summary-group .entity-item[hidden]{display:none}.summary-group .entity-item.no-results{font-weight:400}.summary-group .entity-item.no-results:hover{background-color:transparent;border-left-color:transparent;cursor:default}.summary-groups-container{overflow:auto;height:100%;width:100%;max-width:18.75rem;display:flex;position:relative;flex-direction:column}.summary-group-title{margin-left:0;color:var(--primaryColor);font-weight:700;font-size:.9375rem;filter:brightness(65%);text-transform:uppercase}.exec-operations-group{padding:0}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%;padding-top:var(--paddingMedium)}.confirm-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.confirm-buttons-container .button{text-align:center;line-height:normal}button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center}button.confirm{background-color:var(--secondary)}button.cancel{background-color:var(--primary)}.spinner{right:1em;top:1em;display:inline-block;width:1rem;height:1rem;border-radius:50%;background:transparent;border-top:.125rem solid var(--placeholder);border-right:.125rem solid var(--placeholder);border-bottom:.125rem solid transparent;border-left:.125rem solid transparent;animation:loading .5s infinite linear}.config-check,.success-check{width:1.0625rem;height:1.0625rem;cursor:pointer;background-color:var(--navigation);margin:0;margin-top:.25rem}.config-check:checked,.success-check:checked{background-color:var(--green)!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAABdElEQVRIia3UPWsUURSH8f9GRRvtFKtIgoKggo2CYO0XsLKzsbARbNKJYGPndxEEO8VGRRvBF6xFBAkplPiyb/lZzAx7d9jE3ewcmOLOPTyc85x7bw/pKI4keZ7kUpIHQVffIwxU0e91VPHlJK+T9Or19y7Ah5N8TLJeg3eSXO9CwcNCwQCPkWWhFzE2iZ84viz4ED4X4DFuNPvLgO8XCoZ4Wu7vF3oeo0LBL5xcFnwA7wsFI9xs5+0HvFG33ih4NitvUejZAgp/sLoseAVvC7dD3NotfxHw3ZaCl+jtBT6qOn+n94CuoV8o+Fv/27WQ4E3dXh9XZyT18Kql4M7/OozJsdnBb1xoJd0uFIxqzyvzgJ+Y3KAxtrBeJ6yqJt/EEGfmmUlwDB9aVX3FCbwwPbCNeaANOKoX6UvL41axHuOd6tYtBA5OYdP0a9XECOfmhbbBUT0u26pBNjHAvUWgs8DBFdPD/ISDXYCDa/iBb3UXC0GRf9rA4qSLGyBIAAAAAElFTkSuQmCC);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}.config-check:checked:disabled,.success-check:checked:disabled{opacity:1!important}.success-check{border-radius:100%;top:.8125rem;left:.625rem;transition:var(--transition);border:.125rem var(--offWhite) solid}.config-check{border-radius:0}.config-check:checked{background-size:.625rem}.icon-clear{color:var(--red);margin-top:.25rem}.retry{background-image:url(/assets/svgs/refresh.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.125rem;width:1.125rem;margin-left:.3125rem}.copy-links-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gapMedium)}.copy-links-container .copy-links-title{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:23.4375rem}.copy-links-container .copy-links-title .title-container{display:flex}.copy-links-container .copy-links-title .title{font-size:1.25rem;line-height:1.25rem}.copy-links-container .copy-links-title .subtitle{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--red)}.copy-links-container .copy-links-title .copy-icon{background-image:url(/assets/svgs/copy.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.25rem;width:1.25rem;margin-left:.4375rem}.copy-links-container .copy-links{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:var(--paddingMedium);width:100%}.copy-links-container .copy-links .link-button{color:var(--subText);font-size:1rem;font-weight:600;cursor:pointer}.copy-links-container .copy-links .link-button:hover{text-decoration:underline}.visibility-config-container{display:flex;flex-direction:row;align-items:center;width:100%;justify-content:flex-start;gap:.3125rem;margin-top:var(--marginMedium)}::ng-deep .creation-summary-dialog-container .form-field-content{gap:0!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "showHeader", "headerActions"], outputs: ["actionRequested"] }] }); }
83
83
  }
84
84
  export { CreationSummaryDialogComponent };
85
85
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreationSummaryDialogComponent, decorators: [{
86
86
  type: Component,
87
- args: [{ selector: 'lib-creation-summary-dialog', template: "<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>", styles: [".creation-summary-dialog-container{background-color:var(--formBackground);min-width:475px;border-radius:var(--modalBorderRadius);padding:var(--paddingXXL)}.creation-summary-dialog-container .title-row{display:flex;align-items:center;flex-direction:column;margin-bottom:var(--marginLarge)}.creation-summary-dialog-container .subtitle{color:var(--text)}.creation-summary-dialog-container .close{font-size:25px;top:15px;right:15px;width:35px;font-weight:600}.resource-type-container{display:flex;flex-direction:column;padding-left:var(--paddingLarge);padding-right:var(--paddingLarge)}.resource-type-container.disabled{opacity:.5}.resource-type-container.disabled select{cursor:not-allowed}.resource-type-container .resource-type-content{margin-top:20px;flex-wrap:wrap}.entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-moz-fit-content;width:fit-content}.summary-group ul{padding-inline-start:0px;margin-block-start:var(--marginSmall);max-height:650px;overflow:auto;overflow-x:hidden}.summary-group .entity-item{display:flex;align-items:center;gap:5px;font-weight:600;font-size:16px;padding-top:3px;padding-bottom:3px;position:relative;cursor:pointer;border-left-width:5px;border-left-color:transparent;border-left-style:solid}.summary-group .entity-item:hover{background-color:#2196f31a;border-left-width:5px;border-left-color:var(--primaryColor)}.summary-group .entity-item[hidden]{display:none}.summary-group .entity-item.no-results{font-weight:400}.summary-group .entity-item.no-results:hover{background-color:transparent;border-left-color:transparent;cursor:default}.summary-groups-container{overflow:auto;height:100%;width:100%;max-width:300px;display:flex;position:relative;flex-direction:column}.summary-group-title{margin-left:0;color:var(--primaryColor);font-weight:700;font-size:15px;filter:brightness(65%);text-transform:uppercase}.exec-operations-group{padding:0}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%;padding-top:var(--paddingMedium)}.confirm-buttons-container .linkButton{position:absolute;left:25px;color:var(--subText);font-weight:600}.confirm-buttons-container .button{text-align:center;line-height:normal}button{width:100px;height:40px;color:var(--white);display:flex;align-items:center;justify-content:center}button.confirm{background-color:var(--secondary)}button.cancel{background-color:var(--primary)}.spinner{right:1em;top:1em;display:inline-block;width:16px;height:16px;border-radius:50%;background:transparent;border-top:2px solid var(--placeholder);border-right:2px solid var(--placeholder);border-bottom:2px solid transparent;border-left:2px solid transparent;animation:loading .5s infinite linear}.config-check,.success-check{width:17px;height:17px;cursor:pointer;background-color:var(--navigation);margin:4px 0 0}.config-check:checked,.success-check:checked{background-color:var(--green)!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAABdElEQVRIia3UPWsUURSH8f9GRRvtFKtIgoKggo2CYO0XsLKzsbARbNKJYGPndxEEO8VGRRvBF6xFBAkplPiyb/lZzAx7d9jE3ewcmOLOPTyc85x7bw/pKI4keZ7kUpIHQVffIwxU0e91VPHlJK+T9Or19y7Ah5N8TLJeg3eSXO9CwcNCwQCPkWWhFzE2iZ84viz4ED4X4DFuNPvLgO8XCoZ4Wu7vF3oeo0LBL5xcFnwA7wsFI9xs5+0HvFG33ih4NitvUejZAgp/sLoseAVvC7dD3NotfxHw3ZaCl+jtBT6qOn+n94CuoV8o+Fv/27WQ4E3dXh9XZyT18Kql4M7/OozJsdnBb1xoJd0uFIxqzyvzgJ+Y3KAxtrBeJ6yqJt/EEGfmmUlwDB9aVX3FCbwwPbCNeaANOKoX6UvL41axHuOd6tYtBA5OYdP0a9XECOfmhbbBUT0u26pBNjHAvUWgs8DBFdPD/ISDXYCDa/iBb3UXC0GRf9rA4qSLGyBIAAAAAElFTkSuQmCC);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}.config-check:checked:disabled,.success-check:checked:disabled{opacity:1!important}.success-check{border-radius:100%;top:13px;left:10px;transition:var(--transition);border:2px var(--offWhite) solid}.config-check{border-radius:0}.config-check:checked{background-size:10px}.icon-clear{color:var(--red);margin-top:4px}.retry{background-image:url(/assets/svgs/refresh.svg);background-size:18px;background-repeat:no-repeat;height:18px;width:18px;margin-left:5px}.copy-links-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gapMedium)}.copy-links-container .copy-links-title{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:375px}.copy-links-container .copy-links-title .title-container{display:flex}.copy-links-container .copy-links-title .title{font-size:20px;line-height:20px}.copy-links-container .copy-links-title .subtitle{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--red)}.copy-links-container .copy-links-title .copy-icon{background-image:url(/assets/svgs/copy.svg);background-size:18px;background-repeat:no-repeat;height:20px;width:20px;margin-left:7px}.copy-links-container .copy-links{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:var(--paddingMedium);width:100%}.copy-links-container .copy-links .link-button{color:var(--subText);font-size:16px;font-weight:600;cursor:pointer}.copy-links-container .copy-links .link-button:hover{text-decoration:underline}.visibility-config-container{display:flex;flex-direction:row;align-items:center;width:100%;justify-content:flex-start;gap:5px;margin-top:var(--marginMedium)}::ng-deep .creation-summary-dialog-container .form-field-content{gap:0!important}\n"] }]
87
+ args: [{ selector: 'lib-creation-summary-dialog', template: "<div class=\"creation-summary-dialog-container\">\n <div class=\"close icon-close\" (click)=\"close()\"></div>\n <div class=\"title-row\">\n <span class=\"title\">Execution Summary</span>\n <span class=\"subtitle\">The following entities were created for this service</span>\n </div>\n <lib-form-field-container [showHeader]=\"false\">\n <div class=\"copy-links-container\">\n <span class=\"copy-links-title\">\n <span class=\"title\">Entities</span>\n <span class=\"subtitle\" *ngIf=\"hasCreationError\">One or more of the following resources failed to create. See below for more details and/or retry.</span>\n </span>\n </div>\n <div class=\"form-group-row exec-operations-group\">\n <div class=\"summary-groups-container\">\n <div class=\"summary-group\" *ngFor=\"let group of summaryData\">\n <div class=\"summary-group-title\">{{group.title}}</div>\n <ul>\n <li\n *ngFor=\"let entity of group.entities\"\n (click)=\"selectZitiEntity(entity.name, 'all')\"\n [ngClass]=\"{selected: selectedEntityType === 'all'}\"\n class=\"entity-item drop-target-svc\"\n >\n <span class=\"spinner\" *ngIf=\"entity.status === 'loading'\"></span>\n <input type=\"checkbox\" [disabled]=\"true\" [checked]=\"true\" class=\"success-check\" *ngIf=\"entity.status === 'done'\">\n <div class=\"retry\" *ngIf=\"entity.status === 'error'\" (click)=\"doRetry(entity)\"></div>\n <div class=\"icon-clear\" *ngIf=\"entity.status === 'error'\"></div>\n <span class=\"entity-name\" matTooltipShowDelay=\"1000\">\n {{ entity.name.length > 0 ? entity.name : 'SimpleService' }}\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container [showHeader]=\"false\" style=\"margin-top: 10px;\">\n <div class=\"copy-links-container\">\n <div class=\"copy-links-title\">\n <div class=\"title-container\">\n <span class=\"title\">Copy Links</span>\n <div class=\"copy-icon\"></div>\n </div>\n </div>\n <div class=\"copy-links\">\n <div class=\"link-button\" (click)=\"copyCliCommands()\">CLI Commands</div>\n <div class=\"link-button\" (click)=\"copyAPIRequests()\">API Requests</div>\n </div>\n </div>\n </lib-form-field-container>\n\n <div class=\"confirm-buttons-container\">\n <button class=\"button save alert\" (click)=\"done()\">Done</button>\n <button class=\"button save cancel\" (click)=\"confirm()\">Create another</button>\n </div>\n</div>", styles: [".creation-summary-dialog-container{background-color:var(--formBackground);min-width:29.6875rem;border-radius:var(--modalBorderRadius);padding:var(--paddingXXL)}.creation-summary-dialog-container .title-row{display:flex;align-items:center;flex-direction:column;margin-bottom:var(--marginLarge)}.creation-summary-dialog-container .subtitle{color:var(--text)}.creation-summary-dialog-container .close{font-size:1.5625rem;top:.9375rem;right:.9375rem;width:2.1875rem;font-weight:600}.resource-type-container{display:flex;flex-direction:column;padding-left:var(--paddingLarge);padding-right:var(--paddingLarge)}.resource-type-container.disabled{opacity:.5}.resource-type-container.disabled select{cursor:not-allowed}.resource-type-container .resource-type-content{margin-top:1.25rem;flex-wrap:wrap}.entity-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:-moz-fit-content;width:fit-content}.summary-group ul{padding-inline-start:0rem;margin-block-start:var(--marginSmall);max-height:40.625rem;overflow:auto;overflow-x:hidden}.summary-group .entity-item{display:flex;align-items:center;gap:.3125rem;font-weight:600;font-size:1rem;padding-top:.1875rem;padding-bottom:.1875rem;position:relative;cursor:pointer;border-left-width:.3125rem;border-left-color:transparent;border-left-style:solid}.summary-group .entity-item:hover{background-color:#2196f31a;border-left-width:.3125rem;border-left-color:var(--primaryColor)}.summary-group .entity-item[hidden]{display:none}.summary-group .entity-item.no-results{font-weight:400}.summary-group .entity-item.no-results:hover{background-color:transparent;border-left-color:transparent;cursor:default}.summary-groups-container{overflow:auto;height:100%;width:100%;max-width:18.75rem;display:flex;position:relative;flex-direction:column}.summary-group-title{margin-left:0;color:var(--primaryColor);font-weight:700;font-size:.9375rem;filter:brightness(65%);text-transform:uppercase}.exec-operations-group{padding:0}.confirm-buttons-container{display:flex;justify-content:space-between;align-items:center;flex-direction:row;width:100%;padding-top:var(--paddingMedium)}.confirm-buttons-container .linkButton{position:absolute;left:1.5625rem;color:var(--subText);font-weight:600}.confirm-buttons-container .button{text-align:center;line-height:normal}button{width:6.25rem;height:2.5rem;color:var(--white);display:flex;align-items:center;justify-content:center}button.confirm{background-color:var(--secondary)}button.cancel{background-color:var(--primary)}.spinner{right:1em;top:1em;display:inline-block;width:1rem;height:1rem;border-radius:50%;background:transparent;border-top:.125rem solid var(--placeholder);border-right:.125rem solid var(--placeholder);border-bottom:.125rem solid transparent;border-left:.125rem solid transparent;animation:loading .5s infinite linear}.config-check,.success-check{width:1.0625rem;height:1.0625rem;cursor:pointer;background-color:var(--navigation);margin:0;margin-top:.25rem}.config-check:checked,.success-check:checked{background-color:var(--green)!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAYCAYAAAD+vg1LAAABdElEQVRIia3UPWsUURSH8f9GRRvtFKtIgoKggo2CYO0XsLKzsbARbNKJYGPndxEEO8VGRRvBF6xFBAkplPiyb/lZzAx7d9jE3ewcmOLOPTyc85x7bw/pKI4keZ7kUpIHQVffIwxU0e91VPHlJK+T9Or19y7Ah5N8TLJeg3eSXO9CwcNCwQCPkWWhFzE2iZ84viz4ED4X4DFuNPvLgO8XCoZ4Wu7vF3oeo0LBL5xcFnwA7wsFI9xs5+0HvFG33ih4NitvUejZAgp/sLoseAVvC7dD3NotfxHw3ZaCl+jtBT6qOn+n94CuoV8o+Fv/27WQ4E3dXh9XZyT18Kql4M7/OozJsdnBb1xoJd0uFIxqzyvzgJ+Y3KAxtrBeJ6yqJt/EEGfmmUlwDB9aVX3FCbwwPbCNeaANOKoX6UvL41axHuOd6tYtBA5OYdP0a9XECOfmhbbBUT0u26pBNjHAvUWgs8DBFdPD/ISDXYCDa/iBb3UXC0GRf9rA4qSLGyBIAAAAAElFTkSuQmCC);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}.config-check:checked:disabled,.success-check:checked:disabled{opacity:1!important}.success-check{border-radius:100%;top:.8125rem;left:.625rem;transition:var(--transition);border:.125rem var(--offWhite) solid}.config-check{border-radius:0}.config-check:checked{background-size:.625rem}.icon-clear{color:var(--red);margin-top:.25rem}.retry{background-image:url(/assets/svgs/refresh.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.125rem;width:1.125rem;margin-left:.3125rem}.copy-links-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--gapMedium)}.copy-links-container .copy-links-title{display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:23.4375rem}.copy-links-container .copy-links-title .title-container{display:flex}.copy-links-container .copy-links-title .title{font-size:1.25rem;line-height:1.25rem}.copy-links-container .copy-links-title .subtitle{display:flex;align-items:center;justify-content:center;text-align:center;color:var(--red)}.copy-links-container .copy-links-title .copy-icon{background-image:url(/assets/svgs/copy.svg);background-size:1.125rem;background-repeat:no-repeat;height:1.25rem;width:1.25rem;margin-left:.4375rem}.copy-links-container .copy-links{display:flex;flex-direction:row;justify-content:space-around;align-items:center;padding:var(--paddingMedium);width:100%}.copy-links-container .copy-links .link-button{color:var(--subText);font-size:1rem;font-weight:600;cursor:pointer}.copy-links-container .copy-links .link-button:hover{text-decoration:underline}.visibility-config-container{display:flex;flex-direction:row;align-items:center;width:100%;justify-content:flex-start;gap:.3125rem;margin-top:var(--marginMedium)}::ng-deep .creation-summary-dialog-container .form-field-content{gap:0!important}\n"] }]
88
88
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
89
89
  type: Inject,
90
90
  args: [MAT_DIALOG_DATA]
@@ -37,11 +37,11 @@ class TableCellMenuComponent {
37
37
  this.cellParams.closeMenu(event);
38
38
  }
39
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableCellMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableCellMenuComponent, selector: "app-table-cell-menu", ngImport: i0, template: "<div (clickOutside)=\"closeActionMenu($event)\" class=\"cell-menu-container\">\n <div\n (click)=\"toggleMenu($event)\"\n *ngIf=\"enableCellMenu\"\n attr.name=\"RowDots_{{ item.name }}\"\n class=\"dots\"\n id=\"RowDots_{{ item.id }}\"\n >\n ...\n </div>\n</div>\n", styles: [".cell-menu-container{width:100%;height:100%;position:absolute}.cell-menu-container .dots{width:30px;right:10px;height:30px;position:absolute;top:10px;font-size:24px;text-align:center;cursor:pointer;background-color:transparent;transition:var(--transition);line-height:13px;border-radius:var(--inputBorderRadius)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] }); }
40
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TableCellMenuComponent, selector: "app-table-cell-menu", ngImport: i0, template: "<div (clickOutside)=\"closeActionMenu($event)\" class=\"cell-menu-container\">\n <div\n (click)=\"toggleMenu($event)\"\n *ngIf=\"enableCellMenu\"\n attr.name=\"RowDots_{{ item.name }}\"\n class=\"dots\"\n id=\"RowDots_{{ item.id }}\"\n >\n ...\n </div>\n</div>\n", styles: [".cell-menu-container{width:100%;height:100%;position:absolute}.cell-menu-container .dots{width:1.875rem;right:.625rem;height:1.875rem;position:absolute;top:.625rem;font-size:1.5rem;text-align:center;cursor:pointer;background-color:transparent;transition:var(--transition);line-height:.8125rem;border-radius:var(--inputBorderRadius)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }] }); }
41
41
  }
42
42
  export { TableCellMenuComponent };
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TableCellMenuComponent, decorators: [{
44
44
  type: Component,
45
- args: [{ selector: 'app-table-cell-menu', template: "<div (clickOutside)=\"closeActionMenu($event)\" class=\"cell-menu-container\">\n <div\n (click)=\"toggleMenu($event)\"\n *ngIf=\"enableCellMenu\"\n attr.name=\"RowDots_{{ item.name }}\"\n class=\"dots\"\n id=\"RowDots_{{ item.id }}\"\n >\n ...\n </div>\n</div>\n", styles: [".cell-menu-container{width:100%;height:100%;position:absolute}.cell-menu-container .dots{width:30px;right:10px;height:30px;position:absolute;top:10px;font-size:24px;text-align:center;cursor:pointer;background-color:transparent;transition:var(--transition);line-height:13px;border-radius:var(--inputBorderRadius)}\n"] }]
45
+ args: [{ selector: 'app-table-cell-menu', template: "<div (clickOutside)=\"closeActionMenu($event)\" class=\"cell-menu-container\">\n <div\n (click)=\"toggleMenu($event)\"\n *ngIf=\"enableCellMenu\"\n attr.name=\"RowDots_{{ item.name }}\"\n class=\"dots\"\n id=\"RowDots_{{ item.id }}\"\n >\n ...\n </div>\n</div>\n", styles: [".cell-menu-container{width:100%;height:100%;position:absolute}.cell-menu-container .dots{width:1.875rem;right:.625rem;height:1.875rem;position:absolute;top:.625rem;font-size:1.5rem;text-align:center;cursor:pointer;background-color:transparent;transition:var(--transition);line-height:.8125rem;border-radius:var(--inputBorderRadius)}\n"] }]
46
46
  }] });
47
47
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbWVudS90YWJsZS1jZWxsLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1tZW51L3RhYmxlLWNlbGwtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3hDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7OztBQUV2QixNQUthLHNCQUFzQjtJQUxuQztRQU1FLFNBQUksR0FBUTtZQUNWLFFBQVEsRUFBRSxLQUFLO1lBQ2YsRUFBRSxFQUFFLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRTtZQUNSLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUVGLFNBQUksR0FBRyxLQUFLLENBQUM7S0E4QmQ7SUE1QkMsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVyRixDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQStCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELE9BQU8sQ0FBQyxVQUErQjtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFLO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzdCLE9BQU87U0FDUjtRQUNELENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQXJDVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyRENWbkMsNlJBV0E7O1NERGEsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XG5pbXBvcnQge0lDZWxsUmVuZGVyZXJQYXJhbXN9IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10YWJsZS1jZWxsLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtY2VsbC1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY2VsbC1tZW51LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ2VsbE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAge1xuICBpdGVtOiBhbnkgPSB7XG4gICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgIGlkOiAnJyxcbiAgICBuYW1lOiAnJyxcbiAgICBhY3Rpb25MaXN0OiBbXSxcbiAgfTtcbiAgY2VsbFBhcmFtcztcbiAgb3BlbiA9IGZhbHNlO1xuXG4gIGdldCBlbmFibGVDZWxsTWVudSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISghdGhpcy5pdGVtIHx8ICF0aGlzLml0ZW0uYWN0aW9uTGlzdCB8fCB0aGlzLml0ZW0uYWN0aW9uTGlzdC5sZW5ndGggPT09IDApO1xuXG4gIH1cblxuICBhZ0luaXQoY2VsbFBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IHZvaWQge1xuICAgIHRoaXMuY2VsbFBhcmFtcyA9IGNlbGxQYXJhbXM7XG4gICAgdGhpcy5pdGVtID0gXy5nZXQoY2VsbFBhcmFtcywgJ2RhdGEnKTtcbiAgfVxuXG4gIHJlZnJlc2goY2VsbFBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtcyk6IGJvb2xlYW4ge1xuICAgIHRoaXMuY2VsbFBhcmFtcyA9IGNlbGxQYXJhbXM7XG4gICAgdGhpcy5pdGVtID0gXy5nZXQoY2VsbFBhcmFtcywgJ2RhdGEnKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2VsbFBhcmFtcy5vcGVuTWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBfLmRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuY2VsbFBhcmFtcy5vcGVuTWVudShldmVudCwgdGhpcy5pdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlQWN0aW9uTWVudShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuY2VsbFBhcmFtcy5jbG9zZU1lbnUoZXZlbnQpO1xuICB9XG59XG4iLCI8ZGl2IChjbGlja091dHNpZGUpPVwiY2xvc2VBY3Rpb25NZW51KCRldmVudClcIiBjbGFzcz1cImNlbGwtbWVudS1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgIChjbGljayk9XCJ0b2dnbGVNZW51KCRldmVudClcIlxuICAgICpuZ0lmPVwiZW5hYmxlQ2VsbE1lbnVcIlxuICAgIGF0dHIubmFtZT1cIlJvd0RvdHNfe3sgaXRlbS5uYW1lIH19XCJcbiAgICBjbGFzcz1cImRvdHNcIlxuICAgIGlkPVwiUm93RG90c197eyBpdGVtLmlkIH19XCJcbiAgPlxuICAgIC4uLlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19