@indice/ng-components 0.2.167 → 0.2.169

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 (111) hide show
  1. package/README.md +4 -4
  2. package/{_styles.css → _styles.scss} +4249 -4273
  3. package/esm2020/lib/controls/advanced-search/advanced-search.component.mjs +13 -7
  4. package/esm2020/lib/controls/advanced-search/models.mjs +1 -1
  5. package/esm2020/lib/controls/avatar-initials/avatar-initials.component.mjs +5 -5
  6. package/esm2020/lib/controls/breadcrumb/breadcrumb-item.mjs +14 -0
  7. package/esm2020/lib/controls/breadcrumb/breadcrumb.component.mjs +26 -0
  8. package/esm2020/lib/controls/collapsible-panel/collapsible-panel.component.mjs +5 -5
  9. package/esm2020/lib/controls/combobox/combobox.component.mjs +33 -13
  10. package/esm2020/lib/controls/date-picker/date-picker.component.mjs +6 -6
  11. package/esm2020/lib/controls/drop-down-menu/drop-down-menu.component.mjs +9 -5
  12. package/esm2020/lib/controls/kpi-tile/kpi-tile.component.mjs +9 -5
  13. package/esm2020/lib/controls/language-selection/language-selection.component.mjs +5 -5
  14. package/esm2020/lib/controls/list-view/list-column.component.mjs +4 -4
  15. package/esm2020/lib/controls/list-view/list-details-section.component.mjs +4 -4
  16. package/esm2020/lib/controls/list-view/list-tile.component.mjs +4 -4
  17. package/esm2020/lib/controls/list-view/list-view-empty-state.component.mjs +5 -5
  18. package/esm2020/lib/controls/list-view/list-view.component.mjs +8 -8
  19. package/esm2020/lib/controls/nav-links-list/nav-links-list.component.mjs +13 -5
  20. package/esm2020/lib/controls/notifications-indicator/notifications-indicator.component.mjs +5 -5
  21. package/esm2020/lib/controls/pager/pager.component.mjs +5 -5
  22. package/esm2020/lib/controls/side-pane/side-pane.component.mjs +5 -5
  23. package/esm2020/lib/controls/skeleton-loader/skeleton-loader.component.mjs +5 -5
  24. package/esm2020/lib/controls/stepper/lib-step-info.directive.mjs +4 -4
  25. package/esm2020/lib/controls/stepper/lib-step-label.directive.mjs +5 -5
  26. package/esm2020/lib/controls/stepper/lib-step.component.mjs +11 -11
  27. package/esm2020/lib/controls/stepper/lib-stepper.component.mjs +6 -6
  28. package/esm2020/lib/controls/stepper/types/step-selected-event.mjs +1 -1
  29. package/esm2020/lib/controls/stepper/types/stepper-type.mjs +1 -1
  30. package/esm2020/lib/controls/tabs/lib-tab-group.component.mjs +20 -14
  31. package/esm2020/lib/controls/tabs/lib-tab-label.directive.mjs +16 -0
  32. package/esm2020/lib/controls/tabs/lib-tab.component.mjs +21 -14
  33. package/esm2020/lib/controls/toaster/toaster-container.component.mjs +5 -5
  34. package/esm2020/lib/controls/toaster/toaster.component.mjs +5 -5
  35. package/esm2020/lib/controls/toggle/toggle.component.mjs +6 -6
  36. package/esm2020/lib/controls/toggle-button/toggle-button.component.mjs +87 -0
  37. package/esm2020/lib/controls/toggle-buttons-list/toggle-buttons-list.component.mjs +31 -0
  38. package/esm2020/lib/controls/user-profile-menu/user-profile-menu.component.mjs +5 -5
  39. package/esm2020/lib/directives/click-outside.directive.mjs +4 -4
  40. package/esm2020/lib/directives/dynamic-component-host.directive.mjs +4 -4
  41. package/esm2020/lib/helpers/base-list.component.mjs +4 -4
  42. package/esm2020/lib/icons.mjs +4 -2
  43. package/esm2020/lib/layouts/shell/shell-footer/shell-footer.component.mjs +5 -5
  44. package/esm2020/lib/layouts/shell/shell-header/shell-header.component.mjs +8 -8
  45. package/esm2020/lib/layouts/shell/shell-layout/shell-layout.component.mjs +41 -52
  46. package/esm2020/lib/layouts/shell/shell-sidebar/shell-sidebar.component.mjs +15 -8
  47. package/esm2020/lib/layouts/shell/shell-sidebar-header/shell-sidebar-header.component.mjs +7 -7
  48. package/esm2020/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.mjs +19 -14
  49. package/esm2020/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.mjs +8 -9
  50. package/esm2020/lib/layouts/views/form-layout/form-layout.component.mjs +5 -5
  51. package/esm2020/lib/layouts/views/model-view-layout/model-view-layout.component.mjs +14 -5
  52. package/esm2020/lib/layouts/views/side-view-layout/side-view-layout.component.mjs +5 -5
  53. package/esm2020/lib/layouts/views/view-layout/view-layout.component.mjs +5 -5
  54. package/esm2020/lib/ng-components.module.mjs +112 -107
  55. package/esm2020/lib/pages/auth/auth-callback/auth-callback.component.mjs +4 -4
  56. package/esm2020/lib/pages/auth/auth-renew/auth-renew.component.mjs +4 -4
  57. package/esm2020/lib/pages/auth/logged-out/logged-out.component.mjs +4 -4
  58. package/esm2020/lib/pages/http-status/error/error.component.mjs +5 -5
  59. package/esm2020/lib/pages/http-status/page-not-found/page-not-found.component.mjs +5 -5
  60. package/esm2020/lib/pages/http-status/unauthorized/unauthorized.component.mjs +5 -5
  61. package/esm2020/lib/pipes/address.pipe.mjs +4 -4
  62. package/esm2020/lib/pipes/duration-format.pipe.mjs +4 -4
  63. package/esm2020/lib/services/breadcrumb.service.mjs +174 -0
  64. package/esm2020/lib/services/component-loader/component-loader-options.class.mjs +1 -1
  65. package/esm2020/lib/services/component-loader/component-loader.class.mjs +2 -2
  66. package/esm2020/lib/services/component-loader/component-loader.factory.mjs +4 -4
  67. package/esm2020/lib/services/component-loader/content-ref.class.mjs +1 -1
  68. package/esm2020/lib/services/modal-service/modal-backdrop-component.mjs +4 -4
  69. package/esm2020/lib/services/modal-service/modal-container-component.mjs +15 -15
  70. package/esm2020/lib/services/modal-service/modal-options.class.mjs +4 -4
  71. package/esm2020/lib/services/modal-service/modal-service.mjs +4 -4
  72. package/esm2020/lib/services/modal-service/modal-styles.class.mjs +1 -1
  73. package/esm2020/lib/services/modal-service/modal.class.mjs +4 -4
  74. package/esm2020/lib/services/toaster.service.mjs +10 -8
  75. package/esm2020/lib/services/user-settings.service.mjs +35 -0
  76. package/esm2020/lib/services/utilities.service.mjs +47 -0
  77. package/esm2020/lib/tokens.mjs +1 -1
  78. package/esm2020/lib/types.mjs +12 -9
  79. package/esm2020/public-api.mjs +8 -1
  80. package/fesm2015/indice-ng-components.mjs +978 -496
  81. package/fesm2015/indice-ng-components.mjs.map +1 -1
  82. package/fesm2020/indice-ng-components.mjs +970 -501
  83. package/fesm2020/indice-ng-components.mjs.map +1 -1
  84. package/lib/controls/breadcrumb/breadcrumb-item.d.ts +7 -0
  85. package/lib/controls/breadcrumb/breadcrumb.component.d.ts +12 -0
  86. package/lib/controls/combobox/combobox.component.d.ts +10 -5
  87. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +3 -2
  88. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +2 -1
  89. package/lib/controls/list-view/list-view.component.d.ts +1 -1
  90. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +3 -1
  91. package/lib/controls/pager/pager.component.d.ts +1 -1
  92. package/lib/controls/tabs/lib-tab-group.component.d.ts +3 -3
  93. package/lib/controls/tabs/lib-tab-label.directive.d.ts +8 -0
  94. package/lib/controls/tabs/lib-tab.component.d.ts +8 -6
  95. package/lib/controls/toggle-button/toggle-button.component.d.ts +25 -0
  96. package/lib/controls/toggle-buttons-list/toggle-buttons-list.component.d.ts +14 -0
  97. package/lib/icons.d.ts +2 -0
  98. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +10 -13
  99. package/lib/layouts/shell/shell-sidebar/shell-sidebar.component.d.ts +5 -3
  100. package/lib/layouts/shell/shell-sidebar-layout/shell-sidebar-layout.component.d.ts +6 -3
  101. package/lib/layouts/shell/shell-stacked-layout/shell-stacked-layout.component.d.ts +1 -1
  102. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +5 -2
  103. package/lib/ng-components.module.d.ts +57 -53
  104. package/lib/services/breadcrumb.service.d.ts +29 -0
  105. package/lib/services/toaster.service.d.ts +2 -2
  106. package/lib/services/user-settings.service.d.ts +13 -0
  107. package/lib/services/utilities.service.d.ts +11 -0
  108. package/lib/types.d.ts +16 -12
  109. package/modal.css +157 -157
  110. package/package.json +1 -1
  111. package/public-api.d.ts +7 -0
@@ -84,15 +84,15 @@ export class LibStepperComponent {
84
84
  this._currentStepIndex = newIndex;
85
85
  }
86
86
  }
