@cqa-lib/cqa-ui 1.1.497 → 1.1.499

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 (63) hide show
  1. package/esm2020/lib/ai-prompt-card/ai-prompt-card.component.mjs +23 -3
  2. package/esm2020/lib/button/button.component.mjs +38 -18
  3. package/esm2020/lib/change-history/change-history.component.mjs +1 -1
  4. package/esm2020/lib/column-visibility/column-visibility.component.mjs +1 -1
  5. package/esm2020/lib/compare-runs/compare-runs.component.mjs +228 -35
  6. package/esm2020/lib/compare-runs/view-compare-button.component.mjs +36 -0
  7. package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +1 -1
  8. package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +1 -1
  9. package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +1 -1
  10. package/esm2020/lib/dialog/dialog.component.mjs +1 -1
  11. package/esm2020/lib/empty-state/empty-state.component.mjs +1 -1
  12. package/esm2020/lib/error-modal/error-modal.component.mjs +1 -1
  13. package/esm2020/lib/execution-result-modal/execution-result-modal.component.mjs +1 -1
  14. package/esm2020/lib/execution-screen/breakpoints-modal/breakpoints-modal.component.mjs +1 -1
  15. package/esm2020/lib/execution-screen/condition-debug-step/condition-branch-editor.component.mjs +1 -1
  16. package/esm2020/lib/execution-screen/main-step-collapse/main-step-collapse.component.mjs +1 -1
  17. package/esm2020/lib/execution-screen/recording-banner/recording-banner.component.mjs +1 -1
  18. package/esm2020/lib/execution-screen/review-recorded-steps-modal/review-recorded-steps-modal.component.mjs +1 -1
  19. package/esm2020/lib/execution-screen/session-changes-modal/session-changes-modal.component.mjs +1 -1
  20. package/esm2020/lib/export-code-modal/export-code-modal.component.mjs +1 -1
  21. package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +1 -1
  22. package/esm2020/lib/session-restoration-dialog/session-restoration-dialog.component.mjs +1 -1
  23. package/esm2020/lib/step-builder/step-builder-action/step-builder-action.component.mjs +1 -1
  24. package/esm2020/lib/step-builder/step-builder-ai-agent/step-builder-ai-agent.component.mjs +1 -1
  25. package/esm2020/lib/step-builder/step-builder-condition/step-builder-condition.component.mjs +1 -1
  26. package/esm2020/lib/step-builder/step-builder-custom-code/step-builder-custom-code.component.mjs +1 -1
  27. package/esm2020/lib/step-builder/step-builder-database/step-builder-database.component.mjs +1 -1
  28. package/esm2020/lib/step-builder/step-builder-document/step-builder-document.component.mjs +1 -1
  29. package/esm2020/lib/step-builder/step-builder-document-generation-template-step/step-builder-document-generation-template-step.component.mjs +1 -1
  30. package/esm2020/lib/step-builder/step-builder-group/step-builder-group.component.mjs +1 -1
  31. package/esm2020/lib/step-builder/step-builder-loop/step-builder-loop.component.mjs +1 -1
  32. package/esm2020/lib/step-builder/step-builder-record-step/step-builder-record-step.component.mjs +1 -1
  33. package/esm2020/lib/sub-steps-confirmation-dialog/sub-steps-confirmation-dialog.component.mjs +1 -1
  34. package/esm2020/lib/templates/table-template.component.mjs +1 -1
  35. package/esm2020/lib/test-case-details/api-edit-step/api-edit-step.component.mjs +1 -1
  36. package/esm2020/lib/test-case-details/condition-step/condition-step.component.mjs +1 -1
  37. package/esm2020/lib/test-case-details/create-step-group/create-step-group.component.mjs +1 -1
  38. package/esm2020/lib/test-case-details/custom-edit-step/custom-edit-step.component.mjs +1 -1
  39. package/esm2020/lib/test-case-details/delete-steps/delete-steps.component.mjs +1 -1
  40. package/esm2020/lib/test-case-details/element-popup/element-form/element-form.component.mjs +1 -1
  41. package/esm2020/lib/test-case-details/element-popup/element-popup.component.mjs +1 -1
  42. package/esm2020/lib/test-case-details/loop-step/loop-step.component.mjs +1 -1
  43. package/esm2020/lib/test-case-details/run-execution-alert/run-execution-alert.component.mjs +1 -1
  44. package/esm2020/lib/test-case-details/step-details-drawer/step-details-drawer.component.mjs +1 -1
  45. package/esm2020/lib/test-case-details/test-case-details-edit/test-case-details-edit.component.mjs +1 -1
  46. package/esm2020/lib/test-case-details/test-data-modal/test-data-modal.component.mjs +1 -1
  47. package/esm2020/lib/ui-kit.module.mjs +6 -1
  48. package/esm2020/lib/version-history/new-version-history-detail/new-version-history-detail.component.mjs +1 -1
  49. package/esm2020/lib/version-history/version-history-compare/version-history-compare.component.mjs +1 -1
  50. package/esm2020/lib/version-history/version-history-detail/version-history-detail.component.mjs +1 -1
  51. package/esm2020/public-api.mjs +2 -1
  52. package/fesm2015/cqa-lib-cqa-ui.mjs +374 -103
  53. package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
  54. package/fesm2020/cqa-lib-cqa-ui.mjs +372 -103
  55. package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
  56. package/lib/ai-prompt-card/ai-prompt-card.component.d.ts +9 -1
  57. package/lib/button/button.component.d.ts +5 -1
  58. package/lib/compare-runs/compare-runs.component.d.ts +32 -2
  59. package/lib/compare-runs/view-compare-button.component.d.ts +7 -0
  60. package/lib/ui-kit.module.d.ts +102 -101
  61. package/package.json +1 -1
  62. package/public-api.d.ts +1 -0
  63. package/styles.css +1 -1
@@ -92,6 +92,7 @@ import { AiPromptCardComponent } from './ai-prompt-card/ai-prompt-card.component
92
92
  import { VisualDifferenceModalComponent } from './visual-difference-modal/visual-difference-modal.component';
93
93
  import { ConfigurationCardComponent } from './configuration-card/configuration-card.component';
94
94
  import { CompareRunsComponent } from './compare-runs/compare-runs.component';
95
+ import { ViewCompareButtonComponent } from './compare-runs/view-compare-button.component';
95
96
  import { IterationsLoopComponent } from './iterations-loop/iterations-loop.component';
96
97
  import { FailedStepCardComponent } from './failed-step-card/failed-step-card.component';
97
98
  import { CustomInputComponent } from './custom-input/custom-input.component';
@@ -255,6 +256,7 @@ UiKitModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
255
256
  VisualDifferenceModalComponent,
256
257
  ConfigurationCardComponent,
257
258
  CompareRunsComponent,
259
+ ViewCompareButtonComponent,
258
260
  IterationsLoopComponent,
259
261
  FailedStepCardComponent,
260
262
  CustomInputComponent,
@@ -428,6 +430,7 @@ UiKitModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "1
428
430
  VisualDifferenceModalComponent,
429
431
  ConfigurationCardComponent,
430
432
  CompareRunsComponent,
433
+ ViewCompareButtonComponent,
431
434
  IterationsLoopComponent,
432
435
  FailedStepCardComponent,
433
436
  CustomInputComponent,
@@ -646,6 +649,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
646
649
  VisualDifferenceModalComponent,
647
650
  ConfigurationCardComponent,
648
651
  CompareRunsComponent,
652
+ ViewCompareButtonComponent,
649
653
  IterationsLoopComponent,
650
654
  FailedStepCardComponent,
651
655
  CustomInputComponent,
@@ -825,6 +829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
825
829
  VisualDifferenceModalComponent,
826
830
  ConfigurationCardComponent,
827
831
  CompareRunsComponent,
832
+ ViewCompareButtonComponent,
828
833
  IterationsLoopComponent,
829
834
  FailedStepCardComponent,
830
835
  CustomInputComponent,
@@ -944,4 +949,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
944
949
  ]
945
950
  }]
946
951
  }], ctorParameters: function () { return [{ type: i1.MatIconRegistry }]; } });
