@kirbydesign/designsystem 9.6.0 → 9.7.1

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 (88) hide show
  1. package/accordion/accordion-item.component.d.ts +2 -1
  2. package/button/button.component.d.ts +1 -1
  3. package/checkbox/checkbox.component.d.ts +11 -4
  4. package/esm2022/accordion/accordion-item.component.mjs +6 -3
  5. package/esm2022/button/button.component.mjs +3 -3
  6. package/esm2022/calendar/calendar.component.mjs +2 -2
  7. package/esm2022/card/card-as-button/card-as-button.directive.mjs +3 -1
  8. package/esm2022/card/card.component.mjs +2 -2
  9. package/esm2022/checkbox/checkbox.component.mjs +36 -10
  10. package/esm2022/dropdown/dropdown.component.mjs +1 -1
  11. package/esm2022/icon/kirby-icon-settings.mjs +120 -113
  12. package/esm2022/item/item.component.mjs +17 -4
  13. package/esm2022/list/list-item/list-item.component.mjs +2 -2
  14. package/esm2022/list/list.component.mjs +2 -2
  15. package/esm2022/menu/menu.component.mjs +2 -2
  16. package/esm2022/modal/modal/action-sheet/action-sheet.component.mjs +2 -2
  17. package/esm2022/modal/modal/alert/alert.component.mjs +2 -2
  18. package/esm2022/modal/modal/footer/modal-footer.component.mjs +3 -3
  19. package/esm2022/modal/modal-wrapper/modal-wrapper.component.mjs +2 -2
  20. package/esm2022/modal/v2/footer/footer.component.mjs +2 -2
  21. package/esm2022/modal/v2/modal/modal.component.mjs +2 -2
  22. package/esm2022/modal/v2/wrapper/wrapper.component.mjs +2 -2
  23. package/esm2022/page/page-footer/page-footer.component.mjs +2 -2
  24. package/esm2022/page/page.component.mjs +2 -2
  25. package/esm2022/radio/radio.component.mjs +35 -9
  26. package/esm2022/range/range.component.mjs +3 -3
  27. package/esm2022/router-outlet/router-outlet.component.mjs +1 -1
  28. package/esm2022/router-outlet/router-outlet.module.mjs +2 -2
  29. package/esm2022/shared/controls/label-helpers.mjs +23 -0
  30. package/esm2022/shared/public_api.mjs +2 -1
  31. package/esm2022/slide/slides.component.mjs +1 -1
  32. package/esm2022/tabs/tab-button/tab-button.component.mjs +2 -2
  33. package/esm2022/toggle/toggle.component.mjs +20 -7
  34. package/fesm2022/kirbydesign-designsystem-accordion.mjs +5 -2
  35. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  36. package/fesm2022/kirbydesign-designsystem-button.mjs +2 -2
  37. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  38. package/fesm2022/kirbydesign-designsystem-calendar.mjs +1 -1
  39. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  40. package/fesm2022/kirbydesign-designsystem-card.mjs +4 -2
  41. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  42. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +35 -9
  43. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  44. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +1 -1
  45. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  46. package/fesm2022/kirbydesign-designsystem-icon.mjs +119 -112
  47. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  48. package/fesm2022/kirbydesign-designsystem-item.mjs +16 -3
  49. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  50. package/fesm2022/kirbydesign-designsystem-list.mjs +4 -4
  51. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  52. package/fesm2022/kirbydesign-designsystem-menu.mjs +1 -1
  53. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  54. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs +6 -6
  55. package/fesm2022/kirbydesign-designsystem-modal-v2.mjs.map +1 -1
  56. package/fesm2022/kirbydesign-designsystem-modal.mjs +5 -5
  57. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  58. package/fesm2022/kirbydesign-designsystem-page.mjs +4 -4
  59. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  60. package/fesm2022/kirbydesign-designsystem-radio.mjs +34 -8
  61. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  62. package/fesm2022/kirbydesign-designsystem-range.mjs +2 -2
  63. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  64. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +2 -2
  65. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  66. package/fesm2022/kirbydesign-designsystem-shared.mjs +24 -1
  67. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  68. package/fesm2022/kirbydesign-designsystem-slide.mjs +1 -1
  69. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  70. package/fesm2022/kirbydesign-designsystem-tabs.mjs +2 -2
  71. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  72. package/fesm2022/kirbydesign-designsystem-toggle.mjs +18 -5
  73. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  74. package/icons/svg/basket.svg +1 -0
  75. package/icons/svg/contract.svg +1 -0
  76. package/icons/svg/drag-drop.svg +1 -0
  77. package/icons/svg/expand.svg +1 -0
  78. package/icons/svg/flower.svg +1 -0
  79. package/icons/svg/house.svg +1 -0
  80. package/icons/svg/tractor.svg +1 -0
  81. package/item/item.component.d.ts +4 -1
  82. package/package.json +2 -2
  83. package/radio/radio.component.d.ts +11 -4
  84. package/scss/base/_design-tokens.scss +1 -0
  85. package/scss/themes/design-tokens.scss +1 -0
  86. package/shared/controls/label-helpers.d.ts +3 -0
  87. package/shared/public_api.d.ts +1 -0
  88. package/toggle/toggle.component.d.ts +8 -4
@@ -437,7 +437,7 @@ export class ModalWrapperComponent {
437
437
  /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalWrapperComponent, isStandalone: true, selector: "kirby-modal-wrapper", inputs: { scrollDisabled: "scrollDisabled", config: "config", content: "content" }, host: { listeners: { "window:focus": "onFocusChange()", "window:focusout": "onFocusChange()", "window:ionKeyboardDidShow": "_onKeyboardShow($event.detail.keyboardHeight)", "window:keyboardWillShow": "_onKeyboardShow($event.keyboardHeight)", "window:ionKeyboardDidHide": "_onKeyboardHide()", "window:keyboardWillHide": "_onKeyboardHide()", "window:resize": "_onWindowResize()" }, properties: { "class.collapsible-title": "this._hasCollapsibleTitle", "class.drawer": "this._isDrawer" } }, providers: [
438
438
  { provide: Modal, useExisting: ModalWrapperComponent },
439
439
  { provide: ModalElementsAdvertiser, useExisting: ModalWrapperComponent },
440
- ], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i6.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
440
+ ], queries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "ionContent", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionToolbarElement", first: true, predicate: IonToolbar, descendants: true, read: ElementRef, static: true }, { propertyName: "ionTitleElement", first: true, predicate: IonTitle, descendants: true, read: ElementRef, static: true }, { propertyName: "routerOutlet", first: true, predicate: RouterOutlet, descendants: true, static: true }, { propertyName: "_contentTitleElement", first: true, predicate: ["contentTitle"], descendants: true, read: ElementRef }, { propertyName: "toolbarButtonsQuery", predicate: ButtonComponent, descendants: true, read: ElementRef }], ngImport: i0, template: "<ion-header [class.content-scrolled]=\"isContentScrolled\" (touchstart)=\"onHeaderTouchStart($event)\">\n <ion-toolbar>\n <ion-title></ion-title>\n <ion-buttons\n slot=\"secondary\"\n *ngIf=\"config.flavor === 'drawer' && config.drawerSupplementaryAction\"\n >\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n (click)=\"config.drawerSupplementaryAction.action($event)\"\n >\n <kirby-icon [name]=\"config.drawerSupplementaryAction.iconName\"></kirby-icon>\n </button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <button\n kirby-button\n attentionLevel=\"3\"\n size=\"md\"\n [noDecoration]=\"config.interactWithBackground\"\n (click)=\"close()\"\n >\n <kirby-icon name=\"close\"></kirby-icon>\n </button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"scrollEventsEnabled\">\n <ion-header *ngIf=\"_hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-xlarge\" #contentTitle></span>\n </ion-toolbar>\n </ion-header>\n\n <!-- Outlet for ModalController -->\n <ng-container\n *ngComponentOutlet=\"config.component; injector: componentPropsInjector\"\n ></ng-container>\n\n <!-- Outlet for projected content -->\n <ng-container *ngTemplateOutlet=\"content; injector: modalWrapperInjector\"></ng-container>\n\n <!-- Outlet for route-based modal -->\n <router-outlet\n name=\"kirbyModalWrapperOutlet\"\n [style.visibility]=\"config.modalRoute ? 'visible' : 'hidden'\"\n ></router-outlet>\n</ion-content>\n", styles: ["ion-header{box-sizing:border-box}ion-header ion-toolbar{--padding-start: 8px;--padding-end: 8px;--padding-bottom: 7px;--padding-top: 8px;--border-width: 0;--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));border-bottom:1px solid transparent;transition:border-color .2s linear}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-header ion-toolbar button{color:var(--color)}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}@media (max-width: 767px){:host.drawer ion-header ion-toolbar{--padding-top: 16px}:host.drawer ion-header ion-toolbar:first-of-type{padding-top:0}}@media (min-width: 768px){ion-header ion-toolbar{border-bottom-color:var(--kirby-medium)}}ion-header.content-scrolled ion-toolbar{border-bottom-color:var(--kirby-medium)}:host-context(ion-modal.no-header-area-border) ion-header ion-toolbar{border-bottom-color:transparent}@media (max-width: 767px){:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer:not(.kirby-modal-full-height)).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}}:host-context(ion-modal.kirby-drawer.interact-with-background){padding-top:0;position:relative;contain:inherit;min-height:min(var(--min-height),var(--vh100) - var(--kirby-modal-padding-top, 0px))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content{contain:content;max-height:calc(var(--vh100) - var(--kirby-modal-padding-top, 0px) - var(--header-height) - var(--footer-height))}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-content::part(scroll){height:\"100%\";position:relative}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer ion-content::part(scroll){transition:padding-bottom .15s ease-out}:host-context(ion-modal.kirby-drawer.interact-with-background).drawer.keyboard-visible ion-content::part(scroll){transition:padding-bottom .25s ease-out 1ms}:host-context(ion-modal.kirby-drawer.interact-with-background) ion-header ion-toolbar{border-bottom-color:transparent}:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{padding-top:var(--kirby-safe-area-top, 0)}@media (min-width: 768px){:host-context(ion-modal.modal-card:not(.kirby-drawer)) ion-header ion-toolbar:first-of-type{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 23px;--padding-top: 24px;padding-inline:0}}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end));font-size:16px;font-weight:700}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column;height:calc(var(--height) - var(--header-height) - var(--footer-height));max-height:calc(var(--max-height) - var(--header-height) - var(--footer-height))}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-top: 0px;--padding-bottom: 32px;--padding-start: 8px;--padding-end: 8px;border:none}@media (min-width: 768px){:host(.collapsible-title) ion-content ion-toolbar:first-of-type{--padding-start: 16px;--padding-end: 16px}}\n"], dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i5.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "ngmodule", type: IconModule }, { kind: "component", type: i6.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
441
441
  }
