@testgorilla/tgo-ui 2.24.20 → 2.24.21

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 (154) hide show
  1. package/components/datepicker/datepicker.component.d.ts +1 -1
  2. package/components/gaussian-chart/gaussian-chart.component.d.ts +75 -0
  3. package/components/gaussian-chart/gaussian-chart.module.d.ts +13 -0
  4. package/components/table/table.component.d.ts +5 -3
  5. package/components/table/table.model.d.ts +2 -1
  6. package/esm2022/assets/i18n/en.json +24 -7
  7. package/esm2022/components/accordion/accordion.component.mjs +4 -4
  8. package/esm2022/components/accordion/accordion.component.module.mjs +5 -5
  9. package/esm2022/components/alert-banner/alert-banner.component.mjs +4 -4
  10. package/esm2022/components/alert-banner/alert-banner.component.module.mjs +5 -5
  11. package/esm2022/components/autocomplete/autocomplete.component.mjs +4 -4
  12. package/esm2022/components/autocomplete/autocomplete.component.module.mjs +5 -5
  13. package/esm2022/components/autocomplete/includes.pipe.mjs +4 -4
  14. package/esm2022/components/autocomplete/prevent-input.directive.mjs +4 -4
  15. package/esm2022/components/autocomplete/transform-Item.pipe.mjs +4 -4
  16. package/esm2022/components/avatar/avatar.component.mjs +4 -4
  17. package/esm2022/components/avatar/avatar.component.module.mjs +5 -5
  18. package/esm2022/components/badge/badge.component.mjs +4 -4
  19. package/esm2022/components/badge/badge.component.module.mjs +5 -5
  20. package/esm2022/components/button/button.component.mjs +4 -4
  21. package/esm2022/components/button/button.component.module.mjs +5 -5
  22. package/esm2022/components/card/card.component.mjs +4 -4
  23. package/esm2022/components/card/card.component.module.mjs +5 -5
  24. package/esm2022/components/checkbox/checkbox.component.mjs +4 -4
  25. package/esm2022/components/checkbox/checkbox.component.module.mjs +5 -5
  26. package/esm2022/components/checkbox/focus-visible.directive.mjs +4 -4
  27. package/esm2022/components/checklist/checklist.component.mjs +4 -4
  28. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  29. package/esm2022/components/confirm-dialog/confirm-dialog.component.module.mjs +5 -5
  30. package/esm2022/components/datepicker/date-adapter.mjs +30 -0
  31. package/esm2022/components/datepicker/datepicker.component.mjs +8 -10
  32. package/esm2022/components/datepicker/datepicker.component.module.mjs +5 -5
  33. package/esm2022/components/datepicker/datepicker.service.mjs +4 -4
  34. package/esm2022/components/datepicker/no-date-format.directive.mjs +7 -7
  35. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.mjs +4 -4
  36. package/esm2022/components/deprecated-paginator/deprecated-paginator.component.module.mjs +5 -5
  37. package/esm2022/components/deprecated-table/deprecated-table.component.mjs +4 -4
  38. package/esm2022/components/deprecated-table/deprecated-table.component.module.mjs +5 -5
  39. package/esm2022/components/deprecated-table/directives/dynamic-component.directive.mjs +4 -4
  40. package/esm2022/components/dialog/dialog.component.mjs +4 -4
  41. package/esm2022/components/dialog/dialog.component.module.mjs +5 -5
  42. package/esm2022/components/dialog/dialog.service.mjs +4 -4
  43. package/esm2022/components/divider/divider.component.mjs +4 -4
  44. package/esm2022/components/divider/divider.component.module.mjs +5 -5
  45. package/esm2022/components/dropdown/dropdown.component.mjs +10 -8
  46. package/esm2022/components/dropdown/dropdown.component.module.mjs +5 -5
  47. package/esm2022/components/elevation-shadow/elevation-shadow.component.mjs +4 -4
  48. package/esm2022/components/elevation-shadow/elevation-shadow.component.module.mjs +5 -5
  49. package/esm2022/components/empty-state/empty-state.component.mjs +4 -4
  50. package/esm2022/components/empty-state/empty-state.component.module.mjs +5 -5
  51. package/esm2022/components/field/field.component.mjs +4 -4
  52. package/esm2022/components/field/field.component.module.mjs +5 -5
  53. package/esm2022/components/file-upload/file-upload.component.mjs +4 -4
  54. package/esm2022/components/file-upload/file-upload.component.module.mjs +5 -5
  55. package/esm2022/components/gaussian-chart/gaussian-chart.component.mjs +246 -0
  56. package/esm2022/components/gaussian-chart/gaussian-chart.module.mjs +42 -0
  57. package/esm2022/components/icon/icon.component.mjs +5 -5
  58. package/esm2022/components/icon/icon.component.module.mjs +5 -5
  59. package/esm2022/components/icon-label/icon-label.component.mjs +4 -4
  60. package/esm2022/components/icon-label/icon-label.component.module.mjs +5 -5
  61. package/esm2022/components/logo/logo.component.mjs +4 -4
  62. package/esm2022/components/logo/logo.component.module.mjs +5 -5
  63. package/esm2022/components/media-card/media-card.component.mjs +4 -4
  64. package/esm2022/components/multi-input/multi-input.component.mjs +4 -4
  65. package/esm2022/components/multi-input/multi-input.component.module.mjs +5 -5
  66. package/esm2022/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.mjs +4 -4
  67. package/esm2022/components/navbar/navbar.component.mjs +4 -4
  68. package/esm2022/components/navbar/navbar.component.module.mjs +5 -5
  69. package/esm2022/components/overflow-menu/overflow-menu.component.mjs +4 -4
  70. package/esm2022/components/overflow-menu/overflow-menu.component.module.mjs +5 -5
  71. package/esm2022/components/page-header/page-header.component.mjs +4 -4
  72. package/esm2022/components/page-header/page-header.component.module.mjs +5 -5
  73. package/esm2022/components/paginator/paginator.component.mjs +4 -4
  74. package/esm2022/components/paginator/paginator.component.module.mjs +5 -5
  75. package/esm2022/components/password-criteria/password.component.mjs +4 -4
  76. package/esm2022/components/password-criteria/password.component.module.mjs +5 -5
  77. package/esm2022/components/password-strength/password-strength.component.mjs +4 -4
  78. package/esm2022/components/password-strength/password-strength.component.module.mjs +5 -5
  79. package/esm2022/components/phone-input/join-strings.pipe.mjs +4 -4
  80. package/esm2022/components/phone-input/phone-input.component.mjs +4 -4
  81. package/esm2022/components/phone-input/phone-input.component.module.mjs +5 -5
  82. package/esm2022/components/progress-bar/progress-bar.component.mjs +4 -4
  83. package/esm2022/components/progress-bar/progress-bar.component.module.mjs +5 -5
  84. package/esm2022/components/radial-progress/radial-progress.component.mjs +4 -4
  85. package/esm2022/components/radial-progress/radial-progress.component.module.mjs +5 -5
  86. package/esm2022/components/radio-button/radio-button.component.mjs +4 -4
  87. package/esm2022/components/radio-button/radio-button.component.module.mjs +5 -5
  88. package/esm2022/components/rating/half-star.pipe.mjs +4 -4
  89. package/esm2022/components/rating/rating.component.mjs +4 -4
  90. package/esm2022/components/rating/rating.component.module.mjs +5 -5
  91. package/esm2022/components/scale/scale.component.mjs +5 -5
  92. package/esm2022/components/scale/scale.component.module.mjs +5 -5
  93. package/esm2022/components/segmented-bar/segmented-bar.component.mjs +4 -4
  94. package/esm2022/components/segmented-bar/segmented-bar.component.module.mjs +5 -5
  95. package/esm2022/components/segmented-button/segmented-button.component.mjs +4 -4
  96. package/esm2022/components/segmented-button/segmented-button.component.module.mjs +5 -5
  97. package/esm2022/components/side-panel/side-panel.component.mjs +4 -4
  98. package/esm2022/components/side-panel/side-panel.service.mjs +4 -4
  99. package/esm2022/components/side-sheet/side-sheet.component.mjs +4 -4
  100. package/esm2022/components/side-sheet/side-sheet.component.module.mjs +5 -5
  101. package/esm2022/components/side-sheet/side-sheet.service.mjs +4 -4
  102. package/esm2022/components/skeleton/skeleton.component.mjs +4 -4
  103. package/esm2022/components/slider/slider.component.mjs +4 -4
  104. package/esm2022/components/slider/slider.component.module.mjs +5 -5
  105. package/esm2022/components/snackbar/snackbar.component.mjs +4 -4
  106. package/esm2022/components/snackbar/snackbar.component.module.mjs +5 -5
  107. package/esm2022/components/snackbar/snackbar.service.mjs +4 -4
  108. package/esm2022/components/spider-chart/spider-chart.component.mjs +4 -4
  109. package/esm2022/components/spider-chart/spider-chart.module.mjs +5 -5
  110. package/esm2022/components/spinner/spinner.component.mjs +4 -4
  111. package/esm2022/components/spinner/spinner.module.mjs +5 -5
  112. package/esm2022/components/step/step.component.mjs +4 -4
  113. package/esm2022/components/step/step.component.module.mjs +5 -5
  114. package/esm2022/components/stepper/stepper.component.mjs +4 -4
  115. package/esm2022/components/stepper/stepper.component.module.mjs +5 -5
  116. package/esm2022/components/table/sentence-case.pipe.mjs +4 -4
  117. package/esm2022/components/table/table.component.mjs +45 -33
  118. package/esm2022/components/table/table.component.module.mjs +5 -5
  119. package/esm2022/components/table/table.model.mjs +1 -1
  120. package/esm2022/components/tabs/tab.directive.mjs +4 -4
  121. package/esm2022/components/tabs/tabs.component.mjs +4 -4
  122. package/esm2022/components/tabs/tabs.component.module.mjs +5 -5
  123. package/esm2022/components/tag/tag.component.mjs +4 -4
  124. package/esm2022/components/tag/tag.component.module.mjs +5 -5
  125. package/esm2022/components/toggle/toggle.component.mjs +4 -4
  126. package/esm2022/components/toggle/toggle.component.module.mjs +5 -5
  127. package/esm2022/components/tooltip/tooltip-template.directive.mjs +14 -12
  128. package/esm2022/components/tooltip/tooltip.component.mjs +4 -4
  129. package/esm2022/components/tooltip/tooltip.component.module.mjs +5 -5
  130. package/esm2022/components/universal-skills-report/universal-skills-report.component.mjs +18 -18
  131. package/esm2022/components/universal-skills-report/universal-skills-report.component.module.mjs +5 -5
  132. package/esm2022/components/validation-error/validation-error.component.mjs +4 -4
  133. package/esm2022/components/validation-error/validation-error.module.mjs +5 -5
  134. package/esm2022/directives/digits-only.directive.mjs +4 -4
  135. package/esm2022/directives/drag-drop.directive.mjs +4 -4
  136. package/esm2022/directives/ellipse-text.directive.mjs +4 -4
  137. package/esm2022/directives/select-text.directive.mjs +4 -4
  138. package/esm2022/directives/step-line-element.directive.mjs +4 -4
  139. package/esm2022/pipes/data-property-getter.mjs +4 -4
  140. package/esm2022/pipes/has-validation-error.pipe.mjs +4 -4
  141. package/esm2022/pipes/memoize-func.pipe.mjs +4 -4
  142. package/esm2022/pipes/name-initials.pipe.mjs +4 -4
  143. package/esm2022/pipes/ui-ordinal-suffix.pipe.mjs +4 -4
  144. package/esm2022/pipes/ui-translate.pipe.mjs +4 -4
  145. package/esm2022/public-api.mjs +4 -1
  146. package/esm2022/services/icons.service.mjs +4 -4
  147. package/esm2022/utils/localization/language.service.mjs +4 -4
  148. package/fesm2022/testgorilla-tgo-ui.mjs +832 -530
  149. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  150. package/package.json +2 -1
  151. package/projects/tgo-canopy-ui/assets/i18n/en.json +24 -7
  152. package/public-api.d.ts +2 -0
  153. package/esm2022/components/datepicker/DateAdapter.mjs +0 -30
  154. /package/components/datepicker/{DateAdapter.d.ts → date-adapter.d.ts} +0 -0
@@ -161,8 +161,8 @@ export class FileUploadComponent {
161
161
  this.isCanceled = true;
162
162
  }
163
163
  }