947
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkta2l0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdWkta2l0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFvQixzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFB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QUFzQixDQUFDO2dDQUNyQyxDQUFDLGlCQUFpQixFQUFFLDJCQUEyQixDQUFDO2dDQUNoRCxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQztnQ0FDL0IsQ0FBQyxnQkFBZ0IsRUFBRSwwQkFBMEIsQ0FBQztnQ0FDOUMsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUM7Z0NBQ2xDLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDO2dDQUNwQyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztnQ0FDekIsQ0FBQyxlQUFlLEVBQUUseUJBQXlCLENBQUM7Z0NBQzVDLENBQUMsdUJBQXVCLEVBQUUsaUNBQWlDLENBQUM7Z0NBQzVELENBQUMsZ0JBQWdCLEVBQUUsMEJBQTBCLENBQUM7Z0NBQzlDLENBQUMsaUJBQWlCLEVBQUUsMkJBQTJCLENBQUM7NkJBQ2pELENBQUM7eUJBQ0g7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgZm9yd2FyZFJlZiwgVHlwZSwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTm9vcEFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUsIE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5neFR5cGVkSnNNb2R1bGUgfSBmcm9tICduZ3gtdHlwZWQtanMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hCYXJDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWdtZW50Q29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0NlbGxUZW1wbGF0ZURpcmVjdGl2ZSwgRHluYW1pY0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtY2VsbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHluYW1pY0NlbGxDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25NZW51QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3RoZXJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL290aGVyLWJ1dHRvbi9vdGhlci1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJy4vZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvZGF0ZXJhbmdlcGlja2VyL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sdW1uVmlzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1uLXZpc2liaWxpdHkvY29sdW1uLXZpc2liaWxpdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtYWN0aW9uLXRvb2xiYXIvdGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1ldHJpY3NDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL21ldHJpY3MtY2FyZC9tZXRyaWNzLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IE1ldHJpY3NCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1ibG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhcnRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2NoYXJ0LWNhcmQvY2hhcnQtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NUZXh0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvZGFzaGJvYXJkLWhlYWRlci9kYXNoYm9hcmQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy93b3Jrc3BhY2Utc2VsZWN0b3Ivd29ya3NwYWNlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3ZlcmFnZU1vZHVsZUNhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvY292ZXJhZ2UtbW9kdWxlLWNhcmQvY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQvdGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmFpbGVkVGVzdENhc2VzQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEFkZFByZXJlcXVpc2l0ZUNhc2VzU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYWRkLXByZXJlcXVpc2l0ZS1jYXNlcy1zZWN0aW9uL2FkZC1wcmVyZXF1aXNpdGUtY2FzZXMtc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3RlZC1maWx0ZXJzL3NlbGVjdGVkLWZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IEluc2lnaHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2luc2lnaHQtY2FyZC9pbnNpZ2h0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcGRvd25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWJ1dHRvbi9kcm9wZG93bi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvaGVhdC1lcnJvci1tYXAtY2VsbC9oZWF0LWVycm9yLW1hcC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL3RhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgfSBmcm9tICcuL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyJztcbmltcG9ydCB7IEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZnVsbC10YWJsZS1sb2FkZXIvZnVsbC10YWJsZS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlRGF0YUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtZGF0YS1sb2FkZXIvdGFibGUtZGF0YS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNURVBfQ09NUE9ORU5UX01BUCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zdGVwLXJlZ2lzdHJ5LnRva2VuJztcbmltcG9ydCB7IEJhc2ljU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9iYXNpYy1zdGVwL2Jhc2ljLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zdGVwLXJlbmRlcmVyL3N0ZXAtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zdGVwLWdyb3VwL3N0ZXAtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IExvb3BTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2xvb3Atc3RlcC9sb29wLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmRpdGlvblN0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vY29uZGl0aW9uLXN0ZXAvY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZhaWxlZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vZmFpbGVkLXN0ZXAvZmFpbGVkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFVwZGF0ZWRGYWlsZWRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3VwZGF0ZWQtZmFpbGVkLXN0ZXAvdXBkYXRlZC1mYWlsZWQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld01vcmVGYWlsZWRTdGVwQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3ZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24vdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZkhlYWxBbmFseXNpc0NvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zZWxmLWhlYWwtYW5hbHlzaXMvc2VsZi1oZWFsLWFuYWx5c2lzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSUFnZW50U3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9haS1hZ2VudC1zdGVwL2FpLWFnZW50LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFJQWN0aW9uU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9haS1hY3Rpb24tc3RlcC9haS1hY3Rpb24tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBpU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9hcGktc3RlcC9hcGktc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZURvd25sb2FkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9maWxlLWRvd25sb2FkLXN0ZXAvZmlsZS1kb3dubG9hZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vZG9jdW1lbnQtdmVyaWZpY2F0aW9uLXN0ZXAvZG9jdW1lbnQtdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IExpdmVFeGVjdXRpb25TdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2xpdmUtZXhlY3V0aW9uLXN0ZXAvbGl2ZS1leGVjdXRpb24tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWlMb2dzV2l0aFJlYXNvbmluZ0NvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9haS1sb2dzLXdpdGgtcmVhc29uaW5nL2FpLWxvZ3Mtd2l0aC1yZWFzb25pbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEp1bXBUb1N0ZXBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmVha3BvaW50c01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2JyZWFrcG9pbnRzLW1vZGFsL2JyZWFrcG9pbnRzLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNvcmRpbmdCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vcmVjb3JkaW5nLWJhbm5lci9yZWNvcmRpbmctYmFubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXZpZXdSZWNvcmRlZFN0ZXBzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vcmV2aWV3LXJlY29yZGVkLXN0ZXBzLW1vZGFsL3Jldmlldy1yZWNvcmRlZC1zdGVwcy1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFpblN0ZXBDb2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9tYWluLXN0ZXAtY29sbGFwc2UvbWFpbi1zdGVwLWNvbGxhcHNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaXN1YWxDb21wYXJpc29uQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW11bGF0b3JDb21wb25lbnQgfSBmcm9tICcuL3NpbXVsYXRvci9zaW11bGF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnNvbGVBbGVydENvbXBvbmVudCB9IGZyb20gJy4vY29uc29sZS1hbGVydC9jb25zb2xlLWFsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaURlYnVnQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FpLWRlYnVnLWFsZXJ0L2FpLWRlYnVnLWFsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZXR3b3JrUmVxdWVzdENvbXBvbmVudCB9IGZyb20gJy4vbmV0d29yay1yZXF1ZXN0L25ldHdvcmstcmVxdWVzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnVuSGlzdG9yeUNhcmRDb21wb25lbnQgfSBmcm9tICcuL3J1bi1oaXN0b3J5LWNhcmQvcnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWlQcm9tcHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9haS1wcm9tcHQtY2FyZC9haS1wcm9tcHQtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlzdWFsRGlmZmVyZW5jZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tY2FyZC9jb25maWd1cmF0aW9uLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBhcmVSdW5zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wYXJlLXJ1bnMvY29tcGFyZS1ydW5zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJdGVyYXRpb25zTG9vcENvbXBvbmVudCB9IGZyb20gJy4vaXRlcmF0aW9ucy1sb29wL2l0ZXJhdGlvbnMtbG9vcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmFpbGVkU3RlcENhcmRDb21wb25lbnQgfSBmcm9tICcuL2ZhaWxlZC1zdGVwLWNhcmQvZmFpbGVkLXN0ZXAtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IE1peGVkVmFyaWFibGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vbWl4ZWQtdmFyaWFibGUtaW5wdXQvbWl4ZWQtdmFyaWFibGUtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbVRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi9jdXN0b20tdGV4dGFyZWEvY3VzdG9tLXRleHRhcmVhLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb2RlRWRpdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb2RlLWVkaXRvci9jb2RlLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9uYWNvRWRpdG9yTW9kdWxlIH0gZnJvbSAnbmd4LW1vbmFjby1lZGl0b3InO1xuaW1wb3J0IHsgQ3VzdG9tVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9jdXN0b20tdG9nZ2xlL2N1c3RvbS10b2dnbGUuY29tcG9uZW50JztcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaVJlYXNvbmluZ0NvbXBvbmVudCB9IGZyb20gJy4vYWktcmVhc29uaW5nL2FpLXJlYXNvbmluZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhlY3V0aW9uUmVzdWx0TW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1yZXN1bHQtbW9kYWwvZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Vzc2lvbkNoYW5nZXNNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zZXNzaW9uLWNoYW5nZXMtbW9kYWwvc2Vzc2lvbi1jaGFuZ2VzLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFcnJvck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9lcnJvci1tb2RhbC9lcnJvci1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2Vzc2lvblJlc3RvcmF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zZXNzaW9uLXJlc3RvcmF0aW9uLWRpYWxvZy9zZXNzaW9uLXJlc3RvcmF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhwb3J0Q29kZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9leHBvcnQtY29kZS1tb2RhbC9leHBvcnQtY29kZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuL3Byb2dyZXNzLWluZGljYXRvci9wcm9ncmVzcy1pbmRpY2F0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBQcm9ncmVzc0NhcmRDb21wb25lbnQgfSBmcm9tICcuL3N0ZXAtcHJvZ3Jlc3MtY2FyZC9zdGVwLXByb2dyZXNzLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBTdGF0dXNDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLXN0YXR1cy1jYXJkL3N0ZXAtc3RhdHVzLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IERiVmVyaWZpY2F0aW9uU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9kYi12ZXJpZmljYXRpb24tc3RlcC9kYi12ZXJpZmljYXRpb24tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJRdWVyeUV4ZWN1dGlvbkl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vZGItcXVlcnktZXhlY3V0aW9uLWl0ZW0vZGItcXVlcnktZXhlY3V0aW9uLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlTm9ybWFsU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvbm9ybWFsLXN0ZXAvbm9ybWFsLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlTG9vcFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2xvb3Atc3RlcC9sb29wLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlQ29uZGl0aW9uU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvY29uZGl0aW9uLXN0ZXAvY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlU3RlcEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWdyb3VwL3N0ZXAtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlRGV0YWlsc1JlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci90ZXN0LWNhc2UtZGV0YWlscy1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VBcGlTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9hcGktc3RlcC9hcGktc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VEYXRhYmFzZVN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2RhdGFiYXNlLXN0ZXAvZGF0YWJhc2Utc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VBaUFnZW50U3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvYWktYWdlbnQtc3RlcC9haS1hZ2VudC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZUFpVmVyaWZ5U3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvYWktdmVyaWZ5LXN0ZXAvYWktdmVyaWZ5LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlVXBsb2FkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvdXBsb2FkLXN0ZXAvdXBsb2FkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlU2NyZWVuc2hvdFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3NjcmVlbnNob3Qtc3RlcC9zY3JlZW5zaG90LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlU2Nyb2xsU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvc2Nyb2xsLXN0ZXAvc2Nyb2xsLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlVmVyaWZ5VXJsU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvdmVyaWZ5LXVybC1zdGVwL3ZlcmlmeS11cmwtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VSZXN0b3JlU2Vzc2lvblN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3Jlc3RvcmUtc2Vzc2lvbi1zdGVwL3Jlc3RvcmUtc2Vzc2lvbi1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZUN1c3RvbUNvZGVTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9jdXN0b20tY29kZS1zdGVwL2N1c3RvbS1jb2RlLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEN1c3RvbUVkaXRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9jdXN0b20tZWRpdC1zdGVwL2N1c3RvbS1lZGl0LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEl0ZW1MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9pdGVtLWxpc3QvaXRlbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0RGF0YU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWRhdGEtbW9kYWwvdGVzdC1kYXRhLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVTdGVwR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2NyZWF0ZS1zdGVwLWdyb3VwL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVTdGVwc0NvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvZGVsZXRlLXN0ZXBzL2RlbGV0ZS1zdGVwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnVuRXhlY3V0aW9uQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3J1bi1leGVjdXRpb24tYWxlcnQvcnVuLWV4ZWN1dGlvbi1hbGVydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBpRWRpdFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1lZGl0LXN0ZXAvYXBpLWVkaXQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1jYXNlLXN0ZXAtY29tcG9uZW50cy50b2tlbic7XG5pbXBvcnQgeyBMaXZlQ29udmVyc2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9saXZlLWNvbnZlcnNhdGlvbi9saXZlLWNvbnZlcnNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG5kTW9kdWxlIH0gZnJvbSAnbmd4LWRyYWctZHJvcCc7XG5pbXBvcnQgeyBTdGVwQnVpbGRlckFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1hY3Rpb24vc3RlcC1idWlsZGVyLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJMb29wQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWxvb3Avc3RlcC1idWlsZGVyLWxvb3AuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRQb3B1cENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1wb3B1cC9lbGVtZW50LXBvcHVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbGVtZW50Rm9ybUNvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1wb3B1cC9lbGVtZW50LWZvcm0vZWxlbWVudC1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwQnVpbGRlckNvbmRpdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1jb25kaXRpb24vc3RlcC1idWlsZGVyLWNvbmRpdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJEYXRhYmFzZUNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kYXRhYmFzZS9zdGVwLWJ1aWxkZXItZGF0YWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyQWlBZ2VudENvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1haS1hZ2VudC9zdGVwLWJ1aWxkZXItYWktYWdlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyQ3VzdG9tQ29kZUNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1jdXN0b20tY29kZS9zdGVwLWJ1aWxkZXItY3VzdG9tLWNvZGUuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyUmVjb3JkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1yZWNvcmQtc3RlcC9zdGVwLWJ1aWxkZXItcmVjb3JkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyRG9jdW1lbnRHZW5lcmF0aW9uVGVtcGxhdGVTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50LWdlbmVyYXRpb24tdGVtcGxhdGUtc3RlcC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQtZ2VuZXJhdGlvbi10ZW1wbGF0ZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbGVtZW50TGlzdENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvZWxlbWVudC1saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJEb2N1bWVudENvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL3N0ZXAtYnVpbGRlci1kb2N1bWVudC9zdGVwLWJ1aWxkZXItZG9jdW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IERldGFpbFNpZGVQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vZGV0YWlsLXNpZGUtcGFuZWwvZGV0YWlsLXNpZGUtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IERldGFpbERyYXdlckNvbXBvbmVudCB9IGZyb20gJy4vZGV0YWlsLWRyYXdlci9kZXRhaWwtZHJhd2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZXRhaWxEcmF3ZXJUYWJDb21wb25lbnQgfSBmcm9tICcuL2RldGFpbC1kcmF3ZXIvZGV0YWlsLWRyYXdlci10YWIvZGV0YWlsLWRyYXdlci10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IERldGFpbERyYXdlclRhYkNvbnRlbnREaXJlY3RpdmUgfSBmcm9tICcuL2RldGFpbC1kcmF3ZXIvZGV0YWlsLWRyYXdlci10YWItY29udGVudC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGVzdENhc2VEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VEZXRhaWxzRWRpdENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvdGVzdC1jYXNlLWRldGFpbHMtZWRpdC90ZXN0LWNhc2UtZGV0YWlscy1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcGlNb2NraW5nQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvYXBpLW1vY2tpbmctY2FyZC9hcGktbW9ja2luZy1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwQnVpbGRlckdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWdyb3VwL3N0ZXAtYnVpbGRlci1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcERldGFpbHNEcmF3ZXJDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1kcmF3ZXIvc3RlcC1kZXRhaWxzLWRyYXdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVtcGxhdGVWYXJpYWJsZXNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvdGVtcGxhdGUtdmFyaWFibGVzLWZvcm0vdGVtcGxhdGUtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IEFkdmFuY2VkVmFyaWFibGVzRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1idWlsZGVyL2FkdmFuY2VkLXZhcmlhYmxlcy1mb3JtL2FkdmFuY2VkLXZhcmlhYmxlcy1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwRGV0YWlsc01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9zdGVwLWRldGFpbHMtbW9kYWwvc3RlcC1kZXRhaWxzLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYWZlSHRtbFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtaHRtbC5waXBlJztcbmltcG9ydCB7IENhbWVsVG9UaXRsZVBpcGUgfSBmcm9tICcuL3BpcGVzL2NhbWVsLXRvLXRpdGxlLnBpcGUnO1xuaW1wb3J0IHsgQ29uZGl0aW9uRGVidWdTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwL2NvbmRpdGlvbi1kZWJ1Zy1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25kaXRpb25CcmFuY2hFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vY29uZGl0aW9uLWRlYnVnLXN0ZXAvY29uZGl0aW9uLWJyYW5jaC1lZGl0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLWxpc3QvcXVlc3Rpb25uYWlyZS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGFuZ2VIaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jaGFuZ2UtaGlzdG9yeS9jaGFuZ2UtaGlzdG9yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmVyc2lvbkhpc3RvcnlMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi92ZXJzaW9uLWhpc3RvcnkvdmVyc2lvbi1oaXN0b3J5LWxpc3QvdmVyc2lvbi1oaXN0b3J5LWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFZlcnNpb25IaXN0b3J5Q29tcGFyZUNvbXBvbmVudCB9IGZyb20gJy4vdmVyc2lvbi1oaXN0b3J5L3ZlcnNpb24taGlzdG9yeS1jb21wYXJlL3ZlcnNpb24taGlzdG9yeS1jb21wYXJlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWZXJzaW9uSGlzdG9yeURldGFpbENvbXBvbmVudCB9IGZyb20gJy4vdmVyc2lvbi1oaXN0b3J5L3ZlcnNpb24taGlzdG9yeS1kZXRhaWwvdmVyc2lvbi1oaXN0b3J5LWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmVyc2lvbkhpc3RvcnlSZXN0b3JlQ29uZmlybUNvbXBvbmVudCB9IGZyb20gJy4vdmVyc2lvbi1oaXN0b3J5L3ZlcnNpb24taGlzdG9yeS1yZXN0b3JlLWNvbmZpcm0vdmVyc2lvbi1oaXN0b3J5LXJlc3RvcmUtY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmV3VmVyc2lvbkhpc3RvcnlEZXRhaWxDb21wb25lbnQgfSBmcm9tICcuL3ZlcnNpb24taGlzdG9yeS9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC9uZXctdmVyc2lvbi1oaXN0b3J5LWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJy4vc3RlcHBlci9zdGVwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSYWRpb0NhcmRHcm91cENvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tY2FyZC1ncm91cC9yYWRpby1jYXJkLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdWJTdGVwc0NvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vc3ViLXN0ZXBzLWNvbmZpcm1hdGlvbi1kaWFsb2cvc3ViLXN0ZXBzLWNvbmZpcm1hdGlvbi1kaWFsb2cuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgU2VnbWVudENvbnRyb2xDb21wb25lbnQsXG4gICAgU3RlcHBlckNvbXBvbmVudCxcbiAgICBSYWRpb0NhcmRHcm91cENvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRHluYW1pY1RhYmxlQ29tcG9uZW50LFxuICAgIER5bmFtaWNDZWxsVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRHluYW1pY0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIER5bmFtaWNDZWxsQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgQWN0aW9uTWVudUJ1dHRvbkNvbXBvbmVudCxcbiAgICBPdGhlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBEeW5hbWljRmlsdGVyQ29tcG9uZW50LFxuICAgIERhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSxcbiAgICBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQsXG4gICAgQ29sdW1uVmlzaWJpbGl0eUNvbXBvbmVudCxcbiAgICBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQsXG4gICAgTWV0cmljc0NhcmRDb21wb25lbnQsXG4gICAgTWV0cmljc0Jsb2NrQ29tcG9uZW50LFxuICAgIENoYXJ0Q2FyZENvbXBvbmVudCxcbiAgICBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZEhlYWRlckNvbXBvbmVudCxcbiAgICBXb3Jrc3BhY2VTZWxlY3RvckNvbXBvbmVudCxcbiAgICBDb3ZlcmFnZU1vZHVsZUNhcmRDb21wb25lbnQsXG4gICAgVGVzdERpc3RyaWJ1dGlvbkNhcmRDb21wb25lbnQsXG4gICAgRmFpbGVkVGVzdENhc2VzQ2FyZENvbXBvbmVudCxcbiAgICBEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQsXG4gICAgQWRkUHJlcmVxdWlzaXRlQ2FzZXNTZWN0aW9uQ29tcG9uZW50LFxuICAgIFNlbGVjdGVkRmlsdGVyc0NvbXBvbmVudCxcbiAgICBJbnNpZ2h0Q2FyZENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICBIZWF0RXJyb3JNYXBDZWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICBGdWxsVGFibGVMb2FkZXJDb21wb25lbnQsXG4gICAgVGFibGVEYXRhTG9hZGVyQ29tcG9uZW50LFxuICAgIEJhc2ljU3RlcENvbXBvbmVudCxcbiAgICBTdGVwUmVuZGVyZXJDb21wb25lbnQsXG4gICAgU3RlcEdyb3VwQ29tcG9uZW50LFxuICAgIExvb3BTdGVwQ29tcG9uZW50LFxuICAgIENvbmRpdGlvblN0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uRGVidWdTdGVwQ29tcG9uZW50LFxuICAgIENvbmRpdGlvbkJyYW5jaEVkaXRvckNvbXBvbmVudCxcbiAgICBGYWlsZWRTdGVwQ29tcG9uZW50LFxuICAgIFVwZGF0ZWRGYWlsZWRTdGVwQ29tcG9uZW50LFxuICAgIFZpZXdNb3JlRmFpbGVkU3RlcEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTZWxmSGVhbEFuYWx5c2lzQ29tcG9uZW50LFxuICAgIEFJQWdlbnRTdGVwQ29tcG9uZW50LFxuICAgIEFJQWN0aW9uU3RlcENvbXBvbmVudCxcbiAgICBBcGlTdGVwQ29tcG9uZW50LFxuICAgIEZpbGVEb3dubG9hZFN0ZXBDb21wb25lbnQsXG4gICAgRG9jdW1lbnRWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50LFxuICAgIExpdmVFeGVjdXRpb25TdGVwQ29tcG9uZW50LFxuICAgIEFpTG9nc1dpdGhSZWFzb25pbmdDb21wb25lbnQsXG4gICAgSnVtcFRvU3RlcE1vZGFsQ29tcG9uZW50LFxuICAgIEJyZWFrcG9pbnRzTW9kYWxDb21wb25lbnQsXG4gICAgUmVjb3JkaW5nQmFubmVyQ29tcG9uZW50LFxuICAgIFJldmlld1JlY29yZGVkU3RlcHNNb2RhbENvbXBvbmVudCxcbiAgICBNYWluU3RlcENvbGxhcHNlQ29tcG9uZW50LFxuICAgIFZpc3VhbENvbXBhcmlzb25Db21wb25lbnQsXG4gICAgU2ltdWxhdG9yQ29tcG9uZW50LFxuICAgIENvbnNvbGVBbGVydENvbXBvbmVudCxcbiAgICBBaURlYnVnQWxlcnRDb21wb25lbnQsXG4gICAgTmV0d29ya1JlcXVlc3RDb21wb25lbnQsXG4gICAgUnVuSGlzdG9yeUNhcmRDb21wb25lbnQsXG4gICAgQWlQcm9tcHRDYXJkQ29tcG9uZW50LFxuICAgIFZpc3VhbERpZmZlcmVuY2VNb2RhbENvbXBvbmVudCxcbiAgICBDb25maWd1cmF0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBDb21wYXJlUnVuc0NvbXBvbmVudCxcbiAgICBJdGVyYXRpb25zTG9vcENvbXBvbmVudCxcbiAgICBGYWlsZWRTdGVwQ2FyZENvbXBvbmVudCxcbiAgICBDdXN0b21JbnB1dENvbXBvbmVudCxcbiAgICBNaXhlZFZhcmlhYmxlSW5wdXRDb21wb25lbnQsXG4gICAgQ3VzdG9tVGV4dGFyZWFDb21wb25lbnQsXG4gICAgQ29kZUVkaXRvckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2dnbGVDb21wb25lbnQsXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICBBaVJlYXNvbmluZ0NvbXBvbmVudCxcbiAgICBFeGVjdXRpb25SZXN1bHRNb2RhbENvbXBvbmVudCxcbiAgICBTZXNzaW9uQ2hhbmdlc01vZGFsQ29tcG9uZW50LFxuICAgIEVycm9yTW9kYWxDb21wb25lbnQsXG4gICAgU2Vzc2lvblJlc3RvcmF0aW9uRGlhbG9nQ29tcG9uZW50LFxuICAgIFN1YlN0ZXBzQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LFxuICAgIEV4cG9ydENvZGVNb2RhbENvbXBvbmVudCxcbiAgICBQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCxcbiAgICBTdGVwUHJvZ3Jlc3NDYXJkQ29tcG9uZW50LFxuICAgIFN0ZXBTdGF0dXNDYXJkQ29tcG9uZW50LFxuICAgIERiVmVyaWZpY2F0aW9uU3RlcENvbXBvbmVudCxcbiAgICBEYlF1ZXJ5RXhlY3V0aW9uSXRlbUNvbXBvbmVudCxcbiAgICBUZXN0Q2FzZU5vcm1hbFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VMb29wU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUNvbmRpdGlvblN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VTdGVwR3JvdXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQsXG4gICAgVGVzdENhc2VBcGlTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlRGF0YWJhc2VTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlQWlBZ2VudFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VBaVZlcmlmeVN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VVcGxvYWRTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlU2NyZWVuc2hvdFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VTY3JvbGxTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlVmVyaWZ5VXJsU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVJlc3RvcmVTZXNzaW9uU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUN1c3RvbUNvZGVTdGVwQ29tcG9uZW50LFxuICAgIEN1c3RvbUVkaXRTdGVwQ29tcG9uZW50LFxuICAgIEl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIFRlc3REYXRhTW9kYWxDb21wb25lbnQsXG4gICAgQ3JlYXRlU3RlcEdyb3VwQ29tcG9uZW50LFxuICAgIERlbGV0ZVN0ZXBzQ29tcG9uZW50LFxuICAgIFJ1bkV4ZWN1dGlvbkFsZXJ0Q29tcG9uZW50LFxuICAgIEFwaUVkaXRTdGVwQ29tcG9uZW50LFxuICAgIExpdmVDb252ZXJzYXRpb25Db21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJBY3Rpb25Db21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJMb29wQ29tcG9uZW50LFxuICAgIEVsZW1lbnRQb3B1cENvbXBvbmVudCxcbiAgICBFbGVtZW50Rm9ybUNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckNvbmRpdGlvbkNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckRhdGFiYXNlQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyQWlBZ2VudENvbXBvbmVudCxcbiAgICBDb2RlRWRpdG9yQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyQ3VzdG9tQ29kZUNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlclJlY29yZFN0ZXBDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJEb2N1bWVudEdlbmVyYXRpb25UZW1wbGF0ZVN0ZXBDb21wb25lbnQsXG4gICAgRWxlbWVudExpc3RDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJEb2N1bWVudENvbXBvbmVudCxcbiAgICBEZXRhaWxTaWRlUGFuZWxDb21wb25lbnQsXG4gICAgRGV0YWlsRHJhd2VyQ29tcG9uZW50LFxuICAgIERldGFpbERyYXdlclRhYkNvbXBvbmVudCxcbiAgICBEZXRhaWxEcmF3ZXJUYWJDb250ZW50RGlyZWN0aXZlLFxuICAgIFRlc3RDYXNlRGV0YWlsc0NvbXBvbmVudCxcbiAgICBUZXN0Q2FzZURldGFpbHNFZGl0Q29tcG9uZW50LFxuICAgIEFwaU1vY2tpbmdDYXJkQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyR3JvdXBDb21wb25lbnQsXG4gICAgU3RlcERldGFpbHNEcmF3ZXJDb21wb25lbnQsXG4gICAgVGVtcGxhdGVWYXJpYWJsZXNGb3JtQ29tcG9uZW50LFxuICAgIEFkdmFuY2VkVmFyaWFibGVzRm9ybUNvbXBvbmVudCxcbiAgICBTdGVwRGV0YWlsc01vZGFsQ29tcG9uZW50LFxuICAgIFNhZmVIdG1sUGlwZSxcbiAgICBRdWVzdGlvbm5haXJlTGlzdENvbXBvbmVudCxcbiAgICBDaGFuZ2VIaXN0b3J5Q29tcG9uZW50LFxuICAgIENhbWVsVG9UaXRsZVBpcGUsXG4gICAgVmVyc2lvbkhpc3RvcnlMaXN0Q29tcG9uZW50LFxuICAgIFZlcnNpb25IaXN0b3J5Q29tcGFyZUNvbXBvbmVudCxcbiAgICBWZXJzaW9uSGlzdG9yeURldGFpbENvbXBvbmVudCxcbiAgICBWZXJzaW9uSGlzdG9yeVJlc3RvcmVDb25maXJtQ29tcG9uZW50LFxuICAgIE5ld1ZlcnNpb25IaXN0b3J5RGV0YWlsQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTm9vcEFuaW1hdGlvbnNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRSYWRpb01vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBOZ3hUeXBlZEpzTW9kdWxlLFxuICAgIERuZE1vZHVsZSxcbiAgICBNb25hY29FZGl0b3JNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTZWFyY2hCYXJDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIFNlZ21lbnRDb250cm9sQ29tcG9uZW50LFxuICAgIFN0ZXBwZXJDb21wb25lbnQsXG4gICAgUmFkaW9DYXJkR3JvdXBDb21wb25lbnQsXG4gICAgRGlhbG9nQ29tcG9uZW50LFxuICAgIER5bmFtaWNUYWJsZUNvbXBvbmVudCxcbiAgICBEeW5hbWljQ2VsbFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIER5bmFtaWNIZWFkZXJUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEeW5hbWljQ2VsbENvbnRhaW5lckRpcmVjdGl2ZSxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIEFjdGlvbk1lbnVCdXR0b25Db21wb25lbnQsXG4gICAgT3RoZXJCdXR0b25Db21wb25lbnQsXG4gICAgRHluYW1pY0ZpbHRlckNvbXBvbmVudCxcbiAgICBEYXRlcmFuZ2VwaWNrZXJEaXJlY3RpdmUsXG4gICAgRGF0ZXJhbmdlcGlja2VyQ29tcG9uZW50LFxuICAgIENvbHVtblZpc2liaWxpdHlDb21wb25lbnQsXG4gICAgVGFibGVBY3Rpb25Ub29sYmFyQ29tcG9uZW50LFxuICAgIE1ldHJpY3NDYXJkQ29tcG9uZW50LFxuICAgIENoYXJ0Q2FyZENvbXBvbmVudCxcbiAgICBQcm9ncmVzc1RleHRDYXJkQ29tcG9uZW50LFxuICAgIERhc2hib2FyZEhlYWRlckNvbXBvbmVudCxcbiAgICBXb3Jrc3BhY2VTZWxlY3RvckNvbXBvbmVudCxcbiAgICBDb3ZlcmFnZU1vZHVsZUNhcmRDb21wb25lbnQsXG4gICAgVGVzdERpc3RyaWJ1dGlvbkNhcmRDb21wb25lbnQsXG4gICAgRmFpbGVkVGVzdENhc2VzQ2FyZENvbXBvbmVudCxcbiAgICBEeW5hbWljU2VsZWN0RmllbGRDb21wb25lbnQsXG4gICAgQWRkUHJlcmVxdWlzaXRlQ2FzZXNTZWN0aW9uQ29tcG9uZW50LFxuICAgIFNlbGVjdGVkRmlsdGVyc0NvbXBvbmVudCxcbiAgICBJbnNpZ2h0Q2FyZENvbXBvbmVudCxcbiAgICBCYWRnZUNvbXBvbmVudCxcbiAgICBEcm9wZG93bkJ1dHRvbkNvbXBvbmVudCxcbiAgICBIZWF0RXJyb3JNYXBDZWxsQ29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICBGdWxsVGFibGVMb2FkZXJDb21wb25lbnQsXG4gICAgVGFibGVEYXRhTG9hZGVyQ29tcG9uZW50LFxuICAgIEJhc2ljU3RlcENvbXBvbmVudCxcbiAgICBTdGVwUmVuZGVyZXJDb21wb25lbnQsXG4gICAgU3RlcEdyb3VwQ29tcG9uZW50LFxuICAgIExvb3BTdGVwQ29tcG9uZW50LFxuICAgIENvbmRpdGlvblN0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uRGVidWdTdGVwQ29tcG9uZW50LFxuICAgIENvbmRpdGlvbkJyYW5jaEVkaXRvckNvbXBvbmVudCxcbiAgICBGYWlsZWRTdGVwQ29tcG9uZW50LFxuICAgIENvbmRpdGlvbkRlYnVnU3RlcENvbXBvbmVudCxcbiAgICBVcGRhdGVkRmFpbGVkU3RlcENvbXBvbmVudCxcbiAgICBWaWV3TW9yZUZhaWxlZFN0ZXBCdXR0b25Db21wb25lbnQsXG4gICAgU2VsZkhlYWxBbmFseXNpc0NvbXBvbmVudCxcbiAgICBBSUFnZW50U3RlcENvbXBvbmVudCxcbiAgICBBSUFjdGlvblN0ZXBDb21wb25lbnQsXG4gICAgQXBpU3RlcENvbXBvbmVudCxcbiAgICBGaWxlRG93bmxvYWRTdGVwQ29tcG9uZW50LFxuICAgIERvY3VtZW50VmVyaWZpY2F0aW9uU3RlcENvbXBvbmVudCxcbiAgICBMaXZlRXhlY3V0aW9uU3RlcENvbXBvbmVudCxcbiAgICBBaUxvZ3NXaXRoUmVhc29uaW5nQ29tcG9uZW50LFxuICAgIEp1bXBUb1N0ZXBNb2RhbENvbXBvbmVudCxcbiAgICBCcmVha3BvaW50c01vZGFsQ29tcG9uZW50LFxuICAgIFJlY29yZGluZ0Jhbm5lckNvbXBvbmVudCxcbiAgICBSZXZpZXdSZWNvcmRlZFN0ZXBzTW9kYWxDb21wb25lbnQsXG4gICAgTWFpblN0ZXBDb2xsYXBzZUNvbXBvbmVudCxcbiAgICBWaXN1YWxDb21wYXJpc29uQ29tcG9uZW50LFxuICAgIFNpbXVsYXRvckNvbXBvbmVudCxcbiAgICBDb25zb2xlQWxlcnRDb21wb25lbnQsXG4gICAgQWlEZWJ1Z0FsZXJ0Q29tcG9uZW50LFxuICAgIE5ldHdvcmtSZXF1ZXN0Q29tcG9uZW50LFxuICAgIFJ1bkhpc3RvcnlDYXJkQ29tcG9uZW50LFxuICAgIEFpUHJvbXB0Q2FyZENvbXBvbmVudCxcbiAgICBWaXN1YWxEaWZmZXJlbmNlTW9kYWxDb21wb25lbnQsXG4gICAgQ29uZmlndXJhdGlvbkNhcmRDb21wb25lbnQsXG4gICAgQ29tcGFyZVJ1bnNDb21wb25lbnQsXG4gICAgSXRlcmF0aW9uc0xvb3BDb21wb25lbnQsXG4gICAgRmFpbGVkU3RlcENhcmRDb21wb25lbnQsXG4gICAgQ3VzdG9tSW5wdXRDb21wb25lbnQsXG4gICAgTWl4ZWRWYXJpYWJsZUlucHV0Q29tcG9uZW50LFxuICAgIEN1c3RvbVRleHRhcmVhQ29tcG9uZW50LFxuICAgIENvZGVFZGl0b3JDb21wb25lbnQsXG4gICAgQ3VzdG9tVG9nZ2xlQ29tcG9uZW50LFxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgQWlSZWFzb25pbmdDb21wb25lbnQsXG4gICAgRXhlY3V0aW9uUmVzdWx0TW9kYWxDb21wb25lbnQsXG4gICAgU2Vzc2lvbkNoYW5nZXNNb2RhbENvbXBvbmVudCxcbiAgICBFcnJvck1vZGFsQ29tcG9uZW50LFxuICAgIFNlc3Npb25SZXN0b3JhdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgICBTdWJTdGVwc0NvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCxcbiAgICBFeHBvcnRDb2RlTW9kYWxDb21wb25lbnQsXG4gICAgUHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgU3RlcFByb2dyZXNzQ2FyZENvbXBvbmVudCxcbiAgICBTdGVwU3RhdHVzQ2FyZENvbXBvbmVudCxcbiAgICBEYlZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnQsXG4gICAgRGJRdWVyeUV4ZWN1dGlvbkl0ZW1Db21wb25lbnQsXG4gICAgVGVzdENhc2VOb3JtYWxTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlTG9vcFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VDb25kaXRpb25TdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlU3RlcEdyb3VwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlRGV0YWlsc1JlbmRlcmVyQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlQXBpU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZURhdGFiYXNlU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUFpQWdlbnRTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlVXBsb2FkU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVNjcmVlbnNob3RTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlU2Nyb2xsU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVZlcmlmeVVybFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VSZXN0b3JlU2Vzc2lvblN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VDdXN0b21Db2RlU3RlcENvbXBvbmVudCxcbiAgICBDdXN0b21FZGl0U3RlcENvbXBvbmVudCxcbiAgICBJdGVtTGlzdENvbXBvbmVudCxcbiAgICBUZXN0RGF0YU1vZGFsQ29tcG9uZW50LFxuICAgIENyZWF0ZVN0ZXBHcm91cENvbXBvbmVudCxcbiAgICBEZWxldGVTdGVwc0NvbXBvbmVudCxcbiAgICBSdW5FeGVjdXRpb25BbGVydENvbXBvbmVudCxcbiAgICBBcGlFZGl0U3RlcENvbXBvbmVudCxcbiAgICBMaXZlQ29udmVyc2F0aW9uQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyQWN0aW9uQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyTG9vcENvbXBvbmVudCxcbiAgICBFbGVtZW50UG9wdXBDb21wb25lbnQsXG4gICAgRWxlbWVudEZvcm1Db21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJDb25kaXRpb25Db21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJEYXRhYmFzZUNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckFpQWdlbnRDb21wb25lbnQsXG4gICAgQ29kZUVkaXRvckNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckN1c3RvbUNvZGVDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJSZWNvcmRTdGVwQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyRG9jdW1lbnRHZW5lcmF0aW9uVGVtcGxhdGVTdGVwQ29tcG9uZW50LFxuICAgIEVsZW1lbnRMaXN0Q29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyRG9jdW1lbnRDb21wb25lbnQsXG4gICAgRGV0YWlsU2lkZVBhbmVsQ29tcG9uZW50LFxuICAgIERldGFpbERyYXdlckNvbXBvbmVudCxcbiAgICBEZXRhaWxEcmF3ZXJUYWJDb21wb25lbnQsXG4gICAgRGV0YWlsRHJhd2VyVGFiQ29udGVudERpcmVjdGl2ZSxcbiAgICBUZXN0Q2FzZURldGFpbHNDb21wb25lbnQsXG4gICAgVGVzdENhc2VEZXRhaWxzRWRpdENvbXBvbmVudCxcbiAgICBBcGlNb2NraW5nQ2FyZENvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckdyb3VwQ29tcG9uZW50LFxuICAgIFN0ZXBEZXRhaWxzRHJhd2VyQ29tcG9uZW50LFxuICAgIFRlbXBsYXRlVmFyaWFibGVzRm9ybUNvbXBvbmVudCxcbiAgICBBZHZhbmNlZFZhcmlhYmxlc0Zvcm1Db21wb25lbnQsXG4gICAgUXVlc3Rpb25uYWlyZUxpc3RDb21wb25lbnQsXG4gICAgQ2hhbmdlSGlzdG9yeUNvbXBvbmVudCxcbiAgICBWZXJzaW9uSGlzdG9yeUxpc3RDb21wb25lbnQsXG4gICAgVmVyc2lvbkhpc3RvcnlDb21wYXJlQ29tcG9uZW50LFxuICAgIFZlcnNpb25IaXN0b3J5RGV0YWlsQ29tcG9uZW50LFxuICAgIFZlcnNpb25IaXN0b3J5UmVzdG9yZUNvbmZpcm1Db21wb25lbnQsXG4gICAgTmV3VmVyc2lvbkhpc3RvcnlEZXRhaWxDb21wb25lbnQsXG4gIF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBPdmVybGF5Q29udGFpbmVyLCB1c2VDbGFzczogVGFpbHdpbmRPdmVybGF5Q29udGFpbmVyIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogVEVTVF9DQVNFX1NURVBfQ09NUE9ORU5UX01BUCxcbiAgICAgIHVzZVZhbHVlOiB7XG4gICAgICAgIHN0ZXBHcm91cDogVGVzdENhc2VTdGVwR3JvdXBDb21wb25lbnQsXG4gICAgICAgIGNvbmRpdGlvblN0ZXA6IFRlc3RDYXNlQ29uZGl0aW9uU3RlcENvbXBvbmVudCxcbiAgICAgICAgY29uZGl0aW9uRGVidWdTdGVwOiBDb25kaXRpb25EZWJ1Z1N0ZXBDb21wb25lbnQsXG4gICAgICAgIGxvb3BTdGVwOiBUZXN0Q2FzZUxvb3BTdGVwQ29tcG9uZW50LFxuICAgICAgICBub3JtYWxTdGVwOiBUZXN0Q2FzZU5vcm1hbFN0ZXBDb21wb25lbnQsXG4gICAgICAgIGFwaVN0ZXA6IFRlc3RDYXNlQXBpU3RlcENvbXBvbmVudCxcbiAgICAgICAgZGF0YWJhc2VTdGVwOiBUZXN0Q2FzZURhdGFiYXNlU3RlcENvbXBvbmVudCxcbiAgICAgICAgYWlBZ2VudFN0ZXA6IFRlc3RDYXNlQWlBZ2VudFN0ZXBDb21wb25lbnQsXG4gICAgICAgIGFpVmVyaWZ5U3RlcDogVGVzdENhc2VBaVZlcmlmeVN0ZXBDb21wb25lbnQsXG4gICAgICAgIHVwbG9hZFN0ZXA6IFRlc3RDYXNlVXBsb2FkU3RlcENvbXBvbmVudCxcbiAgICAgICAgc2NyZWVuc2hvdFN0ZXA6IFRlc3RDYXNlU2NyZWVuc2hvdFN0ZXBDb21wb25lbnQsXG4gICAgICAgIHNjcm9sbFN0ZXA6IFRlc3RDYXNlU2Nyb2xsU3RlcENvbXBvbmVudCxcbiAgICAgICAgdmVyaWZ5VXJsU3RlcDogVGVzdENhc2VWZXJpZnlVcmxTdGVwQ29tcG9uZW50LFxuICAgICAgICByZXN0b3JlU2Vzc2lvblN0ZXA6IFRlc3RDYXNlUmVzdG9yZVNlc3Npb25TdGVwQ29tcG9uZW50LFxuICAgICAgICBjdXN0b21Db2RlU3RlcDogVGVzdENhc2VDdXN0b21Db2RlU3RlcENvbXBvbmVudCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTVEVQX0NPTVBPTkVOVF9NQVAsXG4gICAgICB1c2VWYWx1ZTogbmV3IE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4oW1xuICAgICAgICBbJ2Jhc2ljJywgQmFzaWNTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydzdGVwLWdyb3VwJywgU3RlcEdyb3VwQ29tcG9uZW50XSxcbiAgICAgICAgWydsb29wJywgTG9vcFN0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ2NvbmRpdGlvbicsIENvbmRpdGlvblN0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ2NvbmRpdGlvbi1kZWJ1ZycsIENvbmRpdGlvbkRlYnVnU3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsnZmFpbGVkJywgRmFpbGVkU3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsndXBkYXRlZC1mYWlsZWQnLCBVcGRhdGVkRmFpbGVkU3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsnYWktYWdlbnQnLCBBSUFnZW50U3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsnYWktYWN0aW9uJywgQUlBY3Rpb25TdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydhcGknLCBBcGlTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydmaWxlLWRvd25sb2FkJywgRmlsZURvd25sb2FkU3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsnZG9jdW1lbnQtdmVyaWZpY2F0aW9uJywgRG9jdW1lbnRWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydsaXZlLWV4ZWN1dGlvbicsIExpdmVFeGVjdXRpb25TdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydkYi12ZXJpZmljYXRpb24nLCBEYlZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnRdLFxuICAgICAgXSlcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVWlLaXRNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSkge1xuICAgIGljb25SZWdpc3RyeS5yZWdpc3RlckZvbnRDbGFzc0FsaWFzKCdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJywgJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnKTtcbiAgfVxufVxuXG4iXX0=
952
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkta2l0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdWkta2l0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFvQixzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFB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QixDQUFDO2dDQUM3QixDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQztnQ0FDbEMsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLENBQUM7Z0NBQzNCLENBQUMsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2dDQUNyQyxDQUFDLGlCQUFpQixFQUFFLDJCQUEyQixDQUFDO2dDQUNoRCxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQztnQ0FDL0IsQ0FBQyxnQkFBZ0IsRUFBRSwwQkFBMEIsQ0FBQztnQ0FDOUMsQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUM7Z0NBQ2xDLENBQUMsV0FBVyxFQUFFLHFCQUFxQixDQUFDO2dDQUNwQyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztnQ0FDekIsQ0FBQyxlQUFlLEVBQUUseUJBQXlCLENBQUM7Z0NBQzVDLENBQUMsdUJBQXVCLEVBQUUsaUNBQWlDLENBQUM7Z0NBQzVELENBQUMsZ0JBQWdCLEVBQUUsMEJBQTBCLENBQUM7Z0NBQzlDLENBQUMsaUJBQWlCLEVBQUUsMkJBQTJCLENBQUM7NkJBQ2pELENBQUM7eUJBQ0g7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgZm9yd2FyZFJlZiwgVHlwZSwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTm9vcEFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0T3B0aW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUsIE92ZXJsYXlDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5neFR5cGVkSnNNb2R1bGUgfSBmcm9tICduZ3gtdHlwZWQtanMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hCYXJDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWdtZW50Q29udHJvbENvbXBvbmVudCB9IGZyb20gJy4vc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEeW5hbWljVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHluYW1pY0NlbGxUZW1wbGF0ZURpcmVjdGl2ZSwgRHluYW1pY0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJsZS9keW5hbWljLXRhYmxlL2R5bmFtaWMtY2VsbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRHluYW1pY0NlbGxDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuL3RhYmxlL2R5bmFtaWMtdGFibGUvZHluYW1pYy1jZWxsLWNvbnRhaW5lci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25NZW51QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9hY3Rpb24tbWVudS9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3RoZXJCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL290aGVyLWJ1dHRvbi9vdGhlci1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvZHluYW1pYy1maWx0ZXIvZHluYW1pYy1maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSB9IGZyb20gJy4vZmlsdGVycy9kYXRlcmFuZ2VwaWNrZXIvZGF0ZXJhbmdlcGlja2VyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2ZpbHRlcnMvZGF0ZXJhbmdlcGlja2VyL2RhdGVyYW5nZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29sdW1uVmlzaWJpbGl0eUNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1uLXZpc2liaWxpdHkvY29sdW1uLXZpc2liaWxpdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlQWN0aW9uVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtYWN0aW9uLXRvb2xiYXIvdGFibGUtYWN0aW9uLXRvb2xiYXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1ldHJpY3NDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL21ldHJpY3MtY2FyZC9tZXRyaWNzLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IE1ldHJpY3NCbG9ja0NvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1ibG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhcnRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2NoYXJ0LWNhcmQvY2hhcnQtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NUZXh0Q2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9wcm9ncmVzcy10ZXh0LWNhcmQvcHJvZ3Jlc3MtdGV4dC1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvZGFzaGJvYXJkLWhlYWRlci9kYXNoYm9hcmQtaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy93b3Jrc3BhY2Utc2VsZWN0b3Ivd29ya3NwYWNlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb3ZlcmFnZU1vZHVsZUNhcmRDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvY292ZXJhZ2UtbW9kdWxlLWNhcmQvY292ZXJhZ2UtbW9kdWxlLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQvdGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmFpbGVkVGVzdENhc2VzQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vZGFzaGJvYXJkcy9mYWlsZWQtdGVzdC1jYXNlcy1jYXJkL2ZhaWxlZC10ZXN0LWNhc2VzLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmltcG9ydCB7IEFkZFByZXJlcXVpc2l0ZUNhc2VzU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYWRkLXByZXJlcXVpc2l0ZS1jYXNlcy1zZWN0aW9uL2FkZC1wcmVyZXF1aXNpdGUtY2FzZXMtc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3RlZC1maWx0ZXJzL3NlbGVjdGVkLWZpbHRlcnMuY29tcG9uZW50JztcbmltcG9ydCB7IEluc2lnaHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9kYXNoYm9hcmRzL2luc2lnaHQtY2FyZC9pbnNpZ2h0LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRHJvcGRvd25CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2Ryb3Bkb3duLWJ1dHRvbi9kcm9wZG93bi1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQgfSBmcm9tICcuL2Rhc2hib2FyZHMvaGVhdC1lcnJvci1tYXAtY2VsbC9oZWF0LWVycm9yLW1hcC1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vdGVtcGxhdGVzL3RhYmxlLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgfSBmcm9tICcuL3V0aWxzL3R3LW92ZXJsYXktY29udGFpbmVyJztcbmltcG9ydCB7IEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vZnVsbC10YWJsZS1sb2FkZXIvZnVsbC10YWJsZS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmxlRGF0YUxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtZGF0YS1sb2FkZXIvdGFibGUtZGF0YS1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNURVBfQ09NUE9ORU5UX01BUCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zdGVwLXJlZ2lzdHJ5LnRva2VuJztcbmltcG9ydCB7IEJhc2ljU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9iYXNpYy1zdGVwL2Jhc2ljLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zdGVwLXJlbmRlcmVyL3N0ZXAtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBHcm91cENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zdGVwLWdyb3VwL3N0ZXAtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IExvb3BTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2xvb3Atc3RlcC9sb29wLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmRpdGlvblN0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vY29uZGl0aW9uLXN0ZXAvY29uZGl0aW9uLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEZhaWxlZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vZmFpbGVkLXN0ZXAvZmFpbGVkLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFVwZGF0ZWRGYWlsZWRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3VwZGF0ZWQtZmFpbGVkLXN0ZXAvdXBkYXRlZC1mYWlsZWQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlld01vcmVGYWlsZWRTdGVwQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3ZpZXctbW9yZS1mYWlsZWQtc3RlcC1idXR0b24vdmlldy1tb3JlLWZhaWxlZC1zdGVwLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZkhlYWxBbmFseXNpc0NvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9zZWxmLWhlYWwtYW5hbHlzaXMvc2VsZi1oZWFsLWFuYWx5c2lzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBSUFnZW50U3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9haS1hZ2VudC1zdGVwL2FpLWFnZW50LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEFJQWN0aW9uU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9haS1hY3Rpb24tc3RlcC9haS1hY3Rpb24tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBpU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9hcGktc3RlcC9hcGktc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZURvd25sb2FkU3RlcENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9maWxlLWRvd25sb2FkLXN0ZXAvZmlsZS1kb3dubG9hZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vZG9jdW1lbnQtdmVyaWZpY2F0aW9uLXN0ZXAvZG9jdW1lbnQtdmVyaWZpY2F0aW9uLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IExpdmVFeGVjdXRpb25TdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2xpdmUtZXhlY3V0aW9uLXN0ZXAvbGl2ZS1leGVjdXRpb24tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWlMb2dzV2l0aFJlYXNvbmluZ0NvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9haS1sb2dzLXdpdGgtcmVhc29uaW5nL2FpLWxvZ3Mtd2l0aC1yZWFzb25pbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEp1bXBUb1N0ZXBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9qdW1wLXRvLXN0ZXAtbW9kYWwvanVtcC10by1zdGVwLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmVha3BvaW50c01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2JyZWFrcG9pbnRzLW1vZGFsL2JyZWFrcG9pbnRzLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNvcmRpbmdCYW5uZXJDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vcmVjb3JkaW5nLWJhbm5lci9yZWNvcmRpbmctYmFubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXZpZXdSZWNvcmRlZFN0ZXBzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vcmV2aWV3LXJlY29yZGVkLXN0ZXBzLW1vZGFsL3Jldmlldy1yZWNvcmRlZC1zdGVwcy1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWFpblN0ZXBDb2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9tYWluLXN0ZXAtY29sbGFwc2UvbWFpbi1zdGVwLWNvbGxhcHNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaXN1YWxDb21wYXJpc29uQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3Zpc3VhbC1jb21wYXJpc29uL3Zpc3VhbC1jb21wYXJpc29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaW11bGF0b3JDb21wb25lbnQgfSBmcm9tICcuL3NpbXVsYXRvci9zaW11bGF0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENvbnNvbGVBbGVydENvbXBvbmVudCB9IGZyb20gJy4vY29uc29sZS1hbGVydC9jb25zb2xlLWFsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBaURlYnVnQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FpLWRlYnVnLWFsZXJ0L2FpLWRlYnVnLWFsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZXR3b3JrUmVxdWVzdENvbXBvbmVudCB9IGZyb20gJy4vbmV0d29yay1yZXF1ZXN0L25ldHdvcmstcmVxdWVzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUnVuSGlzdG9yeUNhcmRDb21wb25lbnQgfSBmcm9tICcuL3J1bi1oaXN0b3J5LWNhcmQvcnVuLWhpc3RvcnktY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWlQcm9tcHRDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9haS1wcm9tcHQtY2FyZC9haS1wcm9tcHQtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmlzdWFsRGlmZmVyZW5jZU1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC92aXN1YWwtZGlmZmVyZW5jZS1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tY2FyZC9jb25maWd1cmF0aW9uLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBhcmVSdW5zQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wYXJlLXJ1bnMvY29tcGFyZS1ydW5zLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWaWV3Q29tcGFyZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcGFyZS1ydW5zL3ZpZXctY29tcGFyZS1idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IEl0ZXJhdGlvbnNMb29wQ29tcG9uZW50IH0gZnJvbSAnLi9pdGVyYXRpb25zLWxvb3AvaXRlcmF0aW9ucy1sb29wLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGYWlsZWRTdGVwQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vZmFpbGVkLXN0ZXAtY2FyZC9mYWlsZWQtc3RlcC1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdXN0b21JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLWlucHV0L2N1c3RvbS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWl4ZWRWYXJpYWJsZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9taXhlZC12YXJpYWJsZS1pbnB1dC9taXhlZC12YXJpYWJsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS10ZXh0YXJlYS9jdXN0b20tdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IENvZGVFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvZGUtZWRpdG9yL2NvZGUtZWRpdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb25hY29FZGl0b3JNb2R1bGUgfSBmcm9tICduZ3gtbW9uYWNvLWVkaXRvcic7XG5pbXBvcnQgeyBDdXN0b21Ub2dnbGVDb21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS10b2dnbGUvY3VzdG9tLXRvZ2dsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50JztcbmltcG9ydCB7IEFpUmVhc29uaW5nQ29tcG9uZW50IH0gZnJvbSAnLi9haS1yZWFzb25pbmcvYWktcmVhc29uaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeGVjdXRpb25SZXN1bHRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXJlc3VsdC1tb2RhbC9leGVjdXRpb24tcmVzdWx0LW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXNzaW9uQ2hhbmdlc01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL3Nlc3Npb24tY2hhbmdlcy1tb2RhbC9zZXNzaW9uLWNoYW5nZXMtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVycm9yTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2Vycm9yLW1vZGFsL2Vycm9yLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXNzaW9uUmVzdG9yYXRpb25EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3Nlc3Npb24tcmVzdG9yYXRpb24tZGlhbG9nL3Nlc3Npb24tcmVzdG9yYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFeHBvcnRDb2RlTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL2V4cG9ydC1jb2RlLW1vZGFsL2V4cG9ydC1jb2RlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcFByb2dyZXNzQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vc3RlcC1wcm9ncmVzcy1jYXJkL3N0ZXAtcHJvZ3Jlc3MtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcFN0YXR1c0NhcmRDb21wb25lbnQgfSBmcm9tICcuL3N0ZXAtc3RhdHVzLWNhcmQvc3RlcC1zdGF0dXMtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGJWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9leGVjdXRpb24tc2NyZWVuL2RiLXZlcmlmaWNhdGlvbi1zdGVwL2RiLXZlcmlmaWNhdGlvbi1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYlF1ZXJ5RXhlY3V0aW9uSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9kYi1xdWVyeS1leGVjdXRpb24taXRlbS9kYi1xdWVyeS1leGVjdXRpb24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VOb3JtYWxTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9ub3JtYWwtc3RlcC9ub3JtYWwtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VMb29wU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvbG9vcC1zdGVwL2xvb3Atc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VDb25kaXRpb25TdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9jb25kaXRpb24tc3RlcC9jb25kaXRpb24tc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VTdGVwR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZ3JvdXAvc3RlcC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyL3Rlc3QtY2FzZS1kZXRhaWxzLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZUFwaVN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2FwaS1zdGVwL2FwaS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZURhdGFiYXNlU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvZGF0YWJhc2Utc3RlcC9kYXRhYmFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZUFpQWdlbnRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9haS1hZ2VudC1zdGVwL2FpLWFnZW50LXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlQWlWZXJpZnlTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9haS12ZXJpZnktc3RlcC9haS12ZXJpZnktc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VVcGxvYWRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy91cGxvYWQtc3RlcC91cGxvYWQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VTY3JlZW5zaG90U3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvc2NyZWVuc2hvdC1zdGVwL3NjcmVlbnNob3Qtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VTY3JvbGxTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9zY3JvbGwtc3RlcC9zY3JvbGwtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGVzdENhc2VWZXJpZnlVcmxTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy92ZXJpZnktdXJsLXN0ZXAvdmVyaWZ5LXVybC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZVJlc3RvcmVTZXNzaW9uU3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvcmVzdG9yZS1zZXNzaW9uLXN0ZXAvcmVzdG9yZS1zZXNzaW9uLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3RDYXNlQ3VzdG9tQ29kZVN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1jb2RlLXN0ZXAvY3VzdG9tLWNvZGUtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3VzdG9tRWRpdFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL2N1c3RvbS1lZGl0LXN0ZXAvY3VzdG9tLWVkaXQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRlbUxpc3RDb21wb25lbnQgfSBmcm9tICcuL2l0ZW0tbGlzdC9pdGVtLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IFRlc3REYXRhTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtZGF0YS1tb2RhbC90ZXN0LWRhdGEtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZVN0ZXBHcm91cENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvY3JlYXRlLXN0ZXAtZ3JvdXAvY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IERlbGV0ZVN0ZXBzQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9kZWxldGUtc3RlcHMvZGVsZXRlLXN0ZXBzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSdW5FeGVjdXRpb25BbGVydENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvcnVuLWV4ZWN1dGlvbi1hbGVydC9ydW4tZXhlY3V0aW9uLWFsZXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcGlFZGl0U3RlcENvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvYXBpLWVkaXQtc3RlcC9hcGktZWRpdC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBURVNUX0NBU0VfU1RFUF9DT01QT05FTlRfTUFQIH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2Utc3RlcC1jb21wb25lbnRzLnRva2VuJztcbmltcG9ydCB7IExpdmVDb252ZXJzYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2xpdmUtY29udmVyc2F0aW9uL2xpdmUtY29udmVyc2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEbmRNb2R1bGUgfSBmcm9tICduZ3gtZHJhZy1kcm9wJztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyQWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWFjdGlvbi9zdGVwLWJ1aWxkZXItYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwQnVpbGRlckxvb3BDb21wb25lbnQgfSBmcm9tICcuL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItbG9vcC9zdGVwLWJ1aWxkZXItbG9vcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWxlbWVudFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LXBvcHVwL2VsZW1lbnQtZm9ybS9lbGVtZW50LWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyQ29uZGl0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWNvbmRpdGlvbi9zdGVwLWJ1aWxkZXItY29uZGl0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwQnVpbGRlckRhdGFiYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRhdGFiYXNlL3N0ZXAtYnVpbGRlci1kYXRhYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJBaUFnZW50Q29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWFpLWFnZW50L3N0ZXAtYnVpbGRlci1haS1hZ2VudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJDdXN0b21Db2RlQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWN1c3RvbS1jb2RlL3N0ZXAtYnVpbGRlci1jdXN0b20tY29kZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJSZWNvcmRTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLXJlY29yZC1zdGVwL3N0ZXAtYnVpbGRlci1yZWNvcmQtc3RlcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3RlcEJ1aWxkZXJEb2N1bWVudEdlbmVyYXRpb25UZW1wbGF0ZVN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItZG9jdW1lbnQtZ2VuZXJhdGlvbi10ZW1wbGF0ZS1zdGVwL3N0ZXAtYnVpbGRlci1kb2N1bWVudC1nZW5lcmF0aW9uLXRlbXBsYXRlLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9lbGVtZW50LWxpc3QvZWxlbWVudC1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwQnVpbGRlckRvY3VtZW50Q29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvc3RlcC1idWlsZGVyLWRvY3VtZW50L3N0ZXAtYnVpbGRlci1kb2N1bWVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGV0YWlsU2lkZVBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9kZXRhaWwtc2lkZS1wYW5lbC9kZXRhaWwtc2lkZS1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGV0YWlsRHJhd2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kZXRhaWwtZHJhd2VyL2RldGFpbC1kcmF3ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERldGFpbERyYXdlclRhYkNvbXBvbmVudCB9IGZyb20gJy4vZGV0YWlsLWRyYXdlci9kZXRhaWwtZHJhd2VyLXRhYi9kZXRhaWwtZHJhd2VyLXRhYi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGV0YWlsRHJhd2VyVGFiQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vZGV0YWlsLWRyYXdlci9kZXRhaWwtZHJhd2VyLXRhYi1jb250ZW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBUZXN0Q2FzZURldGFpbHNDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3Rlc3QtY2FzZS1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXN0Q2FzZURldGFpbHNFZGl0Q29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy90ZXN0LWNhc2UtZGV0YWlscy1lZGl0L3Rlc3QtY2FzZS1kZXRhaWxzLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaU1vY2tpbmdDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi90ZXN0LWNhc2UtZGV0YWlscy9hcGktbW9ja2luZy1jYXJkL2FwaS1tb2NraW5nLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBCdWlsZGVyR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL3N0ZXAtYnVpbGRlci9zdGVwLWJ1aWxkZXItZ3JvdXAvc3RlcC1idWlsZGVyLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwRGV0YWlsc0RyYXdlckNvbXBvbmVudCB9IGZyb20gJy4vdGVzdC1jYXNlLWRldGFpbHMvc3RlcC1kZXRhaWxzLWRyYXdlci9zdGVwLWRldGFpbHMtZHJhd2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVZhcmlhYmxlc0Zvcm1Db21wb25lbnQgfSBmcm9tICcuL3N0ZXAtYnVpbGRlci90ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybS90ZW1wbGF0ZS12YXJpYWJsZXMtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWR2YW5jZWRWYXJpYWJsZXNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwLWJ1aWxkZXIvYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0vYWR2YW5jZWQtdmFyaWFibGVzLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFN0ZXBEZXRhaWxzTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3Rlc3QtY2FzZS1kZXRhaWxzL3N0ZXAtZGV0YWlscy1tb2RhbC9zdGVwLWRldGFpbHMtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IFNhZmVIdG1sUGlwZSB9IGZyb20gJy4vcGlwZXMvc2FmZS1odG1sLnBpcGUnO1xuaW1wb3J0IHsgQ2FtZWxUb1RpdGxlUGlwZSB9IGZyb20gJy4vcGlwZXMvY2FtZWwtdG8tdGl0bGUucGlwZSc7XG5pbXBvcnQgeyBDb25kaXRpb25EZWJ1Z1N0ZXBDb21wb25lbnQgfSBmcm9tICcuL2V4ZWN1dGlvbi1zY3JlZW4vY29uZGl0aW9uLWRlYnVnLXN0ZXAvY29uZGl0aW9uLWRlYnVnLXN0ZXAuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmRpdGlvbkJyYW5jaEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4vZXhlY3V0aW9uLXNjcmVlbi9jb25kaXRpb24tZGVidWctc3RlcC9jb25kaXRpb24tYnJhbmNoLWVkaXRvci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZUxpc3RDb21wb25lbnQgfSBmcm9tICcuL3F1ZXN0aW9ubmFpcmUtbGlzdC9xdWVzdGlvbm5haXJlLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENoYW5nZUhpc3RvcnlDb21wb25lbnQgfSBmcm9tICcuL2NoYW5nZS1oaXN0b3J5L2NoYW5nZS1oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWZXJzaW9uSGlzdG9yeUxpc3RDb21wb25lbnQgfSBmcm9tICcuL3ZlcnNpb24taGlzdG9yeS92ZXJzaW9uLWhpc3RvcnktbGlzdC92ZXJzaW9uLWhpc3RvcnktbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVmVyc2lvbkhpc3RvcnlDb21wYXJlQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJzaW9uLWhpc3RvcnkvdmVyc2lvbi1oaXN0b3J5LWNvbXBhcmUvdmVyc2lvbi1oaXN0b3J5LWNvbXBhcmUuY29tcG9uZW50JztcbmltcG9ydCB7IFZlcnNpb25IaXN0b3J5RGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJzaW9uLWhpc3RvcnkvdmVyc2lvbi1oaXN0b3J5LWRldGFpbC92ZXJzaW9uLWhpc3RvcnktZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWZXJzaW9uSGlzdG9yeVJlc3RvcmVDb25maXJtQ29tcG9uZW50IH0gZnJvbSAnLi92ZXJzaW9uLWhpc3RvcnkvdmVyc2lvbi1oaXN0b3J5LXJlc3RvcmUtY29uZmlybS92ZXJzaW9uLWhpc3RvcnktcmVzdG9yZS1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZXdWZXJzaW9uSGlzdG9yeURldGFpbENvbXBvbmVudCB9IGZyb20gJy4vdmVyc2lvbi1oaXN0b3J5L25ldy12ZXJzaW9uLWhpc3RvcnktZGV0YWlsL25ldy12ZXJzaW9uLWhpc3RvcnktZGV0YWlsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTdGVwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zdGVwcGVyL3N0ZXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvQ2FyZEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9yYWRpby1jYXJkLWdyb3VwL3JhZGlvLWNhcmQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YlN0ZXBzQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9zdWItc3RlcHMtY29uZmlybWF0aW9uLWRpYWxvZy9zdWItc3RlcHMtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgU2VhcmNoQmFyQ29tcG9uZW50LFxuICAgIEF1dG9jb21wbGV0ZUNvbXBvbmVudCxcbiAgICBTZWdtZW50Q29udHJvbENvbXBvbmVudCxcbiAgICBTdGVwcGVyQ29tcG9uZW50LFxuICAgIFJhZGlvQ2FyZEdyb3VwQ29tcG9uZW50LFxuICAgIERpYWxvZ0NvbXBvbmVudCxcbiAgICBEeW5hbWljVGFibGVDb21wb25lbnQsXG4gICAgRHluYW1pY0NlbGxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEeW5hbWljSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRHluYW1pY0NlbGxDb250YWluZXJEaXJlY3RpdmUsXG4gICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBBY3Rpb25NZW51QnV0dG9uQ29tcG9uZW50LFxuICAgIE90aGVyQnV0dG9uQ29tcG9uZW50LFxuICAgIER5bmFtaWNGaWx0ZXJDb21wb25lbnQsXG4gICAgRGF0ZXJhbmdlcGlja2VyRGlyZWN0aXZlLFxuICAgIERhdGVyYW5nZXBpY2tlckNvbXBvbmVudCxcbiAgICBDb2x1bW5WaXNpYmlsaXR5Q29tcG9uZW50LFxuICAgIFRhYmxlQWN0aW9uVG9vbGJhckNvbXBvbmVudCxcbiAgICBNZXRyaWNzQ2FyZENvbXBvbmVudCxcbiAgICBNZXRyaWNzQmxvY2tDb21wb25lbnQsXG4gICAgQ2hhcnRDYXJkQ29tcG9uZW50LFxuICAgIFByb2dyZXNzVGV4dENhcmRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkSGVhZGVyQ29tcG9uZW50LFxuICAgIFdvcmtzcGFjZVNlbGVjdG9yQ29tcG9uZW50LFxuICAgIENvdmVyYWdlTW9kdWxlQ2FyZENvbXBvbmVudCxcbiAgICBUZXN0RGlzdHJpYnV0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50LFxuICAgIER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCxcbiAgICBBZGRQcmVyZXF1aXNpdGVDYXNlc1NlY3Rpb25Db21wb25lbnQsXG4gICAgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50LFxuICAgIEluc2lnaHRDYXJkQ29tcG9uZW50LFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIERyb3Bkb3duQnV0dG9uQ29tcG9uZW50LFxuICAgIEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBUYWJsZVRlbXBsYXRlQ29tcG9uZW50LFxuICAgIEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCxcbiAgICBUYWJsZURhdGFMb2FkZXJDb21wb25lbnQsXG4gICAgQmFzaWNTdGVwQ29tcG9uZW50LFxuICAgIFN0ZXBSZW5kZXJlckNvbXBvbmVudCxcbiAgICBTdGVwR3JvdXBDb21wb25lbnQsXG4gICAgTG9vcFN0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uU3RlcENvbXBvbmVudCxcbiAgICBDb25kaXRpb25EZWJ1Z1N0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uQnJhbmNoRWRpdG9yQ29tcG9uZW50LFxuICAgIEZhaWxlZFN0ZXBDb21wb25lbnQsXG4gICAgVXBkYXRlZEZhaWxlZFN0ZXBDb21wb25lbnQsXG4gICAgVmlld01vcmVGYWlsZWRTdGVwQnV0dG9uQ29tcG9uZW50LFxuICAgIFNlbGZIZWFsQW5hbHlzaXNDb21wb25lbnQsXG4gICAgQUlBZ2VudFN0ZXBDb21wb25lbnQsXG4gICAgQUlBY3Rpb25TdGVwQ29tcG9uZW50LFxuICAgIEFwaVN0ZXBDb21wb25lbnQsXG4gICAgRmlsZURvd25sb2FkU3RlcENvbXBvbmVudCxcbiAgICBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnQsXG4gICAgTGl2ZUV4ZWN1dGlvblN0ZXBDb21wb25lbnQsXG4gICAgQWlMb2dzV2l0aFJlYXNvbmluZ0NvbXBvbmVudCxcbiAgICBKdW1wVG9TdGVwTW9kYWxDb21wb25lbnQsXG4gICAgQnJlYWtwb2ludHNNb2RhbENvbXBvbmVudCxcbiAgICBSZWNvcmRpbmdCYW5uZXJDb21wb25lbnQsXG4gICAgUmV2aWV3UmVjb3JkZWRTdGVwc01vZGFsQ29tcG9uZW50LFxuICAgIE1haW5TdGVwQ29sbGFwc2VDb21wb25lbnQsXG4gICAgVmlzdWFsQ29tcGFyaXNvbkNvbXBvbmVudCxcbiAgICBTaW11bGF0b3JDb21wb25lbnQsXG4gICAgQ29uc29sZUFsZXJ0Q29tcG9uZW50LFxuICAgIEFpRGVidWdBbGVydENvbXBvbmVudCxcbiAgICBOZXR3b3JrUmVxdWVzdENvbXBvbmVudCxcbiAgICBSdW5IaXN0b3J5Q2FyZENvbXBvbmVudCxcbiAgICBBaVByb21wdENhcmRDb21wb25lbnQsXG4gICAgVmlzdWFsRGlmZmVyZW5jZU1vZGFsQ29tcG9uZW50LFxuICAgIENvbmZpZ3VyYXRpb25DYXJkQ29tcG9uZW50LFxuICAgIENvbXBhcmVSdW5zQ29tcG9uZW50LFxuICAgIFZpZXdDb21wYXJlQnV0dG9uQ29tcG9uZW50LFxuICAgIEl0ZXJhdGlvbnNMb29wQ29tcG9uZW50LFxuICAgIEZhaWxlZFN0ZXBDYXJkQ29tcG9uZW50LFxuICAgIEN1c3RvbUlucHV0Q29tcG9uZW50LFxuICAgIE1peGVkVmFyaWFibGVJbnB1dENvbXBvbmVudCxcbiAgICBDdXN0b21UZXh0YXJlYUNvbXBvbmVudCxcbiAgICBDb2RlRWRpdG9yQ29tcG9uZW50LFxuICAgIEN1c3RvbVRvZ2dsZUNvbXBvbmVudCxcbiAgICBGaWxlVXBsb2FkQ29tcG9uZW50LFxuICAgIEFpUmVhc29uaW5nQ29tcG9uZW50LFxuICAgIEV4ZWN1dGlvblJlc3VsdE1vZGFsQ29tcG9uZW50LFxuICAgIFNlc3Npb25DaGFuZ2VzTW9kYWxDb21wb25lbnQsXG4gICAgRXJyb3JNb2RhbENvbXBvbmVudCxcbiAgICBTZXNzaW9uUmVzdG9yYXRpb25EaWFsb2dDb21wb25lbnQsXG4gICAgU3ViU3RlcHNDb25maXJtYXRpb25EaWFsb2dDb21wb25lbnQsXG4gICAgRXhwb3J0Q29kZU1vZGFsQ29tcG9uZW50LFxuICAgIFByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50LFxuICAgIFN0ZXBQcm9ncmVzc0NhcmRDb21wb25lbnQsXG4gICAgU3RlcFN0YXR1c0NhcmRDb21wb25lbnQsXG4gICAgRGJWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50LFxuICAgIERiUXVlcnlFeGVjdXRpb25JdGVtQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlTm9ybWFsU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUxvb3BTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlQ29uZGl0aW9uU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVN0ZXBHcm91cENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZURldGFpbHNSZW5kZXJlckNvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUFwaVN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VEYXRhYmFzZVN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VBaUFnZW50U3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUFpVmVyaWZ5U3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVVwbG9hZFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VTY3JlZW5zaG90U3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVNjcm9sbFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VWZXJpZnlVcmxTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlUmVzdG9yZVNlc3Npb25TdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlQ3VzdG9tQ29kZVN0ZXBDb21wb25lbnQsXG4gICAgQ3VzdG9tRWRpdFN0ZXBDb21wb25lbnQsXG4gICAgSXRlbUxpc3RDb21wb25lbnQsXG4gICAgVGVzdERhdGFNb2RhbENvbXBvbmVudCxcbiAgICBDcmVhdGVTdGVwR3JvdXBDb21wb25lbnQsXG4gICAgRGVsZXRlU3RlcHNDb21wb25lbnQsXG4gICAgUnVuRXhlY3V0aW9uQWxlcnRDb21wb25lbnQsXG4gICAgQXBpRWRpdFN0ZXBDb21wb25lbnQsXG4gICAgTGl2ZUNvbnZlcnNhdGlvbkNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckFjdGlvbkNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckxvb3BDb21wb25lbnQsXG4gICAgRWxlbWVudFBvcHVwQ29tcG9uZW50LFxuICAgIEVsZW1lbnRGb3JtQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyQ29uZGl0aW9uQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyRGF0YWJhc2VDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJBaUFnZW50Q29tcG9uZW50LFxuICAgIENvZGVFZGl0b3JDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJDdXN0b21Db2RlQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyUmVjb3JkU3RlcENvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckRvY3VtZW50R2VuZXJhdGlvblRlbXBsYXRlU3RlcENvbXBvbmVudCxcbiAgICBFbGVtZW50TGlzdENvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckRvY3VtZW50Q29tcG9uZW50LFxuICAgIERldGFpbFNpZGVQYW5lbENvbXBvbmVudCxcbiAgICBEZXRhaWxEcmF3ZXJDb21wb25lbnQsXG4gICAgRGV0YWlsRHJhd2VyVGFiQ29tcG9uZW50LFxuICAgIERldGFpbERyYXdlclRhYkNvbnRlbnREaXJlY3RpdmUsXG4gICAgVGVzdENhc2VEZXRhaWxzQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlRGV0YWlsc0VkaXRDb21wb25lbnQsXG4gICAgQXBpTW9ja2luZ0NhcmRDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJHcm91cENvbXBvbmVudCxcbiAgICBTdGVwRGV0YWlsc0RyYXdlckNvbXBvbmVudCxcbiAgICBUZW1wbGF0ZVZhcmlhYmxlc0Zvcm1Db21wb25lbnQsXG4gICAgQWR2YW5jZWRWYXJpYWJsZXNGb3JtQ29tcG9uZW50LFxuICAgIFN0ZXBEZXRhaWxzTW9kYWxDb21wb25lbnQsXG4gICAgU2FmZUh0bWxQaXBlLFxuICAgIFF1ZXN0aW9ubmFpcmVMaXN0Q29tcG9uZW50LFxuICAgIENoYW5nZUhpc3RvcnlDb21wb25lbnQsXG4gICAgQ2FtZWxUb1RpdGxlUGlwZSxcbiAgICBWZXJzaW9uSGlzdG9yeUxpc3RDb21wb25lbnQsXG4gICAgVmVyc2lvbkhpc3RvcnlDb21wYXJlQ29tcG9uZW50LFxuICAgIFZlcnNpb25IaXN0b3J5RGV0YWlsQ29tcG9uZW50LFxuICAgIFZlcnNpb25IaXN0b3J5UmVzdG9yZUNvbmZpcm1Db21wb25lbnQsXG4gICAgTmV3VmVyc2lvbkhpc3RvcnlEZXRhaWxDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOb29wQW5pbWF0aW9uc01vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0T3B0aW9uTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gICAgTWF0TmF0aXZlRGF0ZU1vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgT3ZlcmxheU1vZHVsZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgU2Nyb2xsaW5nTW9kdWxlLFxuICAgIE5neFR5cGVkSnNNb2R1bGUsXG4gICAgRG5kTW9kdWxlLFxuICAgIE1vbmFjb0VkaXRvck1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIFNlYXJjaEJhckNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgU2VnbWVudENvbnRyb2xDb21wb25lbnQsXG4gICAgU3RlcHBlckNvbXBvbmVudCxcbiAgICBSYWRpb0NhcmRHcm91cENvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRHluYW1pY1RhYmxlQ29tcG9uZW50LFxuICAgIER5bmFtaWNDZWxsVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRHluYW1pY0hlYWRlclRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIER5bmFtaWNDZWxsQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgQWN0aW9uTWVudUJ1dHRvbkNvbXBvbmVudCxcbiAgICBPdGhlckJ1dHRvbkNvbXBvbmVudCxcbiAgICBEeW5hbWljRmlsdGVyQ29tcG9uZW50LFxuICAgIERhdGVyYW5nZXBpY2tlckRpcmVjdGl2ZSxcbiAgICBEYXRlcmFuZ2VwaWNrZXJDb21wb25lbnQsXG4gICAgQ29sdW1uVmlzaWJpbGl0eUNvbXBvbmVudCxcbiAgICBUYWJsZUFjdGlvblRvb2xiYXJDb21wb25lbnQsXG4gICAgTWV0cmljc0NhcmRDb21wb25lbnQsXG4gICAgQ2hhcnRDYXJkQ29tcG9uZW50LFxuICAgIFByb2dyZXNzVGV4dENhcmRDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkSGVhZGVyQ29tcG9uZW50LFxuICAgIFdvcmtzcGFjZVNlbGVjdG9yQ29tcG9uZW50LFxuICAgIENvdmVyYWdlTW9kdWxlQ2FyZENvbXBvbmVudCxcbiAgICBUZXN0RGlzdHJpYnV0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBGYWlsZWRUZXN0Q2FzZXNDYXJkQ29tcG9uZW50LFxuICAgIER5bmFtaWNTZWxlY3RGaWVsZENvbXBvbmVudCxcbiAgICBBZGRQcmVyZXF1aXNpdGVDYXNlc1NlY3Rpb25Db21wb25lbnQsXG4gICAgU2VsZWN0ZWRGaWx0ZXJzQ29tcG9uZW50LFxuICAgIEluc2lnaHRDYXJkQ29tcG9uZW50LFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIERyb3Bkb3duQnV0dG9uQ29tcG9uZW50LFxuICAgIEhlYXRFcnJvck1hcENlbGxDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBUYWJsZVRlbXBsYXRlQ29tcG9uZW50LFxuICAgIEZ1bGxUYWJsZUxvYWRlckNvbXBvbmVudCxcbiAgICBUYWJsZURhdGFMb2FkZXJDb21wb25lbnQsXG4gICAgQmFzaWNTdGVwQ29tcG9uZW50LFxuICAgIFN0ZXBSZW5kZXJlckNvbXBvbmVudCxcbiAgICBTdGVwR3JvdXBDb21wb25lbnQsXG4gICAgTG9vcFN0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uU3RlcENvbXBvbmVudCxcbiAgICBDb25kaXRpb25EZWJ1Z1N0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uQnJhbmNoRWRpdG9yQ29tcG9uZW50LFxuICAgIEZhaWxlZFN0ZXBDb21wb25lbnQsXG4gICAgQ29uZGl0aW9uRGVidWdTdGVwQ29tcG9uZW50LFxuICAgIFVwZGF0ZWRGYWlsZWRTdGVwQ29tcG9uZW50LFxuICAgIFZpZXdNb3JlRmFpbGVkU3RlcEJ1dHRvbkNvbXBvbmVudCxcbiAgICBTZWxmSGVhbEFuYWx5c2lzQ29tcG9uZW50LFxuICAgIEFJQWdlbnRTdGVwQ29tcG9uZW50LFxuICAgIEFJQWN0aW9uU3RlcENvbXBvbmVudCxcbiAgICBBcGlTdGVwQ29tcG9uZW50LFxuICAgIEZpbGVEb3dubG9hZFN0ZXBDb21wb25lbnQsXG4gICAgRG9jdW1lbnRWZXJpZmljYXRpb25TdGVwQ29tcG9uZW50LFxuICAgIExpdmVFeGVjdXRpb25TdGVwQ29tcG9uZW50LFxuICAgIEFpTG9nc1dpdGhSZWFzb25pbmdDb21wb25lbnQsXG4gICAgSnVtcFRvU3RlcE1vZGFsQ29tcG9uZW50LFxuICAgIEJyZWFrcG9pbnRzTW9kYWxDb21wb25lbnQsXG4gICAgUmVjb3JkaW5nQmFubmVyQ29tcG9uZW50LFxuICAgIFJldmlld1JlY29yZGVkU3RlcHNNb2RhbENvbXBvbmVudCxcbiAgICBNYWluU3RlcENvbGxhcHNlQ29tcG9uZW50LFxuICAgIFZpc3VhbENvbXBhcmlzb25Db21wb25lbnQsXG4gICAgU2ltdWxhdG9yQ29tcG9uZW50LFxuICAgIENvbnNvbGVBbGVydENvbXBvbmVudCxcbiAgICBBaURlYnVnQWxlcnRDb21wb25lbnQsXG4gICAgTmV0d29ya1JlcXVlc3RDb21wb25lbnQsXG4gICAgUnVuSGlzdG9yeUNhcmRDb21wb25lbnQsXG4gICAgQWlQcm9tcHRDYXJkQ29tcG9uZW50LFxuICAgIFZpc3VhbERpZmZlcmVuY2VNb2RhbENvbXBvbmVudCxcbiAgICBDb25maWd1cmF0aW9uQ2FyZENvbXBvbmVudCxcbiAgICBDb21wYXJlUnVuc0NvbXBvbmVudCxcbiAgICBWaWV3Q29tcGFyZUJ1dHRvbkNvbXBvbmVudCxcbiAgICBJdGVyYXRpb25zTG9vcENvbXBvbmVudCxcbiAgICBGYWlsZWRTdGVwQ2FyZENvbXBvbmVudCxcbiAgICBDdXN0b21JbnB1dENvbXBvbmVudCxcbiAgICBNaXhlZFZhcmlhYmxlSW5wdXRDb21wb25lbnQsXG4gICAgQ3VzdG9tVGV4dGFyZWFDb21wb25lbnQsXG4gICAgQ29kZUVkaXRvckNvbXBvbmVudCxcbiAgICBDdXN0b21Ub2dnbGVDb21wb25lbnQsXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICBBaVJlYXNvbmluZ0NvbXBvbmVudCxcbiAgICBFeGVjdXRpb25SZXN1bHRNb2RhbENvbXBvbmVudCxcbiAgICBTZXNzaW9uQ2hhbmdlc01vZGFsQ29tcG9uZW50LFxuICAgIEVycm9yTW9kYWxDb21wb25lbnQsXG4gICAgU2Vzc2lvblJlc3RvcmF0aW9uRGlhbG9nQ29tcG9uZW50LFxuICAgIFN1YlN0ZXBzQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50LFxuICAgIEV4cG9ydENvZGVNb2RhbENvbXBvbmVudCxcbiAgICBQcm9ncmVzc0luZGljYXRvckNvbXBvbmVudCxcbiAgICBTdGVwUHJvZ3Jlc3NDYXJkQ29tcG9uZW50LFxuICAgIFN0ZXBTdGF0dXNDYXJkQ29tcG9uZW50LFxuICAgIERiVmVyaWZpY2F0aW9uU3RlcENvbXBvbmVudCxcbiAgICBEYlF1ZXJ5RXhlY3V0aW9uSXRlbUNvbXBvbmVudCxcbiAgICBUZXN0Q2FzZU5vcm1hbFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VMb29wU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUNvbmRpdGlvblN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VTdGVwR3JvdXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VEZXRhaWxzUmVuZGVyZXJDb21wb25lbnQsXG4gICAgVGVzdENhc2VBcGlTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlRGF0YWJhc2VTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlQWlBZ2VudFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VVcGxvYWRTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlU2NyZWVuc2hvdFN0ZXBDb21wb25lbnQsXG4gICAgVGVzdENhc2VTY3JvbGxTdGVwQ29tcG9uZW50LFxuICAgIFRlc3RDYXNlVmVyaWZ5VXJsU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZVJlc3RvcmVTZXNzaW9uU3RlcENvbXBvbmVudCxcbiAgICBUZXN0Q2FzZUN1c3RvbUNvZGVTdGVwQ29tcG9uZW50LFxuICAgIEN1c3RvbUVkaXRTdGVwQ29tcG9uZW50LFxuICAgIEl0ZW1MaXN0Q29tcG9uZW50LFxuICAgIFRlc3REYXRhTW9kYWxDb21wb25lbnQsXG4gICAgQ3JlYXRlU3RlcEdyb3VwQ29tcG9uZW50LFxuICAgIERlbGV0ZVN0ZXBzQ29tcG9uZW50LFxuICAgIFJ1bkV4ZWN1dGlvbkFsZXJ0Q29tcG9uZW50LFxuICAgIEFwaUVkaXRTdGVwQ29tcG9uZW50LFxuICAgIExpdmVDb252ZXJzYXRpb25Db21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJBY3Rpb25Db21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJMb29wQ29tcG9uZW50LFxuICAgIEVsZW1lbnRQb3B1cENvbXBvbmVudCxcbiAgICBFbGVtZW50Rm9ybUNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckNvbmRpdGlvbkNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlckRhdGFiYXNlQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyQWlBZ2VudENvbXBvbmVudCxcbiAgICBDb2RlRWRpdG9yQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyQ3VzdG9tQ29kZUNvbXBvbmVudCxcbiAgICBTdGVwQnVpbGRlclJlY29yZFN0ZXBDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJEb2N1bWVudEdlbmVyYXRpb25UZW1wbGF0ZVN0ZXBDb21wb25lbnQsXG4gICAgRWxlbWVudExpc3RDb21wb25lbnQsXG4gICAgU3RlcEJ1aWxkZXJEb2N1bWVudENvbXBvbmVudCxcbiAgICBEZXRhaWxTaWRlUGFuZWxDb21wb25lbnQsXG4gICAgRGV0YWlsRHJhd2VyQ29tcG9uZW50LFxuICAgIERldGFpbERyYXdlclRhYkNvbXBvbmVudCxcbiAgICBEZXRhaWxEcmF3ZXJUYWJDb250ZW50RGlyZWN0aXZlLFxuICAgIFRlc3RDYXNlRGV0YWlsc0NvbXBvbmVudCxcbiAgICBUZXN0Q2FzZURldGFpbHNFZGl0Q29tcG9uZW50LFxuICAgIEFwaU1vY2tpbmdDYXJkQ29tcG9uZW50LFxuICAgIFN0ZXBCdWlsZGVyR3JvdXBDb21wb25lbnQsXG4gICAgU3RlcERldGFpbHNEcmF3ZXJDb21wb25lbnQsXG4gICAgVGVtcGxhdGVWYXJpYWJsZXNGb3JtQ29tcG9uZW50LFxuICAgIEFkdmFuY2VkVmFyaWFibGVzRm9ybUNvbXBvbmVudCxcbiAgICBRdWVzdGlvbm5haXJlTGlzdENvbXBvbmVudCxcbiAgICBDaGFuZ2VIaXN0b3J5Q29tcG9uZW50LFxuICAgIFZlcnNpb25IaXN0b3J5TGlzdENvbXBvbmVudCxcbiAgICBWZXJzaW9uSGlzdG9yeUNvbXBhcmVDb21wb25lbnQsXG4gICAgVmVyc2lvbkhpc3RvcnlEZXRhaWxDb21wb25lbnQsXG4gICAgVmVyc2lvbkhpc3RvcnlSZXN0b3JlQ29uZmlybUNvbXBvbmVudCxcbiAgICBOZXdWZXJzaW9uSGlzdG9yeURldGFpbENvbXBvbmVudCxcbiAgXSxcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE92ZXJsYXlDb250YWluZXIsIHVzZUNsYXNzOiBUYWlsd2luZE92ZXJsYXlDb250YWluZXIgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBURVNUX0NBU0VfU1RFUF9DT01QT05FTlRfTUFQLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgc3RlcEdyb3VwOiBUZXN0Q2FzZVN0ZXBHcm91cENvbXBvbmVudCxcbiAgICAgICAgY29uZGl0aW9uU3RlcDogVGVzdENhc2VDb25kaXRpb25TdGVwQ29tcG9uZW50LFxuICAgICAgICBjb25kaXRpb25EZWJ1Z1N0ZXA6IENvbmRpdGlvbkRlYnVnU3RlcENvbXBvbmVudCxcbiAgICAgICAgbG9vcFN0ZXA6IFRlc3RDYXNlTG9vcFN0ZXBDb21wb25lbnQsXG4gICAgICAgIG5vcm1hbFN0ZXA6IFRlc3RDYXNlTm9ybWFsU3RlcENvbXBvbmVudCxcbiAgICAgICAgYXBpU3RlcDogVGVzdENhc2VBcGlTdGVwQ29tcG9uZW50LFxuICAgICAgICBkYXRhYmFzZVN0ZXA6IFRlc3RDYXNlRGF0YWJhc2VTdGVwQ29tcG9uZW50LFxuICAgICAgICBhaUFnZW50U3RlcDogVGVzdENhc2VBaUFnZW50U3RlcENvbXBvbmVudCxcbiAgICAgICAgYWlWZXJpZnlTdGVwOiBUZXN0Q2FzZUFpVmVyaWZ5U3RlcENvbXBvbmVudCxcbiAgICAgICAgdXBsb2FkU3RlcDogVGVzdENhc2VVcGxvYWRTdGVwQ29tcG9uZW50LFxuICAgICAgICBzY3JlZW5zaG90U3RlcDogVGVzdENhc2VTY3JlZW5zaG90U3RlcENvbXBvbmVudCxcbiAgICAgICAgc2Nyb2xsU3RlcDogVGVzdENhc2VTY3JvbGxTdGVwQ29tcG9uZW50LFxuICAgICAgICB2ZXJpZnlVcmxTdGVwOiBUZXN0Q2FzZVZlcmlmeVVybFN0ZXBDb21wb25lbnQsXG4gICAgICAgIHJlc3RvcmVTZXNzaW9uU3RlcDogVGVzdENhc2VSZXN0b3JlU2Vzc2lvblN0ZXBDb21wb25lbnQsXG4gICAgICAgIGN1c3RvbUNvZGVTdGVwOiBUZXN0Q2FzZUN1c3RvbUNvZGVTdGVwQ29tcG9uZW50LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNURVBfQ09NUE9ORU5UX01BUCxcbiAgICAgIHVzZVZhbHVlOiBuZXcgTWFwPHN0cmluZywgVHlwZTxhbnk+PihbXG4gICAgICAgIFsnYmFzaWMnLCBCYXNpY1N0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ3N0ZXAtZ3JvdXAnLCBTdGVwR3JvdXBDb21wb25lbnRdLFxuICAgICAgICBbJ2xvb3AnLCBMb29wU3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsnY29uZGl0aW9uJywgQ29uZGl0aW9uU3RlcENvbXBvbmVudF0sXG4gICAgICAgIFsnY29uZGl0aW9uLWRlYnVnJywgQ29uZGl0aW9uRGVidWdTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydmYWlsZWQnLCBGYWlsZWRTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWyd1cGRhdGVkLWZhaWxlZCcsIFVwZGF0ZWRGYWlsZWRTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydhaS1hZ2VudCcsIEFJQWdlbnRTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydhaS1hY3Rpb24nLCBBSUFjdGlvblN0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ2FwaScsIEFwaVN0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ2ZpbGUtZG93bmxvYWQnLCBGaWxlRG93bmxvYWRTdGVwQ29tcG9uZW50XSxcbiAgICAgICAgWydkb2N1bWVudC12ZXJpZmljYXRpb24nLCBEb2N1bWVudFZlcmlmaWNhdGlvblN0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ2xpdmUtZXhlY3V0aW9uJywgTGl2ZUV4ZWN1dGlvblN0ZXBDb21wb25lbnRdLFxuICAgICAgICBbJ2RiLXZlcmlmaWNhdGlvbicsIERiVmVyaWZpY2F0aW9uU3RlcENvbXBvbmVudF0sXG4gICAgICBdKVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBVaUtpdE1vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5KSB7XG4gICAgaWNvblJlZ2lzdHJ5LnJlZ2lzdGVyRm9udENsYXNzQWxpYXMoJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnLCAnbWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCcpO1xuICB9XG59XG5cbiJdfQ==
@@ -136,7 +136,7 @@ export class NewVersionHistoryDetailComponent {
136
136
  }