442
442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalWrapperComponent, decorators: [{
443
443
  type: Component,
@@ -516,4 +516,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
516
516
  type: HostListener,
517
517
  args: ['window:resize']
518
518
  }] } });
519
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxr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QVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFSixZQUFZO3NCQUE5RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2pDLG9CQUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQTBDM0MsU0FBUztzQkFEWixXQUFXO3VCQUFDLGNBQWM7Z0JBc1IzQixhQUFhO3NCQUZaLFlBQVk7dUJBQUMsY0FBYzs7c0JBQzNCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQVEvQixlQUFlO3NCQUZkLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQzs7c0JBQzFFLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFPbEUsZUFBZTtzQkFGZCxZQUFZO3VCQUFDLDJCQUEyQjs7c0JBQ3hDLFlBQVk7dUJBQUMseUJBQXlCO2dCQW9GdkMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpcnN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG4gIFNjcm9sbERldGFpbCxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBNb2RhbCwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIE1vZGFsRWxlbWVudFR5cGUgfSBmcm9tICcuLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxDb25maWcsIFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnJztcbmltcG9ydCB7IENPTVBPTkVOVF9QUk9QUyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUgfSBmcm9tICcuL21vZGFsLWVsZW1lbnRzLW1vdmVyLmRlbGVnYXRlJztcblxuY29uc3QgY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMgPSAxMDtcbmNvbnN0IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzID0gNDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQ29udGVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE1vZGFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzaWJsZS10aXRsZScpXG4gIGdldCBfaGFzQ29sbGFwc2libGVUaXRsZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZz8uY29sbGFwc2VUaXRsZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBLRVlCT0FSRF9ISURFX0RFTEFZX0lOX01TID0gMTAwO1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBWSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRSA9IDEwMDtcblxuICBASW5wdXQoKSBzZXQgc2Nyb2xsRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsWSA9ICFkaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBjYW5EaXNtaXNzKGNhbGxiYWNrOiBTaG93QWxlcnRDYWxsYmFjaykge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNhbkRpc21pc3MgPSB0aGlzLmNhbkRpc21pc3NIZWxwZXIuZ2V0Q2FuRGlzbWlzc0NhbGxiYWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogTW9kYWxDb25maWc7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG4gIG1vZGFsV3JhcHBlckluamVjdG9yOiBJbmplY3RvcjtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgdG9vbGJhckJ1dHRvbnNRdWVyeTogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpb25Db250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVG9vbGJhciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Ub29sYmFyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVG9vbGJhckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvblRpdGxlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFRpdGxlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgX2NvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGdldCBjb250ZW50VGl0bGVFbGVtZW50KCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAvKiBcbiAgICAgICAgY29udGVudFRpdGxlRWxlbWVudCBoYXMgbmdJZiBkaXJlY3RpdmUgZGVwZW5kZW50IG9uIF9oYXNDb2xsYXBzaWJsZVRpdGxlOyB0cmlnZ2VyIENEIHRvIG1ha2Ugc3VyZSBlbGVtZW50IGhhcyBiZWVuIHF1ZXJpZWQuIFxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9uTW9kYWxEaWRQcmVzZW50ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgZGlkUHJlc2VudCA9IGZpcnN0VmFsdWVGcm9tKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbFdpbGxEaXNtaXNzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgd2lsbENsb3NlID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdmlld3BvcnRSZXNpemUkID0gdGhpcy52aWV3cG9ydFJlc2l6ZVxuICAgIC5hc09ic2VydmFibGUoKVxuICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLlZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FKSk7XG4gIHByaXZhdGUgX211dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgX2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBnZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIge1xuICAgIGlmICghdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyID0gdGhpcy5jcmVhdGVNb2RhbFdyYXBwZXJJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIH1cbiAgc2Nyb2xsRXZlbnRzRW5hYmxlZDogYm9vbGVhbjtcbiAgaXNDb250ZW50U2Nyb2xsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhd2VyJylcbiAgZ2V0IF9pc0RyYXdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJztcbiAgfVxuXG4gIHdpbGxDbG9zZSQgPSB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MucGlwZShmaXJzdCgpKTtcblxuICBwcml2YXRlIG1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlOiBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FuRGlzbWlzc0hlbHBlcjogQ2FuRGlzbWlzc0hlbHBlclxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlID0gbmV3IE1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pbml0aWFsaXplU2l6aW5nKCk7XG4gICAgdGhpcy5pbml0aWFsaXplTW9kYWxSb3V0ZSgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JJb25Nb2RhbFdpbGxEaXNtaXNzKCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JTY3JvbGwoKTtcbiAgICB0aGlzLmluaXRpYWxpemVSZXNpemVNb2RhbFRvTW9kYWxXcmFwcGVyKCk7XG4gICAgdGhpcy5jb21wb25lbnRQcm9wc0luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NUE9ORU5UX1BST1BTLCB1c2VWYWx1ZTogdGhpcy5jb25maWcuY29tcG9uZW50UHJvcHMgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vZGFsV3JhcHBlckluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeS5tYXAoKGJ1dHRvblJlZikgPT4gYnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRGb290ZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzZXQgY3VycmVudEZvb3Rlcihmb290ZXI6IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIGlmIChmb290ZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUoZm9vdGVyLCAoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFtcbiAgICAgICAgICAnLS1mb290ZXItaGVpZ2h0JyxcbiAgICAgICAgICBgJHtNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCl9cHhgLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudEZvb3RlciA9IGZvb3RlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRGb290ZXIoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IGFkZE1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZEZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBtb2RhbEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5USVRMRV06ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkVGl0bGUoXG4gICAgICAgICAgbW9kYWxFbGVtZW50LFxuICAgICAgICAgIHRoaXMuY29udGVudFRpdGxlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlLFxuICAgICAgICAgIHRoaXMuaW9uVGl0bGVFbGVtZW50XG4gICAgICAgICksXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRQYWdlUHJvZ3Jlc3MobW9kYWxFbGVtZW50LCB0aGlzLmlvblRvb2xiYXJFbGVtZW50KSxcbiAgICB9W3R5cGVdO1xuXG4gICAgYWRkTW9kYWxFbGVtZW50Rm4oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHJlbW92ZU1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZUZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlRJVExFXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5yZW1vdmVUaXRsZShcbiAgICAgICAgICBtb2RhbEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5faGFzQ29sbGFwc2libGVUaXRsZSxcbiAgICAgICAgICB0aGlzLmNvbnRlbnRUaXRsZUVsZW1lbnRcbiAgICAgICAgKSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1NdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZVBhZ2VQcm9ncmVzcyhtb2RhbEVsZW1lbnQpLFxuICAgIH1bdHlwZV07XG5cbiAgICByZW1vdmVNb2RhbEVsZW1lbnRGbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiB0aGlzLmNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBtZXJnZSh0aGlzLmlvbk1vZGFsRGlkUHJlc2VudCwgdGhpcy52aWV3cG9ydFJlc2l6ZSQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gd2FpdCBmb3IgdGVtcGxhdGUgdG8gcmVuZGVyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNsaWVudFdpZHRoIC0gZG9tUmVjdC5yaWdodDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICd0b3AnLCBgJHtkb21SZWN0LnRvcH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ2xlZnQnLCBgJHtkb21SZWN0LmxlZnR9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNpemluZygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2l6ZSA9PT0gJ2Z1bGwtaGVpZ2h0JykgcmV0dXJuO1xuICAgIHRoaXMucGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZUhlYWRlclJlc2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTW9kYWxSb3V0ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5vblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHRoaXMuY29uZmlnLnNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCk7XG4gICAgICAvLyBMb2FkIGNvbXBvbmVudCBmcm9tIG1vZGFsLXJvdXRlIGluc2lkZSByb3V0ZXItb3V0bGV0OlxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHRoaXMuY29uZmlnLm1vZGFsUm91dGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25TaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZChzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQ/OiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlPikge1xuICAgIGlmICghc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkKSByZXR1cm47XG4gICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkLnBpcGUodGFrZVVudGlsKHRoaXMud2lsbENsb3NlJCkpLnN1YnNjcmliZSgocm91dGUpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlck91dGxldC5pc0FjdGl2YXRlZCkge1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5kZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlck91dGxldC5hY3RpdmF0ZVdpdGgocm91dGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHN1cHBvcnRzQ3NzU2hhZG93UGFydHMgPSAncGFydCcgaW4gSFRNTEVsZW1lbnQucHJvdG90eXBlO1xuICAgIGlmIChzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzKSByZXR1cm47XG4gICAgdGhpcy5pb25Db250ZW50LmdldFNjcm9sbEVsZW1lbnQoKS50aGVuKChzY3JvbGxFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNjcm9sbEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgc2Nyb2xsRWxlbWVudCxcbiAgICAgICAgICAndHJhbnNpdGlvbicsXG4gICAgICAgICAgJ3BhZGRpbmctYm90dG9tICcgKyBEZXNpZ25Ub2tlbkhlbHBlci5zb2Z0S2V5Ym9hcmRUcmFuc2l0aW9uTGVhdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpIHtcbiAgICBjb25zdCBpb25Nb2RhbFdyYXBwZXIgPSB0aGlzLmdldElvbk1vZGFsV3JhcHBlckVsZW1lbnQoKTtcblxuICAgIGlmICghaW9uTW9kYWxXcmFwcGVyKSByZXR1cm47XG4gICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHdoZW4gbW9kYWwgaGFzIGZpbmlzaGVkIGFuaW1hdGluZzpcbiAgICB0aGlzLmRpZFByZXNlbnQudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUoaW9uTW9kYWxXcmFwcGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4dHJhY3RlZCBpbnRvIGZ1bmN0aW9uIGZvciBlYXNlIG9mIHRlc3RpbmdcbiAgcHJpdmF0ZSBnZXRJb25Nb2RhbFdyYXBwZXJFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5pb25Nb2RhbEVsZW1lbnQuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtd3JhcHBlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlSGVhZGVyUmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFsnLS1oZWFkZXItaGVpZ2h0JywgYCR7ZW50cnkuY29udGVudFJlY3QuaGVpZ2h0fXB4YF07XG4gICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JJb25Nb2RhbERpZFByZXNlbnQoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbERpZFByZXNlbnQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50Lm5leHQoKTtcbiAgICAgICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpIHtcbiAgICBpZiAodGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vZGFsV2lsbERpc21pc3MnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JTY3JvbGwoKSB7XG4gICAgY29uc3QgcXVlcnkgPSBgKG1pbi13aWR0aDogJHtEZXNpZ25Ub2tlbkhlbHBlci5icmVha3BvaW50cy5tZWRpdW19KWA7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBjb25zdCBlbmFibGVTY3JvbGxFdmVudHMgPSAobGlzdE9yRXZlbnQ6IE1lZGlhUXVlcnlMaXN0IHwgTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4ge1xuICAgICAgY29uc3QgaXNEZXNrdG9wID0gbGlzdE9yRXZlbnQubWF0Y2hlcztcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRzRW5hYmxlZCA9ICFpc0Rlc2t0b3A7XG4gICAgfTtcblxuICAgIGVuYWJsZVNjcm9sbEV2ZW50cyhtZWRpYVF1ZXJ5KTtcbiAgICBtZWRpYVF1ZXJ5Lm9uY2hhbmdlID0gZW5hYmxlU2Nyb2xsRXZlbnRzO1xuXG4gICAgLy8gUnVucyBzY3JvbGwgc3Vic2NyaXB0aW9uIG91dHNpZGUgem9uZSB0byBhdm9pZCBleGNlc3NpdmUgYW1vdW50IG9mIENEIGN5Y2xlc1xuICAgIC8vIHdoZW4gaW9uU2Nyb2xsIGVtaXRzLlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgc3Vic2NyaWJlIGFzIGlvblNjcm9sbCBvbmx5IGVtaXRzIHdoZW4gc2Nyb2xsRXZlbnRzRW5hYmxlZCBpcyB0cnVlXG4gICAgICB0aGlzLmlvbkNvbnRlbnQuaW9uU2Nyb2xsXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZShjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyksXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxJbmZvOiBTY3JvbGxEZXRhaWwpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ID0gc2Nyb2xsSW5mby5zY3JvbGxUb3AgPiBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscztcblxuICAgICAgICAgIGlmIChjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ICE9PSB0aGlzLmlzQ29udGVudFNjcm9sbGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gY29udGVudFNjcm9sbGVkUGFzdE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmN1cnJlbnRGb290ZXI7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsLWhlaWdodCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgZXhwbGljaXQgdmlld3BvcnQgcm9vdCBpZiB3aXRoaW4gaWZyYW1lOlxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZnJhbWVFbGVtZW50XG4gICAgICA/ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQgYXMgYW55KSAvLyBDYXN0IHRvIGBhbnlgIGFzIFR5cGVzY3JpcHQgbGliLmQudHMgZG9lc250IHN1cHBvcnQgRG9jdW1lbnQgdHlwZSB5ZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xcHggMHB4JywgLy8gYGJvdHRvbTogLTFweGAgYWxsb3dzIGNoZWNraW5nIHdoZW4gdGhlIG1vZGFsIGJvdHRvbSBpcyB0b3VjaGluZyB0aGUgdmlld3BvcnRcbiAgICAgIHJvb3QsXG4gICAgICB0aHJlc2hvbGQ6IFswLjk5LCAxXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgLy9jbGVhbiB1cCB0aGUgb2JzZXJ2ZXJcbiAgICBkZWxldGUgdGhpcy5fbXV0YXRpb25PYnNlcnZlcjtcbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBkZWxldGUgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmN1cnJlbnRGb290ZXIpO1xuICAgIH1cbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyIFtjbGFzcy5jb250ZW50LXNjcm9sbGVkXT1cImlzQ29udGVudFNjcm9sbGVkXCIgKHRvdWNoc3RhcnQpPVwib25IZWFkZXJUb3VjaFN0YXJ0KCRldmVudClcIj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tdGl0bGU+PC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zXG4gICAgICBzbG90PVwic2Vjb25kYXJ5XCJcbiAgICAgICpuZ0lmPVwiY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicgJiYgY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb25cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAga2lyYnktYnV0dG9uXG4gICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgIChjbGljayk9XCJjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbi5hY3Rpb24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxraXJieS1pY29uIFtuYW1lXT1cImNvbmZpZy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uLmljb25OYW1lXCI+PC9raXJieS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInByaW1hcnlcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAga2lyYnktYnV0dG9uXG4gICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgIFtub0RlY29yYXRpb25dPVwiY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmRcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxraXJieS1pY29uIG5hbWU9XCJjbG9zZVwiPjwva2lyYnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBbc2Nyb2xsRXZlbnRzXT1cInNjcm9sbEV2ZW50c0VuYWJsZWRcIj5cbiAgPGlvbi1oZWFkZXIgKm5nSWY9XCJfaGFzQ29sbGFwc2libGVUaXRsZVwiIGNvbGxhcHNlPVwiY29uZGVuc2VcIj5cbiAgICA8aW9uLXRvb2xiYXI+XG4gICAgICA8c3BhbiBjbGFzcz1cImtpcmJ5LXRleHQteGxhcmdlXCIgI2NvbnRlbnRUaXRsZT48L3NwYW4+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgPC9pb24taGVhZGVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciBNb2RhbENvbnRyb2xsZXIgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb25maWcuY29tcG9uZW50OyBpbmplY3RvcjogY29tcG9uZW50UHJvcHNJbmplY3RvclwiXG4gID48L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIE91dGxldCBmb3IgcHJvamVjdGVkIGNvbnRlbnQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50OyBpbmplY3RvcjogbW9kYWxXcmFwcGVySW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIE91dGxldCBmb3Igcm91dGUtYmFzZWQgbW9kYWwgLS0+XG4gIDxyb3V0ZXItb3V0bGV0XG4gICAgbmFtZT1cImtpcmJ5TW9kYWxXcmFwcGVyT3V0bGV0XCJcbiAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJjb25maWcubW9kYWxSb3V0ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgPjwvcm91dGVyLW91dGxldD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtd3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2RhbC9zcmMvbW9kYWwtd3JhcHBlci9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL21vZGFsL3NyYy9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUdOLFNBQVMsRUFDVCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxr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QVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFFSixZQUFZO3NCQUE5RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR2pDLG9CQUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQTBDM0MsU0FBUztzQkFEWixXQUFXO3VCQUFDLGNBQWM7Z0JBc1IzQixhQUFhO3NCQUZaLFlBQVk7dUJBQUMsY0FBYzs7c0JBQzNCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQVEvQixlQUFlO3NCQUZkLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQzs7c0JBQzFFLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFPbEUsZUFBZTtzQkFGZCxZQUFZO3VCQUFDLDJCQUEyQjs7c0JBQ3hDLFlBQVk7dUJBQUMseUJBQXlCO2dCQW9GdkMsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyU3R5bGVGbGFnczIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpcnN0LCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgRGVzaWduVG9rZW5IZWxwZXIgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3R5cGVzJztcbmltcG9ydCB7IFBsYXRmb3JtU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaWNvbic7XG5pbXBvcnQgeyBLaXJieUFuaW1hdGlvbiB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVscGVycyc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uVGl0bGUsXG4gIElvblRvb2xiYXIsXG4gIFNjcm9sbERldGFpbCxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBNb2RhbCwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIE1vZGFsRWxlbWVudFR5cGUgfSBmcm9tICcuLi9tb2RhbC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhbkRpc21pc3NIZWxwZXIgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9jYW4tZGlzbWlzcy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxDb25maWcsIFNob3dBbGVydENhbGxiYWNrIH0gZnJvbSAnLi9jb25maWcvbW9kYWwtY29uZmlnJztcbmltcG9ydCB7IENPTVBPTkVOVF9QUk9QUyB9IGZyb20gJy4vY29uZmlnL21vZGFsLWNvbmZpZy5oZWxwZXInO1xuaW1wb3J0IHsgTW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUgfSBmcm9tICcuL21vZGFsLWVsZW1lbnRzLW1vdmVyLmRlbGVnYXRlJztcblxuY29uc3QgY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMgPSAxMDtcbmNvbnN0IGNvbnRlbnRTY3JvbGxlZE9mZnNldEluUGl4ZWxzID0gNDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEljb25Nb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvblRpdGxlLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQ29udGVudCxcbiAgXSxcbiAgc2VsZWN0b3I6ICdraXJieS1tb2RhbC13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2RhbC13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTW9kYWwsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IE1vZGFsRWxlbWVudHNBZHZlcnRpc2VyLCB1c2VFeGlzdGluZzogTW9kYWxXcmFwcGVyQ29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsV3JhcHBlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE1vZGFsLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSwgTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbntcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jb2xsYXBzaWJsZS10aXRsZScpXG4gIGdldCBfaGFzQ29sbGFwc2libGVUaXRsZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbmZpZz8uY29sbGFwc2VUaXRsZTtcbiAgfVxuXG4gIHN0YXRpYyByZWFkb25seSBLRVlCT0FSRF9ISURFX0RFTEFZX0lOX01TID0gMTAwO1xuXG4gIHNjcm9sbFk6IG51bWJlciA9IE1hdGguYWJzKHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zY3JvbGxZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBWSUVXUE9SVF9SRVNJWkVfREVCT1VOQ0VfVElNRSA9IDEwMDtcblxuICBASW5wdXQoKSBzZXQgc2Nyb2xsRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlvbkNvbnRlbnQuc2Nyb2xsWSA9ICFkaXNhYmxlZDtcbiAgfVxuXG4gIHNldCBjYW5EaXNtaXNzKGNhbGxiYWNrOiBTaG93QWxlcnRDYWxsYmFjaykge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNhbkRpc21pc3MgPSB0aGlzLmNhbkRpc21pc3NIZWxwZXIuZ2V0Q2FuRGlzbWlzc0NhbGxiYWNrKGNhbGxiYWNrKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGNvbmZpZzogTW9kYWxDb25maWc7XG4gIEBJbnB1dCgpIGNvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgY29tcG9uZW50UHJvcHNJbmplY3RvcjogSW5qZWN0b3I7XG4gIG1vZGFsV3JhcHBlckluamVjdG9yOiBJbmplY3RvcjtcblxuICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkcmVuKEJ1dHRvbkNvbXBvbmVudCwgeyByZWFkOiBFbGVtZW50UmVmIH0pIHByaXZhdGUgdG9vbGJhckJ1dHRvbnNRdWVyeTogUXVlcnlMaXN0PFxuICAgIEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+XG4gID47XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBpb25Db250ZW50OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uVG9vbGJhciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Ub29sYmFyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVG9vbGJhckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvblRpdGxlLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvblRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uVGl0bGVFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgcm91dGVyT3V0bGV0OiBSb3V0ZXJPdXRsZXQ7XG5cbiAgQFZpZXdDaGlsZCgnY29udGVudFRpdGxlJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgX2NvbnRlbnRUaXRsZUVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGdldCBjb250ZW50VGl0bGVFbGVtZW50KCk6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+IHtcbiAgICAvKiBcbiAgICAgICAgY29udGVudFRpdGxlRWxlbWVudCBoYXMgbmdJZiBkaXJlY3RpdmUgZGVwZW5kZW50IG9uIF9oYXNDb2xsYXBzaWJsZVRpdGxlOyB0cmlnZ2VyIENEIHRvIG1ha2Ugc3VyZSBlbGVtZW50IGhhcyBiZWVuIHF1ZXJpZWQuIFxuICAgICAgICBTb2x1dGlvbiB0YWtlbiBmcm9tOiBodHRwczovL2RhbmllbGV5YXNzdS5jb20vYW5ndWxhci12aWV3Y2hpbGQtYW5kLW5naWYvXG4gICAgICAqL1xuICAgIGlmICghdGhpcy5fY29udGVudFRpdGxlRWxlbWVudCAmJiB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlKSB7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUaXRsZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGtleWJvYXJkVmlzaWJsZSA9IGZhbHNlO1xuICBwcml2YXRlIHRvb2xiYXJCdXR0b25zOiBIVE1MQnV0dG9uRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgZGVsYXllZENsb3NlID0gKCkgPT4ge307XG4gIHByaXZhdGUgZGVsYXllZENsb3NlVGltZW91dElkO1xuICBwcml2YXRlIGluaXRpYWxWaWV3cG9ydEhlaWdodDogbnVtYmVyO1xuICBwcml2YXRlIHZpZXdwb3J0UmVzaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIGlvbk1vZGFsRWxlbWVudD86IEhUTUxJb25Nb2RhbEVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW9uTW9kYWxEaWRQcmVzZW50ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgZGlkUHJlc2VudCA9IGZpcnN0VmFsdWVGcm9tKHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50KTtcbiAgcHJpdmF0ZSByZWFkb25seSBpb25Nb2RhbFdpbGxEaXNtaXNzID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcmVhZG9ubHkgd2lsbENsb3NlID0gZmlyc3RWYWx1ZUZyb20odGhpcy5pb25Nb2RhbFdpbGxEaXNtaXNzKTtcbiAgcHJpdmF0ZSB2aWV3cG9ydFJlc2l6ZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgdmlld3BvcnRSZXNpemUkID0gdGhpcy52aWV3cG9ydFJlc2l6ZVxuICAgIC5hc09ic2VydmFibGUoKVxuICAgIC5waXBlKGRlYm91bmNlVGltZSh0aGlzLlZJRVdQT1JUX1JFU0laRV9ERUJPVU5DRV9USU1FKSk7XG4gIHByaXZhdGUgX211dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgX2ludGVyc2VjdGlvbk9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcjtcbiAgcHJpdmF0ZSBnZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIge1xuICAgIGlmICghdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyID0gdGhpcy5jcmVhdGVNb2RhbFdyYXBwZXJJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIH1cbiAgc2Nyb2xsRXZlbnRzRW5hYmxlZDogYm9vbGVhbjtcbiAgaXNDb250ZW50U2Nyb2xsZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuZHJhd2VyJylcbiAgZ2V0IF9pc0RyYXdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJztcbiAgfVxuXG4gIHdpbGxDbG9zZSQgPSB0aGlzLmlvbk1vZGFsV2lsbERpc21pc3MucGlwZShmaXJzdCgpKTtcblxuICBwcml2YXRlIG1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlOiBNb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlc2l6ZU9ic2VydmVyU2VydmljZTogUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1TZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FuRGlzbWlzc0hlbHBlcjogQ2FuRGlzbWlzc0hlbHBlclxuICApIHtcbiAgICB0aGlzLnNldFZpZXdwb3J0SGVpZ2h0KCk7XG4gICAgdGhpcy5vYnNlcnZlVmlld3BvcnRSZXNpemUoKTtcbiAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlID0gbmV3IE1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnaW9uLW1vZGFsJyk7XG4gICAgdGhpcy5pbml0aWFsaXplU2l6aW5nKCk7XG4gICAgdGhpcy5pbml0aWFsaXplTW9kYWxSb3V0ZSgpO1xuICAgIHRoaXMubGlzdGVuRm9ySW9uTW9kYWxEaWRQcmVzZW50KCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JJb25Nb2RhbFdpbGxEaXNtaXNzKCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JTY3JvbGwoKTtcbiAgICB0aGlzLmluaXRpYWxpemVSZXNpemVNb2RhbFRvTW9kYWxXcmFwcGVyKCk7XG4gICAgdGhpcy5jb21wb25lbnRQcm9wc0luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ09NUE9ORU5UX1BST1BTLCB1c2VWYWx1ZTogdGhpcy5jb25maWcuY29tcG9uZW50UHJvcHMgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1vZGFsV3JhcHBlckluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsIHVzZUV4aXN0aW5nOiBNb2RhbFdyYXBwZXJDb21wb25lbnQgfV0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeSkge1xuICAgICAgdGhpcy50b29sYmFyQnV0dG9ucyA9IHRoaXMudG9vbGJhckJ1dHRvbnNRdWVyeS5tYXAoKGJ1dHRvblJlZikgPT4gYnV0dG9uUmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2N1cnJlbnRGb290ZXI6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBzZXQgY3VycmVudEZvb3Rlcihmb290ZXI6IEhUTUxFbGVtZW50IHwgbnVsbCkge1xuICAgIGlmIChmb290ZXIgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUoZm9vdGVyLCAoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFtcbiAgICAgICAgICAnLS1mb290ZXItaGVpZ2h0JyxcbiAgICAgICAgICBgJHtNYXRoLmZsb29yKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCl9cHhgLFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVudEZvb3RlciA9IGZvb3RlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGN1cnJlbnRGb290ZXIoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZvb3RlcjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IGFkZE1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLmFkZEZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBtb2RhbEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgIH0sXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5USVRMRV06ICgpID0+XG4gICAgICAgIHRoaXMubW9kYWxFbGVtZW50c01vdmVyRGVsZWdhdGUuYWRkVGl0bGUoXG4gICAgICAgICAgbW9kYWxFbGVtZW50LFxuICAgICAgICAgIHRoaXMuY29udGVudFRpdGxlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLl9oYXNDb2xsYXBzaWJsZVRpdGxlLFxuICAgICAgICAgIHRoaXMuaW9uVGl0bGVFbGVtZW50XG4gICAgICAgICksXG4gICAgICBbTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5hZGRQYWdlUHJvZ3Jlc3MobW9kYWxFbGVtZW50LCB0aGlzLmlvblRvb2xiYXJFbGVtZW50KSxcbiAgICB9W3R5cGVdO1xuXG4gICAgYWRkTW9kYWxFbGVtZW50Rm4oKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNb2RhbEVsZW1lbnQodHlwZTogTW9kYWxFbGVtZW50VHlwZSwgbW9kYWxFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICAgIGNvbnN0IHJlbW92ZU1vZGFsRWxlbWVudEZuID0ge1xuICAgICAgW01vZGFsRWxlbWVudFR5cGUuRk9PVEVSXTogKCkgPT4ge1xuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZUZvb3Rlcihtb2RhbEVsZW1lbnQpO1xuICAgICAgICB0aGlzLmN1cnJlbnRGb290ZXIgPSBudWxsO1xuICAgICAgfSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlRJVExFXTogKCkgPT5cbiAgICAgICAgdGhpcy5tb2RhbEVsZW1lbnRzTW92ZXJEZWxlZ2F0ZS5yZW1vdmVUaXRsZShcbiAgICAgICAgICBtb2RhbEVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5faGFzQ29sbGFwc2libGVUaXRsZSxcbiAgICAgICAgICB0aGlzLmNvbnRlbnRUaXRsZUVsZW1lbnRcbiAgICAgICAgKSxcbiAgICAgIFtNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1NdOiAoKSA9PlxuICAgICAgICB0aGlzLm1vZGFsRWxlbWVudHNNb3ZlckRlbGVnYXRlLnJlbW92ZVBhZ2VQcm9ncmVzcyhtb2RhbEVsZW1lbnQpLFxuICAgIH1bdHlwZV07XG5cbiAgICByZW1vdmVNb2RhbEVsZW1lbnRGbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUmVzaXplTW9kYWxUb01vZGFsV3JhcHBlcigpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJyAmJiB0aGlzLmNvbmZpZy5pbnRlcmFjdFdpdGhCYWNrZ3JvdW5kKSB7XG4gICAgICBtZXJnZSh0aGlzLmlvbk1vZGFsRGlkUHJlc2VudCwgdGhpcy52aWV3cG9ydFJlc2l6ZSQpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgLy8gd2FpdCBmb3IgdGVtcGxhdGUgdG8gcmVuZGVyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkb21SZWN0ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IGRvY3VtZW50LmNsaWVudFdpZHRoIC0gZG9tUmVjdC5yaWdodDtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICd0b3AnLCBgJHtkb21SZWN0LnRvcH1weGApO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmlvbk1vZGFsRWxlbWVudCwgJ2xlZnQnLCBgJHtkb21SZWN0LmxlZnR9cHhgKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pb25Nb2RhbEVsZW1lbnQsICdyaWdodCcsIGAke3JpZ2h0fXB4YCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVNpemluZygpIHtcbiAgICBpZiAodGhpcy5jb25maWcuc2l6ZSA9PT0gJ2Z1bGwtaGVpZ2h0JykgcmV0dXJuO1xuICAgIHRoaXMucGF0Y2hTY3JvbGxFbGVtZW50U2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZUhlYWRlclJlc2l6ZSgpO1xuICAgIHRoaXMub2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplTW9kYWxSb3V0ZSgpIHtcbiAgICBpZiAodGhpcy5jb25maWcubW9kYWxSb3V0ZSkge1xuICAgICAgdGhpcy5vblNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkKHRoaXMuY29uZmlnLnNpYmxpbmdNb2RhbFJvdXRlQWN0aXZhdGVkJCk7XG4gICAgICAvLyBMb2FkIGNvbXBvbmVudCBmcm9tIG1vZGFsLXJvdXRlIGluc2lkZSByb3V0ZXItb3V0bGV0OlxuICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYWN0aXZhdGVXaXRoKHRoaXMuY29uZmlnLm1vZGFsUm91dGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25TaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZChzaWJsaW5nTW9kYWxSb3V0ZUFjdGl2YXRlZCQ/OiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlPikge1xuICAgIGlmICghc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkKSByZXR1cm47XG4gICAgc2libGluZ01vZGFsUm91dGVBY3RpdmF0ZWQkLnBpcGUodGFrZVVudGlsKHRoaXMud2lsbENsb3NlJCkpLnN1YnNjcmliZSgocm91dGUpID0+IHtcbiAgICAgIGlmICh0aGlzLnJvdXRlck91dGxldC5pc0FjdGl2YXRlZCkge1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5kZWFjdGl2YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJvdXRlck91dGxldC5hY3RpdmF0ZVdpdGgocm91dGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXRjaFNjcm9sbEVsZW1lbnRTaXplKCk6IHZvaWQge1xuICAgIGNvbnN0IHN1cHBvcnRzQ3NzU2hhZG93UGFydHMgPSAncGFydCcgaW4gSFRNTEVsZW1lbnQucHJvdG90eXBlO1xuICAgIGlmIChzdXBwb3J0c0Nzc1NoYWRvd1BhcnRzKSByZXR1cm47XG4gICAgdGhpcy5pb25Db250ZW50LmdldFNjcm9sbEVsZW1lbnQoKS50aGVuKChzY3JvbGxFbGVtZW50KSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNjcm9sbEVsZW1lbnQsICdoZWlnaHQnLCAnMTAwJScpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxFbGVtZW50LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgc2Nyb2xsRWxlbWVudCxcbiAgICAgICAgICAndHJhbnNpdGlvbicsXG4gICAgICAgICAgJ3BhZGRpbmctYm90dG9tICcgKyBEZXNpZ25Ub2tlbkhlbHBlci5zb2Z0S2V5Ym9hcmRUcmFuc2l0aW9uTGVhdmVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZU1vZGFsRnVsbEhlaWdodCgpIHtcbiAgICBjb25zdCBpb25Nb2RhbFdyYXBwZXIgPSB0aGlzLmdldElvbk1vZGFsV3JhcHBlckVsZW1lbnQoKTtcblxuICAgIGlmICghaW9uTW9kYWxXcmFwcGVyKSByZXR1cm47XG4gICAgLy8gU3RhcnQgb2JzZXJ2aW5nIHdoZW4gbW9kYWwgaGFzIGZpbmlzaGVkIGFuaW1hdGluZzpcbiAgICB0aGlzLmRpZFByZXNlbnQudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUoaW9uTW9kYWxXcmFwcGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEV4dHJhY3RlZCBpbnRvIGZ1bmN0aW9uIGZvciBlYXNlIG9mIHRlc3RpbmdcbiAgcHJpdmF0ZSBnZXRJb25Nb2RhbFdyYXBwZXJFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5pb25Nb2RhbEVsZW1lbnQuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcubW9kYWwtd3JhcHBlcicpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlSGVhZGVyUmVzaXplKCkge1xuICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsIChlbnRyeSkgPT4ge1xuICAgICAgY29uc3QgW3Byb3BlcnR5LCBwaXhlbFZhbHVlXSA9IFsnLS1oZWFkZXItaGVpZ2h0JywgYCR7ZW50cnkuY29udGVudFJlY3QuaGVpZ2h0fXB4YF07XG4gICAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgcHJvcGVydHksIHBpeGVsVmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JJb25Nb2RhbERpZFByZXNlbnQoKSB7XG4gICAgaWYgKHRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdpb25Nb2RhbERpZFByZXNlbnQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxEaWRQcmVzZW50Lm5leHQoKTtcbiAgICAgICAgdGhpcy5pb25Nb2RhbERpZFByZXNlbnQuY29tcGxldGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ySW9uTW9kYWxXaWxsRGlzbWlzcygpIHtcbiAgICBpZiAodGhpcy5pb25Nb2RhbEVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2lvbk1vZGFsV2lsbERpc21pc3MnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5uZXh0KCk7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxXaWxsRGlzbWlzcy5jb21wbGV0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaXN0ZW5Gb3JTY3JvbGwoKSB7XG4gICAgY29uc3QgcXVlcnkgPSBgKG1pbi13aWR0aDogJHtEZXNpZ25Ub2tlbkhlbHBlci5icmVha3BvaW50cy5tZWRpdW19KWA7XG4gICAgY29uc3QgbWVkaWFRdWVyeSA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5tYXRjaE1lZGlhKHF1ZXJ5KTtcbiAgICBjb25zdCBlbmFibGVTY3JvbGxFdmVudHMgPSAobGlzdE9yRXZlbnQ6IE1lZGlhUXVlcnlMaXN0IHwgTWVkaWFRdWVyeUxpc3RFdmVudCkgPT4ge1xuICAgICAgY29uc3QgaXNEZXNrdG9wID0gbGlzdE9yRXZlbnQubWF0Y2hlcztcbiAgICAgIHRoaXMuc2Nyb2xsRXZlbnRzRW5hYmxlZCA9ICFpc0Rlc2t0b3A7XG4gICAgfTtcblxuICAgIGVuYWJsZVNjcm9sbEV2ZW50cyhtZWRpYVF1ZXJ5KTtcbiAgICBtZWRpYVF1ZXJ5Lm9uY2hhbmdlID0gZW5hYmxlU2Nyb2xsRXZlbnRzO1xuXG4gICAgLy8gUnVucyBzY3JvbGwgc3Vic2NyaXB0aW9uIG91dHNpZGUgem9uZSB0byBhdm9pZCBleGNlc3NpdmUgYW1vdW50IG9mIENEIGN5Y2xlc1xuICAgIC8vIHdoZW4gaW9uU2Nyb2xsIGVtaXRzLlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgc3Vic2NyaWJlIGFzIGlvblNjcm9sbCBvbmx5IGVtaXRzIHdoZW4gc2Nyb2xsRXZlbnRzRW5hYmxlZCBpcyB0cnVlXG4gICAgICB0aGlzLmlvbkNvbnRlbnQuaW9uU2Nyb2xsXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGRlYm91bmNlVGltZShjb250ZW50U2Nyb2xsRGVib3VuY2VUaW1lSW5NUyksXG4gICAgICAgICAgbWFwKChldmVudCkgPT4gZXZlbnQuZGV0YWlsKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChzY3JvbGxJbmZvOiBTY3JvbGxEZXRhaWwpID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ID0gc2Nyb2xsSW5mby5zY3JvbGxUb3AgPiBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscztcblxuICAgICAgICAgIGlmIChjb250ZW50U2Nyb2xsZWRQYXN0T2Zmc2V0ICE9PSB0aGlzLmlzQ29udGVudFNjcm9sbGVkKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gY29udGVudFNjcm9sbGVkUGFzdE9mZnNldDtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzY3JvbGxUb1RvcChzY3JvbGxEdXJhdGlvbj86IEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uKSB7XG4gICAgdGhpcy5pb25Db250ZW50LnNjcm9sbFRvVG9wKHNjcm9sbER1cmF0aW9uIHx8IDApO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oc2Nyb2xsRHVyYXRpb24/OiBLaXJieUFuaW1hdGlvbi5EdXJhdGlvbikge1xuICAgIHRoaXMuaW9uQ29udGVudC5zY3JvbGxUb0JvdHRvbShzY3JvbGxEdXJhdGlvbiB8fCAwKTtcbiAgfVxuXG4gIGFzeW5jIGNsb3NlKGRhdGE/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaW9uTW9kYWxFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5rZXlib2FyZFZpc2libGUgfHwgIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBObyBrZXlib2FyZCB2aXNpYmxlIG9yIHZpZXdwb3J0IG5vdCByZXNpemVkOlxuICAgICAgLy8gRGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgIGF3YWl0IHRoaXMuaW9uTW9kYWxFbGVtZW50LmRpc21pc3MoZGF0YSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgdmlzaWJsZTpcbiAgICAvLyBCbHVyIGFjdGl2ZSBlbGVtZW50IGFuZCB3YWl0IGZvciBrZXlib2FyZCB0byBoaWRlLFxuICAgIC8vIHRoZW4gZGlzbWlzcyBtb2RhbCBhbmQgcmV0dXJuOlxuICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcbiAgICAgIHRoaXMuZGVsYXllZENsb3NlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmlvbk1vZGFsRWxlbWVudC5kaXNtaXNzKGRhdGEpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9O1xuICAgICAgdGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KFxuICAgICAgICB0aGlzLmRlbGF5ZWRDbG9zZSxcbiAgICAgICAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LktFWUJPQVJEX0hJREVfREVMQVlfSU5fTVNcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXMnKVxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6Zm9jdXNvdXQnKVxuICBvbkZvY3VzQ2hhbmdlKCkge1xuICAgIC8vIFRoaXMgZml4ZXMgYW4gdW5kZXNpcmVkIHNjcm9sbCBiZWhhdmlvdXIgb2NjdXJyaW5nIG9uIGtleWJvYXJkLXRhYmJpbmcgYmFja3dhcmRzICh3aXRoIHNoaWZ0K3RhYik6XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNjcm9sbFRvKHsgdG9wOiB0aGlzLnNjcm9sbFkgfSk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRTaG93JywgWyckZXZlbnQuZGV0YWlsLmtleWJvYXJkSGVpZ2h0J10pXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQua2V5Ym9hcmRIZWlnaHQnXSlcbiAgX29uS2V5Ym9hcmRTaG93KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnNldEtleWJvYXJkVmlzaWJpbGl0eShrZXlib2FyZEhlaWdodCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6aW9uS2V5Ym9hcmREaWRIaWRlJylcbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZEhpZGUoKSB7XG4gICAgdGhpcy5zZXRLZXlib2FyZFZpc2liaWxpdHkoMCk7XG4gIH1cblxuICBwcml2YXRlIHRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQoZnJlZXplOiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2hvdWxkVG9nZ2xlTWF4SGVpZ2h0ID1cbiAgICAgIHRoaXMuY29uZmlnLmZsYXZvciA9PT0gJ21vZGFsJyAmJiB0aGlzLnBsYXRmb3JtLmlzUGhhYmxldE9yQmlnZ2VyKCk7XG4gICAgaWYgKCFzaG91bGRUb2dnbGVNYXhIZWlnaHQpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9ICdtYXgtaGVpZ2h0JztcbiAgICBjb25zdCBjb250ZW50RWxlbWVudCA9IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIGlmIChmcmVlemUpIHtcbiAgICAgICAgY29uc3QgY29udGVudEhlaWdodCA9IGNvbnRlbnRFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShjb250ZW50RWxlbWVudCwgc3R5bGUsIGAke2NvbnRlbnRIZWlnaHR9cHhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlU3R5bGUoY29udGVudEVsZW1lbnQsIHN0eWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRWaXNpYmlsaXR5KGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICBjb25zdCBrZXlib2FyZEFscmVhZHlWaXNpYmxlID0ga2V5Ym9hcmRIZWlnaHQgPiAwICYmIHRoaXMua2V5Ym9hcmRWaXNpYmxlO1xuICAgIGNvbnN0IGtleWJvYXJkQWxyZWFkeUhpZGRlbiA9IGtleWJvYXJkSGVpZ2h0ID09PSAwICYmICF0aGlzLmtleWJvYXJkVmlzaWJsZTtcbiAgICBpZiAoa2V5Ym9hcmRBbHJlYWR5VmlzaWJsZSB8fCBrZXlib2FyZEFscmVhZHlIaWRkZW4pIHJldHVybjtcbiAgICB0aGlzLmtleWJvYXJkVmlzaWJsZSA9IGtleWJvYXJkSGVpZ2h0ID4gMDtcbiAgICB0aGlzLnRvZ2dsZUNvbnRlbnRNYXhIZWlnaHQodGhpcy5rZXlib2FyZFZpc2libGUpO1xuICAgIHRoaXMuc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIsIGVsZW1lbnQ6IEVsZW1lbnQpIHtcbiAgICBpZiAoa2V5Ym9hcmRIZWlnaHQgPD0gMCB8fCAhZWxlbWVudCkgcmV0dXJuIDA7XG4gICAgY29uc3QgZGlzdGFuY2VGcm9tVmlld3BvcnRCb3R0b21Ub0VsZW1lbnQgPSBNYXRoLmZsb29yKFxuICAgICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0IC0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b21cbiAgICApO1xuICAgIHJldHVybiBNYXRoLm1heChrZXlib2FyZEhlaWdodCAtIGRpc3RhbmNlRnJvbVZpZXdwb3J0Qm90dG9tVG9FbGVtZW50LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q3NzVmFyKGVsZW1lbnQ6IEVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGVsZW1lbnQsIHByb3BlcnR5LCB2YWx1ZSwgUmVuZGVyZXJTdHlsZUZsYWdzMi5EYXNoQ2FzZSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVDc3NDbGFzcyhlbGVtZW50OiBFbGVtZW50LCBrbGFzczogc3RyaW5nLCBjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnpvbmUucnVuKCgpID0+XG4gICAgICBjb25kaXRpb24gPyB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGVsZW1lbnQsIGtsYXNzKSA6IHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwga2xhc3MpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0S2V5Ym9hcmRPdmVybGFwKGtleWJvYXJkSGVpZ2h0OiBudW1iZXIpIHtcbiAgICB0aGlzLnRvZ2dsZUNzc0NsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAna2V5Ym9hcmQtdmlzaWJsZScsIGtleWJvYXJkSGVpZ2h0ID4gMCk7XG4gICAgY29uc3Qga2V5Ym9hcmRPdmVybGFwID0gdGhpcy5nZXRLZXlib2FyZE92ZXJsYXAoa2V5Ym9hcmRIZWlnaHQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICBsZXQgc25hcEZvb3RlclRvS2V5Ym9hcmQgPSBmYWxzZTtcbiAgICBjb25zdCBlbWJlZGRlZEZvb3RlckVsZW1lbnQgPSB0aGlzLmN1cnJlbnRGb290ZXI7XG4gICAgaWYgKGVtYmVkZGVkRm9vdGVyRWxlbWVudCkge1xuICAgICAgdGhpcy5zZXRDc3NWYXIoZW1iZWRkZWRGb290ZXJFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtrZXlib2FyZE92ZXJsYXB9cHhgKTtcbiAgICAgIHNuYXBGb290ZXJUb0tleWJvYXJkID0gZW1iZWRkZWRGb290ZXJFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnc25hcC10by1rZXlib2FyZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50ID0gdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNvbnRlbnRLZXlib2FyZE9mZnNldCA9IHNuYXBGb290ZXJUb0tleWJvYXJkXG4gICAgICA/IGtleWJvYXJkT3ZlcmxhcFxuICAgICAgOiB0aGlzLmdldEtleWJvYXJkT3ZlcmxhcChrZXlib2FyZEhlaWdodCwgY29udGVudEVsZW1lbnQpO1xuICAgIHRoaXMuc2V0Q3NzVmFyKGNvbnRlbnRFbGVtZW50LCAnLS1rZXlib2FyZC1vZmZzZXQnLCBgJHtjb250ZW50S2V5Ym9hcmRPZmZzZXR9cHhgKTtcbiAgfVxuXG4gIG9uSGVhZGVyVG91Y2hTdGFydChldmVudDogVG91Y2hFdmVudCkge1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgY29uc3QgaXNUb29sYmFyQnV0dG9uVG91Y2ggPSB0aGlzLnRvb2xiYXJCdXR0b25zLnNvbWUoKGJ1dHRvbikgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmXG4gICAgICAgICAgKGV2ZW50LnRhcmdldCA9PT0gYnV0dG9uIHx8IGJ1dHRvbi5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICAvLyBQcmV2ZW50IGJsdXIgaWYgZXZlbnQgdGFyZ2V0IGlzIGEgdG9vbGJhciBidXR0b25cbiAgICAgIC8vICh0byBhbGxvdyB0YXAgZXZlbnQgdG8gZmlyZSk6XG4gICAgICBpZiAoIWlzVG9vbGJhckJ1dHRvblRvdWNoKSB7XG4gICAgICAgIHRoaXMuYmx1ckFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgX29uV2luZG93UmVzaXplKCkge1xuICAgIHRoaXMuc2V0Vmlld3BvcnRIZWlnaHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Vmlld3BvcnRIZWlnaHQoKSB7XG4gICAgY29uc3QgdmggPSAodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmlubmVySGVpZ2h0ICogMC4wMSkudG9GaXhlZCgyKTtcbiAgICB0aGlzLnNldENzc1Zhcih0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJy0tdmgnLCBgJHt2aH1weGApO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVmlld3BvcnRSZXNpemUoKSB7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQuYm9keSwgKGVudHJ5KSA9PlxuICAgICAgdGhpcy5vblZpZXdwb3J0UmVzaXplKGVudHJ5KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uVmlld3BvcnRSZXNpemUoZW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkpIHtcbiAgICBpZiAoIXRoaXMuaW5pdGlhbFZpZXdwb3J0SGVpZ2h0KSB7XG4gICAgICAvLyBJbml0aWFsIG9ic2VydmUgY2FsbGJhY2ssIHJlZ2lzdGVyIGluaXRpYWwgaGVpZ2h0OlxuICAgICAgdGhpcy5pbml0aWFsVmlld3BvcnRIZWlnaHQgPSBlbnRyeS5jb250ZW50UmVjdC5oZWlnaHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudmlld3BvcnRSZXNpemVkID0gZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ICE9PSB0aGlzLmluaXRpYWxWaWV3cG9ydEhlaWdodDtcbiAgICBpZiAoIXRoaXMudmlld3BvcnRSZXNpemVkKSB7XG4gICAgICAvLyBXZSBhcmUgYmFjayB0byBpbml0aWFsIHZpZXcgcG9ydCBoZWlnaHQsIGNoZWNrIGZvciBwZW5kaW5nIGNsb3NlIGZ1bmM6XG4gICAgICBpZiAodGhpcy5kZWxheWVkQ2xvc2VUaW1lb3V0SWQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXllZENsb3NlVGltZW91dElkKTtcbiAgICAgICAgdGhpcy5kZWxheWVkQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydFJlc2l6ZS5uZXh0KCk7XG4gIH1cblxuICBibHVyQWN0aXZlRWxlbWVudCgpIHtcbiAgICBjb25zdCBCTFVSX1RBUkdFVF9TRUxFQ1RPUiA9ICdpbnB1dCwgdGV4dGFyZWEnO1xuICAgIGlmICh0aGlzLmtleWJvYXJkVmlzaWJsZSkge1xuICAgICAgaWYgKFxuICAgICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiZcbiAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5tYXRjaGVzKEJMVVJfVEFSR0VUX1NFTEVDVE9SKVxuICAgICAgKSB7XG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwcml2YXRlIGNyZWF0ZU1vZGFsV3JhcHBlckludGVyc2VjdGlvbk9ic2VydmVyKCk6IEludGVyc2VjdGlvbk9ic2VydmVyIHtcbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICBjb25zdCBpc1RvdWNoaW5nVmlld3BvcnQgPSBlbnRyeS5pbnRlcnNlY3Rpb25SYXRpbyA8IDE7XG4gICAgICBpZiAoaXNUb3VjaGluZ1ZpZXdwb3J0KSB7XG4gICAgICAgIHRoaXMuaW9uTW9kYWxFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Z1bGwtaGVpZ2h0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlvbk1vZGFsRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmdWxsLWhlaWdodCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBTZXQgZXhwbGljaXQgdmlld3BvcnQgcm9vdCBpZiB3aXRoaW4gaWZyYW1lOlxuICAgIGNvbnN0IHJvb3QgPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZnJhbWVFbGVtZW50XG4gICAgICA/ICh0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQgYXMgYW55KSAvLyBDYXN0IHRvIGBhbnlgIGFzIFR5cGVzY3JpcHQgbGliLmQudHMgZG9lc250IHN1cHBvcnQgRG9jdW1lbnQgdHlwZSB5ZXRcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xcHggMHB4JywgLy8gYGJvdHRvbTogLTFweGAgYWxsb3dzIGNoZWNraW5nIHdoZW4gdGhlIG1vZGFsIGJvdHRvbSBpcyB0b3VjaGluZyB0aGUgdmlld3BvcnRcbiAgICAgIHJvb3QsXG4gICAgICB0aHJlc2hvbGQ6IFswLjk5LCAxXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihjYWxsYmFjaywgb3B0aW9ucyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJPdXRsZXQuaXNBY3RpdmF0ZWQpIHtcbiAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRlYWN0aXZhdGUoKTtcbiAgICB9XG4gICAgLy9jbGVhbiB1cCB0aGUgb2JzZXJ2ZXJcbiAgICBkZWxldGUgdGhpcy5fbXV0YXRpb25PYnNlcnZlcjtcbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICBkZWxldGUgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS51bm9ic2VydmUodGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50LmJvZHkpO1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmN1cnJlbnRGb290ZXIpO1xuICAgIH1cbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyIFtjbGFzcy5jb250ZW50LXNjcm9sbGVkXT1cImlzQ29udGVudFNjcm9sbGVkXCIgKHRvdWNoc3RhcnQpPVwib25IZWFkZXJUb3VjaFN0YXJ0KCRldmVudClcIj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tdGl0bGU+PC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zXG4gICAgICBzbG90PVwic2Vjb25kYXJ5XCJcbiAgICAgICpuZ0lmPVwiY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicgJiYgY29uZmlnLmRyYXdlclN1cHBsZW1lbnRhcnlBY3Rpb25cIlxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAga2lyYnktYnV0dG9uXG4gICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgIChjbGljayk9XCJjb25maWcuZHJhd2VyU3VwcGxlbWVudGFyeUFjdGlvbi5hY3Rpb24oJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxraXJieS1pY29uIFtuYW1lXT1cImNvbmZpZy5kcmF3ZXJTdXBwbGVtZW50YXJ5QWN0aW9uLmljb25OYW1lXCI+PC9raXJieS1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInByaW1hcnlcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAga2lyYnktYnV0dG9uXG4gICAgICAgIGF0dGVudGlvbkxldmVsPVwiM1wiXG4gICAgICAgIHNpemU9XCJtZFwiXG4gICAgICAgIFtub0RlY29yYXRpb25dPVwiY29uZmlnLmludGVyYWN0V2l0aEJhY2tncm91bmRcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICA+XG4gICAgICAgIDxraXJieS1pY29uIG5hbWU9XCJjbG9zZVwiPjwva2lyYnktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBbc2Nyb2xsRXZlbnRzXT1cInNjcm9sbEV2ZW50c0VuYWJsZWRcIj5cbiAgPGlvbi1oZWFkZXIgKm5nSWY9XCJfaGFzQ29sbGFwc2libGVUaXRsZVwiIGNvbGxhcHNlPVwiY29uZGVuc2VcIj5cbiAgICA8aW9uLXRvb2xiYXI+XG4gICAgICA8c3BhbiBjbGFzcz1cImtpcmJ5LXRleHQteGxhcmdlXCIgI2NvbnRlbnRUaXRsZT48L3NwYW4+XG4gICAgPC9pb24tdG9vbGJhcj5cbiAgPC9pb24taGVhZGVyPlxuXG4gIDwhLS0gT3V0bGV0IGZvciBNb2RhbENvbnRyb2xsZXIgLS0+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJjb25maWcuY29tcG9uZW50OyBpbmplY3RvcjogY29tcG9uZW50UHJvcHNJbmplY3RvclwiXG4gID48L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIE91dGxldCBmb3IgcHJvamVjdGVkIGNvbnRlbnQgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50OyBpbmplY3RvcjogbW9kYWxXcmFwcGVySW5qZWN0b3JcIj48L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIE91dGxldCBmb3Igcm91dGUtYmFzZWQgbW9kYWwgLS0+XG4gIDxyb3V0ZXItb3V0bGV0XG4gICAgbmFtZT1cImtpcmJ5TW9kYWxXcmFwcGVyT3V0bGV0XCJcbiAgICBbc3R5bGUudmlzaWJpbGl0eV09XCJjb25maWcubW9kYWxSb3V0ZSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcbiAgPjwvcm91dGVyLW91dGxldD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
@@ -7,11 +7,11 @@ export class ModalV2FooterComponent {
7
7
  this.type = 'fixed';
8
8
  }