87
- LibStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: LibStepperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
88
- LibStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: LibStepperComponent, selector: "lib-stepper", inputs: { linear: "linear", type: "type" }, outputs: { stepChanged: "stepChanged", completed: "completed" }, providers: [
87
+ LibStepperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: LibStepperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
88
+ LibStepperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: LibStepperComponent, selector: "lib-stepper", inputs: { linear: "linear", type: "type" }, outputs: { stepChanged: "stepChanged", completed: "completed" }, providers: [
89
89
  { provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
90
- ], queries: [{ propertyName: "steps", predicate: LibStepComponent, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- Bullets -->\n <nav class=\"stepper-bullets-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Bullets\">\n <p class=\"stepper-bullets-counter\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\n <ol role=\"list\" class=\"stepper-bullets-ol\">\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\n <!-- Completed Step -->\n <div class=\"stepper-bullets-completed-step\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"sr-only\">Step {{ step.index }}</span>\n </div>\n <!-- Active Step -->\n <div class=\"stepper-bullets-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"stepper-bullets-active-step-level1\" aria-hidden=\"true\">\n <span class=\"stepper-bullets-active-step-level1\"></span>\n </span>\n <span class=\"stepper-bullets-active-step-bullet\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Step {{ step.index }}</span>\n </div>\n <!-- Upcoming Step -->\n <div href=\"#\" class=\"stepper-bullets-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\n <span class=\"sr-only\">Step {{ step.index }}</span>\n </div>\n </li>\n </ol>\n </nav>\n <!-- Bullets & Text -->\n <div class=\"stepper-bullets-and-text-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.BulletsAndText\">\n <nav aria-label=\"Progress\">\n <ol role=\"list\" class=\"stepper-bullets-and-text-ol\">\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\n <!-- Complete Step -->\n <div class=\"group\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"stepper-bullets-and-text-completed-step\">\n <span class=\"stepper-bullets-and-text-completed-step-level1\">\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <span class=\"stepper-bullets-and-text-completed-step-container\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </span>\n </div>\n <!-- Active Step -->\n <div class=\"stepper-bullets-and-text-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"stepper-bullets-and-text-active-step-level1\" aria-hidden=\"true\">\n <span class=\"stepper-bullets-and-text-active-step-level11\"></span>\n <span class=\"stepper-bullets-and-text-active-step-level12\"></span>\n </span>\n <span class=\"stepper-bullets-and-text-active-step-container\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Upcoming Step -->\n <div class=\"group\" *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"stepper-bullets-and-text-upcoming-step\">\n <div class=\"stepper-bullets-and-text-upcoming-step-level1\" aria-hidden=\"true\">\n <div class=\"stepper-bullets-and-text-upcoming-step-level2\"></div>\n </div>\n <p class=\"stepper-bullets-and-text-upcoming-step-container\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </p>\n </div>\n </div>\n </li>\n </ol>\n </nav>\n </div>\n <!-- Circles -->\n <nav class=\"flex justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Circles\">\n <ol class=\"flex items-center\" role=\"list\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pr-8 sm:pr-20 cursor-pointer\">\n <!-- Completed Step -->\n <ng-container *ngIf=\"step.state === StepState.Completed\">\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\n </div>\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\n </div>\n </ng-container>\n <!-- Active Step -->\n <ng-container *ngIf=\"step.state === StepState.Active\">\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\n </div>\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\" aria-current=\"step\">\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\n </div>\n </ng-container>\n <!-- Upcoming Step -->\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\n </div>\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\n </div>\n </ng-container>\n </li>\n </ol>\n </nav>\n <!-- Circles With Text -->\n <nav class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.CirclesWithText\">\n <ol role=\"list\" class=\"overflow-hidden\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pb-10 cursor-pointer\">\n <!-- Complete Step -->\n <ng-container *ngIf=\"step.state === StepState.Completed\">\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\n <div class=\"relative flex items-start group\">\n <span class=\"h-9 flex items-center\">\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n </span>\n <span class=\"ml-4 min-w-0 flex flex-col\">\n <span class=\"text-xs font-semibold tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </div>\n </ng-container>\n <!-- Active Step -->\n <ng-container *ngIf=\"step.state === StepState.Active\">\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\n <div class=\"relative flex items-start group\" aria-current=\"step\">\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\n </span>\n </span>\n <span class=\"ml-4 min-w-0 flex flex-col\">\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </div>\n </ng-container>\n <!-- Upcoming Step -->\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\n <div href=\"#\" class=\"relative flex items-start group\">\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\n </span>\n </span>\n <span class=\"ml-4 min-w-0 flex flex-col\">\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </div>\n </ng-container>\n </li>\n </ol>\n </nav>\n <!-- Panels -->\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Panels\">\n <ol role=\"list\" class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative md:flex-1 md:flex cursor-pointer\">\n <!-- Completed step -->\n <div class=\"group flex items-center w-full\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <span class=\"ml-4 text-sm font-medium text-gray-900\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </span>\n </div>\n <!-- Active step -->\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\n </span>\n <span class=\"ml-4 text-sm font-medium text-blue-600\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Upcoming step -->\n <div class=\"group flex items-center\" *ngIf=\"step.state === StepState.Upcoming\">\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\n </span>\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </span>\n </div>\n <!-- Arrow separator for lg screens and up -->\n <div *ngIf=\"!step.isLast\" class=\"hidden md:block absolute top-0 right-0 h-full w-5\" aria-hidden=\"true\">\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 22 80\" fill=\"none\" preserveAspectRatio=\"none\">\n <path d=\"M0 -2L20 40L0 82\" vector-effect=\"non-scaling-stroke\" stroke=\"currentcolor\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n </li>\n </ol>\n </nav>\n <!-- Panels With Border -->\n <div class=\"panels-with-border-container\" *ngSwitchCase=\"StepperType.PanelsWithBorder\">\n <nav class=\"panels-with-border-nav\" aria-label=\"Progress\">\n <ol role=\"list\" class=\"panels-with-border-ol\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"panels-with-border-li\">\n <!-- Completed Step -->\n <div class=\"panels-with-border-completed-step\" *ngIf=\"step.state === StepState.Completed\">\n <div class=\"group\">\n <span class=\"panels-with-border-completed-step-level1\" aria-hidden=\"true\"></span>\n <span class=\"panels-with-border-completed-step-level2\">\n <span class=\"panels-with-border-completed-step-level21\">\n <span class=\"panels-with-border-completed-step-level211\">\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n </span>\n <span class=\"panels-with-border-completed-step-level22\">\n <span class=\"panels-with-border-completed-step-level221\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"panels-with-border-completed-step-level222\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </span>\n </div>\n </div>\n <!-- Active Step -->\n <div class=\"panels-with-border-active-step\" *ngIf=\"step.state === StepState.Active\">\n <div aria-current=\"step\">\n <span class=\"panels-with-border-active-step-level1\" aria-hidden=\"true\"></span>\n <span class=\"panels-with-border-active-step-level2\">\n <span class=\"panels-with-border-active-step-level21\">\n <span class=\"panels-with-border-active-step-level211\">\n <span class=\"panels-with-border-active-step-level211-text\">{{ step.index + 1 }}</span>\n </span>\n </span>\n <span class=\"panels-with-border-active-step-level22\">\n <span class=\"panels-with-border-active-step-level221\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"panels-with-border-active-step-level222\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </span>\n </div>\n <!-- Separator -->\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\n </svg>\n </div>\n </div>\n <!-- Upcoming Step -->\n <div class=\"panels-with-border-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"group\">\n <span class=\"panels-with-border-upcoming-step-level1\" aria-hidden=\"true\"></span>\n <span class=\"panels-with-border-upcoming-step-level2\">\n <span class=\"panels-with-border-upcoming-step-level21\">\n <span class=\"panels-with-border-upcoming-step-level211\">\n <span class=\"panels-with-border-upcoming-step-level211-text\">{{ step.index + 1 }}</span>\n </span>\n </span>\n <span class=\"panels-with-border-upcoming-step-level22\">\n <span class=\"panels-with-border-upcoming-step-level221\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </span>\n </div>\n <!-- Separator -->\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\n </svg>\n </div>\n </div>\n </li>\n </ol>\n </nav>\n </div>\n <!-- Progress -->\n <div *ngSwitchCase=\"StepperType.Progress\">\n <div class=\"mt-6\" aria-hidden=\"true\">\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\n <div class=\"h-2 bg-blue-600 rounded-full\" [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\"></div>\n </div>\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\n <div *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"text-blue-600 cursor-pointer\">\n <ng-container *ngIf=\"step.stepLabel\" [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n <!-- Simple -->\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Simple\">\n <ol role=\"list\" class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"md:flex-1 cursor-pointer\">\n <!-- Completed Step -->\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Active Step -->\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Upcoming Step -->\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Upcoming\">\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n </li>\n </ol>\n </nav>\n</ng-container>\n<ng-container *ngFor=\"let step of steps\">\n <ng-container *ngIf=\"step.state === StepState.Active\" [ngTemplateOutlet]=\"step.content\"></ng-container>\n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: LibStepperComponent, decorators: [{
90
+ ], queries: [{ propertyName: "steps", predicate: LibStepComponent, descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- Bullets -->\r\n <nav class=\"stepper-bullets-container\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Bullets\">\r\n <p class=\"stepper-bullets-counter\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\r\n <ol role=\"list\"\r\n class=\"stepper-bullets-ol\">\r\n <li class=\"cursor-pointer\"\r\n *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\">\r\n <!-- Completed Step -->\r\n <div class=\"stepper-bullets-completed-step\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-active-step\"\r\n aria-current=\"step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-active-step-level1\"\r\n aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-active-step-level1\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-active-step-bullet\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div href=\"#\"\r\n class=\"stepper-bullets-upcoming-step\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Bullets & Text -->\r\n <div class=\"stepper-bullets-and-text-container\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.BulletsAndText\">\r\n <nav aria-label=\"Progress\">\r\n <ol role=\"list\"\r\n class=\"stepper-bullets-and-text-ol\">\r\n <li class=\"cursor-pointer\"\r\n *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\">\r\n <!-- Complete Step -->\r\n <div class=\"group\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"stepper-bullets-and-text-completed-step\">\r\n <span class=\"stepper-bullets-and-text-completed-step-level1\">\r\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-completed-step-container\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-and-text-active-step\"\r\n aria-current=\"step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-and-text-active-step-level1\"\r\n aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-and-text-active-step-level11\"></span>\r\n <span class=\"stepper-bullets-and-text-active-step-level12\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-active-step-container\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level1\"\r\n aria-hidden=\"true\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level2\"></div>\r\n </div>\r\n <p class=\"stepper-bullets-and-text-upcoming-step-container\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Circles -->\r\n <nav class=\"flex justify-center\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Circles\">\r\n <ol class=\"flex items-center\"\r\n role=\"list\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"relative pr-8 sm:pr-20 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"absolute inset-0 flex items-center\"\r\n aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\r\n <svg class=\"w-5 h-5 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"absolute inset-0 flex items-center\"\r\n aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\"\r\n aria-current=\"step\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"\r\n aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"absolute inset-0 flex items-center\"\r\n aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"\r\n aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Circles With Text -->\r\n <nav class=\"flex items-center justify-center\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.CirclesWithText\">\r\n <ol role=\"list\"\r\n class=\"overflow-hidden\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"relative pb-10 cursor-pointer\">\r\n <!-- Complete Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-5 h-5 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\"\r\n aria-current=\"step\">\r\n <span class=\"h-9 flex items-center\"\r\n aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"!step.isLast\"></div>\r\n <div href=\"#\"\r\n class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\"\r\n aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels -->\r\n <nav aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Panels\">\r\n <ol role=\"list\"\r\n class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"relative md:flex-1 md:flex cursor-pointer\">\r\n <!-- Completed step -->\r\n <div class=\"group flex items-center w-full\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-6 h-6 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-900\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active step -->\r\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\r\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-blue-600\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming step -->\r\n <div class=\"group flex items-center\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Arrow separator for lg screens and up -->\r\n <div *ngIf=\"!step.isLast\"\r\n class=\"hidden md:block absolute top-0 right-0 h-full w-5\"\r\n aria-hidden=\"true\">\r\n <svg class=\"h-full w-full text-gray-300\"\r\n viewBox=\"0 0 22 80\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"none\">\r\n <path d=\"M0 -2L20 40L0 82\"\r\n vector-effect=\"non-scaling-stroke\"\r\n stroke=\"currentcolor\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels With Border -->\r\n <div class=\"panels-with-border-container\"\r\n *ngSwitchCase=\"StepperType.PanelsWithBorder\">\r\n <nav class=\"panels-with-border-nav\"\r\n aria-label=\"Progress\">\r\n <ol role=\"list\"\r\n class=\"panels-with-border-ol\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"panels-with-border-li\">\r\n <!-- Completed Step -->\r\n <div class=\"panels-with-border-completed-step\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-completed-step-level1\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level2\">\r\n <span class=\"panels-with-border-completed-step-level21\">\r\n <span class=\"panels-with-border-completed-step-level211\">\r\n <svg class=\"w-6 h-6 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level22\">\r\n <span class=\"panels-with-border-completed-step-level221\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level222\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"panels-with-border-active-step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <div aria-current=\"step\">\r\n <span class=\"panels-with-border-active-step-level1\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"panels-with-border-active-step-level2\">\r\n <span class=\"panels-with-border-active-step-level21\">\r\n <span class=\"panels-with-border-active-step-level211\">\r\n <span class=\"panels-with-border-active-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level22\">\r\n <span class=\"panels-with-border-active-step-level221\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level222\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\"\r\n viewBox=\"0 0 12 82\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\"\r\n stroke=\"currentcolor\"\r\n vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"panels-with-border-upcoming-step\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-upcoming-step-level1\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"panels-with-border-upcoming-step-level2\">\r\n <span class=\"panels-with-border-upcoming-step-level21\">\r\n <span class=\"panels-with-border-upcoming-step-level211\">\r\n <span class=\"panels-with-border-upcoming-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-upcoming-step-level22\">\r\n <span class=\"panels-with-border-upcoming-step-level221\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\"\r\n viewBox=\"0 0 12 82\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\"\r\n stroke=\"currentcolor\"\r\n vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Progress -->\r\n <div *ngSwitchCase=\"StepperType.Progress\">\r\n <div class=\"mt-6\"\r\n aria-hidden=\"true\">\r\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\r\n <div class=\"h-2 bg-blue-600 rounded-full\"\r\n [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\">\r\n </div>\r\n </div>\r\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\r\n <div *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"text-blue-600 cursor-pointer\">\r\n <ng-container *ngIf=\"step.stepLabel\"\r\n [ngTemplateOutlet]=\"step.stepLabel.template\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Simple -->\r\n <nav aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Simple\">\r\n <ol role=\"list\"\r\n class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"md:flex-1 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\"\r\n aria-current=\"step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n</ng-container>\r\n<ng-container *ngFor=\"let step of steps\">\r\n <ng-container *ngIf=\"step.state === StepState.Active\"\r\n [ngTemplateOutlet]=\"step.content\">\r\n </ng-container>\r\n</ng-container>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }] });
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: LibStepperComponent, decorators: [{
92
92
  type: Component,
93
93
  args: [{ selector: 'lib-stepper', providers: [
94
94
  { provide: LIBSTEPPER_ACCESSOR, useExisting: forwardRef(() => LibStepperComponent) }
95
- ], template: "<ng-container [ngSwitch]=\"type\">\n <!-- Bullets -->\n <nav class=\"stepper-bullets-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Bullets\">\n <p class=\"stepper-bullets-counter\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\n <ol role=\"list\" class=\"stepper-bullets-ol\">\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\n <!-- Completed Step -->\n <div class=\"stepper-bullets-completed-step\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"sr-only\">Step {{ step.index }}</span>\n </div>\n <!-- Active Step -->\n <div class=\"stepper-bullets-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"stepper-bullets-active-step-level1\" aria-hidden=\"true\">\n <span class=\"stepper-bullets-active-step-level1\"></span>\n </span>\n <span class=\"stepper-bullets-active-step-bullet\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Step {{ step.index }}</span>\n </div>\n <!-- Upcoming Step -->\n <div href=\"#\" class=\"stepper-bullets-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\n <span class=\"sr-only\">Step {{ step.index }}</span>\n </div>\n </li>\n </ol>\n </nav>\n <!-- Bullets & Text -->\n <div class=\"stepper-bullets-and-text-container\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.BulletsAndText\">\n <nav aria-label=\"Progress\">\n <ol role=\"list\" class=\"stepper-bullets-and-text-ol\">\n <li class=\"cursor-pointer\" *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\">\n <!-- Complete Step -->\n <div class=\"group\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"stepper-bullets-and-text-completed-step\">\n <span class=\"stepper-bullets-and-text-completed-step-level1\">\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <span class=\"stepper-bullets-and-text-completed-step-container\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </span>\n </div>\n <!-- Active Step -->\n <div class=\"stepper-bullets-and-text-active-step\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"stepper-bullets-and-text-active-step-level1\" aria-hidden=\"true\">\n <span class=\"stepper-bullets-and-text-active-step-level11\"></span>\n <span class=\"stepper-bullets-and-text-active-step-level12\"></span>\n </span>\n <span class=\"stepper-bullets-and-text-active-step-container\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Upcoming Step -->\n <div class=\"group\" *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"stepper-bullets-and-text-upcoming-step\">\n <div class=\"stepper-bullets-and-text-upcoming-step-level1\" aria-hidden=\"true\">\n <div class=\"stepper-bullets-and-text-upcoming-step-level2\"></div>\n </div>\n <p class=\"stepper-bullets-and-text-upcoming-step-container\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </p>\n </div>\n </div>\n </li>\n </ol>\n </nav>\n </div>\n <!-- Circles -->\n <nav class=\"flex justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Circles\">\n <ol class=\"flex items-center\" role=\"list\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pr-8 sm:pr-20 cursor-pointer\">\n <!-- Completed Step -->\n <ng-container *ngIf=\"step.state === StepState.Completed\">\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\n </div>\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\n </div>\n </ng-container>\n <!-- Active Step -->\n <ng-container *ngIf=\"step.state === StepState.Active\">\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\n </div>\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\" aria-current=\"step\">\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\n </div>\n </ng-container>\n <!-- Upcoming Step -->\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"absolute inset-0 flex items-center\" aria-hidden=\"true\">\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\n </div>\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\" aria-hidden=\"true\"></span>\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\n </div>\n </ng-container>\n </li>\n </ol>\n </nav>\n <!-- Circles With Text -->\n <nav class=\"flex items-center justify-center\" aria-label=\"Progress\" *ngSwitchCase=\"StepperType.CirclesWithText\">\n <ol role=\"list\" class=\"overflow-hidden\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative pb-10 cursor-pointer\">\n <!-- Complete Step -->\n <ng-container *ngIf=\"step.state === StepState.Completed\">\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\n <div class=\"relative flex items-start group\">\n <span class=\"h-9 flex items-center\">\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\n <svg class=\"w-5 h-5 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n </span>\n <span class=\"ml-4 min-w-0 flex flex-col\">\n <span class=\"text-xs font-semibold tracking-wide uppercase\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </div>\n </ng-container>\n <!-- Active Step -->\n <ng-container *ngIf=\"step.state === StepState.Active\">\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\n <div class=\"relative flex items-start group\" aria-current=\"step\">\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\n </span>\n </span>\n <span class=\"ml-4 min-w-0 flex flex-col\">\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </div>\n </ng-container>\n <!-- Upcoming Step -->\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\" aria-hidden=\"true\" *ngIf=\"!step.isLast\"></div>\n <div href=\"#\" class=\"relative flex items-start group\">\n <span class=\"h-9 flex items-center\" aria-hidden=\"true\">\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\n </span>\n </span>\n <span class=\"ml-4 min-w-0 flex flex-col\">\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </div>\n </ng-container>\n </li>\n </ol>\n </nav>\n <!-- Panels -->\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Panels\">\n <ol role=\"list\" class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"relative md:flex-1 md:flex cursor-pointer\">\n <!-- Completed step -->\n <div class=\"group flex items-center w-full\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n <span class=\"ml-4 text-sm font-medium text-gray-900\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </span>\n </div>\n <!-- Active step -->\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\n </span>\n <span class=\"ml-4 text-sm font-medium text-blue-600\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Upcoming step -->\n <div class=\"group flex items-center\" *ngIf=\"step.state === StepState.Upcoming\">\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\n </span>\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </span>\n </div>\n <!-- Arrow separator for lg screens and up -->\n <div *ngIf=\"!step.isLast\" class=\"hidden md:block absolute top-0 right-0 h-full w-5\" aria-hidden=\"true\">\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 22 80\" fill=\"none\" preserveAspectRatio=\"none\">\n <path d=\"M0 -2L20 40L0 82\" vector-effect=\"non-scaling-stroke\" stroke=\"currentcolor\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n </li>\n </ol>\n </nav>\n <!-- Panels With Border -->\n <div class=\"panels-with-border-container\" *ngSwitchCase=\"StepperType.PanelsWithBorder\">\n <nav class=\"panels-with-border-nav\" aria-label=\"Progress\">\n <ol role=\"list\" class=\"panels-with-border-ol\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"panels-with-border-li\">\n <!-- Completed Step -->\n <div class=\"panels-with-border-completed-step\" *ngIf=\"step.state === StepState.Completed\">\n <div class=\"group\">\n <span class=\"panels-with-border-completed-step-level1\" aria-hidden=\"true\"></span>\n <span class=\"panels-with-border-completed-step-level2\">\n <span class=\"panels-with-border-completed-step-level21\">\n <span class=\"panels-with-border-completed-step-level211\">\n <svg class=\"w-6 h-6 text-white\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\n <path fill-rule=\"evenodd\" d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\" clip-rule=\"evenodd\" />\n </svg>\n </span>\n </span>\n <span class=\"panels-with-border-completed-step-level22\">\n <span class=\"panels-with-border-completed-step-level221\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"panels-with-border-completed-step-level222\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </span>\n </div>\n </div>\n <!-- Active Step -->\n <div class=\"panels-with-border-active-step\" *ngIf=\"step.state === StepState.Active\">\n <div aria-current=\"step\">\n <span class=\"panels-with-border-active-step-level1\" aria-hidden=\"true\"></span>\n <span class=\"panels-with-border-active-step-level2\">\n <span class=\"panels-with-border-active-step-level21\">\n <span class=\"panels-with-border-active-step-level211\">\n <span class=\"panels-with-border-active-step-level211-text\">{{ step.index + 1 }}</span>\n </span>\n </span>\n <span class=\"panels-with-border-active-step-level22\">\n <span class=\"panels-with-border-active-step-level221\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"panels-with-border-active-step-level222\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </span>\n </div>\n <!-- Separator -->\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\n </svg>\n </div>\n </div>\n <!-- Upcoming Step -->\n <div class=\"panels-with-border-upcoming-step\" *ngIf=\"step.state === StepState.Upcoming\">\n <div class=\"group\">\n <span class=\"panels-with-border-upcoming-step-level1\" aria-hidden=\"true\"></span>\n <span class=\"panels-with-border-upcoming-step-level2\">\n <span class=\"panels-with-border-upcoming-step-level21\">\n <span class=\"panels-with-border-upcoming-step-level211\">\n <span class=\"panels-with-border-upcoming-step-level211-text\">{{ step.index + 1 }}</span>\n </span>\n </span>\n <span class=\"panels-with-border-upcoming-step-level22\">\n <span class=\"panels-with-border-upcoming-step-level221\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n <span class=\"text-sm font-medium text-gray-500\" *ngIf=\"step.stepInfo\">\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\n </span>\n </span>\n </span>\n </div>\n <!-- Separator -->\n <div class=\"panels-with-border-step-separator\" aria-hidden=\"true\" *ngIf=\"step.index !== 0\">\n <svg class=\"h-full w-full text-gray-300\" viewBox=\"0 0 12 82\" fill=\"none\" preserveAspectRatio=\"none\">\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\" stroke=\"currentcolor\" vector-effect=\"non-scaling-stroke\" />\n </svg>\n </div>\n </div>\n </li>\n </ol>\n </nav>\n </div>\n <!-- Progress -->\n <div *ngSwitchCase=\"StepperType.Progress\">\n <div class=\"mt-6\" aria-hidden=\"true\">\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\n <div class=\"h-2 bg-blue-600 rounded-full\" [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\"></div>\n </div>\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\n <div *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"text-blue-600 cursor-pointer\">\n <ng-container *ngIf=\"step.stepLabel\" [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n <!-- Simple -->\n <nav aria-label=\"Progress\" *ngSwitchCase=\"StepperType.Simple\">\n <ol role=\"list\" class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\n <li *ngFor=\"let step of steps\" (click)=\"onSelectStep(step)\" class=\"md:flex-1 cursor-pointer\">\n <!-- Completed Step -->\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Completed\">\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Active Step -->\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" aria-current=\"step\" *ngIf=\"step.state === StepState.Active\">\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n <!-- Upcoming Step -->\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\" *ngIf=\"step.state === StepState.Upcoming\">\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\n <span class=\"text-sm font-medium\" *ngIf=\"step.stepLabel\">\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\n </span>\n </div>\n </li>\n </ol>\n </nav>\n</ng-container>\n<ng-container *ngFor=\"let step of steps\">\n <ng-container *ngIf=\"step.state === StepState.Active\" [ngTemplateOutlet]=\"step.content\"></ng-container>\n</ng-container>" }]
95
+ ], template: "<ng-container [ngSwitch]=\"type\">\r\n <!-- Bullets -->\r\n <nav class=\"stepper-bullets-container\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Bullets\">\r\n <p class=\"stepper-bullets-counter\">Step {{ currentStepIndex + 1 }} of {{ steps.length }}</p>\r\n <ol role=\"list\"\r\n class=\"stepper-bullets-ol\">\r\n <li class=\"cursor-pointer\"\r\n *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\">\r\n <!-- Completed Step -->\r\n <div class=\"stepper-bullets-completed-step\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-active-step\"\r\n aria-current=\"step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-active-step-level1\"\r\n aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-active-step-level1\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-active-step-bullet\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div href=\"#\"\r\n class=\"stepper-bullets-upcoming-step\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"sr-only\">Step {{ step.index }}</span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Bullets & Text -->\r\n <div class=\"stepper-bullets-and-text-container\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.BulletsAndText\">\r\n <nav aria-label=\"Progress\">\r\n <ol role=\"list\"\r\n class=\"stepper-bullets-and-text-ol\">\r\n <li class=\"cursor-pointer\"\r\n *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\">\r\n <!-- Complete Step -->\r\n <div class=\"group\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"stepper-bullets-and-text-completed-step\">\r\n <span class=\"stepper-bullets-and-text-completed-step-level1\">\r\n <svg class=\"h-full w-full text-blue-600 group-hover:text-blue-800\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-completed-step-container\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"stepper-bullets-and-text-active-step\"\r\n aria-current=\"step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"stepper-bullets-and-text-active-step-level1\"\r\n aria-hidden=\"true\">\r\n <span class=\"stepper-bullets-and-text-active-step-level11\"></span>\r\n <span class=\"stepper-bullets-and-text-active-step-level12\"></span>\r\n </span>\r\n <span class=\"stepper-bullets-and-text-active-step-container\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level1\"\r\n aria-hidden=\"true\">\r\n <div class=\"stepper-bullets-and-text-upcoming-step-level2\"></div>\r\n </div>\r\n <p class=\"stepper-bullets-and-text-upcoming-step-container\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </p>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Circles -->\r\n <nav class=\"flex justify-center\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Circles\">\r\n <ol class=\"flex items-center\"\r\n role=\"list\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"relative pr-8 sm:pr-20 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"absolute inset-0 flex items-center\"\r\n aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-blue-600\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full hover:bg-blue-900\">\r\n <svg class=\"w-5 h-5 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"absolute inset-0 flex items-center\"\r\n aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"relative w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\"\r\n aria-current=\"step\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"\r\n aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"absolute inset-0 flex items-center\"\r\n aria-hidden=\"true\">\r\n <div class=\"h-0.5 w-full bg-gray-200\"></div>\r\n </div>\r\n <div class=\"group relative w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"\r\n aria-hidden=\"true\"></span>\r\n <span class=\"sr-only\">Step {{ step.index + 1 }}</span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Circles With Text -->\r\n <nav class=\"flex items-center justify-center\"\r\n aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.CirclesWithText\">\r\n <ol role=\"list\"\r\n class=\"overflow-hidden\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"relative pb-10 cursor-pointer\">\r\n <!-- Complete Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-blue-600\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-5 h-5 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Active Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Active\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"!step.isLast\"></div>\r\n <div class=\"relative flex items-start group\"\r\n aria-current=\"step\">\r\n <span class=\"h-9 flex items-center\"\r\n aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-blue-600 rounded-full\">\r\n <span class=\"h-2.5 w-2.5 bg-blue-600 rounded-full\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-blue-600\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n <!-- Upcoming Step -->\r\n <ng-container *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"-ml-px absolute mt-0.5 top-4 left-4 w-0.5 h-full bg-gray-300\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"!step.isLast\"></div>\r\n <div href=\"#\"\r\n class=\"relative flex items-start group\">\r\n <span class=\"h-9 flex items-center\"\r\n aria-hidden=\"true\">\r\n <span class=\"relative z-10 w-8 h-8 flex items-center justify-center bg-white border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"h-2.5 w-2.5 bg-transparent rounded-full group-hover:bg-gray-300\"></span>\r\n </span>\r\n </span>\r\n <span class=\"ml-4 min-w-0 flex flex-col\">\r\n <span class=\"text-xs font-semibold tracking-wide uppercase text-gray-500\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n </ng-container>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels -->\r\n <nav aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Panels\">\r\n <ol role=\"list\"\r\n class=\"border border-gray-300 rounded-md divide-y divide-gray-300 md:flex md:divide-y-0\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"relative md:flex-1 md:flex cursor-pointer\">\r\n <!-- Completed step -->\r\n <div class=\"group flex items-center w-full\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center bg-blue-600 rounded-full group-hover:bg-blue-800\">\r\n <svg class=\"w-6 h-6 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-900\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Active step -->\r\n <div class=\"px-6 py-4 flex items-center text-sm font-medium\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-blue-600 rounded-full\">\r\n <span class=\"text-blue-600\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-blue-600\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming step -->\r\n <div class=\"group flex items-center\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"px-6 py-4 flex items-center text-sm font-medium\">\r\n <span class=\"flex-shrink-0 w-10 h-10 flex items-center justify-center border-2 border-gray-300 rounded-full group-hover:border-gray-400\">\r\n <span class=\"text-gray-500 group-hover:text-gray-900\">{{ (step.index + 1) }}</span>\r\n </span>\r\n <span class=\"ml-4 text-sm font-medium text-gray-500 group-hover:text-gray-900\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Arrow separator for lg screens and up -->\r\n <div *ngIf=\"!step.isLast\"\r\n class=\"hidden md:block absolute top-0 right-0 h-full w-5\"\r\n aria-hidden=\"true\">\r\n <svg class=\"h-full w-full text-gray-300\"\r\n viewBox=\"0 0 22 80\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"none\">\r\n <path d=\"M0 -2L20 40L0 82\"\r\n vector-effect=\"non-scaling-stroke\"\r\n stroke=\"currentcolor\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n <!-- Panels With Border -->\r\n <div class=\"panels-with-border-container\"\r\n *ngSwitchCase=\"StepperType.PanelsWithBorder\">\r\n <nav class=\"panels-with-border-nav\"\r\n aria-label=\"Progress\">\r\n <ol role=\"list\"\r\n class=\"panels-with-border-ol\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"panels-with-border-li\">\r\n <!-- Completed Step -->\r\n <div class=\"panels-with-border-completed-step\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-completed-step-level1\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level2\">\r\n <span class=\"panels-with-border-completed-step-level21\">\r\n <span class=\"panels-with-border-completed-step-level211\">\r\n <svg class=\"w-6 h-6 text-white\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level22\">\r\n <span class=\"panels-with-border-completed-step-level221\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-completed-step-level222\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"panels-with-border-active-step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <div aria-current=\"step\">\r\n <span class=\"panels-with-border-active-step-level1\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"panels-with-border-active-step-level2\">\r\n <span class=\"panels-with-border-active-step-level21\">\r\n <span class=\"panels-with-border-active-step-level211\">\r\n <span class=\"panels-with-border-active-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level22\">\r\n <span class=\"panels-with-border-active-step-level221\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"panels-with-border-active-step-level222\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\"\r\n viewBox=\"0 0 12 82\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\"\r\n stroke=\"currentcolor\"\r\n vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"panels-with-border-upcoming-step\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <div class=\"group\">\r\n <span class=\"panels-with-border-upcoming-step-level1\"\r\n aria-hidden=\"true\">\r\n </span>\r\n <span class=\"panels-with-border-upcoming-step-level2\">\r\n <span class=\"panels-with-border-upcoming-step-level21\">\r\n <span class=\"panels-with-border-upcoming-step-level211\">\r\n <span class=\"panels-with-border-upcoming-step-level211-text\">{{ step.index + 1 }}</span>\r\n </span>\r\n </span>\r\n <span class=\"panels-with-border-upcoming-step-level22\">\r\n <span class=\"panels-with-border-upcoming-step-level221\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n <span class=\"text-sm font-medium text-gray-500\"\r\n *ngIf=\"step.stepInfo\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepInfo.template\"></ng-container>\r\n </span>\r\n </span>\r\n </span>\r\n </div>\r\n <!-- Separator -->\r\n <div class=\"panels-with-border-step-separator\"\r\n aria-hidden=\"true\"\r\n *ngIf=\"step.index !== 0\">\r\n <svg class=\"h-full w-full text-gray-300\"\r\n viewBox=\"0 0 12 82\"\r\n fill=\"none\"\r\n preserveAspectRatio=\"none\">\r\n <path d=\"M0.5 0V31L10.5 41L0.5 51V82\"\r\n stroke=\"currentcolor\"\r\n vector-effect=\"non-scaling-stroke\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n </div>\r\n <!-- Progress -->\r\n <div *ngSwitchCase=\"StepperType.Progress\">\r\n <div class=\"mt-6\"\r\n aria-hidden=\"true\">\r\n <div class=\"bg-gray-200 rounded-full overflow-hidden\">\r\n <div class=\"h-2 bg-blue-600 rounded-full\"\r\n [style.width]=\"(((currentStepIndex + 1) / steps.length) * 100) + '%'\">\r\n </div>\r\n </div>\r\n <div class=\"hidden sm:grid grid-cols-4 text-sm font-medium text-gray-600 mt-6\">\r\n <div *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"text-blue-600 cursor-pointer\">\r\n <ng-container *ngIf=\"step.stepLabel\"\r\n [ngTemplateOutlet]=\"step.stepLabel.template\">\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Simple -->\r\n <nav aria-label=\"Progress\"\r\n *ngSwitchCase=\"StepperType.Simple\">\r\n <ol role=\"list\"\r\n class=\"space-y-4 md:flex md:space-y-0 md:space-x-8\">\r\n <li *ngFor=\"let step of steps\"\r\n (click)=\"onSelectStep(step)\"\r\n class=\"md:flex-1 cursor-pointer\">\r\n <!-- Completed Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-blue-600 hover:border-blue-800 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\"\r\n *ngIf=\"step.state === StepState.Completed\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase group-hover:text-blue-800\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Active Step -->\r\n <div class=\"pl-4 py-2 flex flex-col border-l-4 border-blue-600 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\"\r\n aria-current=\"step\"\r\n *ngIf=\"step.state === StepState.Active\">\r\n <span class=\"text-xs text-blue-600 font-semibold tracking-wide uppercase\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n <!-- Upcoming Step -->\r\n <div class=\"group pl-4 py-2 flex flex-col border-l-4 border-gray-200 hover:border-gray-300 md:pl-0 md:pt-4 md:pb-0 md:border-l-0 md:border-t-4\"\r\n *ngIf=\"step.state === StepState.Upcoming\">\r\n <span class=\"text-xs text-gray-500 font-semibold tracking-wide uppercase group-hover:text-gray-700\">Step {{ step.index + 1 }}</span>\r\n <span class=\"text-sm font-medium\"\r\n *ngIf=\"step.stepLabel\">\r\n <ng-container [ngTemplateOutlet]=\"step.stepLabel.template\"></ng-container>\r\n </span>\r\n </div>\r\n </li>\r\n </ol>\r\n </nav>\r\n</ng-container>\r\n<ng-container *ngFor=\"let step of steps\">\r\n <ng-container *ngIf=\"step.state === StepState.Active\"\r\n [ngTemplateOutlet]=\"step.content\">\r\n </ng-container>\r\n</ng-container>" }]
96
96
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { steps: [{
97
97
  type: ContentChildren,
98
98
  args: [LibStepComponent, { descendants: true }]
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
105
105
  }], type: [{
106
106
  type: Input
107
107
  }] } });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBVW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFKekQsc0JBQXNCO1FBQ2Qsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTTdCLHlDQUF5QztRQUNmLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDOUUsb0ZBQW9GO1FBQzFELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQy9ELHFGQUFxRjtRQUNyRSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hDLCtCQUErQjtRQUNmLFNBQUksR0FBZ0IsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBYjRCLENBQUM7SUFlOUQsK0JBQStCO0lBQy9CLElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpRUFBaUU7SUFDakUsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsS0FBVyxDQUFDO0lBRXBCLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELHlDQUF5QztJQUNsQyxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDZDQUE2QztJQUN0QyxnQkFBZ0I7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQThCO1FBQzlDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFFBQWdCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGdFQUFnRTtZQUMvSCxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMseUZBQXlGO1NBQ3pPLENBQUM7UUFDRixJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2xCLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLHVCQUF1QixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDOUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsc0JBQXNCLEVBQUUsV0FBVztTQUN0QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLENBQUM7O2dIQTVGUSxtQkFBbUI7b0dBQW5CLG1CQUFtQixtSkFKakI7UUFDUCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7S0FDdkYsZ0RBVWdCLGdCQUFnQixnREN0QnJDLHV0eUJBNlZlOzJGRC9VRixtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksYUFBYSxhQUVaO3dCQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUU7cUJBQ3ZGO3dHQVVnRSxLQUFLO3NCQUFyRSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFOUIsV0FBVztzQkFBcEMsTUFBTTtnQkFFbUIsU0FBUztzQkFBbEMsTUFBTTtnQkFFUyxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTGliU3RlcENvbXBvbmVudCwgU3RlcFN0YXRlIH0gZnJvbSAnLi9saWItc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTElCU1RFUFBFUl9BQ0NFU1NPUiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBTdGVwcGVyVHlwZSB9IGZyb20gJy4vdHlwZXMvc3RlcHBlci10eXBlJztcbmltcG9ydCB7IFN0ZXBTZWxlY3RlZEV2ZW50IH0gZnJvbSAnLi90eXBlcy9zdGVwLXNlbGVjdGVkLWV2ZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItc3RlcHBlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpYi1zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBMSUJTVEVQUEVSX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBMaWJTdGVwcGVyQ29tcG9uZW50KSB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJTdGVwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgICAvLyBQcml2YXRlIHByb3BlcnRpZXMuXG4gICAgcHJpdmF0ZSBfY3VycmVudFN0ZXBJbmRleDogbnVtYmVyID0gMDtcbiAgICBwcml2YXRlIF9pc0NvbXBsZXRlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIC8qKiBUaGUgaW5uZXIgc3RlcHMgb2YgdGhlIHdpemFyZC4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKExpYlN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHVibGljIHN0ZXBzITogUXVlcnlMaXN0PExpYlN0ZXBDb21wb25lbnQ+O1xuICAgIC8qKiBFbW1pdGVkIHdoZW4gYSBzdGVwIGNoYW5nZSBvY2N1cnMuICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzdGVwQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFNlbGVjdGVkRXZlbnQ+KCk7XG4gICAgLyoqIEVtbWl0ZWQgd2hlbiB0aGUgc3RlcHBlciBuYXZpZ2F0ZXMgYXdheSBmcm9tIHRoZSBmaW5hbCBzdGVwLiBPbmx5IGVtaXRzIG9uY2UuICovXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjb21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGVhY2ggc3RlcCBoYXMgdG8gYmUgdmFsaWRhdGVkIGJlZm9yZSBwcm9jZWVkaW5nIHRvIHRoZSBuZXh0LiAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsaW5lYXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKiogVGhlIHR5cGUgb2YgdGhlIHN0ZXBwZXIuICovXG4gICAgQElucHV0KCkgcHVibGljIHR5cGU6IFN0ZXBwZXJUeXBlID0gU3RlcHBlclR5cGUuUGFuZWxzO1xuICAgIHB1YmxpYyBTdGVwU3RhdGUgPSBTdGVwU3RhdGU7XG4gICAgcHVibGljIFN0ZXBwZXJUeXBlID0gU3RlcHBlclR5cGU7XG5cbiAgICAvKiogVGhlIGN1cnJlbnQgd2l6YXJkIHN0ZXAuICovXG4gICAgcHVibGljIGdldCBjdXJyZW50U3RlcCgpOiBMaWJTdGVwQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHM/LmdldCh0aGlzLl9jdXJyZW50U3RlcEluZGV4KTtcbiAgICB9XG5cbiAgICAvKiogVGhlIGluZGV4IChzdGFydGluZyBmcm9tIHplcm8pIG9mIHRoZSBjdXJyZW50IHdpemFyZCBzdGVwLiAqL1xuICAgIHB1YmxpYyBnZXQgY3VycmVudFN0ZXBJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFN0ZXBJbmRleDtcbiAgICB9XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgc3RlcHBlciBjYW4gZ28gYSBzdGVwIGJhY2suICovXG4gICAgcHVibGljIGdldCBjYW5Hb0JhY2soKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U3RlcEluZGV4ID4gMDtcbiAgICB9XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgc3RlcHBlciBjYW4gZ28gYSBzdGVwIGZvcndhcmQuICovXG4gICAgcHVibGljIGdldCBjYW5Hb0ZvcndhcmQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U3RlcEluZGV4IDwgdGhpcy5zdGVwcz8ubGVuZ3RoIC0gMTtcbiAgICB9XG5cbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgICovXG4gICAgcHVibGljIGdldCBpc0NvbXBsZXRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ29tcGxldGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBQcm9jZWVkcyB0byB0aGUgbmV4dCBzdGVwLCBpZiBhbnkuICovXG4gICAgcHVibGljIGdvVG9OZXh0U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFN0ZXA/LmlzTGFzdCAmJiAhdGhpcy5faXNDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVkLmVtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY2FuR29Gb3J3YXJkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICAvKiogUHJvY2VlZHMgdG8gdGhlIHByZXZpb3VzIHN0ZXAsIGlmIGFueS4gKi9cbiAgICBwdWJsaWMgZ29Ub1ByZXZpb3VzU3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbkdvQmFjaykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXBJbmRleCh0aGlzLl9jdXJyZW50U3RlcEluZGV4IC0gMSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0U3RlcChzZWxlY3RlZFN0ZXA6IExpYlN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHNlbGVjdGVkU3RlcC5pbmRleCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50U3RlcEluZGV4KG5ld0luZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHN0ZXBzQXJyYXlbdGhpcy5jdXJyZW50U3RlcEluZGV4XTtcbiAgICAgICAgY29uc3Qgc2hvdWxkU3RvcCA9IHRoaXMubGluZWFyICYmIChcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBuZXdJbmRleCA+PSB0aGlzLmN1cnJlbnRTdGVwSW5kZXgpIHx8IC8vIElmIGN1cnJlbnQgc3RlcCBpcyBpbnZhbGlkIGFuZCB3YW50IHRvIGdvIGZvcndhcmQsIHRoZW4gc3RvcC5cbiAgICAgICAgICAgIChjdXJyZW50U3RlcC5pc1ZhbGlkICYmIG5ld0luZGV4ID4gdGhpcy5jdXJyZW50U3RlcEluZGV4ICsgMSAmJiBzdGVwc0FycmF5LnNsaWNlKHRoaXMuY3VycmVudFN0ZXBJbmRleCArIDEsIG5ld0luZGV4KS5zb21lKHggPT4gIXguaXNWYWxpZCkpIC8vIElmIGdvaW5nIGZvcndhcmQgKG1vcmUgdGhhbiAxIHN0ZXBzKSwgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBpbnZhbGlkIHN0ZXBzIGluIGJldHdlZW4uXG4gICAgICAgICk7XG4gICAgICAgIGlmIChzaG91bGRTdG9wKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGVwQ2hhbmdlZC5lbWl0KHtcbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXg6IG5ld0luZGV4LFxuICAgICAgICAgICAgcHJldmlvdXNseVNlbGVjdGVkSW5kZXg6IHRoaXMuY3VycmVudFN0ZXBJbmRleCxcbiAgICAgICAgICAgIHNlbGVjdGVkU3RlcDogc3RlcHNBcnJheVtuZXdJbmRleF0sXG4gICAgICAgICAgICBwcmV2aW91c2x5U2VsZWN0ZWRTdGVwOiBjdXJyZW50U3RlcFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCA9IG5ld0luZGV4O1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cbiAgICA8IS0tIEJ1bGxldHMgLS0+XG4gICAgPG5hdiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1jb250YWluZXJcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQnVsbGV0c1wiPlxuICAgICAgICA8cCBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1jb3VudGVyXCI+U3RlcCB7eyBjdXJyZW50U3RlcEluZGV4ICsgMSB9fSBvZiB7eyBzdGVwcy5sZW5ndGggfX08L3A+XG4gICAgICAgIDxvbCByb2xlPVwibGlzdFwiIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLW9sXCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiPlxuICAgICAgICAgICAgICAgIDwhLS0gQ29tcGxldGVkIFN0ZXAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1jb21wbGV0ZWQtc3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkNvbXBsZXRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgU3RlcCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwXCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hY3RpdmUtc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwLWxldmVsMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hY3RpdmUtc3RlcC1idWxsZXRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN0ZXAge3sgc3RlcC5pbmRleCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8IS0tIFVwY29taW5nIFN0ZXAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBocmVmPVwiI1wiIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLXVwY29taW5nLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L29sPlxuICAgIDwvbmF2PlxuICAgIDwhLS0gQnVsbGV0cyAmIFRleHQgLS0+XG4gICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1jb250YWluZXJcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQnVsbGV0c0FuZFRleHRcIj5cbiAgICAgICAgPG5hdiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxvbCByb2xlPVwibGlzdFwiIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LW9sXCI+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZSBTdGVwIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWNvbXBsZXRlZC1zdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtY29tcGxldGVkLXN0ZXAtbGV2ZWwxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIHRleHQtYmx1ZS02MDAgZ3JvdXAtaG92ZXI6dGV4dC1ibHVlLTgwMFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTAgMThhOCA4IDAgMTAwLTE2IDggOCAwIDAwMCAxNnptMy43MDctOS4yOTNhMSAxIDAgMDAtMS40MTQtMS40MTRMOSAxMC41ODYgNy43MDcgOS4yOTNhMSAxIDAgMDAtMS40MTQgMS40MTRsMiAyYTEgMSAwIDAwMS40MTQgMGw0LTR6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1jb21wbGV0ZWQtc3RlcC1jb250YWluZXJcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwXCIgYXJpYS1jdXJyZW50PVwic3RlcFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtYWN0aXZlLXN0ZXAtbGV2ZWwxXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtYWN0aXZlLXN0ZXAtbGV2ZWwxMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1hY3RpdmUtc3RlcC1sZXZlbDEyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtYWN0aXZlLXN0ZXAtY29udGFpbmVyXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuVXBjb21pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtdXBjb21pbmctc3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtdXBjb21pbmctc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC11cGNvbWluZy1zdGVwLWxldmVsMlwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXAtY29udGFpbmVyXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L29sPlxuICAgICAgICA8L25hdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIENpcmNsZXMgLS0+XG4gICAgPG5hdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXJcIiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQ2lyY2xlc1wiPlxuICAgICAgICA8b2wgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiIHJvbGU9XCJsaXN0XCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIiAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCIgY2xhc3M9XCJyZWxhdGl2ZSBwci04IHNtOnByLTIwIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgU3RlcCAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkNvbXBsZXRlZFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMC41IHctZnVsbCBiZy1ibHVlLTYwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctYmx1ZS02MDAgcm91bmRlZC1mdWxsIGhvdmVyOmJnLWJsdWUtOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy01IGgtNSB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgU3RlcCAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMC41IHctZnVsbCBiZy1ncmF5LTIwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiIGFyaWEtY3VycmVudD1cInN0ZXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC0yLjUgdy0yLjUgYmctYmx1ZS02MDAgcm91bmRlZC1mdWxsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuVXBjb21pbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTAuNSB3LWZ1bGwgYmctZ3JheS0yMDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCByZWxhdGl2ZSB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWZ1bGwgaG92ZXI6Ym9yZGVyLWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICA8L25hdj5cbiAgICA8IS0tIENpcmNsZXMgV2l0aCBUZXh0IC0tPlxuICAgIDxuYXYgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiIGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5DaXJjbGVzV2l0aFRleHRcIj5cbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cInJlbGF0aXZlIHBiLTEwIGN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZSBTdGVwIC0tPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCItbWwtcHggYWJzb2x1dGUgbXQtMC41IHRvcC00IGxlZnQtNCB3LTAuNSBoLWZ1bGwgYmctYmx1ZS02MDBcIiBhcmlhLWhpZGRlbj1cInRydWVcIiAqbmdJZj1cIiFzdGVwLmlzTGFzdFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCBncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTkgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlIHotMTAgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6YmctYmx1ZS04MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctNSBoLTUgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IG1pbi13LTAgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWdyYXktNTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBJbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgU3RlcCAtLT5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLW1sLXB4IGFic29sdXRlIG10LTAuNSB0b3AtNCBsZWZ0LTQgdy0wLjUgaC1mdWxsIGJnLWdyYXktMzAwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCIhc3RlcC5pc0xhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIGZsZXggaXRlbXMtc3RhcnQgZ3JvdXBcIiBhcmlhLWN1cnJlbnQ9XCJzdGVwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtOSBmbGV4IGl0ZW1zLWNlbnRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpdmUgei0xMCB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIGJvcmRlci0yIGJvcmRlci1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTIuNSB3LTIuNSBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IG1pbi13LTAgZmxleCBmbGV4LWNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlIHRleHQtYmx1ZS02MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIHRleHQtZ3JheS01MDBcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8IS0tIFVwY29taW5nIFN0ZXAgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLW1sLXB4IGFic29sdXRlIG10LTAuNSB0b3AtNCBsZWZ0LTQgdy0wLjUgaC1mdWxsIGJnLWdyYXktMzAwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCIhc3RlcC5pc0xhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBocmVmPVwiI1wiIGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCBncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTkgZmxleCBpdGVtcy1jZW50ZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlIHotMTAgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBib3JkZXItMiBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1mdWxsIGdyb3VwLWhvdmVyOmJvcmRlci1ncmF5LTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgdGV4dC1ncmF5LTUwMFwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICA8L25hdj5cbiAgICA8IS0tIFBhbmVscyAtLT5cbiAgICA8bmF2IGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5QYW5lbHNcIj5cbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJib3JkZXIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtbWQgZGl2aWRlLXkgZGl2aWRlLWdyYXktMzAwIG1kOmZsZXggbWQ6ZGl2aWRlLXktMFwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCIgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiIGNsYXNzPVwicmVsYXRpdmUgbWQ6ZmxleC0xIG1kOmZsZXggY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBzdGVwIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlciB3LWZ1bGxcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC02IHB5LTQgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmbGV4LXNocmluay0wIHctMTAgaC0xMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6YmctYmx1ZS04MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy02IGgtNiB0ZXh0LXdoaXRlXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTE2LjcwNyA1LjI5M2ExIDEgMCAwMTAgMS40MTRsLTggOGExIDEgMCAwMS0xLjQxNCAwbC00LTRhMSAxIDAgMDExLjQxNC0xLjQxNEw4IDEyLjU4Nmw3LjI5My03LjI5M2ExIDEgMCAwMTEuNDE0IDB6XCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktOTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIHN0ZXAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTYgcHktNCBmbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LXNtIGZvbnQtbWVkaXVtXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTIgYm9yZGVyLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWJsdWUtNjAwXCI+e3sgKHN0ZXAuaW5kZXggKyAxKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWJsdWUtNjAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBzdGVwIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlclwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHgtNiBweS00IGZsZXggaXRlbXMtY2VudGVyIHRleHQtc20gZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3Zlcjpib3JkZXItZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS01MDAgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTkwMFwiPnt7IChzdGVwLmluZGV4ICsgMSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwIGdyb3VwLWhvdmVyOnRleHQtZ3JheS05MDBcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBBcnJvdyBzZXBhcmF0b3IgZm9yIGxnIHNjcmVlbnMgYW5kIHVwIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc3RlcC5pc0xhc3RcIiBjbGFzcz1cImhpZGRlbiBtZDpibG9jayBhYnNvbHV0ZSB0b3AtMCByaWdodC0wIGgtZnVsbCB3LTVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1ncmF5LTMwMFwiIHZpZXdCb3g9XCIwIDAgMjIgODBcIiBmaWxsPVwibm9uZVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAgLTJMMjAgNDBMMCA4MlwiIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIiBzdHJva2U9XCJjdXJyZW50Y29sb3JcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICA8L25hdj5cbiAgICA8IS0tIFBhbmVscyBXaXRoIEJvcmRlciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbnRhaW5lclwiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5QYW5lbHNXaXRoQm9yZGVyXCI+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItbmF2XCIgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCI+XG4gICAgICAgICAgICA8b2wgcm9sZT1cImxpc3RcIiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1vbFwiPlxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1saVwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwXCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjExXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctNiBoLTYgdGV4dC13aGl0ZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xNi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0bC04IDhhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMS40MTQtMS40MTRMOCAxMi41ODZsNy4yOTMtNy4yOTNhMSAxIDAgMDExLjQxNCAwelwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjIxXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWNvbXBsZXRlZC1zdGVwLWxldmVsMjIyXCIgKm5nSWY9XCJzdGVwLnN0ZXBJbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgYXJpYS1jdXJyZW50PVwic3RlcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWFjdGl2ZS1zdGVwLWxldmVsMVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIxMS10ZXh0XCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMjFcIiAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMjJcIiAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZXBhcmF0b3IgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXN0ZXAtc2VwYXJhdG9yXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJzdGVwLmluZGV4ICE9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1ncmF5LTMwMFwiIHZpZXdCb3g9XCIwIDAgMTIgODJcIiBmaWxsPVwibm9uZVwiIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC41IDBWMzFMMTAuNSA0MUwwLjUgNTFWODJcIiBzdHJva2U9XCJjdXJyZW50Y29sb3JcIiB2ZWN0b3ItZWZmZWN0PVwibm9uLXNjYWxpbmctc3Ryb2tlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXVwY29taW5nLXN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDFcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci11cGNvbWluZy1zdGVwLWxldmVsMjExXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIxMS10ZXh0XCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci11cGNvbWluZy1zdGVwLWxldmVsMjIxXCIgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNTAwXCIgKm5nSWY9XCJzdGVwLnN0ZXBJbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU2VwYXJhdG9yIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1zdGVwLXNlcGFyYXRvclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICpuZ0lmPVwic3RlcC5pbmRleCAhPT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIHRleHQtZ3JheS0zMDBcIiB2aWV3Qm94PVwiMCAwIDEyIDgyXCIgZmlsbD1cIm5vbmVcIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAuNSAwVjMxTDEwLjUgNDFMMC41IDUxVjgyXCIgc3Ryb2tlPVwiY3VycmVudGNvbG9yXCIgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvb2w+XG4gICAgICAgIDwvbmF2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gUHJvZ3Jlc3MgLS0+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuUHJvZ3Jlc3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTZcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMiBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIiBbc3R5bGUud2lkdGhdPVwiKCgoY3VycmVudFN0ZXBJbmRleCArIDEpIC8gc3RlcHMubGVuZ3RoKSAqIDEwMCkgKyAnJSdcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpZGRlbiBzbTpncmlkIGdyaWQtY29scy00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTYwMCBtdC02XCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIiBjbGFzcz1cInRleHQtYmx1ZS02MDAgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFNpbXBsZSAtLT5cbiAgICA8bmF2IGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5TaW1wbGVcIj5cbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCIgY2xhc3M9XCJzcGFjZS15LTQgbWQ6ZmxleCBtZDpzcGFjZS15LTAgbWQ6c3BhY2UteC04XCI+XG4gICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIiAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCIgY2xhc3M9XCJtZDpmbGV4LTEgY3Vyc29yLXBvaW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBwbC00IHB5LTIgZmxleCBmbGV4LWNvbCBib3JkZXItbC00IGJvcmRlci1ibHVlLTYwMCBob3Zlcjpib3JkZXItYmx1ZS04MDAgbWQ6cGwtMCBtZDpwdC00IG1kOnBiLTAgbWQ6Ym9yZGVyLWwtMCBtZDpib3JkZXItdC00XCIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWJsdWUtNjAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgZ3JvdXAtaG92ZXI6dGV4dC1ibHVlLTgwMFwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsLTQgcHktMiBmbGV4IGZsZXgtY29sIGJvcmRlci1sLTQgYm9yZGVyLWJsdWUtNjAwIG1kOnBsLTAgbWQ6cHQtNCBtZDpwYi0wIG1kOmJvcmRlci1sLTAgbWQ6Ym9yZGVyLXQtNFwiIGFyaWEtY3VycmVudD1cInN0ZXBcIiAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzIHRleHQtYmx1ZS02MDAgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZVwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgU3RlcCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgcGwtNCBweS0yIGZsZXggZmxleC1jb2wgYm9yZGVyLWwtNCBib3JkZXItZ3JheS0yMDAgaG92ZXI6Ym9yZGVyLWdyYXktMzAwIG1kOnBsLTAgbWQ6cHQtNCBtZDpwYi0wIG1kOmJvcmRlci1sLTAgbWQ6Ym9yZGVyLXQtNFwiICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTcwMFwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9vbD5cbiAgICA8L25hdj5cbjwvbmctY29udGFpbmVyPlxuPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQWN0aXZlXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5jb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4iXX0=
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL2NvbnRyb2xzL3N0ZXBwZXIvbGliLXN0ZXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QyxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUU1SixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBVW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFLNUIsWUFBb0Isa0JBQXFDO1FBQXJDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFKekQsc0JBQXNCO1FBQ2Qsc0JBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBTTdCLHlDQUF5QztRQUNmLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFDOUUsb0ZBQW9GO1FBQzFELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQy9ELHFGQUFxRjtRQUNyRSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hDLCtCQUErQjtRQUNmLFNBQUksR0FBZ0IsV0FBVyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxjQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBYjRCLENBQUM7SUFlOUQsK0JBQStCO0lBQy9CLElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxpRUFBaUU7SUFDakUsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVELG9EQUFvRDtJQUNwRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsS0FBVyxDQUFDO0lBRXBCLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELHlDQUF5QztJQUNsQyxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN6QjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDZDQUE2QztJQUN0QyxnQkFBZ0I7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQThCO1FBQzlDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLHNCQUFzQixDQUFDLFFBQWdCO1FBQzNDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLGdFQUFnRTtZQUMvSCxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMseUZBQXlGO1NBQ3pPLENBQUM7UUFDRixJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2xCLGFBQWEsRUFBRSxRQUFRO1lBQ3ZCLHVCQUF1QixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDOUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDbEMsc0JBQXNCLEVBQUUsV0FBVztTQUN0QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLENBQUM7O2dIQTVGUSxtQkFBbUI7b0dBQW5CLG1CQUFtQixtSkFKakI7UUFDUCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7S0FDdkYsZ0RBVWdCLGdCQUFnQixnREN0QnJDLDJrOUJBOGZlOzJGRGhmRixtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksYUFBYSxhQUVaO3dCQUNQLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLEVBQUU7cUJBQ3ZGO3dHQVVnRSxLQUFLO3NCQUFyRSxlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFFOUIsV0FBVztzQkFBcEMsTUFBTTtnQkFFbUIsU0FBUztzQkFBbEMsTUFBTTtnQkFFUyxNQUFNO3NCQUFyQixLQUFLO2dCQUVVLElBQUk7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IExpYlN0ZXBDb21wb25lbnQsIFN0ZXBTdGF0ZSB9IGZyb20gJy4vbGliLXN0ZXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTElCU1RFUFBFUl9BQ0NFU1NPUiB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IFN0ZXBwZXJUeXBlIH0gZnJvbSAnLi90eXBlcy9zdGVwcGVyLXR5cGUnO1xyXG5pbXBvcnQgeyBTdGVwU2VsZWN0ZWRFdmVudCB9IGZyb20gJy4vdHlwZXMvc3RlcC1zZWxlY3RlZC1ldmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbGliLXN0ZXBwZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2xpYi1zdGVwcGVyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczogW1xyXG4gICAgICAgIHsgcHJvdmlkZTogTElCU1RFUFBFUl9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTGliU3RlcHBlckNvbXBvbmVudCkgfVxyXG4gICAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGliU3RlcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCB7XHJcbiAgICAvLyBQcml2YXRlIHByb3BlcnRpZXMuXHJcbiAgICBwcml2YXRlIF9jdXJyZW50U3RlcEluZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSBfaXNDb21wbGV0ZWQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICAgIC8qKiBUaGUgaW5uZXIgc3RlcHMgb2YgdGhlIHdpemFyZC4gKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oTGliU3RlcENvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwdWJsaWMgc3RlcHMhOiBRdWVyeUxpc3Q8TGliU3RlcENvbXBvbmVudD47XHJcbiAgICAvKiogRW1taXRlZCB3aGVuIGEgc3RlcCBjaGFuZ2Ugb2NjdXJzLiAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBzdGVwQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFNlbGVjdGVkRXZlbnQ+KCk7XHJcbiAgICAvKiogRW1taXRlZCB3aGVuIHRoZSBzdGVwcGVyIG5hdmlnYXRlcyBhd2F5IGZyb20gdGhlIGZpbmFsIHN0ZXAuIE9ubHkgZW1pdHMgb25jZS4gKi9cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY29tcGxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIGVhY2ggc3RlcCBoYXMgdG8gYmUgdmFsaWRhdGVkIGJlZm9yZSBwcm9jZWVkaW5nIHRvIHRoZSBuZXh0LiAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIGxpbmVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLyoqIFRoZSB0eXBlIG9mIHRoZSBzdGVwcGVyLiAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHR5cGU6IFN0ZXBwZXJUeXBlID0gU3RlcHBlclR5cGUuUGFuZWxzO1xyXG4gICAgcHVibGljIFN0ZXBTdGF0ZSA9IFN0ZXBTdGF0ZTtcclxuICAgIHB1YmxpYyBTdGVwcGVyVHlwZSA9IFN0ZXBwZXJUeXBlO1xyXG5cclxuICAgIC8qKiBUaGUgY3VycmVudCB3aXphcmQgc3RlcC4gKi9cclxuICAgIHB1YmxpYyBnZXQgY3VycmVudFN0ZXAoKTogTGliU3RlcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHM/LmdldCh0aGlzLl9jdXJyZW50U3RlcEluZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogVGhlIGluZGV4IChzdGFydGluZyBmcm9tIHplcm8pIG9mIHRoZSBjdXJyZW50IHdpemFyZCBzdGVwLiAqL1xyXG4gICAgcHVibGljIGdldCBjdXJyZW50U3RlcEluZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEluZGljYXRlcyB3aGV0aGVyIHN0ZXBwZXIgY2FuIGdvIGEgc3RlcCBiYWNrLiAqL1xyXG4gICAgcHVibGljIGdldCBjYW5Hb0JhY2soKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBJbmRpY2F0ZXMgd2hldGhlciBzdGVwcGVyIGNhbiBnbyBhIHN0ZXAgZm9yd2FyZC4gKi9cclxuICAgIHB1YmxpYyBnZXQgY2FuR29Gb3J3YXJkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50U3RlcEluZGV4IDwgdGhpcy5zdGVwcz8ubGVuZ3RoIC0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW5kaWNhdGVzIHdoZXRoZXIgICovXHJcbiAgICBwdWJsaWMgZ2V0IGlzQ29tcGxldGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NvbXBsZXRlZDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7IH1cclxuXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogUHJvY2VlZHMgdG8gdGhlIG5leHQgc3RlcCwgaWYgYW55LiAqL1xyXG4gICAgcHVibGljIGdvVG9OZXh0U3RlcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U3RlcD8uaXNMYXN0ICYmICF0aGlzLl9pc0NvbXBsZXRlZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0NvbXBsZXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmNhbkdvRm9yd2FyZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXBJbmRleCh0aGlzLl9jdXJyZW50U3RlcEluZGV4ICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIFByb2NlZWRzIHRvIHRoZSBwcmV2aW91cyBzdGVwLCBpZiBhbnkuICovXHJcbiAgICBwdWJsaWMgZ29Ub1ByZXZpb3VzU3RlcCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY2FuR29CYWNrKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcEluZGV4KHRoaXMuX2N1cnJlbnRTdGVwSW5kZXggLSAxKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25TZWxlY3RTdGVwKHNlbGVjdGVkU3RlcDogTGliU3RlcENvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXBJbmRleChzZWxlY3RlZFN0ZXAuaW5kZXgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ3VycmVudFN0ZXBJbmRleChuZXdJbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gc3RlcHNBcnJheVt0aGlzLmN1cnJlbnRTdGVwSW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHNob3VsZFN0b3AgPSB0aGlzLmxpbmVhciAmJiAoXHJcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBuZXdJbmRleCA+PSB0aGlzLmN1cnJlbnRTdGVwSW5kZXgpIHx8IC8vIElmIGN1cnJlbnQgc3RlcCBpcyBpbnZhbGlkIGFuZCB3YW50IHRvIGdvIGZvcndhcmQsIHRoZW4gc3RvcC5cclxuICAgICAgICAgICAgKGN1cnJlbnRTdGVwLmlzVmFsaWQgJiYgbmV3SW5kZXggPiB0aGlzLmN1cnJlbnRTdGVwSW5kZXggKyAxICYmIHN0ZXBzQXJyYXkuc2xpY2UodGhpcy5jdXJyZW50U3RlcEluZGV4ICsgMSwgbmV3SW5kZXgpLnNvbWUoeCA9PiAheC5pc1ZhbGlkKSkgLy8gSWYgZ29pbmcgZm9yd2FyZCAobW9yZSB0aGFuIDEgc3RlcHMpLCBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGludmFsaWQgc3RlcHMgaW4gYmV0d2Vlbi5cclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzaG91bGRTdG9wKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGVwQ2hhbmdlZC5lbWl0KHtcclxuICAgICAgICAgICAgc2VsZWN0ZWRJbmRleDogbmV3SW5kZXgsXHJcbiAgICAgICAgICAgIHByZXZpb3VzbHlTZWxlY3RlZEluZGV4OiB0aGlzLmN1cnJlbnRTdGVwSW5kZXgsXHJcbiAgICAgICAgICAgIHNlbGVjdGVkU3RlcDogc3RlcHNBcnJheVtuZXdJbmRleF0sXHJcbiAgICAgICAgICAgIHByZXZpb3VzbHlTZWxlY3RlZFN0ZXA6IGN1cnJlbnRTdGVwXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fY3VycmVudFN0ZXBJbmRleCA9IG5ld0luZGV4O1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInR5cGVcIj5cclxuICAgIDwhLS0gQnVsbGV0cyAtLT5cclxuICAgIDxuYXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtY29udGFpbmVyXCJcclxuICAgICAgICAgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCJcclxuICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLkJ1bGxldHNcIj5cclxuICAgICAgICA8cCBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1jb3VudGVyXCI+U3RlcCB7eyBjdXJyZW50U3RlcEluZGV4ICsgMSB9fSBvZiB7eyBzdGVwcy5sZW5ndGggfX08L3A+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtb2xcIj5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZWQgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtY29tcGxldGVkLXN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgYXJpYS1jdXJyZW50PVwic3RlcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwLWxldmVsMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFjdGl2ZS1zdGVwLWxldmVsMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYWN0aXZlLXN0ZXAtYnVsbGV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFVwY29taW5nIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtdXBjb21pbmctc3RlcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgIDwvbmF2PlxyXG4gICAgPCEtLSBCdWxsZXRzICYgVGV4dCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtY29udGFpbmVyXCJcclxuICAgICAgICAgYXJpYS1sYWJlbD1cIlByb2dyZXNzXCJcclxuICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLkJ1bGxldHNBbmRUZXh0XCI+XHJcbiAgICAgICAgPG5hdiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIj5cclxuICAgICAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LW9sXCI+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkNvbXBsZXRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItYnVsbGV0cy1hbmQtdGV4dC1jb21wbGV0ZWQtc3RlcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtY29tcGxldGVkLXN0ZXAtbGV2ZWwxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1ibHVlLTYwMCBncm91cC1ob3Zlcjp0ZXh0LWJsdWUtODAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCAxOGE4IDggMCAxMDAtMTYgOCA4IDAgMDAwIDE2em0zLjcwNy05LjI5M2ExIDEgMCAwMC0xLjQxNC0xLjQxNEw5IDEwLjU4NiA3LjcwNyA5LjI5M2ExIDEgMCAwMC0xLjQxNCAxLjQxNGwyIDJhMSAxIDAgMDAxLjQxNCAwbDQtNHpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWNvbXBsZXRlZC1zdGVwLWNvbnRhaW5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgU3RlcCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwLWxldmVsMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtYWN0aXZlLXN0ZXAtbGV2ZWwxMVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LWFjdGl2ZS1zdGVwLWxldmVsMTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtYWN0aXZlLXN0ZXAtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWJ1bGxldHMtYW5kLXRleHQtdXBjb21pbmctc3RlcC1sZXZlbDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXAtbGV2ZWwyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwic3RlcHBlci1idWxsZXRzLWFuZC10ZXh0LXVwY29taW5nLXN0ZXAtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICA8L25hdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBDaXJjbGVzIC0tPlxyXG4gICAgPG5hdiBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXJcIlxyXG4gICAgICAgICBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIlxyXG4gICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQ2lyY2xlc1wiPlxyXG4gICAgICAgIDxvbCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgcm9sZT1cImxpc3RcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBwci04IHNtOnByLTIwIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtMC41IHctZnVsbCBiZy1ibHVlLTYwMFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbCBob3ZlcjpiZy1ibHVlLTkwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy01IGgtNSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0bC04IDhhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMS40MTQtMS40MTRMOCAxMi41ODZsNy4yOTMtNy4yOTNhMSAxIDAgMDExLjQxNCAwelwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXJ1bGU9XCJldmVub2RkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC0wIGZsZXggaXRlbXMtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0wLjUgdy1mdWxsIGJnLWdyYXktMjAwXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWN1cnJlbnQ9XCJzdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC0yLjUgdy0yLjUgYmctYmx1ZS02MDAgcm91bmRlZC1mdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5TdGVwIHt7IHN0ZXAuaW5kZXggKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFVwY29taW5nIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTAuNSB3LWZ1bGwgYmctZ3JheS0yMDBcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgcmVsYXRpdmUgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy13aGl0ZSBib3JkZXItMiBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1mdWxsIGhvdmVyOmJvcmRlci1ncmF5LTQwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcbiAgICA8L25hdj5cclxuICAgIDwhLS0gQ2lyY2xlcyBXaXRoIFRleHQgLS0+XHJcbiAgICA8bmF2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIlxyXG4gICAgICAgICBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIlxyXG4gICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuQ2lyY2xlc1dpdGhUZXh0XCI+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJvdmVyZmxvdy1oaWRkZW5cIj5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFN0ZXAoc3RlcClcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBwYi0xMCBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDb21wbGV0ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLW1sLXB4IGFic29sdXRlIG10LTAuNSB0b3AtNCBsZWZ0LTQgdy0wLjUgaC1mdWxsIGJnLWJsdWUtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzdGVwLmlzTGFzdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0IGdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaC05IGZsZXggaXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlbGF0aXZlIHotMTAgdy04IGgtOCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBiZy1ibHVlLTYwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6YmctYmx1ZS04MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwidy01IGgtNSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi43MDcgNS4yOTNhMSAxIDAgMDEwIDEuNDE0bC04IDhhMSAxIDAgMDEtMS40MTQgMGwtNC00YTEgMSAwIDAxMS40MTQtMS40MTRMOCAxMi41ODZsNy4yOTMtNy4yOTNhMSAxIDAgMDExLjQxNCAwelwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWwtNCBtaW4tdy0wIGZsZXggZmxleC1jb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiLW1sLXB4IGFic29sdXRlIG10LTAuNSB0b3AtNCBsZWZ0LTQgdy0wLjUgaC1mdWxsIGJnLWdyYXktMzAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFzdGVwLmlzTGFzdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWxhdGl2ZSBmbGV4IGl0ZW1zLXN0YXJ0IGdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInN0ZXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoLTkgZmxleCBpdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVsYXRpdmUgei0xMCB3LTggaC04IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIGJvcmRlci0yIGJvcmRlci1ibHVlLTYwMCByb3VuZGVkLWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZSB0ZXh0LWJsdWUtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFVwY29taW5nIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIi1tbC1weCBhYnNvbHV0ZSBtdC0wLjUgdG9wLTQgbGVmdC00IHctMC41IGgtZnVsbCBiZy1ncmF5LTMwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc3RlcC5pc0xhc3RcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGhyZWY9XCIjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgZmxleCBpdGVtcy1zdGFydCBncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtOSBmbGV4IGl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZWxhdGl2ZSB6LTEwIHctOCBoLTggZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUgYm9yZGVyLTIgYm9yZGVyLWdyYXktMzAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3Zlcjpib3JkZXItZ3JheS00MDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImgtMi41IHctMi41IGJnLXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ncmF5LTMwMFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgbWluLXctMCBmbGV4IGZsZXgtY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlIHVwcGVyY2FzZSB0ZXh0LWdyYXktNTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gdGV4dC1ncmF5LTUwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcEluZm8udGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9vbD5cclxuICAgIDwvbmF2PlxyXG4gICAgPCEtLSBQYW5lbHMgLS0+XHJcbiAgICA8bmF2IGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiXHJcbiAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTdGVwcGVyVHlwZS5QYW5lbHNcIj5cclxuICAgICAgICA8b2wgcm9sZT1cImxpc3RcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJvcmRlciBib3JkZXItZ3JheS0zMDAgcm91bmRlZC1tZCBkaXZpZGUteSBkaXZpZGUtZ3JheS0zMDAgbWQ6ZmxleCBtZDpkaXZpZGUteS0wXCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgbWQ6ZmxleC0xIG1kOmZsZXggY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ29tcGxldGVkIHN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXAgZmxleCBpdGVtcy1jZW50ZXIgdy1mdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC02IHB5LTQgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdy0xMCBoLTEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbCBncm91cC1ob3ZlcjpiZy1ibHVlLTgwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctNiBoLTYgdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTkwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgc3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC02IHB5LTQgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYm9yZGVyLTIgYm9yZGVyLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmx1ZS02MDBcIj57eyAoc3RlcC5pbmRleCArIDEpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1sLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWJsdWUtNjAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gVXBjb21pbmcgc3RlcCAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cCBmbGV4IGl0ZW1zLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLlVwY29taW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJweC02IHB5LTQgZmxleCBpdGVtcy1jZW50ZXIgdGV4dC1zbSBmb250LW1lZGl1bVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZsZXgtc2hyaW5rLTAgdy0xMCBoLTEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJvcmRlci0yIGJvcmRlci1ncmF5LTMwMCByb3VuZGVkLWZ1bGwgZ3JvdXAtaG92ZXI6Ym9yZGVyLWdyYXktNDAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZ3JheS01MDAgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTkwMFwiPnt7IChzdGVwLmluZGV4ICsgMSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtbC00IHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1ncmF5LTUwMCBncm91cC1ob3Zlcjp0ZXh0LWdyYXktOTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFycm93IHNlcGFyYXRvciBmb3IgbGcgc2NyZWVucyBhbmQgdXAgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXN0ZXAuaXNMYXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoaWRkZW4gbWQ6YmxvY2sgYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBoLWZ1bGwgdy01XCJcclxuICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImgtZnVsbCB3LWZ1bGwgdGV4dC1ncmF5LTMwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIyIDgwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMCAtMkwyMCA0MEwwIDgyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvb2w+XHJcbiAgICA8L25hdj5cclxuICAgIDwhLS0gUGFuZWxzIFdpdGggQm9yZGVyIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb250YWluZXJcIlxyXG4gICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuUGFuZWxzV2l0aEJvcmRlclwiPlxyXG4gICAgICAgIDxuYXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItbmF2XCJcclxuICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJQcm9ncmVzc1wiPlxyXG4gICAgICAgICAgICA8b2wgcm9sZT1cImxpc3RcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItb2xcIj5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0U3RlcChzdGVwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItbGlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0YXRlID09PSBTdGVwU3RhdGUuQ29tcGxldGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwyMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDIxMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInctNiBoLTYgdGV4dC13aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNzA3IDUuMjkzYTEgMSAwIDAxMCAxLjQxNGwtOCA4YTEgMSAwIDAxLTEuNDE0IDBsLTQtNGExIDEgMCAwMTEuNDE0LTEuNDE0TDggMTIuNTg2bDcuMjkzLTcuMjkzYTEgMSAwIDAxMS40MTQgMHpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItY29tcGxldGVkLXN0ZXAtbGV2ZWwyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1jb21wbGV0ZWQtc3RlcC1sZXZlbDIyMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZlIFN0ZXAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhcmlhLWN1cnJlbnQ9XCJzdGVwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLWFjdGl2ZS1zdGVwLWxldmVsMjExXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIxMS10ZXh0XCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItYWN0aXZlLXN0ZXAtbGV2ZWwyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1hY3RpdmUtc3RlcC1sZXZlbDIyMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwSW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBJbmZvLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlcGFyYXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci1zdGVwLXNlcGFyYXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuaW5kZXggIT09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJoLWZ1bGwgdy1mdWxsIHRleHQtZ3JheS0zMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDgyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMC41IDBWMzFMMTAuNSA0MUwwLjUgNTFWODJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVjdG9yLWVmZmVjdD1cIm5vbi1zY2FsaW5nLXN0cm9rZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXVwY29taW5nLXN0ZXAtbGV2ZWwxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInBhbmVscy13aXRoLWJvcmRlci11cGNvbWluZy1zdGVwLWxldmVsMjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIxMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIxMS10ZXh0XCI+e3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItdXBjb21pbmctc3RlcC1sZXZlbDIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFuZWxzLXdpdGgtYm9yZGVyLXVwY29taW5nLXN0ZXAtbGV2ZWwyMjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtZ3JheS01MDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcEluZm9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwSW5mby50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZXBhcmF0b3IgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbHMtd2l0aC1ib3JkZXItc3RlcC1zZXBhcmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLmluZGV4ICE9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaC1mdWxsIHctZnVsbCB0ZXh0LWdyYXktMzAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiA4MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTAuNSAwVjMxTDEwLjUgNDFMMC41IDUxVjgyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Y29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlY3Rvci1lZmZlY3Q9XCJub24tc2NhbGluZy1zdHJva2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC9vbD5cclxuICAgICAgICA8L25hdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBQcm9ncmVzcyAtLT5cclxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIlN0ZXBwZXJUeXBlLlByb2dyZXNzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTZcIlxyXG4gICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy1ncmF5LTIwMCByb3VuZGVkLWZ1bGwgb3ZlcmZsb3ctaGlkZGVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC0yIGJnLWJsdWUtNjAwIHJvdW5kZWQtZnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCIoKChjdXJyZW50U3RlcEluZGV4ICsgMSkgLyBzdGVwcy5sZW5ndGgpICogMTAwKSArICclJ1wiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGlkZGVuIHNtOmdyaWQgZ3JpZC1jb2xzLTQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWdyYXktNjAwIG10LTZcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJsdWUtNjAwIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gU2ltcGxlIC0tPlxyXG4gICAgPG5hdiBhcmlhLWxhYmVsPVwiUHJvZ3Jlc3NcIlxyXG4gICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3RlcHBlclR5cGUuU2ltcGxlXCI+XHJcbiAgICAgICAgPG9sIHJvbGU9XCJsaXN0XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzcGFjZS15LTQgbWQ6ZmxleCBtZDpzcGFjZS15LTAgbWQ6c3BhY2UteC04XCI+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3RTdGVwKHN0ZXApXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWQ6ZmxleC0xIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIENvbXBsZXRlZCBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwIHBsLTQgcHktMiBmbGV4IGZsZXgtY29sIGJvcmRlci1sLTQgYm9yZGVyLWJsdWUtNjAwIGhvdmVyOmJvcmRlci1ibHVlLTgwMCBtZDpwbC0wIG1kOnB0LTQgbWQ6cGItMCBtZDpib3JkZXItbC0wIG1kOmJvcmRlci10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5Db21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgdGV4dC1ibHVlLTYwMCBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlIGdyb3VwLWhvdmVyOnRleHQtYmx1ZS04MDBcIj5TdGVwIHt7IHN0ZXAuaW5kZXggKyAxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1zbSBmb250LW1lZGl1bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdGVwLnN0ZXBMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuc3RlcExhYmVsLnRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsLTQgcHktMiBmbGV4IGZsZXgtY29sIGJvcmRlci1sLTQgYm9yZGVyLWJsdWUtNjAwIG1kOnBsLTAgbWQ6cHQtNCBtZDpwYi0wIG1kOmJvcmRlci1sLTAgbWQ6Ym9yZGVyLXQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIGFyaWEtY3VycmVudD1cInN0ZXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5BY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQteHMgdGV4dC1ibHVlLTYwMCBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlXCI+U3RlcCB7eyBzdGVwLmluZGV4ICsgMSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtc20gZm9udC1tZWRpdW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RlcC5zdGVwTGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwLnN0ZXBMYWJlbC50ZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBVcGNvbWluZyBTdGVwIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwIHBsLTQgcHktMiBmbGV4IGZsZXgtY29sIGJvcmRlci1sLTQgYm9yZGVyLWdyYXktMjAwIGhvdmVyOmJvcmRlci1ncmF5LTMwMCBtZDpwbC0wIG1kOnB0LTQgbWQ6cGItMCBtZDpib3JkZXItbC0wIG1kOmJvcmRlci10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RhdGUgPT09IFN0ZXBTdGF0ZS5VcGNvbWluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTcwMFwiPlN0ZXAge3sgc3RlcC5pbmRleCArIDEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXNtIGZvbnQtbWVkaXVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0ZXAuc3RlcExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RlcC5zdGVwTGFiZWwudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L29sPlxyXG4gICAgPC9uYXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdGVwIG9mIHN0ZXBzXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcC5zdGF0ZSA9PT0gU3RlcFN0YXRlLkFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0ZXAuY29udGVudFwiPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -1,4 +1,4 @@
1
1
  /** Change event emitted on step changes. */
2
2
  export class StepSelectedEvent {
3
3
  }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZWxlY3RlZC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9zdGVwcGVyL3R5cGVzL3N0ZXAtc2VsZWN0ZWQtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsNENBQTRDO0FBQzVDLE1BQU0sT0FBTyxpQkFBaUI7Q0FTN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaWJTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vbGliLXN0ZXAuY29tcG9uZW50JztcblxuLyoqIENoYW5nZSBldmVudCBlbWl0dGVkIG9uIHN0ZXAgY2hhbmdlcy4gKi9cbmV4cG9ydCBjbGFzcyBTdGVwU2VsZWN0ZWRFdmVudCB7XG4gICAgLyoqIEluZGV4IG9mIHRoZSBzdGVwIG5vdyBzZWxlY3RlZC4gKi9cbiAgICBwdWJsaWMgc2VsZWN0ZWRJbmRleCE6IG51bWJlcjtcbiAgICAvKiogSW5kZXggb2YgdGhlIHN0ZXAgcHJldmlvdXNseSBzZWxlY3RlZC4gKi9cbiAgICBwdWJsaWMgcHJldmlvdXNseVNlbGVjdGVkSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKiogVGhlIHN0ZXAgaW5zdGFuY2Ugbm93IHNlbGVjdGVkLiAqL1xuICAgIHB1YmxpYyBzZWxlY3RlZFN0ZXAhOiBMaWJTdGVwQ29tcG9uZW50O1xuICAgIC8qKiBUaGUgc3RlcCBpbnN0YW5jZSBwcmV2aW91c2x5IHNlbGVjdGVkLiAqL1xuICAgIHB1YmxpYyBwcmV2aW91c2x5U2VsZWN0ZWRTdGVwOiBMaWJTdGVwQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xufVxuIl19
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZWxlY3RlZC1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9zdGVwcGVyL3R5cGVzL3N0ZXAtc2VsZWN0ZWQtZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsNENBQTRDO0FBQzVDLE1BQU0sT0FBTyxpQkFBaUI7Q0FTN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaWJTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vbGliLXN0ZXAuY29tcG9uZW50JztcclxuXHJcbi8qKiBDaGFuZ2UgZXZlbnQgZW1pdHRlZCBvbiBzdGVwIGNoYW5nZXMuICovXHJcbmV4cG9ydCBjbGFzcyBTdGVwU2VsZWN0ZWRFdmVudCB7XHJcbiAgICAvKiogSW5kZXggb2YgdGhlIHN0ZXAgbm93IHNlbGVjdGVkLiAqL1xyXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXghOiBudW1iZXI7XHJcbiAgICAvKiogSW5kZXggb2YgdGhlIHN0ZXAgcHJldmlvdXNseSBzZWxlY3RlZC4gKi9cclxuICAgIHB1YmxpYyBwcmV2aW91c2x5U2VsZWN0ZWRJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgLyoqIFRoZSBzdGVwIGluc3RhbmNlIG5vdyBzZWxlY3RlZC4gKi9cclxuICAgIHB1YmxpYyBzZWxlY3RlZFN0ZXAhOiBMaWJTdGVwQ29tcG9uZW50O1xyXG4gICAgLyoqIFRoZSBzdGVwIGluc3RhbmNlIHByZXZpb3VzbHkgc2VsZWN0ZWQuICovXHJcbiAgICBwdWJsaWMgcHJldmlvdXNseVNlbGVjdGVkU3RlcDogTGliU3RlcENvbXBvbmVudCB8IHVuZGVmaW5lZDtcclxufVxyXG4iXX0=