137
137
  }
138
138
  NewVersionHistoryDetailComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewVersionHistoryDetailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
139
- NewVersionHistoryDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewVersionHistoryDetailComponent, selector: "cqa-new-version-history-detail", inputs: { selectedVersion: "selectedVersion", selectedIsCurrent: "selectedIsCurrent", isRestoring: "isRestoring", getAuthorLabelFn: "getAuthorLabelFn", getFieldLabelFn: "getFieldLabelFn", getStepPrefixFn: "getStepPrefixFn", getCategoryLabelFn: "getCategoryLabelFn", formatDisplayValueFn: "formatDisplayValueFn", getStepActionHtmlFn: "getStepActionHtmlFn", hiddenFields: "hiddenFields", parseFieldAsTableFn: "parseFieldAsTableFn", getValueBadgeConfigFn: "getValueBadgeConfigFn", getInlineDiffFn: "getInlineDiffFn" }, outputs: { compare: "compare", restore: "restore" }, ngImport: i0, template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <!-- <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button> -->\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <ng-container *ngIf=\"visibleChangedFields(step).length; else internalOnlyChanges\">\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #internalOnlyChanges>\n <div class=\"cqa-nvh-internal-change-msg\">\n Some internal properties of this step were changed.\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <ng-container *ngIf=\"getInlineDiffFn(oldValue, newValue, field, oldStepData, newStepData) as diff; else plainBeforeAfter\">\n <!-- Inline diff view: no --before/--after color modifiers; diff HTML owns all token colors -->\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(oldValue, field, oldStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"diff.oldHtml\"></span>\n </div>\n <div class=\"cqa-nvh-value-row\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(newValue, field, newStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"diff.newHtml\"></span>\n </div>\n </div>\n </ng-container>\n\n <!-- Plain text fallback (no diff) -->\n <ng-template #plainBeforeAfter>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(oldValue, field, oldStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"formatDisplayValueFn(oldValue, field, oldStepData)\"></span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(newValue, field, newStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"formatDisplayValueFn(newValue, field, newStepData)\"></span>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-key-header\"></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\"\n [class.cqa-nvh-obj-row--changed]=\"formatPrimitiveValue(oldObj?.[key]) !== formatPrimitiveValue(newObj?.[key])\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }, { type: i3.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "date": i4.DatePipe } });
139
+ NewVersionHistoryDetailComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: NewVersionHistoryDetailComponent, selector: "cqa-new-version-history-detail", inputs: { selectedVersion: "selectedVersion", selectedIsCurrent: "selectedIsCurrent", isRestoring: "isRestoring", getAuthorLabelFn: "getAuthorLabelFn", getFieldLabelFn: "getFieldLabelFn", getStepPrefixFn: "getStepPrefixFn", getCategoryLabelFn: "getCategoryLabelFn", formatDisplayValueFn: "formatDisplayValueFn", getStepActionHtmlFn: "getStepActionHtmlFn", hiddenFields: "hiddenFields", parseFieldAsTableFn: "parseFieldAsTableFn", getValueBadgeConfigFn: "getValueBadgeConfigFn", getInlineDiffFn: "getInlineDiffFn" }, outputs: { compare: "compare", restore: "restore" }, ngImport: i0, template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <!-- <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button> -->\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <ng-container *ngIf=\"visibleChangedFields(step).length; else internalOnlyChanges\">\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #internalOnlyChanges>\n <div class=\"cqa-nvh-internal-change-msg\">\n Some internal properties of this step were changed.\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <ng-container *ngIf=\"getInlineDiffFn(oldValue, newValue, field, oldStepData, newStepData) as diff; else plainBeforeAfter\">\n <!-- Inline diff view: no --before/--after color modifiers; diff HTML owns all token colors -->\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(oldValue, field, oldStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"diff.oldHtml\"></span>\n </div>\n <div class=\"cqa-nvh-value-row\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(newValue, field, newStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"diff.newHtml\"></span>\n </div>\n </div>\n </ng-container>\n\n <!-- Plain text fallback (no diff) -->\n <ng-template #plainBeforeAfter>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(oldValue, field, oldStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"formatDisplayValueFn(oldValue, field, oldStepData)\"></span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(newValue, field, newStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"formatDisplayValueFn(newValue, field, newStepData)\"></span>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-key-header\"></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\"\n [class.cqa-nvh-obj-row--changed]=\"formatPrimitiveValue(oldObj?.[key]) !== formatPrimitiveValue(newObj?.[key])\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "loading", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }, { type: i3.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "date": i4.DatePipe } });
140
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: NewVersionHistoryDetailComponent, decorators: [{
141
141
  type: Component,
142
142
  args: [{ selector: 'cqa-new-version-history-detail', template: "<ng-container *ngIf=\"selectedVersion; else noSelection\">\n <!-- ========== Header (same as old component) ========== -->\n <div class=\"d-flex align-items-start justify-content-between cqa-nvh-detail-header\">\n <div>\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; margin-bottom: 6px;\">\n <h3 class=\"cqa-nvh-detail-version-number\">Version {{ selectedVersion.versionNumber }}</h3>\n <cqa-badge *ngIf=\"selectedIsCurrent\" label=\"Current\" size=\"small\" variant=\"info\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div class=\"cqa-nvh-detail-meta\">\n {{ getAuthorLabelFn(selectedVersion) }} \u00B7 {{ selectedVersion.createdDate | date:'MMM d, yyyy \u00B7 h:mm a' }}\n </div>\n <div *ngIf=\"selectedVersion.changeSummary\" class=\"cqa-nvh-detail-summary\">\n {{ selectedVersion.changeSummary }}\n </div>\n </div>\n <div *ngIf=\"!selectedIsCurrent\" class=\"cqa-nvh-detail-actions\">\n <!-- <cqa-button variant=\"outlined\" text=\"Compare with Current\" (clicked)=\"compare.emit()\"></cqa-button> -->\n <cqa-button variant=\"filled\" icon=\"refresh\" [text]=\"isRestoring ? 'Restoring...' : 'Restore this Version'\"\n [disabled]=\"isRestoring\" (clicked)=\"restore.emit()\"></cqa-button>\n </div>\n </div>\n\n <!-- ========== Summary bar ========== -->\n <!-- <div *ngIf=\"stepsSummary\" class=\"cqa-nvh-detail-summary-bar\">\n <span *ngIf=\"stepsSummary.added\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--added\">+{{ stepsSummary.added }} added</span>\n <span *ngIf=\"stepsSummary.modified\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--modified\">{{ stepsSummary.modified }} modified</span>\n <span *ngIf=\"stepsSummary.removed\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--removed\">{{ stepsSummary.removed }} removed</span>\n <span *ngIf=\"stepsSummary.unchanged\" class=\"cqa-nvh-summary-chip cqa-nvh-summary-chip--unchanged\">{{ stepsSummary.unchanged }} unchanged</span>\n </div> -->\n\n <!-- ========== Test Case Changes ========== -->\n <ng-container *ngIf=\"hasTestCaseChanges\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Test Case Changes</span>\n <cqa-badge [label]=\"'' + testCaseChangedFields.length\" size=\"small\" variant=\"info\"\n backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let field of testCaseChangedFields; trackBy: trackByField\" class=\"cqa-nvh-change-card\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: selectedVersion.testCase.old?.[field],\n newValue: selectedVersion.testCase.new?.[field],\n field: field,\n oldStepData: selectedVersion.testCase.old,\n newStepData: selectedVersion.testCase.new\n }\">\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Added ========== -->\n <ng-container *ngIf=\"stepsAdded.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Added</span>\n <cqa-badge [label]=\"'' + stepsAdded.length\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsAdded; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--added\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Added\" size=\"small\" backgroundColor=\"#ECFDF3\" textColor=\"#027A48\"\n borderColor=\"#A7F3D0\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Deleted ========== -->\n <ng-container *ngIf=\"stepsDeleted.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Removed</span>\n <cqa-badge [label]=\"'' + stepsDeleted.length\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsDeleted; trackBy: trackByStepId\" class=\"cqa-nvh-change-card cqa-nvh-change-card--removed\">\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge label=\"Removed\" size=\"small\" backgroundColor=\"#FEF3F2\" textColor=\"#B42318\"\n borderColor=\"#FECDCA\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Steps Updated ========== -->\n <ng-container *ngIf=\"stepsUpdated.length\">\n <div class=\"cqa-nvh-section-header\">\n <span class=\"cqa-nvh-section-label\">Steps Modified</span>\n <cqa-badge [label]=\"'' + stepsUpdated.length\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n </div>\n\n <div class=\"cqa-nvh-changes-list\">\n <div *ngFor=\"let step of stepsUpdated; trackBy: trackByStepId\" class=\"cqa-nvh-change-card\">\n <!-- Step header with category badge -->\n <div class=\"cqa-nvh-step-header\">\n <cqa-badge [label]=\"getCategoryLabelFn(step.category)\" size=\"small\" backgroundColor=\"#EDF1F3\"\n textColor=\"#636A71\" borderColor=\"#DBDEE1\"></cqa-badge>\n <span class=\"cqa-nvh-step-prefix\">{{ getStepPrefixFn(step) }}</span>\n <span class=\"cqa-nvh-step-action cqa-action-format\" [innerHTML]=\"getStepActionHtmlFn(step)\"></span>\n </div>\n\n <!-- Changed fields with before/after -->\n <ng-container *ngIf=\"visibleChangedFields(step).length; else internalOnlyChanges\">\n <div *ngFor=\"let field of visibleChangedFields(step); trackBy: trackByField\" class=\"cqa-nvh-field-diff\">\n <div class=\"cqa-nvh-change-field-label\">{{ getFieldLabelFn(field) }}</div>\n <ng-container\n *ngTemplateOutlet=\"beforeAfterBlock; context: {\n oldValue: step.old?.[field],\n newValue: step.new?.[field],\n field: field,\n oldStepData: step.old,\n newStepData: step.new\n }\">\n </ng-container>\n </div>\n </ng-container>\n <ng-template #internalOnlyChanges>\n <div class=\"cqa-nvh-internal-change-msg\">\n Some internal properties of this step were changed.\n </div>\n </ng-template>\n </div>\n </div>\n </ng-container>\n\n <!-- ========== Empty state ========== -->\n <div *ngIf=\"!hasAnyChanges\" class=\"cqa-nvh-detail-empty\">\n <cqa-empty-state title=\"No changes\" description=\"No changes recorded for this version.\"></cqa-empty-state>\n </div>\n</ng-container>\n\n<ng-template #noSelection>\n <div class=\"cqa-nvh-detail-no-selection\">\n Select a version to view details.\n </div>\n</ng-template>\n\n<!-- ===== Reusable before/after block ===== -->\n<ng-template #beforeAfterBlock let-oldValue=\"oldValue\" let-newValue=\"newValue\" let-field=\"field\" let-oldStepData=\"oldStepData\" let-newStepData=\"newStepData\">\n <!-- 1. Custom table via parseFieldAsTableFn (e.g. testDataList) -->\n <ng-container *ngIf=\"parseFieldAsTableFn(field, oldValue, oldStepData) || parseFieldAsTableFn(field, newValue, newStepData); else nativeObjectCheck\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseFieldAsTableFn(field, oldValue, oldStepData),\n newObj: parseFieldAsTableFn(field, newValue, newStepData)\n }\">\n </ng-container>\n </ng-container>\n\n <!-- 2. Native object / JSON string -->\n <ng-template #nativeObjectCheck>\n <ng-container *ngIf=\"parseObjectValue(oldValue) || parseObjectValue(newValue); else simpleValue\">\n <ng-container\n *ngTemplateOutlet=\"objTable; context: {\n oldObj: parseObjectValue(oldValue),\n newObj: parseObjectValue(newValue)\n }\">\n </ng-container>\n </ng-container>\n </ng-template>\n\n <!-- 3. Primitive fallback -->\n <ng-template #simpleValue>\n <ng-container *ngIf=\"getInlineDiffFn(oldValue, newValue, field, oldStepData, newStepData) as diff; else plainBeforeAfter\">\n <!-- Inline diff view: no --before/--after color modifiers; diff HTML owns all token colors -->\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(oldValue, field, oldStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"diff.oldHtml\"></span>\n </div>\n <div class=\"cqa-nvh-value-row\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(newValue, field, newStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"diff.newHtml\"></span>\n </div>\n </div>\n </ng-container>\n\n <!-- Plain text fallback (no diff) -->\n <ng-template #plainBeforeAfter>\n <div class=\"cqa-nvh-before-after\">\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--before\">\n <cqa-badge label=\"Before\" size=\"small\" backgroundColor=\"#FEF2F2\" textColor=\"#FB2C36\"\n borderColor=\"#FFE2E2\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(oldValue, field, oldStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"formatDisplayValueFn(oldValue, field, oldStepData)\"></span>\n </div>\n <div class=\"cqa-nvh-value-row cqa-nvh-value-row--after\">\n <cqa-badge label=\"After\" size=\"small\" backgroundColor=\"#ECFDF5\" textColor=\"#009966\"\n borderColor=\"#D0FAE5\"></cqa-badge>\n <ng-container *ngIf=\"getValueBadgeConfigFn(newValue, field, newStepData) as badge\">\n <cqa-badge [label]=\"badge.label\" size=\"small\"\n [backgroundColor]=\"badge.backgroundColor\" [textColor]=\"badge.textColor\"\n [borderColor]=\"badge.borderColor\"></cqa-badge>\n </ng-container>\n <span class=\"cqa-nvh-value-text\" [innerHTML]=\"formatDisplayValueFn(newValue, field, newStepData)\"></span>\n </div>\n </div>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<!-- ===== Shared object table ===== -->\n<ng-template #objTable let-oldObj=\"oldObj\" let-newObj=\"newObj\">\n <div class=\"cqa-nvh-obj-table\" *ngIf=\"objectKeys(oldObj, newObj).length > 0\">\n <div class=\"cqa-nvh-obj-header\">\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-key-header\"></span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--before\">Before</span>\n <span class=\"cqa-nvh-obj-col-label cqa-nvh-obj-col-label--after\">After</span>\n </div>\n <div\n *ngFor=\"let key of objectKeys(oldObj, newObj); trackBy: trackByKey\"\n class=\"cqa-nvh-obj-row\"\n [class.cqa-nvh-obj-row--changed]=\"formatPrimitiveValue(oldObj?.[key]) !== formatPrimitiveValue(newObj?.[key])\">\n <span class=\"cqa-nvh-obj-key\">{{ getFieldLabelFn(key) }}</span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--before\">\n {{ formatPrimitiveValue(oldObj?.[key]) }}\n </span>\n <span class=\"cqa-nvh-obj-val cqa-nvh-obj-val--after\">\n {{ formatPrimitiveValue(newObj?.[key]) }}\n </span>\n </div>\n </div>\n</ng-template>\n", styles: [] }]
@@ -53,7 +53,7 @@ export class VersionHistoryCompareComponent {
53
53
  }
54
54
  }
55
55
  VersionHistoryCompareComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VersionHistoryCompareComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
56
- VersionHistoryCompareComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VersionHistoryCompareComponent, selector: "cqa-version-history-compare", inputs: { compareResult: "compareResult", versions: "versions", compareFromId: "compareFromId", compareToId: "compareToId", formatValueHtmlFn: "formatValueHtmlFn", getFieldLabelFn: "getFieldLabelFn" }, outputs: { swapVersions: "swapVersions", closeComparison: "closeComparison", compareFromChange: "compareFromChange", compareToChange: "compareToChange" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"d-flex align-items-center justify-content-between cqa-vh-compare-header\">\n <div class=\"d-flex align-items-center\" style=\"gap: 10px;\">\n <span class=\"cqa-vh-compare-swap-btn\" (click)=\"swapVersions.emit()\" title=\"Swap versions\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 2L4 14M4 14L1 11M4 14L7 11M12 14L12 2M12 2L9 5M12 2L15 5\" stroke=\"#667085\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"cqa-vh-compare-title\">Version Comparison</span>\n <cqa-badge *ngIf=\"compareResult\" [label]=\"compareResult.totalDifferences + ' differences'\" size=\"small\"\n variant=\"info\" backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <cqa-button variant=\"outlined\" text=\"Close\" (clicked)=\"closeComparison.emit()\"></cqa-button>\n </div>\n\n <div class=\"d-flex align-items-center justify-content-between cqa-vh-compare-selectors\">\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; flex: 1; min-width: 0;\">\n <select class=\"cqa-vh-compare-select\" [ngModel]=\"compareFromId\" (ngModelChange)=\"compareFromChange.emit($event)\">\n <option *ngFor=\"let v of versions\" [ngValue]=\"v.id\">V{{ v.versionNumber }} \u00B7 {{ v.displayDate | date:'MMM d,\n yyyy \u00B7 h:mm a' }}</option>\n </select>\n <span class=\"cqa-vh-compare-swap-btn\" (click)=\"swapVersions.emit()\" title=\"Swap\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 5H14M14 5L11 2M14 5L11 8M14 11H2M2 11L5 8M2 11L5 14\" stroke=\"#3f43ee\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <select class=\"cqa-vh-compare-select\" [ngModel]=\"compareToId\" (ngModelChange)=\"compareToChange.emit($event)\">\n <option *ngFor=\"let v of versions\" [ngValue]=\"v.id\">V{{ v.versionNumber }} \u00B7 {{ v.displayDate | date:'MMM d,\n yyyy \u00B7 h:mm a' }}</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"!compareResult\" class=\"cqa-vh-compare-loading\">\n Loading comparison...\n </div>\n\n <ng-container *ngIf=\"compareResult\">\n <div class=\"d-flex align-items-center cqa-vh-compare-summary-badges\">\n <cqa-badge [label]=\"'+ ' + compareResult.summary.added + ' added'\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n <cqa-badge [label]=\"'~ ' + compareResult.summary.modified + ' modified'\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n <cqa-badge [label]=\"'- ' + compareResult.summary.removed + ' removed'\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n <cqa-badge [label]=\"'= ' + compareResult.summary.unchanged + ' unchanged'\" size=\"small\" backgroundColor=\"#F2F4F7\"\n textColor=\"#344054\" borderColor=\"#E4E7EC\"></cqa-badge>\n </div>\n\n <ng-container *ngIf=\"compareResult.testCaseChanges?.length || compareResult.stepChanges?.length; else noDiffs\">\n <ng-container *ngIf=\"compareResult.testCaseChanges?.length\">\n <div class=\"d-flex align-items-center cqa-vh-compare-section-header\">\n <span>Test Case Changes</span>\n <cqa-badge [label]=\"compareResult.testCaseChanges.length + ' diffs'\" size=\"small\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div *ngFor=\"let change of compareResult.testCaseChanges\" class=\"cqa-vh-compare-diff-row\">\n <div class=\"cqa-vh-compare-field-label\">{{ getFieldLabelFn(change.field) }}</div>\n <div style=\"display: flex; flex: 1; gap: 12px; min-width: 0;\">\n <div *ngIf=\"change.fromValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--removed\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.fromValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.fromValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n <div *ngIf=\"change.toValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--added\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.toValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.toValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"compareResult.stepChanges?.length\">\n <div class=\"d-flex align-items-center cqa-vh-compare-section-header\"\n [style.margin-top.px]=\"compareResult.testCaseChanges?.length ? 20 : 0\">\n <span>Step Changes</span>\n <cqa-badge [label]=\"compareResult.stepChanges.length + ' diffs'\" size=\"small\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <ng-container *ngFor=\"let stepGroup of groupedStepChanges; let sgi = index\">\n <div class=\"d-flex gap-2\">\n <!-- Step sub-group header -->\n <div class=\"cqa-vh-detail-step-group-header\" [style.margin-top.px]=\"sgi > 0 ? 14 : 4\">\n <!-- <span class=\"cqa-vh-detail-step-group-label\">{{ stepGroup.label }}</span> -->\n <cqa-badge [label]=\"stepGroup.label\" size=\"small\" backgroundColor=\"#EDF1F3\" textColor=\"#636A71\"\n borderColor=\"#DBDEE1\"></cqa-badge>\n </div>\n\n <!-- Changes within this step -->\n <div class=\"cqa-vh-compare-diff-row-container\">\n <div *ngFor=\"let change of stepGroup.changes\"\n class=\"cqa-vh-compare-diff-row cqa-vh-compare-diff-row--indented\">\n <!-- <div class=\"cqa-vh-compare-field-label\">{{ getFieldLabelFn(change.field) }}</div> -->\n <div style=\"display: flex; flex: 1; gap: 12px; min-width: 0; flex-grow:1;\">\n <div *ngIf=\"change.fromValue != null\"\n class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--removed\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.fromValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.fromValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n <div *ngIf=\"change.toValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--added\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.toValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.toValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n </div>\n </div>\n </div>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-template #noDiffs>\n <div class=\"cqa-vh-compare-empty\">\n <cqa-empty-state title=\"No differences\" description=\"No differences between these versions.\"></cqa-empty-state>\n </div>\n </ng-template>\n </ng-container>\n</div>", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }, { type: i3.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "date": i4.DatePipe } });
56
+ VersionHistoryCompareComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: VersionHistoryCompareComponent, selector: "cqa-version-history-compare", inputs: { compareResult: "compareResult", versions: "versions", compareFromId: "compareFromId", compareToId: "compareToId", formatValueHtmlFn: "formatValueHtmlFn", getFieldLabelFn: "getFieldLabelFn" }, outputs: { swapVersions: "swapVersions", closeComparison: "closeComparison", compareFromChange: "compareFromChange", compareToChange: "compareToChange" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"d-flex align-items-center justify-content-between cqa-vh-compare-header\">\n <div class=\"d-flex align-items-center\" style=\"gap: 10px;\">\n <span class=\"cqa-vh-compare-swap-btn\" (click)=\"swapVersions.emit()\" title=\"Swap versions\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 2L4 14M4 14L1 11M4 14L7 11M12 14L12 2M12 2L9 5M12 2L15 5\" stroke=\"#667085\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"cqa-vh-compare-title\">Version Comparison</span>\n <cqa-badge *ngIf=\"compareResult\" [label]=\"compareResult.totalDifferences + ' differences'\" size=\"small\"\n variant=\"info\" backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <cqa-button variant=\"outlined\" text=\"Close\" (clicked)=\"closeComparison.emit()\"></cqa-button>\n </div>\n\n <div class=\"d-flex align-items-center justify-content-between cqa-vh-compare-selectors\">\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; flex: 1; min-width: 0;\">\n <select class=\"cqa-vh-compare-select\" [ngModel]=\"compareFromId\" (ngModelChange)=\"compareFromChange.emit($event)\">\n <option *ngFor=\"let v of versions\" [ngValue]=\"v.id\">V{{ v.versionNumber }} \u00B7 {{ v.displayDate | date:'MMM d,\n yyyy \u00B7 h:mm a' }}</option>\n </select>\n <span class=\"cqa-vh-compare-swap-btn\" (click)=\"swapVersions.emit()\" title=\"Swap\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 5H14M14 5L11 2M14 5L11 8M14 11H2M2 11L5 8M2 11L5 14\" stroke=\"#3f43ee\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <select class=\"cqa-vh-compare-select\" [ngModel]=\"compareToId\" (ngModelChange)=\"compareToChange.emit($event)\">\n <option *ngFor=\"let v of versions\" [ngValue]=\"v.id\">V{{ v.versionNumber }} \u00B7 {{ v.displayDate | date:'MMM d,\n yyyy \u00B7 h:mm a' }}</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"!compareResult\" class=\"cqa-vh-compare-loading\">\n Loading comparison...\n </div>\n\n <ng-container *ngIf=\"compareResult\">\n <div class=\"d-flex align-items-center cqa-vh-compare-summary-badges\">\n <cqa-badge [label]=\"'+ ' + compareResult.summary.added + ' added'\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n <cqa-badge [label]=\"'~ ' + compareResult.summary.modified + ' modified'\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n <cqa-badge [label]=\"'- ' + compareResult.summary.removed + ' removed'\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n <cqa-badge [label]=\"'= ' + compareResult.summary.unchanged + ' unchanged'\" size=\"small\" backgroundColor=\"#F2F4F7\"\n textColor=\"#344054\" borderColor=\"#E4E7EC\"></cqa-badge>\n </div>\n\n <ng-container *ngIf=\"compareResult.testCaseChanges?.length || compareResult.stepChanges?.length; else noDiffs\">\n <ng-container *ngIf=\"compareResult.testCaseChanges?.length\">\n <div class=\"d-flex align-items-center cqa-vh-compare-section-header\">\n <span>Test Case Changes</span>\n <cqa-badge [label]=\"compareResult.testCaseChanges.length + ' diffs'\" size=\"small\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div *ngFor=\"let change of compareResult.testCaseChanges\" class=\"cqa-vh-compare-diff-row\">\n <div class=\"cqa-vh-compare-field-label\">{{ getFieldLabelFn(change.field) }}</div>\n <div style=\"display: flex; flex: 1; gap: 12px; min-width: 0;\">\n <div *ngIf=\"change.fromValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--removed\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.fromValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.fromValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n <div *ngIf=\"change.toValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--added\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.toValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.toValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"compareResult.stepChanges?.length\">\n <div class=\"d-flex align-items-center cqa-vh-compare-section-header\"\n [style.margin-top.px]=\"compareResult.testCaseChanges?.length ? 20 : 0\">\n <span>Step Changes</span>\n <cqa-badge [label]=\"compareResult.stepChanges.length + ' diffs'\" size=\"small\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <ng-container *ngFor=\"let stepGroup of groupedStepChanges; let sgi = index\">\n <div class=\"d-flex gap-2\">\n <!-- Step sub-group header -->\n <div class=\"cqa-vh-detail-step-group-header\" [style.margin-top.px]=\"sgi > 0 ? 14 : 4\">\n <!-- <span class=\"cqa-vh-detail-step-group-label\">{{ stepGroup.label }}</span> -->\n <cqa-badge [label]=\"stepGroup.label\" size=\"small\" backgroundColor=\"#EDF1F3\" textColor=\"#636A71\"\n borderColor=\"#DBDEE1\"></cqa-badge>\n </div>\n\n <!-- Changes within this step -->\n <div class=\"cqa-vh-compare-diff-row-container\">\n <div *ngFor=\"let change of stepGroup.changes\"\n class=\"cqa-vh-compare-diff-row cqa-vh-compare-diff-row--indented\">\n <!-- <div class=\"cqa-vh-compare-field-label\">{{ getFieldLabelFn(change.field) }}</div> -->\n <div style=\"display: flex; flex: 1; gap: 12px; min-width: 0; flex-grow:1;\">\n <div *ngIf=\"change.fromValue != null\"\n class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--removed\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.fromValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.fromValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n <div *ngIf=\"change.toValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--added\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.toValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.toValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n </div>\n </div>\n </div>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-template #noDiffs>\n <div class=\"cqa-vh-compare-empty\">\n <cqa-empty-state title=\"No differences\" description=\"No differences between these versions.\"></cqa-empty-state>\n </div>\n </ng-template>\n </ng-container>\n</div>", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["type", "label", "icon", "iconLibrary", "variant", "size", "backgroundColor", "textColor", "borderColor", "iconBackgroundColor", "iconColor", "iconSize", "inlineStyles", "key", "value", "keyTextColor", "valueTextColor", "isLoading", "fullWidth", "centerContent", "title"] }, { type: i2.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "loading", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }, { type: i3.EmptyStateComponent, selector: "cqa-empty-state", inputs: ["preset", "imageUrl", "title", "description", "actions"], outputs: ["actionClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }], pipes: { "date": i4.DatePipe } });
57
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: VersionHistoryCompareComponent, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'cqa-version-history-compare', template: "<div>\n <div class=\"d-flex align-items-center justify-content-between cqa-vh-compare-header\">\n <div class=\"d-flex align-items-center\" style=\"gap: 10px;\">\n <span class=\"cqa-vh-compare-swap-btn\" (click)=\"swapVersions.emit()\" title=\"Swap versions\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 2L4 14M4 14L1 11M4 14L7 11M12 14L12 2M12 2L9 5M12 2L15 5\" stroke=\"#667085\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <span class=\"cqa-vh-compare-title\">Version Comparison</span>\n <cqa-badge *ngIf=\"compareResult\" [label]=\"compareResult.totalDifferences + ' differences'\" size=\"small\"\n variant=\"info\" backgroundColor=\"#EFF4FF\" textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <cqa-button variant=\"outlined\" text=\"Close\" (clicked)=\"closeComparison.emit()\"></cqa-button>\n </div>\n\n <div class=\"d-flex align-items-center justify-content-between cqa-vh-compare-selectors\">\n <div class=\"d-flex align-items-center\" style=\"gap: 8px; flex: 1; min-width: 0;\">\n <select class=\"cqa-vh-compare-select\" [ngModel]=\"compareFromId\" (ngModelChange)=\"compareFromChange.emit($event)\">\n <option *ngFor=\"let v of versions\" [ngValue]=\"v.id\">V{{ v.versionNumber }} \u00B7 {{ v.displayDate | date:'MMM d,\n yyyy \u00B7 h:mm a' }}</option>\n </select>\n <span class=\"cqa-vh-compare-swap-btn\" (click)=\"swapVersions.emit()\" title=\"Swap\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M2 5H14M14 5L11 2M14 5L11 8M14 11H2M2 11L5 8M2 11L5 14\" stroke=\"#3f43ee\" stroke-width=\"1.5\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n <select class=\"cqa-vh-compare-select\" [ngModel]=\"compareToId\" (ngModelChange)=\"compareToChange.emit($event)\">\n <option *ngFor=\"let v of versions\" [ngValue]=\"v.id\">V{{ v.versionNumber }} \u00B7 {{ v.displayDate | date:'MMM d,\n yyyy \u00B7 h:mm a' }}</option>\n </select>\n </div>\n </div>\n\n <div *ngIf=\"!compareResult\" class=\"cqa-vh-compare-loading\">\n Loading comparison...\n </div>\n\n <ng-container *ngIf=\"compareResult\">\n <div class=\"d-flex align-items-center cqa-vh-compare-summary-badges\">\n <cqa-badge [label]=\"'+ ' + compareResult.summary.added + ' added'\" size=\"small\" backgroundColor=\"#ECFDF3\"\n textColor=\"#027A48\" borderColor=\"#A7F3D0\"></cqa-badge>\n <cqa-badge [label]=\"'~ ' + compareResult.summary.modified + ' modified'\" size=\"small\" backgroundColor=\"#FFFAEB\"\n textColor=\"#B54708\" borderColor=\"#FEDF89\"></cqa-badge>\n <cqa-badge [label]=\"'- ' + compareResult.summary.removed + ' removed'\" size=\"small\" backgroundColor=\"#FEF3F2\"\n textColor=\"#B42318\" borderColor=\"#FECDCA\"></cqa-badge>\n <cqa-badge [label]=\"'= ' + compareResult.summary.unchanged + ' unchanged'\" size=\"small\" backgroundColor=\"#F2F4F7\"\n textColor=\"#344054\" borderColor=\"#E4E7EC\"></cqa-badge>\n </div>\n\n <ng-container *ngIf=\"compareResult.testCaseChanges?.length || compareResult.stepChanges?.length; else noDiffs\">\n <ng-container *ngIf=\"compareResult.testCaseChanges?.length\">\n <div class=\"d-flex align-items-center cqa-vh-compare-section-header\">\n <span>Test Case Changes</span>\n <cqa-badge [label]=\"compareResult.testCaseChanges.length + ' diffs'\" size=\"small\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n <div *ngFor=\"let change of compareResult.testCaseChanges\" class=\"cqa-vh-compare-diff-row\">\n <div class=\"cqa-vh-compare-field-label\">{{ getFieldLabelFn(change.field) }}</div>\n <div style=\"display: flex; flex: 1; gap: 12px; min-width: 0;\">\n <div *ngIf=\"change.fromValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--removed\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.fromValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.fromValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n <div *ngIf=\"change.toValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--added\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.toValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.toValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n </div>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"compareResult.stepChanges?.length\">\n <div class=\"d-flex align-items-center cqa-vh-compare-section-header\"\n [style.margin-top.px]=\"compareResult.testCaseChanges?.length ? 20 : 0\">\n <span>Step Changes</span>\n <cqa-badge [label]=\"compareResult.stepChanges.length + ' diffs'\" size=\"small\" backgroundColor=\"#EFF4FF\"\n textColor=\"#3f43ee\" borderColor=\"#C7D7FE\"></cqa-badge>\n </div>\n\n <ng-container *ngFor=\"let stepGroup of groupedStepChanges; let sgi = index\">\n <div class=\"d-flex gap-2\">\n <!-- Step sub-group header -->\n <div class=\"cqa-vh-detail-step-group-header\" [style.margin-top.px]=\"sgi > 0 ? 14 : 4\">\n <!-- <span class=\"cqa-vh-detail-step-group-label\">{{ stepGroup.label }}</span> -->\n <cqa-badge [label]=\"stepGroup.label\" size=\"small\" backgroundColor=\"#EDF1F3\" textColor=\"#636A71\"\n borderColor=\"#DBDEE1\"></cqa-badge>\n </div>\n\n <!-- Changes within this step -->\n <div class=\"cqa-vh-compare-diff-row-container\">\n <div *ngFor=\"let change of stepGroup.changes\"\n class=\"cqa-vh-compare-diff-row cqa-vh-compare-diff-row--indented\">\n <!-- <div class=\"cqa-vh-compare-field-label\">{{ getFieldLabelFn(change.field) }}</div> -->\n <div style=\"display: flex; flex: 1; gap: 12px; min-width: 0; flex-grow:1;\">\n <div *ngIf=\"change.fromValue != null\"\n class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--removed\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.fromValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.fromValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n <div *ngIf=\"change.toValue != null\" class=\"cqa-vh-compare-diff-cell cqa-vh-compare-diff-cell--added\">\n <div class=\"cqa-vh-compare-diff-cell-text\" [innerHTML]=\"formatValueHtmlFn(change.toValue, change.field)\"></div>\n </div>\n <div *ngIf=\"change.toValue == null\" class=\"cqa-vh-compare-diff-cell-empty\"></div>\n </div>\n </div>\n </div>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-template #noDiffs>\n <div class=\"cqa-vh-compare-empty\">\n <cqa-empty-state title=\"No differences\" description=\"No differences between these versions.\"></cqa-empty-state>\n </div>\n </ng-template>\n </ng-container>\n</div>", styles: [] }]