9
9
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalV2FooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalV2FooterComponent, selector: "kirby-modal-v2-footer", inputs: { snapToKeyboard: "snapToKeyboard", type: "type" }, host: { properties: { "class.snap-to-keyboard": "this.snapToKeyboard", "class": "this.type" } }, ngImport: i0, template: "<ion-footer>\n <div class=\"nav-button\">\n <ng-content select=\"[nav-prev]\"></ng-content>\n </div>\n\n <div class=\"default-content\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"nav-button\">\n <ng-content select=\"[nav-next]\"></ng-content>\n </div>\n</ion-footer>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;display:grid;grid-template-rows:40px;grid-template-columns:40px 1fr 40px;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:24px;padding-bottom:calc(24px + var(--kirby-modal-footer-safe-area-bottom, 0px))}ion-footer .default-content{display:flex;align-items:center;justify-content:center}ion-footer .nav-button{display:flex;justify-content:center;align-items:center}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{background-color:var(--kirby-background-color)}:host(.inline) ion-footer{background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\n"], dependencies: [{ kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }] }); }
10
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalV2FooterComponent, selector: "kirby-modal-v2-footer", inputs: { snapToKeyboard: "snapToKeyboard", type: "type" }, host: { properties: { "class.snap-to-keyboard": "this.snapToKeyboard", "class": "this.type" } }, ngImport: i0, template: "<ion-footer>\n <div class=\"nav-button\">\n <ng-content select=\"[nav-prev]\"></ng-content>\n </div>\n\n <div class=\"default-content\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"nav-button\">\n <ng-content select=\"[nav-next]\"></ng-content>\n </div>\n</ion-footer>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;display:grid;grid-template-rows:40px;grid-template-columns:40px 1fr 40px;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:24px;padding-bottom:calc(24px + var(--kirby-modal-footer-safe-area-bottom, 0px))}ion-footer .default-content{display:flex;align-items:center;justify-content:center}ion-footer .nav-button{display:flex;justify-content:center;align-items:center}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{background-color:var(--kirby-background-color)}:host(.inline) ion-footer{background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\n"], dependencies: [{ kind: "component", type: i1.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }] }); }
11
11
  }
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalV2FooterComponent, decorators: [{
13
13
  type: Component,
14
- args: [{ selector: 'kirby-modal-v2-footer', template: "<ion-footer>\n <div class=\"nav-button\">\n <ng-content select=\"[nav-prev]\"></ng-content>\n </div>\n\n <div class=\"default-content\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"nav-button\">\n <ng-content select=\"[nav-next]\"></ng-content>\n </div>\n</ion-footer>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;display:grid;grid-template-rows:40px;grid-template-columns:40px 1fr 40px;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:24px;padding-bottom:calc(24px + var(--kirby-modal-footer-safe-area-bottom, 0px))}ion-footer .default-content{display:flex;align-items:center;justify-content:center}ion-footer .nav-button{display:flex;justify-content:center;align-items:center}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{background-color:var(--kirby-background-color)}:host(.inline) ion-footer{background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\n"] }]
14
+ args: [{ selector: 'kirby-modal-v2-footer', template: "<ion-footer>\n <div class=\"nav-button\">\n <ng-content select=\"[nav-prev]\"></ng-content>\n </div>\n\n <div class=\"default-content\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"nav-button\">\n <ng-content select=\"[nav-next]\"></ng-content>\n </div>\n</ion-footer>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);box-shadow:0 20px 30px -15px #1c1c1c4d,0 0 5px #1c1c1c14;display:grid;grid-template-rows:40px;grid-template-columns:40px 1fr 40px;justify-content:var(--kirby-modal-footer-justify-content, center);align-items:center;background-color:var(--kirby-modal-footer-background, var(--kirby-white));color:var(--kirby-modal-footer-color, var(--kirby-white-contrast));padding:24px;padding-bottom:calc(24px + var(--kirby-modal-footer-safe-area-bottom, 0px))}ion-footer .default-content{display:flex;align-items:center;justify-content:center}ion-footer .nav-button{display:flex;justify-content:center;align-items:center}@media (max-width: 767px){:host{--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}}:host{box-sizing:border-box}:host(.snap-to-keyboard) ion-footer{transition:transform .15s ease-out}:host(.light) ion-footer{background-color:var(--kirby-background-color)}:host(.inline) ion-footer{background:transparent;box-shadow:none}:host-context(.keyboard-visible).snap-to-keyboard ion-footer{transition:transform .25s ease-out 1ms;transform:translateY(calc((var(--keyboard-offset, 0px) - var(--kirby-modal-footer-safe-area-bottom, 0px)) * -1))}:host-context(.modal-wrapper.full-height){--kirby-modal-footer-safe-area-bottom: var(--kirby-safe-area-bottom)}\n"] }]
15
15
  }], propDecorators: { snapToKeyboard: [{
16
16
  type: HostBinding,
17
17
  args: ['class.snap-to-keyboard']
@@ -46,11 +46,11 @@ export class ModalV2Component {
46
46
  this.ionContent.scrollToBottom(scrollDuration || 0);
47
47
  }
48
48
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
49
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalV2Component, selector: "kirby-modal-v2", inputs: { flavor: "flavor", open: "open", canDismiss: "canDismiss", title: "title", hasCollapsibleTitle: "hasCollapsibleTitle", scrollDisabled: "scrollDisabled", breakpoints: "breakpoints", initialBreakpoint: "initialBreakpoint", size: "size", height: "height" }, outputs: { willPresent: "willPresent", didPresent: "didPresent", didDismiss: "didDismiss", willDismiss: "willDismiss" }, viewQueries: [{ propertyName: "modal", first: true, predicate: IonModal, descendants: true }, { propertyName: "modalElement", first: true, predicate: IonModal, descendants: true, read: ElementRef, static: true }, { propertyName: "ionContent", first: true, predicate: IonContent, descendants: true }], ngImport: i0, template: "<ion-modal\n class=\"kirby-modal-v2\"\n [isOpen]=\"open\"\n [breakpoints]=\"flavor === 'drawer' ? breakpoints : undefined\"\n [initialBreakpoint]=\"flavor === 'drawer' ? initialBreakpoint : undefined\"\n [handle]=\"false\"\n [canDismiss]=\"canDismiss\"\n [ngClass]=\"size\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n <ion-header class=\"modal-header\">\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container\n *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"\n ></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n </ion-content>\n <ng-content select=\"[footer]\"></ng-content>\n </ng-template>\n</ion-modal>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"_closeModal()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonModal, selector: "ion-modal" }] }); }
49
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalV2Component, selector: "kirby-modal-v2", inputs: { flavor: "flavor", open: "open", canDismiss: "canDismiss", title: "title", hasCollapsibleTitle: "hasCollapsibleTitle", scrollDisabled: "scrollDisabled", breakpoints: "breakpoints", initialBreakpoint: "initialBreakpoint", size: "size", height: "height" }, outputs: { willPresent: "willPresent", didPresent: "didPresent", didDismiss: "didDismiss", willDismiss: "willDismiss" }, viewQueries: [{ propertyName: "modal", first: true, predicate: IonModal, descendants: true }, { propertyName: "modalElement", first: true, predicate: IonModal, descendants: true, read: ElementRef, static: true }, { propertyName: "ionContent", first: true, predicate: IonContent, descendants: true }], ngImport: i0, template: "<ion-modal\n class=\"kirby-modal-v2\"\n [isOpen]=\"open\"\n [breakpoints]=\"flavor === 'drawer' ? breakpoints : undefined\"\n [initialBreakpoint]=\"flavor === 'drawer' ? initialBreakpoint : undefined\"\n [handle]=\"false\"\n [canDismiss]=\"canDismiss\"\n [ngClass]=\"size\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n <ion-header class=\"modal-header\">\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container\n *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"\n ></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n </ion-content>\n <ng-content select=\"[footer]\"></ng-content>\n </ng-template>\n</ion-modal>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"_closeModal()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i4.IonModal, selector: "ion-modal" }] }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalV2Component, decorators: [{
52
52
  type: Component,
53
- args: [{ selector: 'kirby-modal-v2', template: "<ion-modal\n class=\"kirby-modal-v2\"\n [isOpen]=\"open\"\n [breakpoints]=\"flavor === 'drawer' ? breakpoints : undefined\"\n [initialBreakpoint]=\"flavor === 'drawer' ? initialBreakpoint : undefined\"\n [handle]=\"false\"\n [canDismiss]=\"canDismiss\"\n [ngClass]=\"size\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n <ion-header class=\"modal-header\">\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container\n *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"\n ></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n </ion-content>\n <ng-content select=\"[footer]\"></ng-content>\n </ng-template>\n</ion-modal>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"_closeModal()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"] }]
53
+ args: [{ selector: 'kirby-modal-v2', template: "<ion-modal\n class=\"kirby-modal-v2\"\n [isOpen]=\"open\"\n [breakpoints]=\"flavor === 'drawer' ? breakpoints : undefined\"\n [initialBreakpoint]=\"flavor === 'drawer' ? initialBreakpoint : undefined\"\n [handle]=\"false\"\n [canDismiss]=\"canDismiss\"\n [ngClass]=\"size\"\n (willPresent)=\"_onWillPresent($event)\"\n (didPresent)=\"_onDidPresent($event)\"\n (willDismiss)=\"_onWillDismiss($event)\"\n (didDismiss)=\"_onDidDismiss($event)\"\n>\n <ng-template>\n <ion-header class=\"modal-header\">\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container\n *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"\n ></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n </ion-content>\n <ng-content select=\"[footer]\"></ng-content>\n </ng-template>\n</ion-modal>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"_closeModal()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"] }]
54
54
  }], propDecorators: { modal: [{
55
55
  type: ViewChild,
56
56
  args: [IonModal]
@@ -19,11 +19,11 @@ export class ModalV2WrapperComponent {
19
19
  this.ionModalElement.dismiss();
20
20
  }
21
21
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalV2WrapperComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
22
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalV2WrapperComponent, selector: "kirby-modal-v2-wrapper", inputs: { flavor: "flavor", title: "title", hasCollapsibleTitle: "hasCollapsibleTitle", scrollDisabled: "scrollDisabled" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n</ion-content>\n<ng-content select=\"[footer]\"></ng-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{height:100%;display:flex;flex-direction:column;--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kirby-button],Button[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
22
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ModalV2WrapperComponent, selector: "kirby-modal-v2-wrapper", inputs: { flavor: "flavor", title: "title", hasCollapsibleTitle: "hasCollapsibleTitle", scrollDisabled: "scrollDisabled" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n</ion-content>\n<ng-content select=\"[footer]\"></ng-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{height:100%;display:flex;flex-direction:column;--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "kirby-icon", inputs: ["size", "name", "customName"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kirby-button],Button[kirby-button],a[kirby-button]", inputs: ["attentionLevel", "noDecoration", "themeColor", "expand", "isFloating", "size", "showIconOnly"] }, { kind: "component", type: i4.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i4.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i4.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i4.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i4.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }] }); }
23
23
  }
24
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ModalV2WrapperComponent, decorators: [{
25
25
  type: Component,
26
- args: [{ selector: 'kirby-modal-v2-wrapper', template: "<ion-header>\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n</ion-content>\n<ng-content select=\"[footer]\"></ng-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{height:100%;display:flex;flex-direction:column;--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"] }]
26
+ args: [{ selector: 'kirby-modal-v2-wrapper', template: "<ion-header>\n <ion-toolbar>\n <ng-content select=\"[header-start]\"></ng-content>\n <ion-buttons slot=\"start\" *ngIf=\"flavor === 'drawer'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'arrow-down' }\"></ng-container>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'modal'\">\n <ng-container *ngTemplateOutlet=\"closeButton; context: { icon: 'close' }\"></ng-container>\n </ion-buttons>\n <ion-buttons slot=\"end\" *ngIf=\"flavor === 'drawer'\">\n <ng-content select=\"[drawer-supplementary-action]\"></ng-content>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content [scrollEvents]=\"true\" [scrollY]=\"!scrollDisabled\">\n <ion-header *ngIf=\"hasCollapsibleTitle\" collapse=\"condense\">\n <ion-toolbar>\n <span class=\"kirby-text-large\">{{ title }}</span>\n </ion-toolbar>\n </ion-header>\n <ng-container>\n <ng-content></ng-content>\n </ng-container>\n</ion-content>\n<ng-content select=\"[footer]\"></ng-content>\n\n<ng-template #closeButton let-icon=\"icon\">\n <button kirby-button attentionLevel=\"1\" size=\"md\" (click)=\"close()\">\n <kirby-icon [name]=\"icon\"></kirby-icon>\n </button>\n</ng-template>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}ion-header{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);box-sizing:border-box}ion-header ion-toolbar{--padding-start: 16px;--padding-end: 16px;--padding-bottom: 12px;--padding-top: 12px;--border-width: 0;--background: transparent}ion-header ion-toolbar button{background-color:var(--kirby-white)}ion-header.modal-header{border-bottom:1px solid var(--kirby-medium)}@media (min-width: 768px){ion-header ion-toolbar{--padding-start: 24px;--padding-end: 24px;--padding-bottom: 24px;--padding-top: 24px}}:host{height:100%;display:flex;flex-direction:column;--vh100: var(--vh, 1vh) * 100;--header-height: 0px;--footer-height: 0px}ion-title{box-sizing:border-box;padding-inline:calc(48px + var(--padding-start)) calc(48px + var(--padding-end))}ion-content{--background: transparent;--color: var(--kirby-modal-color, var(--kirby-black));--padding-top: 24px;--padding-bottom: 24px;--padding-start: 16px;--padding-end: 16px;display:flex;flex-direction:column}ion-content ::ng-deep>*{box-sizing:border-box;display:block}@media (min-width: 768px){ion-content{--padding-top: 40px;--padding-bottom: 40px;--padding-start: 48px;--padding-end: 48px}}:host(.collapsible-title) ion-content{--padding-top: 0px}:host(.collapsible-title) ion-content ion-header ion-toolbar:first-of-type{padding-top:0;--padding-top: 0px;--padding-bottom: 0px;--padding-start: 0px;--padding-end: 0px}:host(.collapsible-title) ion-title{font-size:16px;font-weight:700}\n"] }]
27
27
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { flavor: [{
28
28
  type: Input
29
29
  }], title: [{
@@ -20,11 +20,11 @@ export class PageFooterComponent {
20
20
  this.pageComponent.tabBarBottomHidden = false;
21
21
  }
22
22
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageFooterComponent, deps: [{ token: i1.PageComponent, optional: true, skipSelf: true }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
23
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PageFooterComponent, selector: "kirby-page-footer", inputs: { hasPadding: "hasPadding" }, ngImport: i0, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PageFooterComponent, selector: "kirby-page-footer", inputs: { hasPadding: "hasPadding" }, ngImport: i0, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
24
  }
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PageFooterComponent, decorators: [{
26
26
  type: Component,
27
- args: [{ selector: 'kirby-page-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: [":host,:root{--kirby-white-overlay: hsl(0deg 0% 100% / 15%);--kirby-white-overlay-10: hsl(0deg 0% 100% / 10%);--kirby-white-overlay-20: hsl(0deg 0% 100% / 20%);--kirby-white-overlay-30: hsl(0deg 0% 100% / 30%);--kirby-white-overlay-40: hsl(0deg 0% 100% / 40%);--kirby-white-overlay-50: hsl(0deg 0% 100% / 50%);--kirby-dark-overlay: hsl(0deg 0% 11% / 6%);--kirby-dark-overlay-10: hsl(0deg 0% 11% / 10%);--kirby-dark-overlay-20: hsl(0deg 0% 11% / 20%);--kirby-dark-overlay-30: hsl(0deg 0% 11% / 30%);--kirby-dark-overlay-40: hsl(0deg 0% 11% / 40%);--kirby-dark-overlay-50: hsl(0deg 0% 11% / 50%);--kirby-white: hsl(0deg 0% 100%);--kirby-black: hsl(0deg 0% 11%);--kirby-semi-dark: hsl(0deg 0% 56%);--kirby-elevation-2: 0 1px 24px 0 rgb(28 28 28 / 4%);--kirby-elevation-4: 0 20px 30px -15px hsla(0deg 0% 11% 30%), 0 0 5px 0 hsla(0deg 0% 11% 8%)}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"] }]
27
+ args: [{ selector: 'kirby-page-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"wrapper\" [class.padding]=\"hasPadding\">\n <ng-content></ng-content>\n</div>\n", styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block;background-color:var(--kirby-white);--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}:host .wrapper{position:relative;max-width:var(--page-content-max-width, 792px);margin:0 auto;padding-bottom:var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom))}:host .wrapper.padding{padding:8px 16px;padding-bottom:calc(8px + var(--kirby-page-footer-safe-area-bottom, var(--kirby-safe-area-bottom)))}\n"] }]
28
28
  }], ctorParameters: () => [{ type: i1.PageComponent, decorators: [{
29
29
  type: Optional
30
30
  }, {