164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FileUploadComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
165
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.7", type: FileUploadComponent, selector: "ui-file-upload", inputs: { maxFileSizeMB: "maxFileSizeMB", minFileSizeMB: "minFileSizeMB", supportedFileTypes: "supportedFileTypes", uploadProgress: "uploadProgress", errors: "errors", disabled: "disabled", file: "file", companyColor: "companyColor", applicationTheme: "applicationTheme", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired" }, outputs: { OnDrop: "OnDrop" }, host: { properties: { "class": "this.class", "style.--color": "this.compColor" } }, providers: [
164
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponent, deps: [{ token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FileUploadComponent, selector: "ui-file-upload", inputs: { maxFileSizeMB: "maxFileSizeMB", minFileSizeMB: "minFileSizeMB", supportedFileTypes: "supportedFileTypes", uploadProgress: "uploadProgress", errors: "errors", disabled: "disabled", file: "file", companyColor: "companyColor", applicationTheme: "applicationTheme", ariaLabel: "ariaLabel", ariaRequired: "ariaRequired" }, outputs: { OnDrop: "OnDrop" }, host: { properties: { "class": "this.class", "style.--color": "this.compColor" } }, providers: [
166
166
  {
167
167
  provide: NG_VALUE_ACCESSOR,
168
168
  useExisting: forwardRef(() => FileUploadComponent),
@@ -201,7 +201,7 @@ export class FileUploadComponent {
201
201
  ])
202
202
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
203
203
  }
204
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FileUploadComponent, decorators: [{
204
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponent, decorators: [{
205
205
  type: Component,
206
206
  args: [{ selector: 'ui-file-upload', encapsulation: ViewEncapsulation.None, providers: [
207
207
  {
@@ -279,4 +279,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
279
279
  type: ViewChild,
280
280
  args: ['fileDrop']
281
281
  }] } });
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBaUR6RSxNQUFNLE9BQU8sbUJBQW1CO0lBc0g5QixZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUF0SC9GLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQXdDeEM7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7OztXQUtHO1FBQ00sU0FBSSxHQUFnQixJQUFJLENBQUM7UUFFbEM7Ozs7OztXQU1HO1FBQ00saUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSzFDOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFVdEQ7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVwQixXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFJN0Ms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RSxDQUFDLENBQUM7NkJBQzFELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs7MEJBeUhFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DO3lDQXRIM0MsS0FBSztzQkFBbkIsV0FBVztnQkFPSCxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsTUFBTTtzQkFBZCxLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsSUFBSTtzQkFBWixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR04sU0FBUztzQkFEUixXQUFXO3VCQUFDLGVBQWU7Z0JBVW5CLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBPcHRpb25hbCxcbiAgSW5qZWN0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktZmlsZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVVcGxvYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uUHJvZ3Jlc3MnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSkpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbkNoYW5nZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpbGUtdXBsb2FkJztcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICogU3VwcG9ydGVkIGZpbGVzIGZvciBpbnB1dCBmaWVsZFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc3VwcG9ydGVkRmlsZVR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGxvYWQgcHJvZ3Jlc3NcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVwbG9hZFByb2dyZXNzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlcnJvcnM/OiBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRXhpc3RpbmcgZmlsZSBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAdHlwZSB7KEZpbGUgfCBudWxsKX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29sb3Igb2YgdGhlIGZpbGUgdXBsb2FkLlxuICAgKiBEZWZhdWx0cyB0byBUZXN0IEdvcmlsbGEgcHJpbWFyeSBjb2xvci5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbXBhbnlDb2xvcjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb2xvcicpXG4gIGNvbXBDb2xvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgT25Ecm9wOiBFdmVudEVtaXR0ZXI8RmlsZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZURyb3AnKSBmaWxlRHJvcDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJTEVfVVBMT0FELic7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCkgPT4ge1xuICB9O1xuXG4gIGlzTWlzc2VkTWluU2l6ZSA9IGZhbHNlO1xuICBwcm9ncmVzcyA9IGZhbHNlO1xuICBzdWNjZXNzID0gZmFsc2U7XG4gIGJyb3dzZTogYm9vbGVhbjtcbiAgaXNDYW5jZWxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgfVxuXG4gIC8vV2hlbiBmaWxlIGlzIGRyb3BwZWRcbiAgb25GaWxlRHJvcHBlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmVtaXRGaWxlKGZpbGVzKTtcbiAgfVxuXG4gIC8vV2hlbiBpbnB1dCBjaGFuZ2VzXG4gIG9uQ2hhbmdlVXBsb2FkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaXNDYW5jZWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5lbWl0RmlsZShlbGVtZW50LmZpbGVzIHx8IG5ldyBGaWxlTGlzdCgpKTtcbiAgfVxuXG4gIC8vRW1pdCBkcm9wIGZpbGVcbiAgZW1pdEZpbGUoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgW2ZpbGVdID0gQXJyYXkuZnJvbShmaWxlcyk7XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLmVycm9ycyA9IG51bGw7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy5pc01pc3NlZE1pblNpemUgPVxuICAgICAgIWZpbGU/LnNpemUgJiYgIXRoaXMubWluRmlsZVNpemVNQiA/IHRydWUgOiB0aGlzLmZpbGVTaXplVG9NQihmaWxlPy5zaXplID8/IDApIDw9IHRoaXMubWluRmlsZVNpemVNQjtcbiAgICBpZiAoIXRoaXMuaXNNaXNzZWRNaW5TaXplKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZSk7XG4gICAgICB0aGlzLk9uRHJvcC5lbWl0KGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vU2hvdyBwcm9ncmVzcy1iYXJcbiAgc2hvd1Byb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYnJvd3NlID0gZmFsc2U7XG4gICAgcmV0dXJuICEhKHRoaXMuZmlsZSAmJiAhdGhpcy5lcnJvcnMgJiYgIXRoaXMuaXNNaXNzZWRNaW5TaXplKTtcbiAgfVxuXG4gIC8vU2hvdyBzdWNjZXNzIGVsZW1lbnRzXG4gIHNob3dTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmZpbGUgJiYgdGhpcy51cGxvYWRQcm9ncmVzcyA9PT0gMTAwICYmICF0aGlzLmVycm9ycyAmJiAhdGhpcy5pc01pc3NlZE1pblNpemUpO1xuICB9XG5cbiAgLy9TaG93IGJyb3dzZSB3aGVuIHRoZXJlIGFyZSBlcnJvclxuICBzaG93QnJvd3NlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmVycm9ycyB8fCB0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCF0aGlzLmlzQ2FuY2VsZWQpIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd1cGxvYWRQcm9ncmVzcyddIHx8IGNoYW5nZXNbJ2ZpbGUnXSkge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcbiAgICAgICAgdGhpcy5zdWNjZXNzID0gdGhpcy5zaG93U3VjY2VzcygpO1xuICAgICAgICB0aGlzLmJyb3dzZSA9IHRoaXMuc2hvd0Jyb3dzZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXNbJ2Vycm9ycyddKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnNob3dQcm9ncmVzcygpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYnJvd3NlID0gdGhpcy5zaG93QnJvd3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snYXBwbGljYXRpb25UaGVtZSddKSB7XG4gICAgICAgIHRoaXMuY29tcENvbG9yID0gdGhpcy5nZXRDb21wYW55Q29sb3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlPzogRmlsZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5maWxlID0gdmFsdWUgfHwgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGFueUNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFueUNvbG9yIHx8ICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICcjNDZBOTk3JyA6ICcjRDQxMEFBJyk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVTaXplVG9NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZmlsZVNpemUgLyAxMDI0IC8gMTAyNDtcbiAgfVxuXG4gIG9uS2V5ZG93bihldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldi5rZXkgPT09ICdFbnRlcicgfHwgZXYua2V5ID09PSAnICcpIHtcbiAgICAgIHRoaXMuZmlsZURyb3AubmF0aXZlRWxlbWVudC5jbGljaygpXG4gICAgfSBlbHNlIGlmICAoZXYua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgIHRoaXMuc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgICAgdGhpcy5pc01pc3NlZE1pblNpemUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNDYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ1cGxvYWQtZmlsZS1jb250YWluZXJcIlxuICAgIHVpRHJhZ0Ryb3BcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIlxuICAgIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3VwbG9hZC1lcnJvcnMnOiAhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemUsICd1cGxvYWQtZmlsZS1jb250YWluZXItZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgIChjbGljayk9XCJmaWxlRHJvcC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIlxuICA+XG4gICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7XCIgW2F0dHIuYXJpYS1saXZlXT1cIidwb2xpdGUnXCI+XG4gICAgICB7eyBzdWNjZXNzID8gKCdGSUxFX1VQTE9BRC5GSUxFX1VQTE9BRElOR19TVUNDRVNTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIDogcHJvZ3Jlc3MgPyAoJ0ZJTEVfVVBMT0FELlVQTE9BRElORycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSA6ICcnIH19XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgKm5nSWY9XCIoYnJvd3NlICYmICEoc3VjY2VzcyAmJiAhIWZpbGUgJiYgcHJvZ3Jlc3MpKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJyb3dzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nSWY9XCIhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemVcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFlcnJvcnNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj48dWktaWNvbiBuYW1lPVwiRXJyb3JcIiBjbGFzcz1cImVycm9yLWljb25cIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIHt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01pc3NlZE1pblNpemVcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJFcnJvclwiIGNsYXNzPVwiZXJyb3ItaWNvblwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdNSU5fU0laRV9FUlJPUicgfCB1aVRyYW5zbGF0ZSA6IHsgbWluOiBtaW5GaWxlU2l6ZU1CIH0gfCBhc3luYyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzdWNjZXNzIHx8IHByb2dyZXNzID8gJycgOiAnZHJhZy1hbmQtZHJvcCdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ3VwbG9hZC1zdXBwb3J0ZWQtZmlsZXMnXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAjZmlsZURyb3BcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgaWQ9XCJmaWxlXCJcbiAgICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZEZpbGVUeXBlc1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlVXBsb2FkKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgcmVicmFuZGVkRG5EQ29weVRwbFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnRFJBR19BTkRfRFJPUF9PUicpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwic2VtaWJvbGRcIj4ge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdCUk9XU0UnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfCBsb3dlcmNhc2UgfX08L3NwYW4+IHt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnWU9VUl9GSUxFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIj57eyBtYXhGaWxlU2l6ZU1CIH19e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdNQVhfU0laRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtaW5GaWxlU2l6ZU1CXCIgY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7IG1pbkZpbGVTaXplTUIgfX17eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ01JTl9TSVpFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1jaGFuZ2VcIiBbQGluT3V0QW5pbWF0aW9uQ2hhbmdlXSAqbmdJZj1cIiEhc3VjY2VzcyAmJiAhIWZpbGUgJiYgISFwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdkcmFnLWFuZC1kcm9wJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic3VjY2VzcyB8fCBwcm9ncmVzcyA/ICcnIDogJ3N1cHBvcnRlZC1maWxlLXR5cGVzJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgI2ZpbGVEcm9wXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgaWQ9XCJmaWxlVGVzdFwiXG4gICAgICAgIFthY2NlcHRdPVwic3VwcG9ydGVkRmlsZVR5cGVzXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWREbkRDb3B5VHBsXCI+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdEUkFHX0FORF9EUk9QX09SJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19Jm5ic3A7PHNwYW5cbiAgICAgICAgY2xhc3M9XCJzZW1pYm9sZFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0hBTkdFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIHwgbG93ZXJjYXNlIH19PC9zcGFuPiB7eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1lPVVJfRklMRVMnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIlxuICAgICAgPjxzdHJvbmc+e3sgZmlsZS5uYW1lIH19PC9zdHJvbmc+PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1wcm9ncmVzc1wiIFtAaW5PdXRBbmltYXRpb25Qcm9ncmVzc10gKm5nSWY9XCIhIXByb2dyZXNzICYmICEhZmlsZSAmJiAhc3VjY2Vzc1wiPlxuICAgICAgPHA+e3sgZmlsZS5uYW1lIH19PC9wPlxuICAgICAgPHVpLXByb2dyZXNzLWJhciBbcHJvZ3Jlc3NdPVwidXBsb2FkUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFueUNvbG9yXT1cImNvbXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLXByb2dyZXNzLWJhcj5cbiAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXRleHRcIj5cbiAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdVUExPQURJTkcnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX0gPHNwYW4+e3sgdXBsb2FkUHJvZ3Jlc3MgfX08L3NwYW5cbiAgICAgID4lXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ljb25UcGw+XG4gICAgICA8dWktaWNvbiAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWRJY29uVHBsXCIgY2xhc3M9XCJ1cGxvYWQtaWNvblwiXG4gICAgICAgICAgICAgICBuYW1lPVwiRmlsZS11cGxvYWRcIj48L3VpLWljb24+XG4gICAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZEljb25UcGw+XG4gICAgICAgIDx1aS1pY29uIGNsYXNzPVwidXBsb2FkLWljb25cIlxuICAgICAgICAgICAgICAgICBuYW1lPVwiVXBsb2FkXCJcbiAgICAgICAgICAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNyZWJyYW5kZWREbkRDb3B5VHBsPlxuICAgICAgPHAgaWQ9XCInZHJhZy1hbmQtZHJvcCdcIj57eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ0RSQUdfQU5EX0RST1AnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiISFzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICBjbGFzcz1cInVwbG9hZC1zdXBwb3J0ZWQtZmlsZXNcIlxuICAgICAgaWQ9XCJ1cGxvYWQtc3VwcG9ydGVkLWZpbGVzXCI+XG4gICAgICA8c3BhbiA+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVVBQT1JURURfRklMRV9UWVBFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj57eyBzdXBwb3J0ZWRGaWxlVHlwZXMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBaUR6RSxNQUFNLE9BQU8sbUJBQW1CO0lBc0g5QixZQUM2RSxlQUFpQztRQUFqQyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUF0SC9GLFVBQUssR0FBRyxnQkFBZ0IsQ0FBQztRQXdDeEM7Ozs7O1dBS0c7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRTFCOzs7OztXQUtHO1FBQ00sU0FBSSxHQUFnQixJQUFJLENBQUM7UUFFbEM7Ozs7OztXQU1HO1FBQ00saUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBSzFDOzs7Ozs7V0FNRztRQUNNLHFCQUFnQixHQUFxQixPQUFPLENBQUM7UUFVdEQ7Ozs7O1dBS0c7UUFDTSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVwQixXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFJN0Ms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RSxDQUFDLENBQUM7NkJBQzFELENBQUM7eUJBQ0gsQ0FBQztxQkFDSDs7MEJBeUhFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DO3lDQXRIM0MsS0FBSztzQkFBbkIsV0FBVztnQkFPSCxhQUFhO3NCQUFyQixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBUUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsTUFBTTtzQkFBZCxLQUFLO2dCQVFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsSUFBSTtzQkFBWixLQUFLO2dCQVNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR04sU0FBUztzQkFEUixXQUFXO3VCQUFDLGVBQWU7Z0JBVW5CLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUVnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBPcHRpb25hbCxcbiAgSW5qZWN0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktZmlsZS11cGxvYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbGVVcGxvYWRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbicsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pLFxuICAgIHRyaWdnZXIoJ2luT3V0QW5pbWF0aW9uUHJvZ3Jlc3MnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjJzIGVhc2Utb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSkpXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCBoZWlnaHQ6ICcxOTZweCcgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1pbicsIHN0eWxlKHsgb3BhY2l0eTogMCwgaGVpZ2h0OiAwIH0pKVxuICAgICAgXSlcbiAgICBdKSxcbiAgICB0cmlnZ2VyKCdpbk91dEFuaW1hdGlvbkNoYW5nZScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSksXG4gICAgICAgIGFuaW1hdGUoJzAuMnMgZWFzZS1vdXQnLCBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSlcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDEsIGhlaWdodDogJzE5NnB4JyB9KSxcbiAgICAgICAgYW5pbWF0ZSgnMC4ycyBlYXNlLWluJywgc3R5bGUoeyBvcGFjaXR5OiAwLCBoZWlnaHQ6IDAgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBIb3N0QmluZGluZygpIGNsYXNzID0gJ3VpLWZpbGUtdXBsb2FkJztcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1heEZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1pbkZpbGVTaXplTUI6IG51bWJlcjtcblxuICAvKipcbiAgICogU3VwcG9ydGVkIGZpbGVzIGZvciBpbnB1dCBmaWVsZFxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc3VwcG9ydGVkRmlsZVR5cGVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVcGxvYWQgcHJvZ3Jlc3NcbiAgICpcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVwbG9hZFByb2dyZXNzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGVycm9yc1xuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nW119XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBlcnJvcnM/OiBzdHJpbmdbXSB8IG51bGw7XG5cbiAgLyoqXG4gICAqIEZpbGUgdXBsb2FkIGRpc2FibGVkXG4gICAqXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKiBAbWVtYmVyb2YgRmlsZVVwbG9hZENvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRXhpc3RpbmcgZmlsZSBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAdHlwZSB7KEZpbGUgfCBudWxsKX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGZpbGU6IEZpbGUgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ29sb3Igb2YgdGhlIGZpbGUgdXBsb2FkLlxuICAgKiBEZWZhdWx0cyB0byBUZXN0IEdvcmlsbGEgcHJpbWFyeSBjb2xvci5cbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbXBhbnlDb2xvcjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb2xvcicpXG4gIGNvbXBDb2xvcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIEZpbGVVcGxvYWRDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEFSSUEgbGFiZWwgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqIFRoaXMgbGFiZWwgaXMgdXNlZCB0byBwcm92aWRlIGFuIGFjY2Vzc2libGUgbmFtZSBmb3IgdGhlIGlucHV0IGVsZW1lbnQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBBUklBIHJlcXVpcmVtZW50IGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIHRvIGluZGljYXRlIHdoZXRoZXIgYW4gaW5wdXQgZmllbGQgaXMgcmVxdWlyZWQgZm9yIGZvcm0gc3VibWlzc2lvbi5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBGaWxlVXBsb2FkQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBhcmlhUmVxdWlyZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgT25Ecm9wOiBFdmVudEVtaXR0ZXI8RmlsZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGU+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZmlsZURyb3AnKSBmaWxlRHJvcDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ0ZJTEVfVVBMT0FELic7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICB9O1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoID0gKCkgPT4ge1xuICB9O1xuXG4gIGlzTWlzc2VkTWluU2l6ZSA9IGZhbHNlO1xuICBwcm9ncmVzcyA9IGZhbHNlO1xuICBzdWNjZXNzID0gZmFsc2U7XG4gIGJyb3dzZTogYm9vbGVhbjtcbiAgaXNDYW5jZWxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgKSB7XG4gICAgaWYgKGRlZmF1bHRBcHBUaGVtZSkge1xuICAgICAgdGhpcy5hcHBsaWNhdGlvblRoZW1lID0gZGVmYXVsdEFwcFRoZW1lO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgfVxuXG4gIC8vV2hlbiBmaWxlIGlzIGRyb3BwZWRcbiAgb25GaWxlRHJvcHBlZChmaWxlczogRmlsZUxpc3QpIHtcbiAgICB0aGlzLmVtaXRGaWxlKGZpbGVzKTtcbiAgfVxuXG4gIC8vV2hlbiBpbnB1dCBjaGFuZ2VzXG4gIG9uQ2hhbmdlVXBsb2FkKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaXNDYW5jZWxlZCA9IGZhbHNlO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGhpcy5lbWl0RmlsZShlbGVtZW50LmZpbGVzIHx8IG5ldyBGaWxlTGlzdCgpKTtcbiAgfVxuXG4gIC8vRW1pdCBkcm9wIGZpbGVcbiAgZW1pdEZpbGUoZmlsZXM6IEZpbGVMaXN0KSB7XG4gICAgY29uc3QgW2ZpbGVdID0gQXJyYXkuZnJvbShmaWxlcyk7XG4gICAgdGhpcy5maWxlID0gZmlsZTtcbiAgICB0aGlzLmVycm9ycyA9IG51bGw7XG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy5pc01pc3NlZE1pblNpemUgPVxuICAgICAgIWZpbGU/LnNpemUgJiYgIXRoaXMubWluRmlsZVNpemVNQiA/IHRydWUgOiB0aGlzLmZpbGVTaXplVG9NQihmaWxlPy5zaXplID8/IDApIDw9IHRoaXMubWluRmlsZVNpemVNQjtcbiAgICBpZiAoIXRoaXMuaXNNaXNzZWRNaW5TaXplKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZmlsZSk7XG4gICAgICB0aGlzLk9uRHJvcC5lbWl0KGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIC8vU2hvdyBwcm9ncmVzcy1iYXJcbiAgc2hvd1Byb2dyZXNzKCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuYnJvd3NlID0gZmFsc2U7XG4gICAgcmV0dXJuICEhKHRoaXMuZmlsZSAmJiAhdGhpcy5lcnJvcnMgJiYgIXRoaXMuaXNNaXNzZWRNaW5TaXplKTtcbiAgfVxuXG4gIC8vU2hvdyBzdWNjZXNzIGVsZW1lbnRzXG4gIHNob3dTdWNjZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmZpbGUgJiYgdGhpcy51cGxvYWRQcm9ncmVzcyA9PT0gMTAwICYmICF0aGlzLmVycm9ycyAmJiAhdGhpcy5pc01pc3NlZE1pblNpemUpO1xuICB9XG5cbiAgLy9TaG93IGJyb3dzZSB3aGVuIHRoZXJlIGFyZSBlcnJvclxuICBzaG93QnJvd3NlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhISh0aGlzLmVycm9ycyB8fCB0aGlzLmlzTWlzc2VkTWluU2l6ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKCF0aGlzLmlzQ2FuY2VsZWQpIHtcbiAgICAgIGlmIChjaGFuZ2VzWyd1cGxvYWRQcm9ncmVzcyddIHx8IGNoYW5nZXNbJ2ZpbGUnXSkge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gdGhpcy5zaG93UHJvZ3Jlc3MoKTtcbiAgICAgICAgdGhpcy5zdWNjZXNzID0gdGhpcy5zaG93U3VjY2VzcygpO1xuICAgICAgICB0aGlzLmJyb3dzZSA9IHRoaXMuc2hvd0Jyb3dzZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXNbJ2Vycm9ycyddKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB0aGlzLnNob3dQcm9ncmVzcygpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MgPSB0aGlzLnNob3dTdWNjZXNzKCk7XG4gICAgICAgIHRoaXMuYnJvd3NlID0gdGhpcy5zaG93QnJvd3NlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlc1snYXBwbGljYXRpb25UaGVtZSddKSB7XG4gICAgICAgIHRoaXMuY29tcENvbG9yID0gdGhpcy5nZXRDb21wYW55Q29sb3IoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlPzogRmlsZSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5maWxlID0gdmFsdWUgfHwgbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcGFueUNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFueUNvbG9yIHx8ICh0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJyA/ICcjNDZBOTk3JyA6ICcjRDQxMEFBJyk7XG4gIH1cblxuICBwcml2YXRlIGZpbGVTaXplVG9NQihmaWxlU2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZmlsZVNpemUgLyAxMDI0IC8gMTAyNDtcbiAgfVxuXG4gIG9uS2V5ZG93bihldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldi5rZXkgPT09ICdFbnRlcicgfHwgZXYua2V5ID09PSAnICcpIHtcbiAgICAgIHRoaXMuZmlsZURyb3AubmF0aXZlRWxlbWVudC5jbGljaygpXG4gICAgfSBlbHNlIGlmICAoZXYua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgIHRoaXMuc3VjY2VzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5wcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5lcnJvcnMgPSBudWxsO1xuICAgICAgdGhpcy5pc01pc3NlZE1pblNpemUgPSBmYWxzZTtcbiAgICAgIHRoaXMuYnJvd3NlID0gdHJ1ZTtcbiAgICAgIHRoaXMuaXNDYW5jZWxlZCA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJ1cGxvYWQtZmlsZS1jb250YWluZXJcIlxuICAgIHVpRHJhZ0Ryb3BcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJhcmlhUmVxdWlyZWRcIlxuICAgIFthdHRyLnRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3VwbG9hZC1lcnJvcnMnOiAhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemUsICd1cGxvYWQtZmlsZS1jb250YWluZXItZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcbiAgICAoZmlsZURyb3BwZWQpPVwib25GaWxlRHJvcHBlZCgkZXZlbnQpXCJcbiAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIlxuICAgIChjbGljayk9XCJmaWxlRHJvcC5uYXRpdmVFbGVtZW50LmNsaWNrKClcIlxuICA+XG4gICAgPHNwYW4gc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC05OTk5cHg7XCIgW2F0dHIuYXJpYS1saXZlXT1cIidwb2xpdGUnXCI+XG4gICAgICB7eyBzdWNjZXNzID8gKCdGSUxFX1VQTE9BRC5GSUxFX1VQTE9BRElOR19TVUNDRVNTJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMpIDogcHJvZ3Jlc3MgPyAoJ0ZJTEVfVVBMT0FELlVQTE9BRElORycgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSA6ICcnIH19XG4gICAgPC9zcGFuPlxuICAgIDxkaXYgKm5nSWY9XCIoYnJvd3NlICYmICEoc3VjY2VzcyAmJiAhIWZpbGUgJiYgcHJvZ3Jlc3MpKVwiIFtAaW5PdXRBbmltYXRpb25dIGNsYXNzPVwidXBsb2FkLWZpbGVzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWJyb3dzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImljb25UcGxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JzXCIgKm5nSWY9XCIhIWVycm9ycyB8fCBpc01pc3NlZE1pblNpemVcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFlcnJvcnNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj48dWktaWNvbiBuYW1lPVwiRXJyb3JcIiBjbGFzcz1cImVycm9yLWljb25cIj48L3VpLWljb24+XG4gICAgICAgICAgICAgIHt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc01pc3NlZE1pblNpemVcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJFcnJvclwiIGNsYXNzPVwiZXJyb3ItaWNvblwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdNSU5fU0laRV9FUlJPUicgfCB1aVRyYW5zbGF0ZSA6IHsgbWluOiBtaW5GaWxlU2l6ZU1CIH0gfCBhc3luYyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJzdWNjZXNzIHx8IHByb2dyZXNzID8gJycgOiAnZHJhZy1hbmQtZHJvcCdcIlxuICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ3VwbG9hZC1zdXBwb3J0ZWQtZmlsZXMnXCJcbiAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAjZmlsZURyb3BcbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgaWQ9XCJmaWxlXCJcbiAgICAgICAgICBbYWNjZXB0XT1cInN1cHBvcnRlZEZpbGVUeXBlc1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlVXBsb2FkKCRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICAgIDxwXG4gICAgICAgICAgKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgcmVicmFuZGVkRG5EQ29weVRwbFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnRFJBR19BTkRfRFJPUF9PUicpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgIGNsYXNzPVwic2VtaWJvbGRcIj4ge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdCUk9XU0UnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfCBsb3dlcmNhc2UgfX08L3NwYW4+IHt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnWU9VUl9GSUxFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIj57eyBtYXhGaWxlU2l6ZU1CIH19e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdNQVhfU0laRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJtaW5GaWxlU2l6ZU1CXCIgY2xhc3M9XCJ1cGxvYWQtdGV4dFwiPnt7IG1pbkZpbGVTaXplTUIgfX17eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ01JTl9TSVpFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1jaGFuZ2VcIiBbQGluT3V0QW5pbWF0aW9uQ2hhbmdlXSAqbmdJZj1cIiEhc3VjY2VzcyAmJiAhIWZpbGUgJiYgISFwcm9ncmVzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpY29uVHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInN1Y2Nlc3MgfHwgcHJvZ3Jlc3MgPyAnJyA6ICdkcmFnLWFuZC1kcm9wJ1wiXG4gICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwic3VjY2VzcyB8fCBwcm9ncmVzcyA/ICcnIDogJ3N1cHBvcnRlZC1maWxlLXR5cGVzJ1wiXG4gICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgI2ZpbGVEcm9wXG4gICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgaWQ9XCJmaWxlVGVzdFwiXG4gICAgICAgIFthY2NlcHRdPVwic3VwcG9ydGVkRmlsZVR5cGVzXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVVwbG9hZCgkZXZlbnQpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIC8+XG4gICAgICA8bGFiZWwgZm9yPVwiZmlsZVwiIGNsYXNzPVwidHJhbnNwYXJlbnRcIj57eyAhIWZpbGUgJiYgc3VjY2VzcyA/ICcnIDogKHRyYW5zbGF0aW9uQ29udGV4dCArICdDSE9PU0VfRklMRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvbGFiZWw+XG4gICAgICA8cFxuICAgICAgICAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWREbkRDb3B5VHBsXCI+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdEUkFHX0FORF9EUk9QX09SJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIH19Jm5ic3A7PHNwYW5cbiAgICAgICAgY2xhc3M9XCJzZW1pYm9sZFwiPnt7ICh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0hBTkdFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jIHwgbG93ZXJjYXNlIH19PC9zcGFuPiB7eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ1lPVVJfRklMRVMnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXRleHRcIlxuICAgICAgPjxzdHJvbmc+e3sgZmlsZS5uYW1lIH19PC9zdHJvbmc+PC9zcGFuXG4gICAgICA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInVwbG9hZC1wcm9ncmVzc1wiIFtAaW5PdXRBbmltYXRpb25Qcm9ncmVzc10gKm5nSWY9XCIhIXByb2dyZXNzICYmICEhZmlsZSAmJiAhc3VjY2Vzc1wiPlxuICAgICAgPHA+e3sgZmlsZS5uYW1lIH19PC9wPlxuICAgICAgPHVpLXByb2dyZXNzLWJhciBbcHJvZ3Jlc3NdPVwidXBsb2FkUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFueUNvbG9yXT1cImNvbXBDb2xvclwiXG4gICAgICAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLXByb2dyZXNzLWJhcj5cbiAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXRleHRcIj5cbiAgICAgICAge3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdVUExPQURJTkcnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX0gPHNwYW4+e3sgdXBsb2FkUHJvZ3Jlc3MgfX08L3NwYW5cbiAgICAgID4lXG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgI2ljb25UcGw+XG4gICAgICA8dWktaWNvbiAqbmdJZj1cImFwcGxpY2F0aW9uVGhlbWUgPT09ICdjbGFzc2ljJzsgZWxzZSByZWJyYW5kZWRJY29uVHBsXCIgY2xhc3M9XCJ1cGxvYWQtaWNvblwiXG4gICAgICAgICAgICAgICBuYW1lPVwiRmlsZS11cGxvYWRcIj48L3VpLWljb24+XG4gICAgICA8bmctdGVtcGxhdGUgI3JlYnJhbmRlZEljb25UcGw+XG4gICAgICAgIDx1aS1pY29uIGNsYXNzPVwidXBsb2FkLWljb25cIlxuICAgICAgICAgICAgICAgICBuYW1lPVwiVXBsb2FkXCJcbiAgICAgICAgICAgICAgICAgW3NpemVdPVwiJzI0J1wiXG4gICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIj48L3VpLWljb24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNyZWJyYW5kZWREbkRDb3B5VHBsPlxuICAgICAgPHAgaWQ9XCInZHJhZy1hbmQtZHJvcCdcIj57eyAodHJhbnNsYXRpb25Db250ZXh0ICsgJ0RSQUdfQU5EX0RST1AnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwiISFzdXBwb3J0ZWRGaWxlVHlwZXNcIlxuICAgICAgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICBjbGFzcz1cInVwbG9hZC1zdXBwb3J0ZWQtZmlsZXNcIlxuICAgICAgaWQ9XCJ1cGxvYWQtc3VwcG9ydGVkLWZpbGVzXCI+XG4gICAgICA8c3BhbiA+e3sgKHRyYW5zbGF0aW9uQ29udGV4dCArICdTVVBQT1JURURfRklMRV9UWVBFUycpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyB9fTwvc3Bhbj57eyBzdXBwb3J0ZWRGaWxlVHlwZXMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -9,20 +9,20 @@ import { FileUploadComponent } from './file-upload.component';
9
9
  import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
10
10
  import * as i0 from "@angular/core";
11
11
  export class FileUploadComponentModule {
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FileUploadComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.7", ngImport: i0, type: FileUploadComponentModule, declarations: [FileUploadComponent, DragDropDirective], imports: [CommonModule,
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, declarations: [FileUploadComponent, DragDropDirective], imports: [CommonModule,
14
14
  MatFormFieldModule,
15
15
  MatInputModule,
16
16
  IconComponentModule,
17
17
  ProgressBarComponentModule,
18
18
  UiTranslatePipe], exports: [FileUploadComponent] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FileUploadComponentModule, imports: [CommonModule,
19
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, imports: [CommonModule,
20
20
  MatFormFieldModule,
21
21
  MatInputModule,
22
22
  IconComponentModule,
23
23
  ProgressBarComponentModule] }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImport: i0, type: FileUploadComponentModule, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FileUploadComponentModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  declarations: [FileUploadComponent, DragDropDirective],
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.7", ngImpor
37
37
  exports: [FileUploadComponent],
38
38
  }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBY2hFLE1BQU0sT0FBTyx5QkFBeUI7OEdBQXpCLHlCQUF5QjsrR0FBekIseUJBQXlCLGlCQVhyQixtQkFBbUIsRUFBRSxpQkFBaUIsYUFFbkQsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLDBCQUEwQjtZQUMxQixlQUFlLGFBRVAsbUJBQW1COytHQUVsQix5QkFBeUIsWUFUbEMsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLDBCQUEwQjs7MkZBS2pCLHlCQUF5QjtrQkFackMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQztvQkFDdEQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBEcmFnRHJvcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IFVpVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3VpLXRyYW5zbGF0ZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRmlsZVVwbG9hZENvbXBvbmVudCwgRHJhZ0Ryb3BEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50TW9kdWxlLFxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50TW9kdWxlLFxuICAgIFVpVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW0ZpbGVVcGxvYWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50TW9kdWxlIHt9XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQuY29tcG9uZW50Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBY2hFLE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCLGlCQVhyQixtQkFBbUIsRUFBRSxpQkFBaUIsYUFFbkQsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLDBCQUEwQjtZQUMxQixlQUFlLGFBRVAsbUJBQW1CO2dIQUVsQix5QkFBeUIsWUFUbEMsWUFBWTtZQUNaLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLDBCQUEwQjs7NEZBS2pCLHlCQUF5QjtrQkFackMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxpQkFBaUIsQ0FBQztvQkFDdEQsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsMEJBQTBCO3dCQUMxQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBEcmFnRHJvcERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJDb21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi9wcm9ncmVzcy1iYXIvcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IFVpVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3VpLXRyYW5zbGF0ZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRmlsZVVwbG9hZENvbXBvbmVudCwgRHJhZ0Ryb3BEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBJY29uQ29tcG9uZW50TW9kdWxlLFxuICAgIFByb2dyZXNzQmFyQ29tcG9uZW50TW9kdWxlLFxuICAgIFVpVHJhbnNsYXRlUGlwZSxcbiAgXSxcbiAgZXhwb3J0czogW0ZpbGVVcGxvYWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29tcG9uZW50TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,246 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { Color } from '../../models/colors.model';
3
+ import gaussian from 'gaussian';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ng2-charts";
6
+ import * as i2 from "@angular/material/tooltip";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "../icon/icon.component";
9
+ import * as i5 from "../../pipes/ui-translate.pipe";
10
+ import * as i6 from "../../pipes/memoize-func.pipe";
11
+ var PercentileThreshold;
12
+ (function (PercentileThreshold) {
13
+ PercentileThreshold[PercentileThreshold["LOWEST"] = 20] = "LOWEST";
14
+ PercentileThreshold[PercentileThreshold["LOWER"] = 40] = "LOWER";
15
+ PercentileThreshold[PercentileThreshold["AVERAGE"] = 60] = "AVERAGE";
16
+ PercentileThreshold[PercentileThreshold["HIGHER"] = 80] = "HIGHER";
17
+ PercentileThreshold[PercentileThreshold["HIGHEST"] = 100] = "HIGHEST";
18
+ })(PercentileThreshold || (PercentileThreshold = {}));
19
+ export class GaussianChartComponent {
20
+ constructor() {
21
+ /**
22
+ *
23
+ * Defines the application theme
24
+ *
25
+ * @type {ApplicationTheme}
26
+ * @memberof SpinnerComponent
27
+ */
28
+ this.applicationTheme = 'light';
29
+ this.minXValue = -3;
30
+ this.maxXValue = 3;
31
+ this.minYValue = 0;
32
+ this.stepSize = 0.1;
33
+ this.pointsToSkip = 2;
34
+ this.actualMinXvalue = this.minXValue + this.pointsToSkip * this.stepSize;
35
+ this.actualMaxXvalue = this.maxXValue - this.pointsToSkip * this.stepSize;
36
+ this.normalContainerPadding = 50; //in px
37
+ this.bestScoreThreshold = 92;
38
+ this.bestScoreSpacingRight = '4px';
39
+ this.bestScoreSpacingLeft = '-39px';
40
+ this.PercentileThreshold = PercentileThreshold;
41
+ this.gaussianChartData = {
42
+ labels: [],
43
+ datasets: [],
44
+ };
45
+ this.translationContext = 'CHARTS.GAUSSIAN_CHART.';
46
+ }
47
+ ngOnInit() {
48
+ if (this.score === undefined || this.score === null) {
49
+ throw new Error('Input "score" is required for GaussianChartComponent.');
50
+ }
51
+ if (this.bestCandidateScore === undefined || this.bestCandidateScore === null) {
52
+ throw new Error('Input "bestCandidateScore" is required for GaussianChartComponent.');
53
+ }
54
+ this.setActiveBucket();
55
+ this.gaussianDistribution = gaussian(0, 1);
56
+ this.maxYValue = this.gaussianDistribution.pdf(0);
57
+ this.setOverlayValues();
58
+ this.setOverlayValuesForBestScore();
59
+ this.setChartData();
60
+ this.setChartOptions();
61
+ }
62
+ setChartData() {
63
+ const xValues = [];
64
+ const yValues = [];
65
+ const labels = this.generateLabels(this.minXValue, this.maxXValue, this.stepSize);
66
+ for (let x = this.minXValue; x < this.maxXValue + this.stepSize; x = Number((x + this.stepSize).toFixed(2))) {
67
+ xValues.push(x);
68
+ yValues.push(this.gaussianDistribution.pdf(x));
69
+ }
70
+ this.gaussianChartData = {
71
+ labels,
72
+ datasets: this.generateDataset(yValues),
73
+ };
74
+ }
75
+ setChartOptions() {
76
+ this.gaussianChartOptions = {
77
+ responsive: true,
78
+ maintainAspectRatio: false,
79
+ scales: this.getScale(),
80
+ plugins: {
81
+ // To be used only for dev purpose
82
+ // tooltip: this.getTooltip(),
83
+ // Comment the below line if you enable the call for tooltip
84
+ tooltip: {
85
+ enabled: false,
86
+ },
87
+ legend: {
88
+ display: false,
89
+ },
90
+ },
91
+ };
92
+ }
93
+ getTooltip() {
94
+ return {
95
+ intersect: false,
96
+ mode: 'nearest',
97
+ displayColors: false,
98
+ callbacks: {
99
+ label: tooltipItem => {
100
+ const value = (this.gaussianDistribution.cdf(parseFloat(tooltipItem.label)) * 100).toFixed(2);
101
+ return `${value}%`;
102
+ },
103
+ title: () => '', // Disable the default title
104
+ },
105
+ };
106
+ }
107
+ getScale() {
108
+ return {
109
+ x: {
110
+ display: false,
111
+ grid: {
112
+ display: false, // Disable grid lines for x-axis
113
+ },
114
+ },
115
+ y: {
116
+ display: false,
117
+ grid: {
118
+ display: false, // Disable grid lines for y-axis
119
+ },
120
+ },
121
+ };
122
+ }
123
+ generateDataset(yValues) {
124
+ return [
125
+ {
126
+ data: [...yValues.slice(0, this.pointsToSkip), ...Array(yValues.length - this.pointsToSkip).fill(null)],
127
+ label: '',
128
+ borderColor: this.activeBucket === PercentileThreshold.LOWEST ? Color.ACCENT_20 : Color.TGO_WHITE,
129
+ borderWidth: 2,
130
+ pointRadius: 0,
131
+ fill: false,
132
+ },
133
+ {
134
+ data: [
135
+ ...Array(this.pointsToSkip).fill(null),
136
+ ...yValues.slice(this.pointsToSkip, yValues.length - this.pointsToSkip),
137
+ ...Array(this.pointsToSkip).fill(null),
138
+ ],
139
+ label: '',
140
+ borderColor: Color.BLACK,
141
+ borderWidth: 2,
142
+ pointRadius: 0,
143
+ fill: false,
144
+ },
145
+ {
146
+ data: [
147
+ ...Array(yValues.length - this.pointsToSkip).fill(null),
148
+ ...yValues.slice(yValues.length - this.pointsToSkip, yValues.length),
149
+ ],
150
+ label: '',
151
+ borderColor: this.activeBucket === PercentileThreshold.HIGHEST ? Color.ACCENT_20 : Color.TGO_WHITE,
152
+ borderWidth: 2,
153
+ pointRadius: 0,
154
+ fill: false,
155
+ },
156
+ ];
157
+ }
158
+ generateLabels(min, max, step) {
159
+ const labels = [];
160
+ for (let x = min; x < max + step; x = Number((x + step).toFixed(2))) {
161
+ labels.push(x.toFixed(1));
162
+ }
163
+ return labels;
164
+ }
165
+ setActiveBucket() {
166
+ if (this.score < PercentileThreshold.LOWEST) {
167
+ this.activeBucket = PercentileThreshold.LOWEST;
168
+ }
169
+ else if (this.score >= PercentileThreshold.LOWEST && this.score < PercentileThreshold.LOWER) {
170
+ this.activeBucket = PercentileThreshold.LOWER;
171
+ }
172
+ else if (this.score >= PercentileThreshold.LOWER && this.score < PercentileThreshold.AVERAGE) {
173
+ this.activeBucket = PercentileThreshold.AVERAGE;
174
+ }
175
+ else if (this.score >= PercentileThreshold.AVERAGE && this.score < PercentileThreshold.HIGHER) {
176
+ this.activeBucket = PercentileThreshold.HIGHER;
177
+ }
178
+ else if (this.score >= PercentileThreshold.HIGHER) {
179
+ this.activeBucket = PercentileThreshold.HIGHEST;
180
+ }
181
+ }
182
+ // For more context: https://testgorilla.atlassian.net/wiki/spaces/SR/pages/1813905736/Percentiles+curve+FE+implementation
183
+ setOverlayValues() {
184
+ const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.score);
185
+ this.overlayXValue = overlayXValue;
186
+ this.overlayYValue = overlayYValue;
187
+ }
188
+ setOverlayValuesForBestScore() {
189
+ const { overlayXValue, overlayYValue } = this.calculateOverlayValues(this.bestCandidateScore);
190
+ this.overlayXBestScoreValue = overlayXValue;
191
+ this.overlayYBestScoreValue = overlayYValue;
192
+ }
193
+ calculateOverlayValues(score) {
194
+ const xValue = this.mapRange(score, 0, 100, this.minXValue, this.maxXValue);
195
+ const yValue = this.gaussianDistribution.pdf(xValue);
196
+ let overlayXValue = score;
197
+ let overlayYValue = this.mapRange(yValue, this.minYValue, this.maxYValue, 0, 100);
198
+ if (xValue <= this.actualMinXvalue || xValue >= this.actualMaxXvalue) {
199
+ const xValueExtreme = xValue <= this.actualMinXvalue ? this.actualMinXvalue : this.actualMaxXvalue;
200
+ const yValueExtreme = this.gaussianDistribution.pdf(xValueExtreme);
201
+ overlayXValue = this.mapRange(xValueExtreme, this.minXValue, this.maxXValue, 0, 100);
202
+ overlayYValue = this.mapRange(yValueExtreme, this.minYValue, this.maxYValue, 0, 100);
203
+ }
204
+ return { overlayXValue, overlayYValue };
205
+ }
206
+ mapRange(value, inMin, inMax, outMin, outMax) {
207
+ return ((value - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;
208
+ }
209
+ getCalcPosition([percentage, pixels, operation = 'add']) {
210
+ const operator = operation === 'add' ? '+' : '-';
211
+ return `calc(${percentage}% ${operator} ${pixels}px)`;
212
+ }
213
+ getBestScoreContentPosition(bestScore) {
214
+ return bestScore < this.bestScoreThreshold ? this.bestScoreSpacingRight : this.bestScoreSpacingLeft;
215
+ }
216
+ getScoreTranslationKey(score) {
217
+ if (score < PercentileThreshold.LOWEST) {
218
+ return 'PERCENTILE_LABEL_TYPES.WELL_BELOW_AVERAGE';
219
+ }
220
+ else if (score >= PercentileThreshold.LOWEST && score < PercentileThreshold.LOWER) {
221
+ return 'PERCENTILE_LABEL_TYPES.BELOW_AVERAGE';
222
+ }
223
+ else if (score >= PercentileThreshold.LOWER && score < PercentileThreshold.AVERAGE) {
224
+ return 'PERCENTILE_LABEL_TYPES.AVERAGE';
225
+ }
226
+ else if (score >= PercentileThreshold.AVERAGE && score < PercentileThreshold.HIGHER) {
227
+ return 'PERCENTILE_LABEL_TYPES.ABOVE_AVERAGE';
228
+ }
229
+ else {
230
+ return 'PERCENTILE_LABEL_TYPES.WELL_ABOVE_AVERAGE';
231
+ }
232
+ }
233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
234
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GaussianChartComponent, selector: "ui-gaussian-chart", inputs: { score: "score", bestCandidateScore: "bestCandidateScore", applicationTheme: "applicationTheme" }, ngImport: i0, template: "<div class=\"chart-section\" *ngIf=\"score\"\n [attr.aria-label]=\"(translationContext + 'ARIA_LABEL') | uiTranslate :\n { score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async\n } | async\"\n tabindex=\"0\">\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart\n [data]=\"gaussianChartData\"\n [options]=\"gaussianChartOptions\"\n type=\"line\"\n class=\"chart\"\n >\n </canvas>\n <div class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc : getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc : getCalcPosition\">\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{score}}</span>\n </div>\n </div>\n <div class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc : getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\">\n <div class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc : getBestScoreContentPosition : this\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{bestCandidateScore}}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST') | uiTranslate | async}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <div class=\"legend-container mt-16\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\"></ui-icon>\n {{(translationContext + 'CANDIDATE_SCORE') | uiTranslate | async}}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{(translationContext + 'HIGHEST_SCORE') | uiTranslate | async}}\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:8px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;margin-top:16px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.BaseChartDirective, selector: "canvas[baseChart]", inputs: ["type", "legend", "data", "options", "plugins", "labels", "datasets"], outputs: ["chartClick", "chartHover"], exportAs: ["base-chart"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "pipe", type: i5.UiTranslatePipe, name: "uiTranslate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.MemoizeFuncPipe, name: "memoizeFunc" }] }); }
235
+ }
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponent, decorators: [{
237
+ type: Component,
238
+ args: [{ selector: 'ui-gaussian-chart', template: "<div class=\"chart-section\" *ngIf=\"score\"\n [attr.aria-label]=\"(translationContext + 'ARIA_LABEL') | uiTranslate :\n { score: score,\n activeBucket: getScoreTranslationKey(score) | uiTranslate | async,\n bestCandidateScore: bestCandidateScore,\n activeBucketBestScore: getScoreTranslationKey(bestCandidateScore) | uiTranslate | async\n } | async\"\n tabindex=\"0\">\n <div class=\"chart-range-wrapper\">\n <div class=\"normal-chart-container\">\n <div class=\"normal-chart\">\n <canvas baseChart\n [data]=\"gaussianChartData\"\n [options]=\"gaussianChartOptions\"\n type=\"line\"\n class=\"chart\"\n >\n </canvas>\n <div class=\"overlay-icon\"\n [style.bottom]=\"[overlayYValue, 3, 'subtract'] | memoizeFunc : getCalcPosition\"\n [style.left]=\"[overlayXValue, 20, 'subtract'] | memoizeFunc : getCalcPosition\">\n <div class=\"drop-icon\">\n <ui-icon name=\"Pin-marker\" size=\"40\"></ui-icon>\n <span class=\"curve-score\">{{score}}</span>\n </div>\n </div>\n <div class=\"best-score\"\n [style.height]=\"[100 - overlayYBestScoreValue, normalContainerPadding, 'add'] | memoizeFunc : getCalcPosition\"\n [style.bottom]=\"overlayYBestScoreValue + '%'\"\n [style.left]=\"overlayXBestScoreValue + '%'\">\n <div class=\"best-score-content\"\n [style.left]=\"bestCandidateScore | memoizeFunc : getBestScoreContentPosition : this\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{bestCandidateScore}}\n </div>\n </div>\n </div>\n <div class=\"overlay\">\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWEST') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.LOWER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.LOWER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.LOWER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.AVERAGE\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.AVERAGE\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.AVERAGE') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHER\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHER\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHER') | uiTranslate | async}}\n </div>\n </div>\n <div class=\"overlay-column\" [class.active]=\"activeBucket === PercentileThreshold.HIGHEST\">\n <div class=\"column-item\" [class.text-bold]=\"activeBucket === PercentileThreshold.HIGHEST\"\n [matTooltip]=\"((translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST_TOOLTIP') | uiTranslate | async) || ''\">\n {{(translationContext + 'PERCENTAGE_BUCKETS_GRAPH.HIGHEST') | uiTranslate | async}}\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"range\">\n <div>1</div>\n <div>20</div>\n <div>40</div>\n <div>60</div>\n <div>80</div>\n <div>99</div>\n </div>\n </div>\n\n <div class=\"legend-container mt-16\">\n <div class=\"legend\">\n <ui-icon name=\"Dot\"></ui-icon>\n {{(translationContext + 'CANDIDATE_SCORE') | uiTranslate | async}}\n </div>\n <div class=\"legend\">\n <ui-icon name=\"Trophy\"></ui-icon>\n {{(translationContext + 'HIGHEST_SCORE') | uiTranslate | async}}\n </div>\n </div>\n</div>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}.chart-section{display:flex;flex-direction:column;gap:8px;overflow:auto;width:100%}.chart-section .chart-range-wrapper{display:flex;flex-direction:column;gap:8px;width:100%}.chart-section .chart-range-wrapper .normal-chart-container{position:relative;padding-bottom:32px;padding-top:50px;margin-top:16px;border:1px solid #D3D3D3;border-radius:10px;width:100%;height:230px}.chart-section .chart-range-wrapper .normal-chart-container .normal-chart{position:relative;z-index:1;width:100%;height:100%}.chart-section .chart-range-wrapper .normal-chart-container .overlay{position:absolute;top:0;left:0;height:100%;width:100%;display:flex}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column{flex:1;font-size:12px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column .column-item{cursor:pointer}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column:not(:last-child){border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active{background-color:#fff5ed;border-bottom:3px solid #242424}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border:none;position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-right:1px solid #D3D3D3}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before,.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{content:\"\";position:absolute;bottom:0;width:calc(100% - 4px);height:2.5px;background-color:#000}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child{border-top-left-radius:8px;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:first-child:before{right:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child{border-top-right-radius:8px;border-bottom-right-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay .overlay-column.active:last-child:after{left:0;border-bottom-left-radius:8px}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon{position:absolute;z-index:1;display:flex;flex-direction:column;align-items:center}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon{position:relative}.chart-section .chart-range-wrapper .normal-chart-container .overlay-icon .drop-icon .curve-score{font-size:14px;font-weight:700;position:absolute;width:100%;text-align:center;top:0;left:.5px;padding:4px 4px 9px}.chart-section .chart-range-wrapper .normal-chart-container .best-score{position:absolute;border-left:1px #242424 dashed}.chart-section .chart-range-wrapper .normal-chart-container .best-score .best-score-content{position:absolute;display:flex;gap:3px;align-items:center}.chart-section .chart-range-wrapper .range{display:flex;justify-content:space-between;color:#919191}.chart-section .chart-range-wrapper .range div{width:35px;text-align:center}.chart-section .chart-range-wrapper .range div:nth-child(2){text-align:left}.chart-section .chart-range-wrapper .range div:nth-last-child(2){text-align:right}.chart-section .legend-container{display:flex;gap:16px}.chart-section .legend-container .legend{display:flex;gap:8px;align-items:center}\n"] }]
239
+ }], propDecorators: { score: [{
240
+ type: Input
241
+ }], bestCandidateScore: [{
242
+ type: Input
243
+ }], applicationTheme: [{
244
+ type: Input
245
+ }] } });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2dhdXNzaWFuLWNoYXJ0L2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9nYXVzc2lhbi1jaGFydC9nYXVzc2lhbi1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFbEQsT0FBTyxRQUFRLE1BQU0sVUFBVSxDQUFDOzs7Ozs7OztBQUVoQyxJQUFLLG1CQU1KO0FBTkQsV0FBSyxtQkFBbUI7SUFDdEIsa0VBQVcsQ0FBQTtJQUNYLGdFQUFVLENBQUE7SUFDVixvRUFBWSxDQUFBO0lBQ1osa0VBQVcsQ0FBQTtJQUNYLHFFQUFhLENBQUE7QUFDZixDQUFDLEVBTkksbUJBQW1CLEtBQW5CLG1CQUFtQixRQU12QjtBQU9ELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFvQkU7Ozs7OztXQU1HO1FBQ00scUJBQWdCLEdBQXFCLE9BQU8sQ0FBQztRQUU3QyxjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsY0FBUyxHQUFHLENBQUMsQ0FBQztRQUNkLGFBQVEsR0FBRyxHQUFHLENBQUM7UUFDZixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixvQkFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3JFLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDckUsMkJBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTztRQUNwQyx1QkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDeEIsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLHlCQUFvQixHQUFHLE9BQU8sQ0FBQztRQUV4Qyx3QkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQVUxQyxzQkFBaUIsR0FBc0I7WUFDckMsTUFBTSxFQUFFLEVBQUU7WUFDVixRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUM7UUFFaUIsdUJBQWtCLEdBQUcsd0JBQXdCLENBQUM7S0EyTWxFO0lBek1DLFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1FBQzNFLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlFLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUN4RixDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztRQUM3QixNQUFNLE9BQU8sR0FBYSxFQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxGLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLE1BQU07WUFDTixRQUFRLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7U0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxvQkFBb0IsR0FBRztZQUMxQixVQUFVLEVBQUUsSUFBSTtZQUNoQixtQkFBbUIsRUFBRSxLQUFLO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLE9BQU8sRUFBRTtnQkFDUCxrQ0FBa0M7Z0JBQ2xDLDhCQUE4QjtnQkFDOUIsNERBQTREO2dCQUM1RCxPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLEtBQUs7aUJBQ2Y7Z0JBQ0QsTUFBTSxFQUFFO29CQUNOLE9BQU8sRUFBRSxLQUFLO2lCQUNmO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLFVBQVU7UUFDaEIsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsYUFBYSxFQUFFLEtBQUs7WUFDcEIsU0FBUyxFQUFFO2dCQUNULEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRTtvQkFDbkIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlGLE9BQU8sR0FBRyxLQUFLLEdBQUcsQ0FBQztnQkFDckIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLDRCQUE0QjthQUM5QztTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sUUFBUTtRQUlkLE9BQU87WUFDTCxDQUFDLEVBQUU7Z0JBQ0QsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFO29CQUNKLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0NBQWdDO2lCQUNqRDthQUNGO1lBQ0QsQ0FBQyxFQUFFO2dCQUNELE9BQU8sRUFBRSxLQUFLO2dCQUNkLElBQUksRUFBRTtvQkFDSixPQUFPLEVBQUUsS0FBSyxFQUFFLGdDQUFnQztpQkFDakQ7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sZUFBZSxDQUNyQixPQUFpQjtRQUVqQixPQUFPO1lBQ0w7Z0JBQ0UsSUFBSSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RyxLQUFLLEVBQUUsRUFBRTtnQkFDVCxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksS0FBSyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUNqRyxXQUFXLEVBQUUsQ0FBQztnQkFDZCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxJQUFJLEVBQUUsS0FBSzthQUNaO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFO29CQUNKLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO29CQUN0QyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7b0JBQ3ZFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2lCQUN2QztnQkFDRCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxXQUFXLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ3hCLFdBQVcsRUFBRSxDQUFDO2dCQUNkLFdBQVcsRUFBRSxDQUFDO2dCQUNkLElBQUksRUFBRSxLQUFLO2FBQ1o7WUFDRDtnQkFDRSxJQUFJLEVBQUU7b0JBQ0osR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDdkQsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDO2lCQUNyRTtnQkFDRCxLQUFLLEVBQUUsRUFBRTtnQkFDVCxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksS0FBSyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUNsRyxXQUFXLEVBQUUsQ0FBQztnQkFDZCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxJQUFJLEVBQUUsS0FBSzthQUNaO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxJQUFZO1FBQzNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDcEUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUNqRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlGLElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1FBQ2hELENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0YsSUFBSSxDQUFDLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7UUFDbEQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoRyxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztRQUNqRCxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsMEhBQTBIO0lBQ2xILGdCQUFnQjtRQUN0QixNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxNQUFNLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsc0JBQXNCLEdBQUcsYUFBYSxDQUFDO1FBQzVDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQWE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRWxGLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyRSxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNuRyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JGLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7UUFFRCxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsTUFBYyxFQUFFLE1BQWM7UUFDMUYsT0FBTyxDQUFDLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFFLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxLQUFLLENBQXVDO1FBQzNGLE1BQU0sUUFBUSxHQUFHLFNBQVMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2pELE9BQU8sUUFBUSxVQUFVLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFRCwyQkFBMkIsQ0FBQyxTQUFpQjtRQUMzQyxPQUFPLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3RHLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxLQUFhO1FBQ2xDLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sMkNBQTJDLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksS0FBSyxJQUFJLG1CQUFtQixDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEYsT0FBTyxzQ0FBc0MsQ0FBQztRQUNoRCxDQUFDO2FBQU0sSUFBSSxLQUFLLElBQUksbUJBQW1CLENBQUMsS0FBSyxJQUFJLEtBQUssR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyRixPQUFPLGdDQUFnQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxJQUFJLEtBQUssSUFBSSxtQkFBbUIsQ0FBQyxPQUFPLElBQUksS0FBSyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RGLE9BQU8sc0NBQXNDLENBQUM7UUFDaEQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLDJDQUEyQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDOytHQTdQVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxS0NwQm5DLGkvSUE0RkE7OzRGRHhFYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsbUJBQW1COzhCQVVwQixLQUFLO3NCQUFiLEtBQUs7Z0JBT0csa0JBQWtCO3NCQUExQixLQUFLO2dCQVNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gJy4uLy4uL21vZGVscy9hcHBsaWNhdGlvbi10aGVtZS5tb2RlbCc7XG5pbXBvcnQgeyBDaGFydCwgQ2hhcnREYXRhLCBDaGFydE9wdGlvbnMsIFRvb2x0aXBPcHRpb25zIH0gZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29sb3JzLm1vZGVsJztcbmltcG9ydCB7IF9EZWVwUGFydGlhbE9iamVjdCB9IGZyb20gJ2NoYXJ0LmpzL2Rpc3QvdHlwZXMvdXRpbHMnO1xuaW1wb3J0IGdhdXNzaWFuIGZyb20gJ2dhdXNzaWFuJztcblxuZW51bSBQZXJjZW50aWxlVGhyZXNob2xkIHtcbiAgTE9XRVNUID0gMjAsXG4gIExPV0VSID0gNDAsXG4gIEFWRVJBR0UgPSA2MCxcbiAgSElHSEVSID0gODAsXG4gIEhJR0hFU1QgPSAxMDAsXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWdhdXNzaWFuLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dhdXNzaWFuLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2F1c3NpYW5DaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBzY29yZSE6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJlc3QgY2FuZGlkYXRlIHNjb3JlIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgY2hhcnQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBiZXN0Q2FuZGlkYXRlU2NvcmUhOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqXG4gICAqIERlZmluZXMgdGhlIGFwcGxpY2F0aW9uIHRoZW1lXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgU3Bpbm5lckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgcmVhZG9ubHkgbWluWFZhbHVlID0gLTM7XG4gIHJlYWRvbmx5IG1heFhWYWx1ZSA9IDM7XG4gIHJlYWRvbmx5IG1pbllWYWx1ZSA9IDA7XG4gIHJlYWRvbmx5IHN0ZXBTaXplID0gMC4xO1xuICByZWFkb25seSBwb2ludHNUb1NraXAgPSAyO1xuICByZWFkb25seSBhY3R1YWxNaW5YdmFsdWUgPSB0aGlzLm1pblhWYWx1ZSArIHRoaXMucG9pbnRzVG9Ta2lwICogdGhpcy5zdGVwU2l6ZTtcbiAgcmVhZG9ubHkgYWN0dWFsTWF4WHZhbHVlID0gdGhpcy5tYXhYVmFsdWUgLSB0aGlzLnBvaW50c1RvU2tpcCAqIHRoaXMuc3RlcFNpemU7XG4gIHJlYWRvbmx5IG5vcm1hbENvbnRhaW5lclBhZGRpbmcgPSA1MDsgLy9pbiBweFxuICByZWFkb25seSBiZXN0U2NvcmVUaHJlc2hvbGQgPSA5MjtcbiAgcmVhZG9ubHkgYmVzdFNjb3JlU3BhY2luZ1JpZ2h0ID0gJzRweCc7XG4gIHJlYWRvbmx5IGJlc3RTY29yZVNwYWNpbmdMZWZ0ID0gJy0zOXB4JztcblxuICBQZXJjZW50aWxlVGhyZXNob2xkID0gUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgY2hhcnQ6IENoYXJ0O1xuICBnYXVzc2lhbkRpc3RyaWJ1dGlvbjogZ2F1c3NpYW4uR2F1c3NpYW47XG4gIGFjdGl2ZUJ1Y2tldDogUGVyY2VudGlsZVRocmVzaG9sZDtcbiAgb3ZlcmxheVhWYWx1ZTogbnVtYmVyO1xuICBvdmVybGF5WVZhbHVlOiBudW1iZXI7XG4gIG92ZXJsYXlYQmVzdFNjb3JlVmFsdWU6IG51bWJlcjtcbiAgb3ZlcmxheVlCZXN0U2NvcmVWYWx1ZTogbnVtYmVyO1xuICBtYXhZVmFsdWU6IG51bWJlcjtcblxuICBnYXVzc2lhbkNoYXJ0RGF0YTogQ2hhcnREYXRhPCdsaW5lJz4gPSB7XG4gICAgbGFiZWxzOiBbXSxcbiAgICBkYXRhc2V0czogW10sXG4gIH07XG4gIGdhdXNzaWFuQ2hhcnRPcHRpb25zOiBDaGFydE9wdGlvbnM8J2xpbmUnPjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0aW9uQ29udGV4dCA9ICdDSEFSVFMuR0FVU1NJQU5fQ0hBUlQuJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuc2NvcmUgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgXCJzY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5iZXN0Q2FuZGlkYXRlU2NvcmUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBcImJlc3RDYW5kaWRhdGVTY29yZVwiIGlzIHJlcXVpcmVkIGZvciBHYXVzc2lhbkNoYXJ0Q29tcG9uZW50LicpO1xuICAgIH1cbiAgICB0aGlzLnNldEFjdGl2ZUJ1Y2tldCgpO1xuICAgIHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24gPSBnYXVzc2lhbigwLCAxKTtcbiAgICB0aGlzLm1heFlWYWx1ZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKDApO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlcygpO1xuICAgIHRoaXMuc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpO1xuICAgIHRoaXMuc2V0Q2hhcnREYXRhKCk7XG4gICAgdGhpcy5zZXRDaGFydE9wdGlvbnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hhcnREYXRhKCkge1xuICAgIGNvbnN0IHhWYWx1ZXM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgeVZhbHVlczogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmdlbmVyYXRlTGFiZWxzKHRoaXMubWluWFZhbHVlLCB0aGlzLm1heFhWYWx1ZSwgdGhpcy5zdGVwU2l6ZSk7XG5cbiAgICBmb3IgKGxldCB4ID0gdGhpcy5taW5YVmFsdWU7IHggPCB0aGlzLm1heFhWYWx1ZSArIHRoaXMuc3RlcFNpemU7IHggPSBOdW1iZXIoKHggKyB0aGlzLnN0ZXBTaXplKS50b0ZpeGVkKDIpKSkge1xuICAgICAgeFZhbHVlcy5wdXNoKHgpO1xuICAgICAgeVZhbHVlcy5wdXNoKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHgpKTtcbiAgICB9XG5cbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnREYXRhID0ge1xuICAgICAgbGFiZWxzLFxuICAgICAgZGF0YXNldHM6IHRoaXMuZ2VuZXJhdGVEYXRhc2V0KHlWYWx1ZXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldENoYXJ0T3B0aW9ucygpIHtcbiAgICB0aGlzLmdhdXNzaWFuQ2hhcnRPcHRpb25zID0ge1xuICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgICAgc2NhbGVzOiB0aGlzLmdldFNjYWxlKCksXG4gICAgICBwbHVnaW5zOiB7XG4gICAgICAgIC8vIFRvIGJlIHVzZWQgb25seSBmb3IgZGV2IHB1cnBvc2VcbiAgICAgICAgLy8gdG9vbHRpcDogdGhpcy5nZXRUb29sdGlwKCksXG4gICAgICAgIC8vIENvbW1lbnQgdGhlIGJlbG93IGxpbmUgaWYgeW91IGVuYWJsZSB0aGUgY2FsbCBmb3IgdG9vbHRpcFxuICAgICAgICB0b29sdGlwOiB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGxlZ2VuZDoge1xuICAgICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUb29sdGlwKCk6IF9EZWVwUGFydGlhbE9iamVjdDxUb29sdGlwT3B0aW9uczwnbGluZSc+PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGludGVyc2VjdDogZmFsc2UsXG4gICAgICBtb2RlOiAnbmVhcmVzdCcsXG4gICAgICBkaXNwbGF5Q29sb3JzOiBmYWxzZSxcbiAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICBsYWJlbDogdG9vbHRpcEl0ZW0gPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gKHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24uY2RmKHBhcnNlRmxvYXQodG9vbHRpcEl0ZW0ubGFiZWwpKSAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICAgICAgICByZXR1cm4gYCR7dmFsdWV9JWA7XG4gICAgICAgIH0sXG4gICAgICAgIHRpdGxlOiAoKSA9PiAnJywgLy8gRGlzYWJsZSB0aGUgZGVmYXVsdCB0aXRsZVxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTY2FsZSgpOiB7XG4gICAgeDogeyBkaXNwbGF5OiBib29sZWFuOyBncmlkOiB7IGRpc3BsYXk6IGJvb2xlYW4gfSB9O1xuICAgIHk6IHsgZGlzcGxheTogYm9vbGVhbjsgZ3JpZDogeyBkaXNwbGF5OiBib29sZWFuIH0gfTtcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHtcbiAgICAgICAgZGlzcGxheTogZmFsc2UsXG4gICAgICAgIGdyaWQ6IHtcbiAgICAgICAgICBkaXNwbGF5OiBmYWxzZSwgLy8gRGlzYWJsZSBncmlkIGxpbmVzIGZvciB4LWF4aXNcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB5OiB7XG4gICAgICAgIGRpc3BsYXk6IGZhbHNlLFxuICAgICAgICBncmlkOiB7XG4gICAgICAgICAgZGlzcGxheTogZmFsc2UsIC8vIERpc2FibGUgZ3JpZCBsaW5lcyBmb3IgeS1heGlzXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRGF0YXNldChcbiAgICB5VmFsdWVzOiBudW1iZXJbXVxuICApOiB7IGRhdGE6IGFueVtdOyBsYWJlbDogc3RyaW5nOyBib3JkZXJDb2xvcjogQ29sb3I7IGJvcmRlcldpZHRoOiBudW1iZXI7IHBvaW50UmFkaXVzOiBudW1iZXI7IGZpbGw6IGJvb2xlYW4gfVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBkYXRhOiBbLi4ueVZhbHVlcy5zbGljZSgwLCB0aGlzLnBvaW50c1RvU2tpcCksIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCldLFxuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIGJvcmRlckNvbG9yOiB0aGlzLmFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh0aGlzLnBvaW50c1RvU2tpcCwgeVZhbHVlcy5sZW5ndGggLSB0aGlzLnBvaW50c1RvU2tpcCksXG4gICAgICAgICAgLi4uQXJyYXkodGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IENvbG9yLkJMQUNLLFxuICAgICAgICBib3JkZXJXaWR0aDogMixcbiAgICAgICAgcG9pbnRSYWRpdXM6IDAsXG4gICAgICAgIGZpbGw6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZGF0YTogW1xuICAgICAgICAgIC4uLkFycmF5KHlWYWx1ZXMubGVuZ3RoIC0gdGhpcy5wb2ludHNUb1NraXApLmZpbGwobnVsbCksXG4gICAgICAgICAgLi4ueVZhbHVlcy5zbGljZSh5VmFsdWVzLmxlbmd0aCAtIHRoaXMucG9pbnRzVG9Ta2lwLCB5VmFsdWVzLmxlbmd0aCksXG4gICAgICAgIF0sXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoaXMuYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1QgPyBDb2xvci5BQ0NFTlRfMjAgOiBDb2xvci5UR09fV0hJVEUsXG4gICAgICAgIGJvcmRlcldpZHRoOiAyLFxuICAgICAgICBwb2ludFJhZGl1czogMCxcbiAgICAgICAgZmlsbDogZmFsc2UsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlTGFiZWxzKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgc3RlcDogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGxhYmVscyA9IFtdO1xuICAgIGZvciAobGV0IHggPSBtaW47IHggPCBtYXggKyBzdGVwOyB4ID0gTnVtYmVyKCh4ICsgc3RlcCkudG9GaXhlZCgyKSkpIHtcbiAgICAgIGxhYmVscy5wdXNoKHgudG9GaXhlZCgxKSk7XG4gICAgfVxuICAgIHJldHVybiBsYWJlbHM7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZUJ1Y2tldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VTVCAmJiB0aGlzLnNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkxPV0VSICYmIHRoaXMuc2NvcmUgPCBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UpIHtcbiAgICAgIHRoaXMuYWN0aXZlQnVja2V0ID0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0UgJiYgdGhpcy5zY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSKSB7XG4gICAgICB0aGlzLmFjdGl2ZUJ1Y2tldCA9IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVSO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zY29yZSA+PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFUikge1xuICAgICAgdGhpcy5hY3RpdmVCdWNrZXQgPSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1Q7XG4gICAgfVxuICB9XG5cbiAgLy8gRm9yIG1vcmUgY29udGV4dDogaHR0cHM6Ly90ZXN0Z29yaWxsYS5hdGxhc3NpYW4ubmV0L3dpa2kvc3BhY2VzL1NSL3BhZ2VzLzE4MTM5MDU3MzYvUGVyY2VudGlsZXMrY3VydmUrRkUraW1wbGVtZW50YXRpb25cbiAgcHJpdmF0ZSBzZXRPdmVybGF5VmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgb3ZlcmxheVhWYWx1ZSwgb3ZlcmxheVlWYWx1ZSB9ID0gdGhpcy5jYWxjdWxhdGVPdmVybGF5VmFsdWVzKHRoaXMuc2NvcmUpO1xuICAgIHRoaXMub3ZlcmxheVhWYWx1ZSA9IG92ZXJsYXlYVmFsdWU7XG4gICAgdGhpcy5vdmVybGF5WVZhbHVlID0gb3ZlcmxheVlWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0T3ZlcmxheVZhbHVlc0ZvckJlc3RTY29yZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfSA9IHRoaXMuY2FsY3VsYXRlT3ZlcmxheVZhbHVlcyh0aGlzLmJlc3RDYW5kaWRhdGVTY29yZSk7XG4gICAgdGhpcy5vdmVybGF5WEJlc3RTY29yZVZhbHVlID0gb3ZlcmxheVhWYWx1ZTtcbiAgICB0aGlzLm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgPSBvdmVybGF5WVZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVPdmVybGF5VmFsdWVzKHNjb3JlOiBudW1iZXIpOiB7IG92ZXJsYXlYVmFsdWU6IG51bWJlcjsgb3ZlcmxheVlWYWx1ZTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHhWYWx1ZSA9IHRoaXMubWFwUmFuZ2Uoc2NvcmUsIDAsIDEwMCwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlKTtcbiAgICBjb25zdCB5VmFsdWUgPSB0aGlzLmdhdXNzaWFuRGlzdHJpYnV0aW9uLnBkZih4VmFsdWUpO1xuICAgIGxldCBvdmVybGF5WFZhbHVlID0gc2NvcmU7XG4gICAgbGV0IG92ZXJsYXlZVmFsdWUgPSB0aGlzLm1hcFJhbmdlKHlWYWx1ZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuXG4gICAgaWYgKHhWYWx1ZSA8PSB0aGlzLmFjdHVhbE1pblh2YWx1ZSB8fCB4VmFsdWUgPj0gdGhpcy5hY3R1YWxNYXhYdmFsdWUpIHtcbiAgICAgIGNvbnN0IHhWYWx1ZUV4dHJlbWUgPSB4VmFsdWUgPD0gdGhpcy5hY3R1YWxNaW5YdmFsdWUgPyB0aGlzLmFjdHVhbE1pblh2YWx1ZSA6IHRoaXMuYWN0dWFsTWF4WHZhbHVlO1xuICAgICAgY29uc3QgeVZhbHVlRXh0cmVtZSA9IHRoaXMuZ2F1c3NpYW5EaXN0cmlidXRpb24ucGRmKHhWYWx1ZUV4dHJlbWUpO1xuICAgICAgb3ZlcmxheVhWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeFZhbHVlRXh0cmVtZSwgdGhpcy5taW5YVmFsdWUsIHRoaXMubWF4WFZhbHVlLCAwLCAxMDApO1xuICAgICAgb3ZlcmxheVlWYWx1ZSA9IHRoaXMubWFwUmFuZ2UoeVZhbHVlRXh0cmVtZSwgdGhpcy5taW5ZVmFsdWUsIHRoaXMubWF4WVZhbHVlLCAwLCAxMDApO1xuICAgIH1cblxuICAgIHJldHVybiB7IG92ZXJsYXlYVmFsdWUsIG92ZXJsYXlZVmFsdWUgfTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwUmFuZ2UodmFsdWU6IG51bWJlciwgaW5NaW46IG51bWJlciwgaW5NYXg6IG51bWJlciwgb3V0TWluOiBudW1iZXIsIG91dE1heDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKCh2YWx1ZSAtIGluTWluKSAqIChvdXRNYXggLSBvdXRNaW4pKSAvIChpbk1heCAtIGluTWluKSArIG91dE1pbjtcbiAgfVxuXG4gIGdldENhbGNQb3NpdGlvbihbcGVyY2VudGFnZSwgcGl4ZWxzLCBvcGVyYXRpb24gPSAnYWRkJ106IFtudW1iZXIsIG51bWJlciwgJ2FkZCcgfCAnc3VidHJhY3QnXSk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3BlcmF0b3IgPSBvcGVyYXRpb24gPT09ICdhZGQnID8gJysnIDogJy0nO1xuICAgIHJldHVybiBgY2FsYygke3BlcmNlbnRhZ2V9JSAke29wZXJhdG9yfSAke3BpeGVsc31weClgO1xuICB9XG5cbiAgZ2V0QmVzdFNjb3JlQ29udGVudFBvc2l0aW9uKGJlc3RTY29yZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYmVzdFNjb3JlIDwgdGhpcy5iZXN0U2NvcmVUaHJlc2hvbGQgPyB0aGlzLmJlc3RTY29yZVNwYWNpbmdSaWdodCA6IHRoaXMuYmVzdFNjb3JlU3BhY2luZ0xlZnQ7XG4gIH1cblxuICBnZXRTY29yZVRyYW5zbGF0aW9uS2V5KHNjb3JlOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUKSB7XG4gICAgICByZXR1cm4gJ1BFUkNFTlRJTEVfTEFCRUxfVFlQRVMuV0VMTF9CRUxPV19BVkVSQUdFJztcbiAgICB9IGVsc2UgaWYgKHNjb3JlID49IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVNUICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUikge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkJFTE9XX0FWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUiAmJiBzY29yZSA8IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRSkge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLkFWRVJBR0UnO1xuICAgIH0gZWxzZSBpZiAoc2NvcmUgPj0gUGVyY2VudGlsZVRocmVzaG9sZC5BVkVSQUdFICYmIHNjb3JlIDwgUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVIpIHtcbiAgICAgIHJldHVybiAnUEVSQ0VOVElMRV9MQUJFTF9UWVBFUy5BQk9WRV9BVkVSQUdFJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICdQRVJDRU5USUxFX0xBQkVMX1RZUEVTLldFTExfQUJPVkVfQVZFUkFHRSc7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hhcnQtc2VjdGlvblwiICpuZ0lmPVwic2NvcmVcIlxuICBbYXR0ci5hcmlhLWxhYmVsXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnQVJJQV9MQUJFTCcpIHwgdWlUcmFuc2xhdGUgOlxuICB7IHNjb3JlOiBzY29yZSxcbiAgICBhY3RpdmVCdWNrZXQ6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoc2NvcmUpIHwgdWlUcmFuc2xhdGUgfCBhc3luYyxcbiAgICBiZXN0Q2FuZGlkYXRlU2NvcmU6IGJlc3RDYW5kaWRhdGVTY29yZSxcbiAgICBhY3RpdmVCdWNrZXRCZXN0U2NvcmU6IGdldFNjb3JlVHJhbnNsYXRpb25LZXkoYmVzdENhbmRpZGF0ZVNjb3JlKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmNcbiAgfSB8IGFzeW5jXCJcbiAgdGFiaW5kZXg9XCIwXCI+XG4gIDxkaXYgY2xhc3M9XCJjaGFydC1yYW5nZS13cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5vcm1hbC1jaGFydC1jb250YWluZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJub3JtYWwtY2hhcnRcIj5cbiAgICAgICAgPGNhbnZhcyBiYXNlQ2hhcnRcbiAgICAgICAgICBbZGF0YV09XCJnYXVzc2lhbkNoYXJ0RGF0YVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwiZ2F1c3NpYW5DaGFydE9wdGlvbnNcIlxuICAgICAgICAgIHR5cGU9XCJsaW5lXCJcbiAgICAgICAgICBjbGFzcz1cImNoYXJ0XCJcbiAgICAgICAgPlxuICAgICAgICA8L2NhbnZhcz5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktaWNvblwiXG4gICAgICAgICAgW3N0eWxlLmJvdHRvbV09XCJbb3ZlcmxheVlWYWx1ZSwgMywgJ3N1YnRyYWN0J10gfCBtZW1vaXplRnVuYyA6IGdldENhbGNQb3NpdGlvblwiXG4gICAgICAgICAgW3N0eWxlLmxlZnRdPVwiW292ZXJsYXlYVmFsdWUsIDIwLCAnc3VidHJhY3QnXSB8IG1lbW9pemVGdW5jIDogZ2V0Q2FsY1Bvc2l0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3AtaWNvblwiPlxuICAgICAgICAgICAgPHVpLWljb24gbmFtZT1cIlBpbi1tYXJrZXJcIiBzaXplPVwiNDBcIj48L3VpLWljb24+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnZlLXNjb3JlXCI+e3tzY29yZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJlc3Qtc2NvcmVcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwiWzEwMCAtIG92ZXJsYXlZQmVzdFNjb3JlVmFsdWUsIG5vcm1hbENvbnRhaW5lclBhZGRpbmcsICdhZGQnXSB8IG1lbW9pemVGdW5jIDogZ2V0Q2FsY1Bvc2l0aW9uXCJcbiAgICAgICAgICBbc3R5bGUuYm90dG9tXT1cIm92ZXJsYXlZQmVzdFNjb3JlVmFsdWUgKyAnJSdcIlxuICAgICAgICAgIFtzdHlsZS5sZWZ0XT1cIm92ZXJsYXlYQmVzdFNjb3JlVmFsdWUgKyAnJSdcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmVzdC1zY29yZS1jb250ZW50XCJcbiAgICAgICAgICBbc3R5bGUubGVmdF09XCJiZXN0Q2FuZGlkYXRlU2NvcmUgfCBtZW1vaXplRnVuYyA6IGdldEJlc3RTY29yZUNvbnRlbnRQb3NpdGlvbiA6IHRoaXNcIj5cbiAgICAgICAgICAgIDx1aS1pY29uIG5hbWU9XCJUcm9waHlcIj48L3VpLWljb24+XG4gICAgICAgICAgICB7e2Jlc3RDYW5kaWRhdGVTY29yZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFU1RcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkxPV0VTVF9UT09MVElQJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5MT1dFU1QnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuTE9XRVJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5MT1dFUlwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCIoKHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVJfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguTE9XRVInKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuQVZFUkFHRVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taXRlbVwiIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkFWRVJBR0VcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkFWRVJBR0VfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguQVZFUkFHRScpIHwgdWlUcmFuc2xhdGUgfCBhc3luY319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheS1jb2x1bW5cIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLWl0ZW1cIiBbY2xhc3MudGV4dC1ib2xkXT1cImFjdGl2ZUJ1Y2tldCA9PT0gUGVyY2VudGlsZVRocmVzaG9sZC5ISUdIRVJcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkhJR0hFUl9UT09MVElQJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSB8fCAnJ1wiPlxuICAgICAgICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ1BFUkNFTlRBR0VfQlVDS0VUU19HUkFQSC5ISUdIRVInKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXktY29sdW1uXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVCdWNrZXQgPT09IFBlcmNlbnRpbGVUaHJlc2hvbGQuSElHSEVTVFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taXRlbVwiIFtjbGFzcy50ZXh0LWJvbGRdPVwiYWN0aXZlQnVja2V0ID09PSBQZXJjZW50aWxlVGhyZXNob2xkLkhJR0hFU1RcIlxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiKCh0cmFuc2xhdGlvbkNvbnRleHQgKyAnUEVSQ0VOVEFHRV9CVUNLRVRTX0dSQVBILkhJR0hFU1RfVE9PTFRJUCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luYykgfHwgJydcIj5cbiAgICAgICAgICAgIHt7KHRyYW5zbGF0aW9uQ29udGV4dCArICdQRVJDRU5UQUdFX0JVQ0tFVFNfR1JBUEguSElHSEVTVCcpIHwgdWlUcmFuc2xhdGUgfCBhc3luY319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicmFuZ2VcIj5cbiAgICAgIDxkaXY+MTwvZGl2PlxuICAgICAgPGRpdj4yMDwvZGl2PlxuICAgICAgPGRpdj40MDwvZGl2PlxuICAgICAgPGRpdj42MDwvZGl2PlxuICAgICAgPGRpdj44MDwvZGl2PlxuICAgICAgPGRpdj45OTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibGVnZW5kLWNvbnRhaW5lciBtdC0xNlwiPlxuICAgIDxkaXYgY2xhc3M9XCJsZWdlbmRcIj5cbiAgICAgIDx1aS1pY29uIG5hbWU9XCJEb3RcIj48L3VpLWljb24+XG4gICAgICB7eyh0cmFuc2xhdGlvbkNvbnRleHQgKyAnQ0FORElEQVRFX1NDT1JFJykgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jfX1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibGVnZW5kXCI+XG4gICAgICA8dWktaWNvbiBuYW1lPVwiVHJvcGh5XCI+PC91aS1pY29uPlxuICAgICAge3sodHJhbnNsYXRpb25Db250ZXh0ICsgJ0hJR0hFU1RfU0NPUkUnKSB8IHVpVHJhbnNsYXRlIHwgYXN5bmN9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,42 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { UiTranslatePipe } from '../../pipes/ui-translate.pipe';
3
+ import { GaussianChartComponent } from './gaussian-chart.component';
4
+ import { NgChartsModule } from 'ng2-charts';
5
+ import { Chart, registerables } from 'chart.js';
6
+ import { MatTooltipModule } from '@angular/material/tooltip';
7
+ import { CommonModule, NgClass } from '@angular/common';
8
+ import { IconComponentModule } from '../icon/icon.component.module';
9
+ import { MemoizeFuncPipe } from 'projects/tgo-canopy-ui/pipes/memoize-func.pipe';
10
+ import * as i0 from "@angular/core";
11
+ Chart.register(...registerables);
12
+ export class GaussianChartComponentModule {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, declarations: [GaussianChartComponent], imports: [NgClass,
15
+ UiTranslatePipe,
16
+ NgChartsModule,
17
+ MatTooltipModule,
18
+ CommonModule,
19
+ IconComponentModule,
20
+ MemoizeFuncPipe], exports: [GaussianChartComponent] }); }
21
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, imports: [NgChartsModule,
22
+ MatTooltipModule,
23
+ CommonModule,
24
+ IconComponentModule] }); }
25
+ }
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GaussianChartComponentModule, decorators: [{
27
+ type: NgModule,
28
+ args: [{
29
+ declarations: [GaussianChartComponent],
30
+ exports: [GaussianChartComponent],
31
+ imports: [
32
+ NgClass,
33
+ UiTranslatePipe,
34
+ NgChartsModule,
35
+ MatTooltipModule,
36
+ CommonModule,
37
+ IconComponentModule,
38
+ MemoizeFuncPipe,
39
+ ],
40
+ }]
41
+ }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1c3NpYW4tY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGdvLWNhbm9weS11aS9jb21wb25lbnRzL2dhdXNzaWFuLWNoYXJ0L2dhdXNzaWFuLWNoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOztBQUVqRixLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7QUFlakMsTUFBTSxPQUFPLDRCQUE0QjsrR0FBNUIsNEJBQTRCO2dIQUE1Qiw0QkFBNEIsaUJBWnhCLHNCQUFzQixhQUduQyxPQUFPO1lBQ1AsZUFBZTtZQUNmLGNBQWM7WUFDZCxnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixlQUFlLGFBUlAsc0JBQXNCO2dIQVdyQiw0QkFBNEIsWUFQckMsY0FBYztZQUNkLGdCQUFnQjtZQUNoQixZQUFZO1lBQ1osbUJBQW1COzs0RkFJViw0QkFBNEI7a0JBYnhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLENBQUM7b0JBQ3RDLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxPQUFPLEVBQUU7d0JBQ1AsT0FBTzt3QkFDUCxlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVWlUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdWktdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgR2F1c3NpYW5DaGFydENvbXBvbmVudCB9IGZyb20gJy4vZ2F1c3NpYW4tY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7IE5nQ2hhcnRzTW9kdWxlIH0gZnJvbSAnbmcyLWNoYXJ0cyc7XG5pbXBvcnQgeyBDaGFydCwgcmVnaXN0ZXJhYmxlcyB9IGZyb20gJ2NoYXJ0LmpzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgTWVtb2l6ZUZ1bmNQaXBlIH0gZnJvbSAncHJvamVjdHMvdGdvLWNhbm9weS11aS9waXBlcy9tZW1vaXplLWZ1bmMucGlwZSc7XG5cbkNoYXJ0LnJlZ2lzdGVyKC4uLnJlZ2lzdGVyYWJsZXMpO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtHYXVzc2lhbkNoYXJ0Q29tcG9uZW50XSxcbiAgZXhwb3J0czogW0dhdXNzaWFuQ2hhcnRDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBVaVRyYW5zbGF0ZVBpcGUsXG4gICAgTmdDaGFydHNNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgSWNvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBNZW1vaXplRnVuY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdhdXNzaWFuQ2hhcnRDb21wb25lbnRNb2R1bGUge31cbiJdfQ==