@deeksha2309/sunbird-collection-editor 8.0.7 → 8.0.8

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 (107) hide show
  1. package/deeksha2309-sunbird-collection-editor.d.ts.map +1 -0
  2. package/esm2022/deeksha2309-sunbird-collection-editor.mjs +5 -0
  3. package/esm2022/lib/collection-editor-library.module.mjs +30 -6
  4. package/esm2022/lib/components/answer/answer.component.mjs +6 -3
  5. package/esm2022/lib/components/app-loader/app-loader.component.mjs +30 -0
  6. package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +30 -12
  7. package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +1 -1
  8. package/esm2022/lib/components/bulk-upload/bulk-upload.component.mjs +447 -0
  9. package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +30 -12
  10. package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +3 -3
  11. package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +2 -2
  12. package/esm2022/lib/components/editor/editor.component.mjs +143 -64
  13. package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +91 -9
  14. package/esm2022/lib/components/header/header.component.mjs +27 -9
  15. package/esm2022/lib/components/library/library.component.mjs +4 -4
  16. package/esm2022/lib/components/library-list/library-list.component.mjs +4 -4
  17. package/esm2022/lib/components/library-player/library-player.component.mjs +4 -4
  18. package/esm2022/lib/components/meta-form/meta-form.component.mjs +10 -18
  19. package/esm2022/lib/components/options/options.component.mjs +40 -27
  20. package/esm2022/lib/components/progress-status/progress-status.component.mjs +1 -1
  21. package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +6 -3
  22. package/esm2022/lib/components/question/question.component.mjs +185 -77
  23. package/esm2022/lib/components/question-option-sub-menu/question-option-sub-menu.component.mjs +36 -0
  24. package/esm2022/lib/components/quml-player/quml-player.component.mjs +2 -2
  25. package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +3 -3
  26. package/esm2022/lib/components/relational-metadata/relational-metadata.component.mjs +80 -0
  27. package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +3 -3
  28. package/esm2022/lib/components/slider/slider.component.mjs +46 -0
  29. package/esm2022/lib/components/template/template.component.mjs +3 -3
  30. package/esm2022/lib/components/translations/translations.component.mjs +132 -0
  31. package/esm2022/lib/directives/date-format/date-format.pipe.mjs +34 -0
  32. package/esm2022/lib/interfaces/CreationContext.mjs +2 -0
  33. package/esm2022/lib/interfaces/editor.mjs +1 -1
  34. package/esm2022/lib/interfaces/loader.mjs +2 -0
  35. package/esm2022/lib/pipes/interpolate.pipe.mjs +17 -0
  36. package/esm2022/lib/pipes/sanitize-html.pipe.mjs +6 -8
  37. package/esm2022/lib/services/bulk-job/bulk-job.service.mjs +67 -0
  38. package/esm2022/lib/services/config/category.config.json +1 -0
  39. package/esm2022/lib/services/config/editor.config.json +29 -2
  40. package/esm2022/lib/services/config/label.config.json +16 -3
  41. package/esm2022/lib/services/config/player.config.json +3 -0
  42. package/esm2022/lib/services/config/url.config.json +17 -1
  43. package/esm2022/lib/services/editor/editor.service.mjs +64 -26
  44. package/esm2022/lib/services/question/question.service.mjs +27 -35
  45. package/esm2022/lib/services/tree/tree.service.mjs +20 -5
  46. package/fesm2022/{project-sunbird-sunbird-collection-editor.mjs → deeksha2309-sunbird-collection-editor.mjs} +1779 -483
  47. package/fesm2022/deeksha2309-sunbird-collection-editor.mjs.map +1 -0
  48. package/index.d.ts +2 -2
  49. package/lib/collection-editor-library.module.d.ts +51 -43
  50. package/lib/collection-editor-library.module.d.ts.map +1 -1
  51. package/lib/components/answer/answer.component.d.ts +2 -1
  52. package/lib/components/answer/answer.component.d.ts.map +1 -1
  53. package/lib/components/app-loader/app-loader.component.d.ts +18 -0
  54. package/lib/components/app-loader/app-loader.component.d.ts.map +1 -0
  55. package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -1
  56. package/lib/components/bulk-upload/bulk-upload.component.d.ts +71 -0
  57. package/lib/components/bulk-upload/bulk-upload.component.d.ts.map +1 -0
  58. package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +1 -1
  59. package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -1
  60. package/lib/components/editor/editor.component.d.ts +11 -7
  61. package/lib/components/editor/editor.component.d.ts.map +1 -1
  62. package/lib/components/fancy-tree/fancy-tree.component.d.ts +11 -3
  63. package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -1
  64. package/lib/components/header/header.component.d.ts +6 -2
  65. package/lib/components/header/header.component.d.ts.map +1 -1
  66. package/lib/components/library/library.component.d.ts +1 -1
  67. package/lib/components/library/library.component.d.ts.map +1 -1
  68. package/lib/components/meta-form/meta-form.component.d.ts +3 -4
  69. package/lib/components/meta-form/meta-form.component.d.ts.map +1 -1
  70. package/lib/components/options/options.component.d.ts +15 -7
  71. package/lib/components/options/options.component.d.ts.map +1 -1
  72. package/lib/components/publish-checklist/publish-checklist.component.d.ts +2 -1
  73. package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -1
  74. package/lib/components/question/question.component.d.ts +21 -28
  75. package/lib/components/question/question.component.d.ts.map +1 -1
  76. package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts +27 -0
  77. package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts.map +1 -0
  78. package/lib/components/relational-metadata/relational-metadata.component.d.ts +25 -0
  79. package/lib/components/relational-metadata/relational-metadata.component.d.ts.map +1 -0
  80. package/lib/components/slider/slider.component.d.ts +25 -0
  81. package/lib/components/slider/slider.component.d.ts.map +1 -0
  82. package/lib/components/translations/translations.component.d.ts +70 -0
  83. package/lib/components/translations/translations.component.d.ts.map +1 -0
  84. package/lib/directives/date-format/date-format.pipe.d.ts +20 -0
  85. package/lib/directives/date-format/date-format.pipe.d.ts.map +1 -0
  86. package/lib/interfaces/CreationContext.d.ts +11 -0
  87. package/lib/interfaces/CreationContext.d.ts.map +1 -0
  88. package/lib/interfaces/editor.d.ts +10 -5
  89. package/lib/interfaces/editor.d.ts.map +1 -1
  90. package/lib/interfaces/loader.d.ts +11 -0
  91. package/lib/interfaces/loader.d.ts.map +1 -0
  92. package/lib/pipes/interpolate.pipe.d.ts +8 -0
  93. package/lib/pipes/interpolate.pipe.d.ts.map +1 -0
  94. package/lib/pipes/sanitize-html.pipe.d.ts +4 -4
  95. package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -1
  96. package/lib/services/bulk-job/bulk-job.service.d.ts +17 -0
  97. package/lib/services/bulk-job/bulk-job.service.d.ts.map +1 -0
  98. package/lib/services/editor/editor.service.d.ts +7 -4
  99. package/lib/services/editor/editor.service.d.ts.map +1 -1
  100. package/lib/services/question/question.service.d.ts +2 -2
  101. package/lib/services/question/question.service.d.ts.map +1 -1
  102. package/lib/services/tree/tree.service.d.ts +3 -1
  103. package/lib/services/tree/tree.service.d.ts.map +1 -1
  104. package/package.json +5 -5
  105. package/esm2022/project-sunbird-sunbird-collection-editor.mjs +0 -5
  106. package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +0 -1
  107. package/project-sunbird-sunbird-collection-editor.d.ts.map +0 -1
@@ -1,5 +1,7 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import * as _ from 'lodash-es';
3
+ import { Subject } from 'rxjs';
4
+ import { takeUntil } from 'rxjs/operators';
3
5
  import * as i0 from "@angular/core";
4
6
  import * as i1 from "../../services/editor/editor.service";
5
7
  import * as i2 from "../../services/telemetry/telemetry.service";
@@ -9,7 +11,8 @@ import * as i5 from "@angular/forms";
9
11
  import * as i6 from "@project-sunbird/ng2-semantic-ui";
10
12
  import * as i7 from "../../directives/telemetry-interact/telemetry-interact.directive";
11
13
  import * as i8 from "../dialcode/dialcode.component";
12
- import * as i9 from "../publish-checklist/publish-checklist.component";
14
+ import * as i9 from "../bulk-upload/bulk-upload.component";
15
+ import * as i10 from "../publish-checklist/publish-checklist.component";
13
16
  export class HeaderComponent {
14
17
  set requestChange(action) {
15
18
  if (action) {
@@ -21,14 +24,23 @@ export class HeaderComponent {
21
24
  this.telemetryService = telemetryService;
22
25
  this.configService = configService;
23
26
  this.toolbarEmitter = new EventEmitter();
27
+ this.bulkUploadEmitter = new EventEmitter();
24
28
  this.qualityParamEmitter = new EventEmitter();
29
+ this.unsubscribe$ = new Subject();
30
+ this.bulkUploadStatus = false;
25
31
  }
26
32
  async ngOnInit() {
33
+ this.editorService.bulkUploadStatus$.pipe(takeUntil(this.unsubscribe$)).subscribe((status) => {
34
+ if (status === 'processing') {
35
+ this.bulkUploadStatus = true;
36
+ }
37
+ else {
38
+ this.bulkUploadStatus = false;
39
+ }
40
+ });
41
+ this.objectType = _.get(this.editorService, 'editorConfig.config.objectType');
27
42
  await this.handleActionButtons();
28
43
  this.getSourcingData();
29
- this.editorService.bulkUploadStatus$.subscribe(status => {
30
- this.bulkUploadStatus = status;
31
- });
32
44
  }
33
45
  async handleActionButtons() {
34
46
  this.visibility = {};
@@ -45,9 +57,11 @@ export class HeaderComponent {
45
57
  this.visibility.sourcingRejectContent = this.editorService.editorMode === 'sourcingreview';
46
58
  this.visibility.previewContent = _.get(this.editorService, 'editorConfig.config.objectType') === 'QuestionSet';
47
59
  this.visibility.dialcode = this.editorService.editorMode === 'edit';
60
+ // tslint:disable-next-line:max-line-length
61
+ this.visibility.bulkUpload = _.get(this.editorService, 'editorConfig.config.objectType') === 'QuestionSet' && this.editorService.editorMode === 'edit';
48
62
  this.visibility.showOriginPreviewUrl = _.get(this.editorService, 'editorConfig.config.showOriginPreviewUrl');
49
63
  this.visibility.showSourcingStatus = _.get(this.editorService, 'editorConfig.config.showSourcingStatus');
50
- //this.visibility.showCorrectionComments = _.get(this.editorService, 'editorConfig.config.showCorrectionComments');
64
+ this.visibility.showCorrectionComments = _.get(this.editorService, 'editorConfig.config.showCorrectionComments');
51
65
  this.visibility.hideSubmitForReviewBtn = _.get(this.editorService, 'editorConfig.config.hideSubmitForReviewBtn') || false;
52
66
  this.visibility.addCollaborator = _.get(this.editorService, 'editorConfig.config.showAddCollaborator');
53
67
  this.visibility.showPaginationBtn = _.get(this.editorService, 'editorConfig.config.enablePagination');
@@ -84,19 +98,21 @@ export class HeaderComponent {
84
98
  }
85
99
  }
86
100
  bulkUploadListener(event) {
87
- this.toolbarEmitter.emit(event);
101
+ this.bulkUploadEmitter.emit(event);
88
102
  }
89
103
  ngOnDestroy() {
90
104
  if (this.modal && this.modal.deny) {
91
105
  this.modal.deny();
92
106
  }
107
+ this.unsubscribe$.next();
108
+ this.unsubscribe$.complete();
93
109
  }
94
110
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, deps: [{ token: i1.EditorService }, { token: i2.EditorTelemetryService }, { token: i3.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
95
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderComponent, selector: "lib-header", inputs: { pageId: "pageId", labelConfigData: "labelConfigData", buttonLoaders: "buttonLoaders", showComment: "showComment", publishchecklist: "publishchecklist", requestChange: "requestChange" }, outputs: { toolbarEmitter: "toolbarEmitter", qualityParamEmitter: "qualityParamEmitter" }, viewQueries: [{ propertyName: "FormControl", first: true, predicate: ["FormControl"], descendants: true }, { propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<!-- Blue Header -->\n<div class=\"sb-bg-color-primary\">\n <div class=\"ui container py-15\">\n <div class=\"d-flex flex-ai-center sb-color-white\">\n <button class=\"sb-btn sb-btn-primary sb-btn-xs back-btn px-0 hover-none fs-0-92 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'backContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('back','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"arrow left icon\" aria-hidden=\"true\"></i> {{configService.labelConfig?.button_labels?.back_btn_label}}\n </button>\n </div>\n </div>\n</div>\n\n<div class=\"sb-bg-lightBlue bb-1\">\n<div class=\"d-flex flex-jc-space-between flex-ai-center py-20 ui container\">\n <div>\n <div class=\"practical-header__title font-weight-bold pl-20 fs-0-92\">\n {{ labelConfigData.title }}\n </div>\n\n <div class=\"mt-8 pl-20\">\n <span class=\"sb-btn sb-btn-normal mr-10\" *ngIf=\"visibility.showSourcingStatus\" [ngClass]=\"sourcingStatusClass\">{{ sourcingStatusText }}</span>\n <!--span data-title=\"View review comments\" ((click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span-->\n <span class=\"fs-0-92\" data-title=\"View review comments\" (click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span>\n <a *ngIf=\"visibility.showOriginPreviewUrl && originPreviewUrl\" class=\"sb-color-primary mr-8 pl-10 fs-0-785 font-weight-bold\"\n href=\"{{originPreviewUrl}}\" target=\"_blank\">{{configService.labelConfig?.lbl?.viewOnOrigin}}</a>\n <label *ngIf=\"visibility.showOriginPreviewUrl && !originPreviewUrl\" class=\"sb-color-error mr-8 pl-10 fs-0-785 font-weight-bold\">\n {{configService.labelConfig?.err?.contentNotFoundonOrigin}}\n </label>\n </div>\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'collection_editor' && labelConfigData\">\n <div *ngIf=\"visibility && visibility?.addCollaborator\" [attr.data-title]=\"labelConfigData?.isAddCollaborator ? 'Add collaborator' : 'View collaborator'\" class=\"cursor-pointer sb-color-primary mr-20 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'addCollaborator'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_collaborator','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon user plus mr-0\" aria-hidden=\"true\"></i>\n </div>\n <lib-dialcode *ngIf=\"visibility && visibility?.dialcode && labelConfigData?.showDialcode === 'yes'\" class=\"d-flex flex-ai-center\"></lib-dialcode>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'pagination'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n {{labelConfigData.add_page_numbers_to_questions_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'progressStatus'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n Progress\n </button>\n <lib-bulk-upload *ngIf=\"visibility && visibility?.bulkUpload && labelConfigData?.showBulkUploadBtn\" class=\"d-flex flex-ai-center mr-10\" (bulkUploadEmitter)=\"bulkUploadListener($event)\" ></lib-bulk-upload>\n <button *ngIf=\"visibility && visibility?.previewContent && labelConfigData?.hasChildren && !bulkUploadStatus\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_collection_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_collection_btn_icon}}\"></i>\n {{ labelConfigData.preview_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.saveContent\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.saveAsDraftButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type:'saveContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save_as_draft','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.save_collection_btn_icon}}\" *ngIf=\"!buttonLoaders?.saveAsDraftButtonLoader\"></i>\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveAsDraftButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n {{labelConfigData.save_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.submitContent && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn\" class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'submitContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i> \n {{labelConfigData.submit_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.rejectContent\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i> \n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"openPublishCheckListPopup('publishContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i> \n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrections')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i> \n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApprove')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i> \n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingReject')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i> \n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'question' && labelConfigData\">\n <ng-container *ngIf=\"labelConfigData.showPreview; else editMode\">\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"visibility && visibility?.editContent\"\n (click)=\"buttonEmitter({type: 'editContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('edit','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.edit_question_btn_icon\" class=\"{{labelConfigData.edit_question_btn_icon}}\"></i>\n {{ labelConfigData.edit_question_btn_label}}\n </button>\n </ng-container>\n <ng-template #editMode>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"!labelConfigData.showPreview\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_question_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_question_btn_icon}}\"></i>\n {{ labelConfigData.preview_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'cancelContent'})\" libTelemetryInteract *ngIf=\"visibility?.saveContent\"\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.cancel_question_btn_icon\" class=\"{{labelConfigData.cancel_question_btn_icon}}\"></i>\n {{ labelConfigData.cancel_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type: 'saveContent'})\" *ngIf=\"visibility?.saveContent\"\n [ngClass]=\"!buttonLoaders?.saveButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save','click','submit', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.save_question_btn_icon && !buttonLoaders?.saveButtonLoader\" class=\"{{labelConfigData.save_question_btn_icon}}\"></i>\n {{ labelConfigData.save_question_btn_label}}\n </button>\n </ng-template>\n\n <!-- <button *ngIf=\"labelConfigData.add_translation\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'showTranslation'})\">\n <i class=\"plus circle icon\"></i>\n {{ labelConfigData.add_translation_label}}\n </button> -->\n <button *ngIf=\"visibility && visibility?.submitContent && labelConfigData?.questionContribution && !visibility.hideSubmitForReviewBtn && !visibility.showSourcingStatus\" class=\"sb-btn sb-btn-normal sb-btn-secondary\" (click)=\"buttonEmitter({type:'submitQuestion'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i>\n {{labelConfigData.submit_collection_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.rejectContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i>\n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"firstLevelPublish()\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i>\n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrectionsQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction_question','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i>\n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApproveQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingRejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n </div>\n</div>\n</div>\n\n<sui-modal *ngIf=\"showRequestChangesPopup\" [mustScroll]=\"true\" [isClosable]=\"false\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll #modal (dismissed)=\"showRequestChangesPopup = false;\">\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.addReviewComments}}\n </div>\n <form #FormControl=\"ngForm\" class=\"ui form\">\n <div class=\"sb-modal-content\">\n <div class=\"sb-field-group\">\n <label>{{configService.labelConfig?.lbl?.enterYourComments}}</label>\n <div class=\"sb-field relative\">\n\n <textarea type=\"text\" class=\"wmd-input width-100 sb-form-control\" id=\"wmd-input\" [(ngModel)]=\"rejectComment\" placeholder=\"Add comment\" name=\"rejectComment\" required maxlength=\"{{configService?.editorConfig?.rejectCommentsMaxLength}}\"></textarea>\n <label class=\"ui basic red error label pt-1 mt-5 width-100\"\n *ngIf=\"FormControl.form.controls.rejectComment?.touched && !FormControl.form.valid\">{{configService.labelConfig?.lbl?.fillComments}} </label>\n\n <!-- <textarea rows=\"4\" name=\"moretext\" class=\"sb-form-control\" placeholder=\"Type here...\"></textarea>\n <span class=\"characters-left\">1000 Characters left</span> -->\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button id=\"submitReview\" type=\"submit\" class=\"sb-btn sb-btn-normal\" [ngClass]=\"{'sb-btn-primary': FormControl.form.valid, 'sb-btn-disabled': !FormControl.form.valid}\" (click)=\"buttonEmitter({type: actionType, comment: rejectComment}); showRequestChangesPopup = false;\"\n [disabled]=\"!FormControl.form.valid\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit_review','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\"\n > {{configService.labelConfig?.button_labels?.submit_review_btn_label}} </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"modal.deny('denied')\"\n libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n </div>\n</form>\n</sui-modal>\n\n\n\n<lib-publish-checklist *ngIf=\"showPublishCollectionPopup\" [actionType]=\"actionType\" [publishchecklist]=\"publishchecklist\" \n (publishEmitter)=\"publishEmitter($event)\">\n</lib-publish-checklist>\n\n\n", styles: [".sb-disabled{background:var(--gray-0);border:.0625rem solid var(--gray-0);opacity:.45;pointer-events:none}.hover-none:hover{background:none!important}.bx-none .ui.modal{box-shadow:none!important}.overflow-modal .ui.modal{box-shadow:none}.overflow-modal .sb-tabset-segment{border:none}.sb-bg-header-blue{background:#d8e1e8}.sb-bg-lightBlue{background:var(--primary-0)!important}.bb-1{border-bottom:1px solid #d8d8d8}.flex-as-baseline{align-self:baseline!important}div[data-title]:before{position:absolute;right:30%;top:85%;height:25px;width:max-content}.sb-modal-fullscreen .modals.dimmer .ui.scrolling.modal{margin:0 auto!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.SuiRadioManager, selector: "form:not([ngForm]):not([[ngForm]]),ngForm,[ngForm]" }, { kind: "component", type: i6.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "directive", type: i7.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "component", type: i8.DialcodeComponent, selector: "lib-dialcode" }, { kind: "component", type: i9.PublishChecklistComponent, selector: "lib-publish-checklist", inputs: ["publishchecklist", "actionType"], outputs: ["publishEmitter"] }], encapsulation: i0.ViewEncapsulation.None }); }
111
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HeaderComponent, selector: "lib-header", inputs: { pageId: "pageId", labelConfigData: "labelConfigData", buttonLoaders: "buttonLoaders", showComment: "showComment", publishchecklist: "publishchecklist", requestChange: "requestChange" }, outputs: { toolbarEmitter: "toolbarEmitter", bulkUploadEmitter: "bulkUploadEmitter", qualityParamEmitter: "qualityParamEmitter" }, viewQueries: [{ propertyName: "FormControl", first: true, predicate: ["FormControl"], descendants: true }, { propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<!-- Blue Header -->\n<div class=\"sb-bg-color-primary\">\n <div class=\"ui container py-15\">\n <div class=\"d-flex flex-ai-center sb-color-white\">\n <button class=\"sb-btn sb-btn-primary sb-btn-xs back-btn px-0 hover-none fs-0-92 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'backContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('back','click','launch', telemetryService.telemetryPageId)\" aria-label=\"back\">\n <i class=\"arrow left icon\" aria-hidden=\"true\"></i> {{configService.labelConfig?.button_labels?.back_btn_label}}\n </button>\n </div>\n </div>\n</div>\n\n<div class=\"sb-bg-lightBlue bb-1\">\n<div class=\"d-flex flex-jc-space-between flex-ai-center py-20 ui container\">\n <div>\n <div class=\"practical-header__title font-weight-bold pl-20 fs-0-92\" tabindex=\"0\">\n {{ labelConfigData.title }}\n </div>\n\n <div class=\"mt-8 pl-20\">\n <span class=\"sb-btn sb-btn-normal mr-10\" *ngIf=\"visibility.showSourcingStatus\" [ngClass]=\"sourcingStatusClass\">{{ sourcingStatusText }}</span>\n <!--span data-title=\"View review comments\" ((click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span-->\n <span class=\"fs-0-92\" data-title=\"View review comments\" (click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment || visibility.showCorrectionComments\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment alternate outline sb-color-primary flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span>\n <a *ngIf=\"visibility.showOriginPreviewUrl && originPreviewUrl\" class=\"sb-color-primary mr-8 pl-10 fs-0-785 font-weight-bold\"\n href=\"{{originPreviewUrl}}\" target=\"_blank\">{{configService.labelConfig?.lbl?.viewOnOrigin}}</a>\n <label *ngIf=\"visibility.showOriginPreviewUrl && !originPreviewUrl\" class=\"sb-color-error mr-8 pl-10 fs-0-785 font-weight-bold\">\n {{configService.labelConfig?.err?.contentNotFoundonOrigin}}\n </label>\n </div>\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'collection_editor' && labelConfigData\">\n <div *ngIf=\"visibility && visibility?.addCollaborator\" [attr.data-title]=\"labelConfigData?.isAddCollaborator ? 'Add collaborator' : 'View collaborator'\" class=\"cursor-pointer sb-color-primary mr-20 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'addCollaborator'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_collaborator','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon user plus mr-0\" aria-hidden=\"true\"></i>\n </div>\n <lib-dialcode *ngIf=\"visibility && visibility?.dialcode && labelConfigData?.showDialcode === 'yes'\" class=\"d-flex flex-ai-center\"></lib-dialcode>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'pagination'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n {{labelConfigData.add_page_numbers_to_questions_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'progressStatus'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n Progress\n </button>\n <lib-bulk-upload *ngIf=\"visibility && visibility?.bulkUpload && labelConfigData?.showBulkUploadBtn\" class=\"d-flex flex-ai-center mr-10\" (bulkUploadEmitter)=\"bulkUploadListener($event)\" ></lib-bulk-upload>\n <button *ngIf=\"visibility && visibility?.previewContent && labelConfigData?.hasChildren && !bulkUploadStatus\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_collection_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_collection_btn_icon}}\"></i>\n {{ labelConfigData.preview_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.saveContent && !bulkUploadStatus\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.saveAsDraftButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type:'saveContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save_as_draft','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.save_collection_btn_icon}}\" *ngIf=\"!buttonLoaders?.saveAsDraftButtonLoader\"></i>\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveAsDraftButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n {{labelConfigData.save_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn\" class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'submitContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_for_review','click','launch', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i>\n {{labelConfigData.submit_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.rejectContent\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i>\n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"openPublishCheckListPopup('publishContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i>\n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrections')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i>\n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApprove')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingReject')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'question' && labelConfigData\">\n <ng-container *ngIf=\"labelConfigData.showPreview; else editMode\">\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"visibility && visibility?.editContent\"\n (click)=\"buttonEmitter({type: 'editContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('edit','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.edit_question_btn_icon\" class=\"{{labelConfigData.edit_question_btn_icon}}\"></i>\n {{ labelConfigData.edit_question_btn_label}}\n </button>\n </ng-container>\n <ng-template #editMode>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"!labelConfigData.showPreview\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_question_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_question_btn_icon}}\"></i>\n {{ labelConfigData.preview_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'cancelContent'})\" libTelemetryInteract *ngIf=\"visibility?.saveContent\"\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.cancel_question_btn_icon\" class=\"{{labelConfigData.cancel_question_btn_icon}}\"></i>\n {{ labelConfigData.cancel_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type: 'saveContent'})\" *ngIf=\"visibility?.saveContent\"\n [ngClass]=\"!buttonLoaders?.saveButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save','click','submit', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.save_question_btn_icon && !buttonLoaders?.saveButtonLoader\" class=\"{{labelConfigData.save_question_btn_icon}}\"></i>\n {{ labelConfigData.save_question_btn_label}}\n </button>\n </ng-template>\n\n <!-- <button *ngIf=\"labelConfigData.add_translation\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'showTranslation'})\">\n <i class=\"plus circle icon\"></i>\n {{ labelConfigData.add_translation_label}}\n </button> -->\n <button *ngIf=\"visibility && visibility?.submitContent && labelConfigData?.questionContribution && !visibility.hideSubmitForReviewBtn && !visibility.showSourcingStatus\" class=\"sb-btn sb-btn-normal sb-btn-secondary\" (click)=\"buttonEmitter({type:'submitQuestion'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i>\n {{labelConfigData.submit_collection_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.rejectContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i>\n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"firstLevelPublish()\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i>\n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrectionsQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction_question','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i>\n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApproveQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingRejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n </div>\n</div>\n</div>\n\n<sui-modal *ngIf=\"showRequestChangesPopup\" [mustScroll]=\"true\" [isClosable]=\"false\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll #modal (dismissed)=\"showRequestChangesPopup = false;\">\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.addReviewComments}}\n </div>\n <form #FormControl=\"ngForm\" class=\"ui form\">\n <div class=\"sb-modal-content\">\n <div class=\"sb-field-group\">\n <label>{{configService.labelConfig?.lbl?.enterYourComments}}</label>\n <div class=\"sb-field relative\">\n\n <textarea type=\"text\" class=\"wmd-input width-100 sb-form-control\" id=\"wmd-input\" [(ngModel)]=\"rejectComment\" placeholder=\"Add comment\" name=\"rejectComment\" required maxlength=\"{{configService?.editorConfig?.rejectCommentsMaxLength}}\"></textarea>\n <label class=\"ui basic red error label pt-1 mt-5 width-100\"\n *ngIf=\"FormControl.form.controls.rejectComment?.touched && !FormControl.form.valid\">{{configService.labelConfig?.lbl?.fillComments}} </label>\n <!-- <textarea rows=\"4\" name=\"moretext\" class=\"sb-form-control\" placeholder=\"Type here...\"></textarea>\n <span class=\"characters-left\">1000 Characters left</span> -->\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button id=\"submitReview\" type=\"submit\" class=\"sb-btn sb-btn-normal\" [ngClass]=\"{'sb-btn-primary': FormControl.form.valid, 'sb-btn-disabled': !FormControl.form.valid}\" (click)=\"buttonEmitter({type: actionType, comment: rejectComment}); showRequestChangesPopup = false;\"\n [disabled]=\"!FormControl.form.valid\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit_review','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\"\n > {{configService.labelConfig?.button_labels?.submit_review_btn_label}} </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"modal.deny('denied')\"\n libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n </div>\n</form>\n</sui-modal>\n\n\n\n<lib-publish-checklist *ngIf=\"showPublishCollectionPopup\" [actionType]=\"actionType\" [objectType]=\"objectType\" [publishchecklist]=\"publishchecklist\"\n (publishEmitter)=\"publishEmitter($event)\">\n</lib-publish-checklist>\n\n\n", styles: [".sb-disabled{background:var(--gray-0);border:.0625rem solid var(--gray-0);opacity:.45;pointer-events:none}.hover-none:hover{background:none!important}.bx-none .ui.modal{box-shadow:none!important}.overflow-modal .ui.modal{box-shadow:none}.overflow-modal .sb-tabset-segment{border:none}.sb-bg-header-blue{background:#d8e1e8}.sb-bg-lightBlue{background:var(--primary-0)!important}.bb-1{border-bottom:1px solid #d8d8d8}.flex-as-baseline{align-self:baseline!important}div[data-title]:before{position:absolute;right:30%;top:85%;height:25px;width:max-content}.sb-modal-fullscreen .modals.dimmer .ui.scrolling.modal{margin:0 auto!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.SuiRadioManager, selector: "form:not([ngForm]):not([[ngForm]]),ngForm,[ngForm]" }, { kind: "component", type: i6.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "directive", type: i7.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "component", type: i8.DialcodeComponent, selector: "lib-dialcode" }, { kind: "component", type: i9.BulkUploadComponent, selector: "lib-bulk-upload", outputs: ["bulkUploadEmitter"] }, { kind: "component", type: i10.PublishChecklistComponent, selector: "lib-publish-checklist", inputs: ["publishchecklist", "actionType", "objectType"], outputs: ["publishEmitter"] }], encapsulation: i0.ViewEncapsulation.None }); }
96
112
  }
97
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HeaderComponent, decorators: [{
98
114
  type: Component,
99
- args: [{ selector: 'lib-header', encapsulation: ViewEncapsulation.None, template: "<!-- Blue Header -->\n<div class=\"sb-bg-color-primary\">\n <div class=\"ui container py-15\">\n <div class=\"d-flex flex-ai-center sb-color-white\">\n <button class=\"sb-btn sb-btn-primary sb-btn-xs back-btn px-0 hover-none fs-0-92 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'backContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('back','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"arrow left icon\" aria-hidden=\"true\"></i> {{configService.labelConfig?.button_labels?.back_btn_label}}\n </button>\n </div>\n </div>\n</div>\n\n<div class=\"sb-bg-lightBlue bb-1\">\n<div class=\"d-flex flex-jc-space-between flex-ai-center py-20 ui container\">\n <div>\n <div class=\"practical-header__title font-weight-bold pl-20 fs-0-92\">\n {{ labelConfigData.title }}\n </div>\n\n <div class=\"mt-8 pl-20\">\n <span class=\"sb-btn sb-btn-normal mr-10\" *ngIf=\"visibility.showSourcingStatus\" [ngClass]=\"sourcingStatusClass\">{{ sourcingStatusText }}</span>\n <!--span data-title=\"View review comments\" ((click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span-->\n <span class=\"fs-0-92\" data-title=\"View review comments\" (click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span>\n <a *ngIf=\"visibility.showOriginPreviewUrl && originPreviewUrl\" class=\"sb-color-primary mr-8 pl-10 fs-0-785 font-weight-bold\"\n href=\"{{originPreviewUrl}}\" target=\"_blank\">{{configService.labelConfig?.lbl?.viewOnOrigin}}</a>\n <label *ngIf=\"visibility.showOriginPreviewUrl && !originPreviewUrl\" class=\"sb-color-error mr-8 pl-10 fs-0-785 font-weight-bold\">\n {{configService.labelConfig?.err?.contentNotFoundonOrigin}}\n </label>\n </div>\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'collection_editor' && labelConfigData\">\n <div *ngIf=\"visibility && visibility?.addCollaborator\" [attr.data-title]=\"labelConfigData?.isAddCollaborator ? 'Add collaborator' : 'View collaborator'\" class=\"cursor-pointer sb-color-primary mr-20 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'addCollaborator'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_collaborator','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon user plus mr-0\" aria-hidden=\"true\"></i>\n </div>\n <lib-dialcode *ngIf=\"visibility && visibility?.dialcode && labelConfigData?.showDialcode === 'yes'\" class=\"d-flex flex-ai-center\"></lib-dialcode>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'pagination'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n {{labelConfigData.add_page_numbers_to_questions_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'progressStatus'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n Progress\n </button>\n <lib-bulk-upload *ngIf=\"visibility && visibility?.bulkUpload && labelConfigData?.showBulkUploadBtn\" class=\"d-flex flex-ai-center mr-10\" (bulkUploadEmitter)=\"bulkUploadListener($event)\" ></lib-bulk-upload>\n <button *ngIf=\"visibility && visibility?.previewContent && labelConfigData?.hasChildren && !bulkUploadStatus\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_collection_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_collection_btn_icon}}\"></i>\n {{ labelConfigData.preview_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.saveContent\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.saveAsDraftButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type:'saveContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save_as_draft','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.save_collection_btn_icon}}\" *ngIf=\"!buttonLoaders?.saveAsDraftButtonLoader\"></i>\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveAsDraftButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n {{labelConfigData.save_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.submitContent && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn\" class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'submitContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i> \n {{labelConfigData.submit_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.rejectContent\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i> \n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"openPublishCheckListPopup('publishContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i> \n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrections')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i> \n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApprove')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i> \n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingReject')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i> \n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'question' && labelConfigData\">\n <ng-container *ngIf=\"labelConfigData.showPreview; else editMode\">\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"visibility && visibility?.editContent\"\n (click)=\"buttonEmitter({type: 'editContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('edit','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.edit_question_btn_icon\" class=\"{{labelConfigData.edit_question_btn_icon}}\"></i>\n {{ labelConfigData.edit_question_btn_label}}\n </button>\n </ng-container>\n <ng-template #editMode>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"!labelConfigData.showPreview\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_question_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_question_btn_icon}}\"></i>\n {{ labelConfigData.preview_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'cancelContent'})\" libTelemetryInteract *ngIf=\"visibility?.saveContent\"\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.cancel_question_btn_icon\" class=\"{{labelConfigData.cancel_question_btn_icon}}\"></i>\n {{ labelConfigData.cancel_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type: 'saveContent'})\" *ngIf=\"visibility?.saveContent\"\n [ngClass]=\"!buttonLoaders?.saveButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save','click','submit', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.save_question_btn_icon && !buttonLoaders?.saveButtonLoader\" class=\"{{labelConfigData.save_question_btn_icon}}\"></i>\n {{ labelConfigData.save_question_btn_label}}\n </button>\n </ng-template>\n\n <!-- <button *ngIf=\"labelConfigData.add_translation\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'showTranslation'})\">\n <i class=\"plus circle icon\"></i>\n {{ labelConfigData.add_translation_label}}\n </button> -->\n <button *ngIf=\"visibility && visibility?.submitContent && labelConfigData?.questionContribution && !visibility.hideSubmitForReviewBtn && !visibility.showSourcingStatus\" class=\"sb-btn sb-btn-normal sb-btn-secondary\" (click)=\"buttonEmitter({type:'submitQuestion'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i>\n {{labelConfigData.submit_collection_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.rejectContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i>\n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"firstLevelPublish()\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i>\n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrectionsQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction_question','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i>\n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApproveQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingRejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n </div>\n</div>\n</div>\n\n<sui-modal *ngIf=\"showRequestChangesPopup\" [mustScroll]=\"true\" [isClosable]=\"false\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll #modal (dismissed)=\"showRequestChangesPopup = false;\">\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.addReviewComments}}\n </div>\n <form #FormControl=\"ngForm\" class=\"ui form\">\n <div class=\"sb-modal-content\">\n <div class=\"sb-field-group\">\n <label>{{configService.labelConfig?.lbl?.enterYourComments}}</label>\n <div class=\"sb-field relative\">\n\n <textarea type=\"text\" class=\"wmd-input width-100 sb-form-control\" id=\"wmd-input\" [(ngModel)]=\"rejectComment\" placeholder=\"Add comment\" name=\"rejectComment\" required maxlength=\"{{configService?.editorConfig?.rejectCommentsMaxLength}}\"></textarea>\n <label class=\"ui basic red error label pt-1 mt-5 width-100\"\n *ngIf=\"FormControl.form.controls.rejectComment?.touched && !FormControl.form.valid\">{{configService.labelConfig?.lbl?.fillComments}} </label>\n\n <!-- <textarea rows=\"4\" name=\"moretext\" class=\"sb-form-control\" placeholder=\"Type here...\"></textarea>\n <span class=\"characters-left\">1000 Characters left</span> -->\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button id=\"submitReview\" type=\"submit\" class=\"sb-btn sb-btn-normal\" [ngClass]=\"{'sb-btn-primary': FormControl.form.valid, 'sb-btn-disabled': !FormControl.form.valid}\" (click)=\"buttonEmitter({type: actionType, comment: rejectComment}); showRequestChangesPopup = false;\"\n [disabled]=\"!FormControl.form.valid\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit_review','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\"\n > {{configService.labelConfig?.button_labels?.submit_review_btn_label}} </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"modal.deny('denied')\"\n libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n </div>\n</form>\n</sui-modal>\n\n\n\n<lib-publish-checklist *ngIf=\"showPublishCollectionPopup\" [actionType]=\"actionType\" [publishchecklist]=\"publishchecklist\" \n (publishEmitter)=\"publishEmitter($event)\">\n</lib-publish-checklist>\n\n\n", styles: [".sb-disabled{background:var(--gray-0);border:.0625rem solid var(--gray-0);opacity:.45;pointer-events:none}.hover-none:hover{background:none!important}.bx-none .ui.modal{box-shadow:none!important}.overflow-modal .ui.modal{box-shadow:none}.overflow-modal .sb-tabset-segment{border:none}.sb-bg-header-blue{background:#d8e1e8}.sb-bg-lightBlue{background:var(--primary-0)!important}.bb-1{border-bottom:1px solid #d8d8d8}.flex-as-baseline{align-self:baseline!important}div[data-title]:before{position:absolute;right:30%;top:85%;height:25px;width:max-content}.sb-modal-fullscreen .modals.dimmer .ui.scrolling.modal{margin:0 auto!important}\n"] }]
115
+ args: [{ selector: 'lib-header', encapsulation: ViewEncapsulation.None, template: "<!-- Blue Header -->\n<div class=\"sb-bg-color-primary\">\n <div class=\"ui container py-15\">\n <div class=\"d-flex flex-ai-center sb-color-white\">\n <button class=\"sb-btn sb-btn-primary sb-btn-xs back-btn px-0 hover-none fs-0-92 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'backContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('back','click','launch', telemetryService.telemetryPageId)\" aria-label=\"back\">\n <i class=\"arrow left icon\" aria-hidden=\"true\"></i> {{configService.labelConfig?.button_labels?.back_btn_label}}\n </button>\n </div>\n </div>\n</div>\n\n<div class=\"sb-bg-lightBlue bb-1\">\n<div class=\"d-flex flex-jc-space-between flex-ai-center py-20 ui container\">\n <div>\n <div class=\"practical-header__title font-weight-bold pl-20 fs-0-92\" tabindex=\"0\">\n {{ labelConfigData.title }}\n </div>\n\n <div class=\"mt-8 pl-20\">\n <span class=\"sb-btn sb-btn-normal mr-10\" *ngIf=\"visibility.showSourcingStatus\" [ngClass]=\"sourcingStatusClass\">{{ sourcingStatusText }}</span>\n <!--span data-title=\"View review comments\" ((click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span-->\n <span class=\"fs-0-92\" data-title=\"View review comments\" (click)=\"buttonEmitter({type: 'showReviewcomments'})\" *ngIf=\"buttonLoaders?.showReviewComment || visibility.showCorrectionComments\" libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('view_comments','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon comment alternate outline sb-color-primary flex-as-baseline mr-05\" aria-hidden=\"true\"></i>{{configService.labelConfig?.lbl?.viewComments}}\n </span>\n <a *ngIf=\"visibility.showOriginPreviewUrl && originPreviewUrl\" class=\"sb-color-primary mr-8 pl-10 fs-0-785 font-weight-bold\"\n href=\"{{originPreviewUrl}}\" target=\"_blank\">{{configService.labelConfig?.lbl?.viewOnOrigin}}</a>\n <label *ngIf=\"visibility.showOriginPreviewUrl && !originPreviewUrl\" class=\"sb-color-error mr-8 pl-10 fs-0-785 font-weight-bold\">\n {{configService.labelConfig?.err?.contentNotFoundonOrigin}}\n </label>\n </div>\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'collection_editor' && labelConfigData\">\n <div *ngIf=\"visibility && visibility?.addCollaborator\" [attr.data-title]=\"labelConfigData?.isAddCollaborator ? 'Add collaborator' : 'View collaborator'\" class=\"cursor-pointer sb-color-primary mr-20 font-weight-bold\"\n (click)=\"buttonEmitter({type: 'addCollaborator'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_collaborator','click','launch', telemetryService.telemetryPageId)\">\n <i class=\"icon user plus mr-0\" aria-hidden=\"true\"></i>\n </div>\n <lib-dialcode *ngIf=\"visibility && visibility?.dialcode && labelConfigData?.showDialcode === 'yes'\" class=\"d-flex flex-ai-center\"></lib-dialcode>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'pagination'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n {{labelConfigData.add_page_numbers_to_questions_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn && visibility.showPaginationBtn\"\n class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'progressStatus'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <em class=\"{{labelConfigData.submit_collection_btn_icon}}\"></em>\n Progress\n </button>\n <lib-bulk-upload *ngIf=\"visibility && visibility?.bulkUpload && labelConfigData?.showBulkUploadBtn\" class=\"d-flex flex-ai-center mr-10\" (bulkUploadEmitter)=\"bulkUploadListener($event)\" ></lib-bulk-upload>\n <button *ngIf=\"visibility && visibility?.previewContent && labelConfigData?.hasChildren && !bulkUploadStatus\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_collection_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_collection_btn_icon}}\"></i>\n {{ labelConfigData.preview_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.saveContent && !bulkUploadStatus\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n [ngClass]=\"!buttonLoaders?.saveAsDraftButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type:'saveContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save_as_draft','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.save_collection_btn_icon}}\" *ngIf=\"!buttonLoaders?.saveAsDraftButtonLoader\"></i>\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveAsDraftButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n {{labelConfigData.save_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.submitContent && !bulkUploadStatus && labelConfigData?.hasChildren && !visibility.hideSubmitForReviewBtn\" class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type:'submitContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_for_review','click','launch', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i>\n {{labelConfigData.submit_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.rejectContent\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i>\n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"openPublishCheckListPopup('publishContent')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i>\n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrections')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i>\n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApprove')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingReject')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n\n </div>\n <div class=\"d-flex flex-ai-center\" *ngIf=\"pageId === 'question' && labelConfigData\">\n <ng-container *ngIf=\"labelConfigData.showPreview; else editMode\">\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"visibility && visibility?.editContent\"\n (click)=\"buttonEmitter({type: 'editContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('edit','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.edit_question_btn_icon\" class=\"{{labelConfigData.edit_question_btn_icon}}\"></i>\n {{ labelConfigData.edit_question_btn_label}}\n </button>\n </ng-container>\n <ng-template #editMode>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\" *ngIf=\"!labelConfigData.showPreview\"\n [ngClass]=\"!buttonLoaders?.previewButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n (click)=\"buttonEmitter({type: 'previewContent'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('preview','click','launch', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.previewButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.preview_question_btn_icon && !buttonLoaders?.previewButtonLoader\" class=\"{{labelConfigData.preview_question_btn_icon}}\"></i>\n {{ labelConfigData.preview_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'cancelContent'})\" libTelemetryInteract *ngIf=\"visibility?.saveContent\"\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','launch', telemetryService.telemetryPageId)\">\n <i *ngIf=\"labelConfigData.cancel_question_btn_icon\" class=\"{{labelConfigData.cancel_question_btn_icon}}\"></i>\n {{ labelConfigData.cancel_question_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-primary mr-10\" (click)=\"buttonEmitter({type: 'saveContent'})\" *ngIf=\"visibility?.saveContent\"\n [ngClass]=\"!buttonLoaders?.saveButtonLoader ? '': 'sb-btn-loading-spinner sb-btn-outline-disabled'\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('save','click','submit', telemetryService.telemetryPageId)\">\n <div class=\"sb-loading-spinner\" *ngIf=\"buttonLoaders?.saveButtonLoader\" role=\"status\" aria-hidden=\"true\"></div>\n <i *ngIf=\"labelConfigData.save_question_btn_icon && !buttonLoaders?.saveButtonLoader\" class=\"{{labelConfigData.save_question_btn_icon}}\"></i>\n {{ labelConfigData.save_question_btn_label}}\n </button>\n </ng-template>\n\n <!-- <button *ngIf=\"labelConfigData.add_translation\" class=\"sb-btn sb-btn-normal sb-btn-outline-primary mr-10\"\n (click)=\"buttonEmitter({type: 'showTranslation'})\">\n <i class=\"plus circle icon\"></i>\n {{ labelConfigData.add_translation_label}}\n </button> -->\n <button *ngIf=\"visibility && visibility?.submitContent && labelConfigData?.questionContribution && !visibility.hideSubmitForReviewBtn && !visibility.showSourcingStatus\" class=\"sb-btn sb-btn-normal sb-btn-secondary\" (click)=\"buttonEmitter({type:'submitQuestion'})\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', telemetryService.telemetryPageId)\"\n >\n <i class=\"{{labelConfigData.submit_collection_btn_icon}}\"></i>\n {{labelConfigData.submit_collection_btn_label}}\n </button>\n <button *ngIf=\"visibility && visibility?.rejectContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-outline-error sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('rejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.reject_collection_btn_icon}}\"></i>\n {{labelConfigData.reject_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.publishContent && labelConfigData?.questionContribution\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple\" (click)=\"firstLevelPublish()\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('publish','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.publish_collection_btn_icon}}\"></i>\n {{labelConfigData.publish_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sendForCorrectionsContent\" class=\"sb-btn sb-btn-outline-primary sb-btn-normal ripple mr-10\" (click)=\"openRequestChangePopup('sendForCorrectionsQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('send_back_for_correction_question','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.send_back_for_correction_collection_btn_icon}}\"></i>\n {{labelConfigData.send_back_for_correction_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingApproveContent\" class=\"sb-btn sb-btn-secondary sb-btn-normal ripple mr-10\" (click)=\"openPublishCheckListPopup('sourcingApproveQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('approve','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_approve_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_approve_collection_btn_label}}\n </button>\n\n <button *ngIf=\"visibility && visibility?.sourcingRejectContent\" class=\"sb-btn sb-btn-error sb-btn-normal ripple\" (click)=\"openRequestChangePopup('sourcingRejectQuestion')\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('reject','click','submit', telemetryService.telemetryPageId)\">\n <i class=\"{{labelConfigData.sourcing_reject_collection_btn_icon}}\"></i>\n {{labelConfigData.sourcing_reject_collection_btn_label}}\n </button>\n </div>\n</div>\n</div>\n\n<sui-modal *ngIf=\"showRequestChangesPopup\" [mustScroll]=\"true\" [isClosable]=\"false\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll #modal (dismissed)=\"showRequestChangesPopup = false;\">\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.addReviewComments}}\n </div>\n <form #FormControl=\"ngForm\" class=\"ui form\">\n <div class=\"sb-modal-content\">\n <div class=\"sb-field-group\">\n <label>{{configService.labelConfig?.lbl?.enterYourComments}}</label>\n <div class=\"sb-field relative\">\n\n <textarea type=\"text\" class=\"wmd-input width-100 sb-form-control\" id=\"wmd-input\" [(ngModel)]=\"rejectComment\" placeholder=\"Add comment\" name=\"rejectComment\" required maxlength=\"{{configService?.editorConfig?.rejectCommentsMaxLength}}\"></textarea>\n <label class=\"ui basic red error label pt-1 mt-5 width-100\"\n *ngIf=\"FormControl.form.controls.rejectComment?.touched && !FormControl.form.valid\">{{configService.labelConfig?.lbl?.fillComments}} </label>\n <!-- <textarea rows=\"4\" name=\"moretext\" class=\"sb-form-control\" placeholder=\"Type here...\"></textarea>\n <span class=\"characters-left\">1000 Characters left</span> -->\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button id=\"submitReview\" type=\"submit\" class=\"sb-btn sb-btn-normal\" [ngClass]=\"{'sb-btn-primary': FormControl.form.valid, 'sb-btn-disabled': !FormControl.form.valid}\" (click)=\"buttonEmitter({type: actionType, comment: rejectComment}); showRequestChangesPopup = false;\"\n [disabled]=\"!FormControl.form.valid\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit_review','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\"\n > {{configService.labelConfig?.button_labels?.submit_review_btn_label}} </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"modal.deny('denied')\"\n libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('cancel','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n </div>\n</form>\n</sui-modal>\n\n\n\n<lib-publish-checklist *ngIf=\"showPublishCollectionPopup\" [actionType]=\"actionType\" [objectType]=\"objectType\" [publishchecklist]=\"publishchecklist\"\n (publishEmitter)=\"publishEmitter($event)\">\n</lib-publish-checklist>\n\n\n", styles: [".sb-disabled{background:var(--gray-0);border:.0625rem solid var(--gray-0);opacity:.45;pointer-events:none}.hover-none:hover{background:none!important}.bx-none .ui.modal{box-shadow:none!important}.overflow-modal .ui.modal{box-shadow:none}.overflow-modal .sb-tabset-segment{border:none}.sb-bg-header-blue{background:#d8e1e8}.sb-bg-lightBlue{background:var(--primary-0)!important}.bb-1{border-bottom:1px solid #d8d8d8}.flex-as-baseline{align-self:baseline!important}div[data-title]:before{position:absolute;right:30%;top:85%;height:25px;width:max-content}.sb-modal-fullscreen .modals.dimmer .ui.scrolling.modal{margin:0 auto!important}\n"] }]
100
116
  }], ctorParameters: function () { return [{ type: i1.EditorService }, { type: i2.EditorTelemetryService }, { type: i3.ConfigService }]; }, propDecorators: { pageId: [{
101
117
  type: Input
102
118
  }], labelConfigData: [{
@@ -111,6 +127,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
111
127
  type: Input
112
128
  }], toolbarEmitter: [{
113
129
  type: Output
130
+ }], bulkUploadEmitter: [{
131
+ type: Output
114
132
  }], FormControl: [{
115
133
  type: ViewChild,
116
134
  args: ['FormControl']
@@ -120,4 +138,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
120
138
  }], qualityParamEmitter: [{
121
139
  type: Output
122
140
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJeEgsT0FBTyxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUM7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyxlQUFlO0lBTTFCLElBQWEsYUFBYSxDQUFDLE1BQWM7UUFDdkMsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckM7SUFDSCxDQUFDO0lBaUJELFlBQW9CLGFBQTRCLEVBQ3ZDLGdCQUF3QyxFQUN4QyxhQUE0QjtRQUZqQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUN2QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBQ3hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbEIzQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHekMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQWVmLENBQUM7SUFFMUMsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixD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LENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOytHQTFHVSxlQUFlO21HQUFmLGVBQWUsOGdCQ2I1Qix5c2tCQXNPQTs7NEZEek5hLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJO3FLQUc1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNPLGFBQWE7c0JBQXpCLEtBQUs7Z0JBS0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDbUIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNHLEtBQUs7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTztnQkFDUixtQkFBbUI7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3IvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbGVtZXRyeS90ZWxlbWV0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICBASW5wdXQoKSBwYWdlSWQ6IGFueTtcbiAgQElucHV0KCkgbGFiZWxDb25maWdEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIGJ1dHRvbkxvYWRlcnM6IGFueTtcbiAgQElucHV0KCkgc2hvd0NvbW1lbnQ6IGFueTtcbiAgQElucHV0KCkgcHVibGlzaGNoZWNrbGlzdDogYW55O1xuICBASW5wdXQoKSBzZXQgcmVxdWVzdENoYW5nZShhY3Rpb246IHN0cmluZykge1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIHRoaXMub3BlblJlcXVlc3RDaGFuZ2VQb3B1cChhY3Rpb24pO1xuICAgIH1cbiAgfVxuICBAT3V0cHV0KCkgdG9vbGJhckVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZCgnRm9ybUNvbnRyb2wnKSBGb3JtQ29udHJvbDogTmdGb3JtO1xuICBAVmlld0NoaWxkKCdtb2RhbCcpIHB1YmxpYyBtb2RhbDtcbiAgQE91dHB1dCgpIHF1YWxpdHlQYXJhbUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIHZpc2liaWxpdHk6IGFueTtcbiAgcHVibGljIHNob3dSZXZpZXdNb2RhbDogYm9vbGVhbjtcbiAgcHVibGljIHNob3dQdWJsaXNoQ29sbGVjdGlvblBvcHVwOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1JlcXVlc3RDaGFuZ2VzUG9wdXA6IGJvb2xlYW47XG4gIHB1YmxpYyByZWplY3RDb21tZW50OiBzdHJpbmc7XG4gIHB1YmxpYyBhY3Rpb25UeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBzb3VyY2luZ1N0YXR1c1RleHQ6IHN0cmluZztcbiAgcHVibGljIHNvdXJjaW5nU3RhdHVzQ2xhc3M6IHN0cmluZztcbiAgcHVibGljIG9yaWdpblByZXZpZXdVcmw6IHN0cmluZztcbiAgcHVibGljIGNvcnJlY3Rpb25Db21tZW50czogc3RyaW5nO1xuICBwdWJsaWMgYnVsa1VwbG9hZFN0YXR1czogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICBwdWJsaWMgdGVsZW1ldHJ5U2VydmljZTogRWRpdG9yVGVsZW1ldHJ5U2VydmljZSxcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkgeyB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVBY3Rpb25CdXR0b25zKClcbiAgICB0aGlzLmdldFNvdXJjaW5nRGF0YSgpXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmJ1bGtVcGxvYWRTdGF0dXMkLnN1YnNjcmliZShzdGF0dXMgPT4ge1xuICAgICAgdGhpcy5idWxrVXBsb2FkU3RhdHVzID0gc3RhdHVzO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlQWN0aW9uQnV0dG9ucygpIHtcbiAgICB0aGlzLnZpc2liaWxpdHkgPSB7fTtcbiAgICAvLyBFZGl0IGJ1dHRvbiB2aXNpYmlsaXR5XG4gICAgLy8gMS4gaWYgdGhlIGVkaXRvciBpbiBlZGl0IG1vZGVcbiAgICAvLyAyLiBpZiBSZXZpZXdNb2RpZmljYXRpb25BbGxvd2VkIGlzIGFsbG93ZWQgYW5kIHJldmlldy9vcmctcmV2aWV3ZXIgaXMgdmlld2luZyBhbmQgdGhlIHF1ZXN0aW9uIGlzIG5vdCBhZGRlZCBmcm9tIGxpYnJhcnkgdGhlIHF1ZXN0aW9uXG4gICAgdGhpcy52aXNpYmlsaXR5LmVkaXRDb250ZW50ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdlZGl0JyB8fCAoKHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnb3JncmV2aWV3JyB8fCB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ3NvdXJjaW5ncmV2aWV3JykgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmlzUmV2aWV3TW9kaWZpY2F0aW9uQWxsb3dlZCAmJiAhXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbnRleHQuaXNBZGRlZEZyb21MaWJyYXJ5JywgZmFsc2UpKTtcbiAgICB0aGlzLnZpc2liaWxpdHkuc2F2ZUNvbnRlbnQgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ2VkaXQnIHx8ICgodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdvcmdyZXZpZXcnIHx8IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnc291cmNpbmdyZXZpZXcnKSAmJiB0aGlzLmVkaXRvclNlcnZpY2UuaXNSZXZpZXdNb2RpZmljYXRpb25BbGxvd2VkKTtcbiAgICB0aGlzLnZpc2liaWxpdHkuc3VibWl0Q29udGVudCA9IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnZWRpdCc7XG4gICAgdGhpcy52aXNpYmlsaXR5LnJlamVjdENvbnRlbnQgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ3JldmlldycgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdvcmdyZXZpZXcnO1xuICAgIHRoaXMudmlzaWJpbGl0eS5wdWJsaXNoQ29udGVudCA9IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAncmV2aWV3JyB8fCB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ29yZ3Jldmlldyc7XG4gICAgdGhpcy52aXNpYmlsaXR5LnNlbmRGb3JDb3JyZWN0aW9uc0NvbnRlbnQgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ3NvdXJjaW5ncmV2aWV3JyAmJiAhXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbnRleHQuaXNBZGRlZEZyb21MaWJyYXJ5JywgZmFsc2UpO1xuICAgIHRoaXMudmlzaWJpbGl0eS5zb3VyY2luZ0FwcHJvdmVDb250ZW50ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdzb3VyY2luZ3Jldmlldyc7XG4gICAgdGhpcy52aXNpYmlsaXR5LnNvdXJjaW5nUmVqZWN0Q29udGVudCA9IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnc291cmNpbmdyZXZpZXcnO1xuICAgIHRoaXMudmlzaWJpbGl0eS5wcmV2aWV3Q29udGVudCA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb25maWcub2JqZWN0VHlwZScpID09PSAnUXVlc3Rpb25TZXQnO1xuICAgIHRoaXMudmlzaWJpbGl0eS5kaWFsY29kZSA9IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnZWRpdCc7XG4gICAgdGhpcy52aXNpYmlsaXR5LnNob3dPcmlnaW5QcmV2aWV3VXJsID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbmZpZy5zaG93T3JpZ2luUHJldmlld1VybCcpO1xuICAgIHRoaXMudmlzaWJpbGl0eS5zaG93U291cmNpbmdTdGF0dXMgPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLnNob3dTb3VyY2luZ1N0YXR1cycpO1xuICAgIC8vdGhpcy52aXNpYmlsaXR5LnNob3dDb3JyZWN0aW9uQ29tbWVudHMgPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLnNob3dDb3JyZWN0aW9uQ29tbWVudHMnKTtcbiAgICB0aGlzLnZpc2liaWxpdHkuaGlkZVN1Ym1pdEZvclJldmlld0J0biA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb25maWcuaGlkZVN1Ym1pdEZvclJldmlld0J0bicpIHx8IGZhbHNlO1xuICAgIHRoaXMudmlzaWJpbGl0eS5hZGRDb2xsYWJvcmF0b3IgPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLnNob3dBZGRDb2xsYWJvcmF0b3InKTtcbiAgICB0aGlzLnZpc2liaWxpdHkuc2hvd1BhZ2luYXRpb25CdG4gPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLmVuYWJsZVBhZ2luYXRpb24nKTtcbiAgfVxuXG4gIGdldFNvdXJjaW5nRGF0YSgpIHtcbiAgICB0aGlzLnNvdXJjaW5nU3RhdHVzVGV4dCA9ICh0aGlzLnZpc2liaWxpdHkuc2hvd1NvdXJjaW5nU3RhdHVzKSA/IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb250ZXh0LnNvdXJjaW5nUmVzb3VyY2VTdGF0dXMnKSA6ICcnO1xuICAgIHRoaXMuc291cmNpbmdTdGF0dXNDbGFzcyA9ICh0aGlzLnZpc2liaWxpdHkuc2hvd1NvdXJjaW5nU3RhdHVzKSA/IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb250ZXh0LnNvdXJjaW5nUmVzb3VyY2VTdGF0dXNDbGFzcycpIDogJyc7XG4gICAgdGhpcy5vcmlnaW5QcmV2aWV3VXJsID0gKHRoaXMudmlzaWJpbGl0eS5zaG93T3JpZ2luUHJldmlld1VybCkgPyBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29udGV4dC5vcmlnaW5QcmV2aWV3VXJsJykgOiAnJztcbiAgICB0aGlzLmNvcnJlY3Rpb25Db21tZW50cyA9ICh0aGlzLnZpc2liaWxpdHkuc2hvd0NvcnJlY3Rpb25Db21tZW50cykgPyBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29udGV4dC5jb3JyZWN0aW9uQ29tbWVudHMnKSA6ICcnO1xuICB9XG5cbiAgb3BlblJlcXVlc3RDaGFuZ2VQb3B1cChhY3Rpb246IHN0cmluZykge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9IGFjdGlvbjtcbiAgICB0aGlzLnNob3dSZXF1ZXN0Q2hhbmdlc1BvcHVwID0gdHJ1ZTtcbiAgfVxuXG4gIGJ1dHRvbkVtaXR0ZXIoYWN0aW9uKSB7XG4gICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KHsgYnV0dG9uOiBhY3Rpb24udHlwZSwgLi4uKGFjdGlvbi5jb21tZW50ICYmIHsgY29tbWVudDogdGhpcy5yZWplY3RDb21tZW50IH0pIH0pO1xuICB9XG5cbiAgb3BlblB1Ymxpc2hDaGVja0xpc3RQb3B1cChhY3Rpb24pIHtcbiAgICB0aGlzLmFjdGlvblR5cGUgPSBhY3Rpb247XG4gICAgdGhpcy5zaG93UHVibGlzaENvbGxlY3Rpb25Qb3B1cCA9IHRydWU7XG4gIH1cblxuICBmaXJzdExldmVsUHVibGlzaCgpIHtcbiAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmlzUmV2aWV3ZXJRdWFsaXR5Q2hlY2tFbmFibGVkKSB7XG4gICAgICB0aGlzLnRvb2xiYXJFbWl0dGVyLmVtaXQoe2J1dHRvbjogJ3NhdmVRdWFsaXR5UGFyYW1ldGVycyd9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5idXR0b25FbWl0dGVyKHt0eXBlOiAncHVibGlzaFF1ZXN0aW9uJ30pO1xuICAgIH1cbiAgfVxuXG4gIHB1Ymxpc2hFbWl0dGVyKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93UHVibGlzaENvbGxlY3Rpb25Qb3B1cCA9IGZhbHNlO1xuICAgIGlmIChldmVudC5idXR0b24gPT09ICdwdWJsaXNoQ29udGVudCcgfHwgZXZlbnQuYnV0dG9uID09PSAncHVibGlzaFF1ZXN0aW9uJyB8fCBldmVudC5idXR0b24gPT09ICdzb3VyY2luZ0FwcHJvdmUnIHx8IGV2ZW50LmJ1dHRvbiA9PT0gJ3NvdXJjaW5nQXBwcm92ZVF1ZXN0aW9uJykge1xuICAgICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBidWxrVXBsb2FkTGlzdGVuZXIoZXZlbnQpIHtcbiAgICB0aGlzLnRvb2xiYXJFbWl0dGVyLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubW9kYWwgJiYgdGhpcy5tb2RhbC5kZW55KSB7XG4gICAgICB0aGlzLm1vZGFsLmRlbnkoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS0gQmx1ZSBIZWFkZXIgLS0+XG48ZGl2IGNsYXNzPVwic2ItYmctY29sb3ItcHJpbWFyeVwiPlxuICA8ZGl2IGNsYXNzPVwidWkgY29udGFpbmVyIHB5LTE1XCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWFpLWNlbnRlciBzYi1jb2xvci13aGl0ZVwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tcHJpbWFyeSBzYi1idG4teHMgYmFjay1idG4gcHgtMCBob3Zlci1ub25lIGZzLTAtOTIgZm9udC13ZWlnaHQtYm9sZFwiXG4gICAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ2JhY2tDb250ZW50J30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnYmFjaycsJ2NsaWNrJywnbGF1bmNoJywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXJyb3cgbGVmdCBpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LmJhY2tfYnRuX2xhYmVsfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2ItYmctbGlnaHRCbHVlIGJiLTFcIj5cbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1qYy1zcGFjZS1iZXR3ZWVuIGZsZXgtYWktY2VudGVyIHB5LTIwIHVpIGNvbnRhaW5lclwiPlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwcmFjdGljYWwtaGVhZGVyX190aXRsZSBmb250LXdlaWdodC1ib2xkIHBsLTIwIGZzLTAtOTJcIj5cbiAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS50aXRsZSB9fVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTggcGwtMjBcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgbXItMTBcIiAqbmdJZj1cInZpc2liaWxpdHkuc2hvd1NvdXJjaW5nU3RhdHVzXCIgW25nQ2xhc3NdPVwic291cmNpbmdTdGF0dXNDbGFzc1wiPnt7IHNvdXJjaW5nU3RhdHVzVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwhLS1zcGFuIGRhdGEtdGl0bGU9XCJWaWV3IHJldmlldyBjb21tZW50c1wiICgoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3Nob3dSZXZpZXdjb21tZW50cyd9KVwiICpuZ0lmPVwiYnV0dG9uTG9hZGVycz8uc2hvd1Jldmlld0NvbW1lbnRcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdCBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3ZpZXdfY29tbWVudHMnLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gY29tbWVudCBmbGV4LWFzLWJhc2VsaW5lIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy52aWV3Q29tbWVudHN9fVxuICAgICAgPC9zcGFuLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTAtOTJcIiBkYXRhLXRpdGxlPVwiVmlldyByZXZpZXcgY29tbWVudHNcIiAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3Nob3dSZXZpZXdjb21tZW50cyd9KVwiICpuZ0lmPVwiYnV0dG9uTG9hZGVycz8uc2hvd1Jldmlld0NvbW1lbnRcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdCBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3ZpZXdfY29tbWVudHMnLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gY29tbWVudCBmbGV4LWFzLWJhc2VsaW5lIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy52aWV3Q29tbWVudHN9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGEgKm5nSWY9XCJ2aXNpYmlsaXR5LnNob3dPcmlnaW5QcmV2aWV3VXJsICYmIG9yaWdpblByZXZpZXdVcmxcIiBjbGFzcz1cInNiLWNvbG9yLXByaW1hcnkgbXItOCBwbC0xMCBmcy0wLTc4NSBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgIGhyZWY9XCJ7e29yaWdpblByZXZpZXdVcmx9fVwiIHRhcmdldD1cIl9ibGFua1wiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy52aWV3T25PcmlnaW59fTwvYT5cbiAgICAgIDxsYWJlbCAqbmdJZj1cInZpc2liaWxpdHkuc2hvd09yaWdpblByZXZpZXdVcmwgJiYgIW9yaWdpblByZXZpZXdVcmxcIiBjbGFzcz1cInNiLWNvbG9yLWVycm9yIG1yLTggcGwtMTAgZnMtMC03ODUgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmVycj8uY29udGVudE5vdEZvdW5kb25PcmlnaW59fVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1haS1jZW50ZXJcIiAqbmdJZj1cInBhZ2VJZCA9PT0gJ2NvbGxlY3Rpb25fZWRpdG9yJyAmJiBsYWJlbENvbmZpZ0RhdGFcIj5cbiAgICA8ZGl2ICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5hZGRDb2xsYWJvcmF0b3JcIiBbYXR0ci5kYXRhLXRpdGxlXT1cImxhYmVsQ29uZmlnRGF0YT8uaXNBZGRDb2xsYWJvcmF0b3IgPyAnQWRkIGNvbGxhYm9yYXRvcicgOiAnVmlldyBjb2xsYWJvcmF0b3InXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBzYi1jb2xvci1wcmltYXJ5IG1yLTIwIGZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOiAnYWRkQ29sbGFib3JhdG9yJ30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2FkZF9jb2xsYWJvcmF0b3InLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIHVzZXIgcGx1cyBtci0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvZGl2PlxuICAgIDxsaWItZGlhbGNvZGUgKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LmRpYWxjb2RlICYmIGxhYmVsQ29uZmlnRGF0YT8uc2hvd0RpYWxjb2RlID09PSAneWVzJ1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtYWktY2VudGVyXCI+PC9saWItZGlhbGNvZGU+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc3VibWl0Q29udGVudCAmJiAhYnVsa1VwbG9hZFN0YXR1cyAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICF2aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG4gJiYgdmlzaWJpbGl0eS5zaG93UGFnaW5hdGlvbkJ0blwiXG4gICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tcHJpbWFyeSBtci0xMFwiIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOidwYWdpbmF0aW9uJ30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3N1Ym1pdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCJcbiAgICA+XG4gICAgICA8ZW0gY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zdWJtaXRfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9lbT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLmFkZF9wYWdlX251bWJlcnNfdG9fcXVlc3Rpb25zX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc3VibWl0Q29udGVudCAmJiAhYnVsa1VwbG9hZFN0YXR1cyAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICF2aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG4gJiYgdmlzaWJpbGl0eS5zaG93UGFnaW5hdGlvbkJ0blwiXG4gICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tcHJpbWFyeSBtci0xMFwiIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOidwcm9ncmVzc1N0YXR1cyd9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzdWJtaXQnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiXG4gICAgPlxuICAgICAgPGVtIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc3VibWl0X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvZW0+XG4gICAgICBQcm9ncmVzc1xuICAgIDwvYnV0dG9uPlxuICAgIDxsaWItYnVsay11cGxvYWQgKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LmJ1bGtVcGxvYWQgJiYgbGFiZWxDb25maWdEYXRhPy5zaG93QnVsa1VwbG9hZEJ0blwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtYWktY2VudGVyIG1yLTEwXCIgKGJ1bGtVcGxvYWRFbWl0dGVyKT1cImJ1bGtVcGxvYWRMaXN0ZW5lcigkZXZlbnQpXCIgPjwvbGliLWJ1bGstdXBsb2FkPlxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnByZXZpZXdDb250ZW50ICAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICFidWxrVXBsb2FkU3RhdHVzXCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tb3V0bGluZS1wcmltYXJ5IG1yLTEwXCJcbiAgICAgIFtuZ0NsYXNzXT1cIiFidXR0b25Mb2FkZXJzPy5wcmV2aWV3QnV0dG9uTG9hZGVyID8gJyc6ICdzYi1idG4tbG9hZGluZy1zcGlubmVyIHNiLWJ0bi1vdXRsaW5lLWRpc2FibGVkJ1wiXG4gICAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3ByZXZpZXdDb250ZW50J30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgncHJldmlldycsJ2NsaWNrJywnbGF1bmNoJywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItbG9hZGluZy1zcGlubmVyXCIgKm5nSWY9XCJidXR0b25Mb2FkZXJzPy5wcmV2aWV3QnV0dG9uTG9hZGVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgPGkgKm5nSWY9XCJsYWJlbENvbmZpZ0RhdGEucHJldmlld19jb2xsZWN0aW9uX2J0bl9pY29uICYmICFidXR0b25Mb2FkZXJzPy5wcmV2aWV3QnV0dG9uTG9hZGVyXCIgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5wcmV2aWV3X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5wcmV2aWV3X2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnNhdmVDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tb3V0bGluZS1wcmltYXJ5IG1yLTEwXCJcbiAgICBbbmdDbGFzc109XCIhYnV0dG9uTG9hZGVycz8uc2F2ZUFzRHJhZnRCdXR0b25Mb2FkZXIgPyAnJzogJ3NiLWJ0bi1sb2FkaW5nLXNwaW5uZXIgc2ItYnRuLW91dGxpbmUtZGlzYWJsZWQnXCJcbiAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTonc2F2ZUNvbnRlbnQnfSlcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnc2F2ZV9hc19kcmFmdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cInt7bGFiZWxDb25maWdEYXRhLnNhdmVfY29sbGVjdGlvbl9idG5faWNvbn19XCIgKm5nSWY9XCIhYnV0dG9uTG9hZGVycz8uc2F2ZUFzRHJhZnRCdXR0b25Mb2FkZXJcIj48L2k+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItbG9hZGluZy1zcGlubmVyXCIgKm5nSWY9XCJidXR0b25Mb2FkZXJzPy5zYXZlQXNEcmFmdEJ1dHRvbkxvYWRlclwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNhdmVfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc3VibWl0Q29udGVudCAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICF2aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG5cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1wcmltYXJ5IG1yLTEwXCIgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6J3N1Ym1pdENvbnRlbnQnfSlcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnc3VibWl0JywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc3VibWl0X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT4gXG4gICAgICB7e2xhYmVsQ29uZmlnRGF0YS5zdWJtaXRfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8ucmVqZWN0Q29udGVudFwiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1vdXRsaW5lLWVycm9yIHNiLWJ0bi1ub3JtYWwgcmlwcGxlIG1yLTEwXCIgKGNsaWNrKT1cIm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoJ3JlamVjdENvbnRlbnQnKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdyZWplY3QnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5yZWplY3RfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPiBcbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnJlamVjdF9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5wdWJsaXNoQ29udGVudFwiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1zZWNvbmRhcnkgc2ItYnRuLW5vcm1hbCByaXBwbGVcIiAoY2xpY2spPVwib3BlblB1Ymxpc2hDaGVja0xpc3RQb3B1cCgncHVibGlzaENvbnRlbnQnKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdwdWJsaXNoJywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEucHVibGlzaF9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+IFxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEucHVibGlzaF9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5zZW5kRm9yQ29ycmVjdGlvbnNDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUmVxdWVzdENoYW5nZVBvcHVwKCdzZW5kRm9yQ29ycmVjdGlvbnMnKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzZW5kX2JhY2tfZm9yX2NvcnJlY3Rpb24nLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zZW5kX2JhY2tfZm9yX2NvcnJlY3Rpb25fY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPiBcbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNlbmRfYmFja19mb3JfY29ycmVjdGlvbl9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5zb3VyY2luZ0FwcHJvdmVDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLXNlY29uZGFyeSBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUHVibGlzaENoZWNrTGlzdFBvcHVwKCdzb3VyY2luZ0FwcHJvdmUnKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdhcHByb3ZlJywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc291cmNpbmdfYXBwcm92ZV9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+IFxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEuc291cmNpbmdfYXBwcm92ZV9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5zb3VyY2luZ1JlamVjdENvbnRlbnRcIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tZXJyb3Igc2ItYnRuLW5vcm1hbCByaXBwbGVcIiAoY2xpY2spPVwib3BlblJlcXVlc3RDaGFuZ2VQb3B1cCgnc291cmNpbmdSZWplY3QnKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdyZWplY3QnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zb3VyY2luZ19yZWplY3RfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPiBcbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNvdXJjaW5nX3JlamVjdF9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1haS1jZW50ZXJcIiAqbmdJZj1cInBhZ2VJZCA9PT0gJ3F1ZXN0aW9uJyAmJiBsYWJlbENvbmZpZ0RhdGFcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxDb25maWdEYXRhLnNob3dQcmV2aWV3OyBlbHNlIGVkaXRNb2RlXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xMFwiICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5lZGl0Q29udGVudFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOiAnZWRpdENvbnRlbnQnfSlcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2VkaXQnLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8aSAqbmdJZj1cImxhYmVsQ29uZmlnRGF0YS5lZGl0X3F1ZXN0aW9uX2J0bl9pY29uXCIgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5lZGl0X3F1ZXN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5lZGl0X3F1ZXN0aW9uX2J0bl9sYWJlbH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2VkaXRNb2RlPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1vdXRsaW5lLXByaW1hcnkgbXItMTBcIiAqbmdJZj1cIiFsYWJlbENvbmZpZ0RhdGEuc2hvd1ByZXZpZXdcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIhYnV0dG9uTG9hZGVycz8ucHJldmlld0J1dHRvbkxvYWRlciA/ICcnOiAnc2ItYnRuLWxvYWRpbmctc3Bpbm5lciBzYi1idG4tb3V0bGluZS1kaXNhYmxlZCdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3ByZXZpZXdDb250ZW50J30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgICAgICAgICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdwcmV2aWV3JywnY2xpY2snLCdsYXVuY2gnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiLWxvYWRpbmctc3Bpbm5lclwiICpuZ0lmPVwiYnV0dG9uTG9hZGVycz8ucHJldmlld0J1dHRvbkxvYWRlclwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgPGkgKm5nSWY9XCJsYWJlbENvbmZpZ0RhdGEucHJldmlld19xdWVzdGlvbl9idG5faWNvbiAmJiAhYnV0dG9uTG9hZGVycz8ucHJldmlld0J1dHRvbkxvYWRlclwiIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEucHJldmlld19xdWVzdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAgICB7eyBsYWJlbENvbmZpZ0RhdGEucHJldmlld19xdWVzdGlvbl9idG5fbGFiZWx9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOiAnY2FuY2VsQ29udGVudCd9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0ICpuZ0lmPVwidmlzaWJpbGl0eT8uc2F2ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2NhbmNlbCcsJ2NsaWNrJywnbGF1bmNoJywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICAgIDxpICpuZ0lmPVwibGFiZWxDb25maWdEYXRhLmNhbmNlbF9xdWVzdGlvbl9idG5faWNvblwiIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuY2FuY2VsX3F1ZXN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5jYW5jZWxfcXVlc3Rpb25fYnRuX2xhYmVsfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1wcmltYXJ5IG1yLTEwXCIgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6ICdzYXZlQ29udGVudCd9KVwiICpuZ0lmPVwidmlzaWJpbGl0eT8uc2F2ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIhYnV0dG9uTG9hZGVycz8uc2F2ZUJ1dHRvbkxvYWRlciA/ICcnOiAnc2ItYnRuLWxvYWRpbmctc3Bpbm5lciBzYi1idG4tb3V0bGluZS1kaXNhYmxlZCdcIlxuICAgICAgICAgICAgICBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3NhdmUnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItbG9hZGluZy1zcGlubmVyXCIgKm5nSWY9XCJidXR0b25Mb2FkZXJzPy5zYXZlQnV0dG9uTG9hZGVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICA8aSAqbmdJZj1cImxhYmVsQ29uZmlnRGF0YS5zYXZlX3F1ZXN0aW9uX2J0bl9pY29uICYmICFidXR0b25Mb2FkZXJzPy5zYXZlQnV0dG9uTG9hZGVyXCIgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zYXZlX3F1ZXN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5zYXZlX3F1ZXN0aW9uX2J0bl9sYWJlbH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwibGFiZWxDb25maWdEYXRhLmFkZF90cmFuc2xhdGlvblwiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xMFwiXG4gICAgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6ICdzaG93VHJhbnNsYXRpb24nfSlcIj5cbiAgICA8aSBjbGFzcz1cInBsdXMgY2lyY2xlIGljb25cIj48L2k+XG4gICAge3sgbGFiZWxDb25maWdEYXRhLmFkZF90cmFuc2xhdGlvbl9sYWJlbH19XG4gICAgPC9idXR0b24+IC0tPlxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnN1Ym1pdENvbnRlbnQgJiYgbGFiZWxDb25maWdEYXRhPy5xdWVzdGlvbkNvbnRyaWJ1dGlvbiAmJiAhdmlzaWJpbGl0eS5oaWRlU3VibWl0Rm9yUmV2aWV3QnRuICYmICF2aXNpYmlsaXR5LnNob3dTb3VyY2luZ1N0YXR1c1wiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOidzdWJtaXRRdWVzdGlvbid9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzdWJtaXQnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zdWJtaXRfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEuc3VibWl0X2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5yZWplY3RDb250ZW50ICYmIGxhYmVsQ29uZmlnRGF0YT8ucXVlc3Rpb25Db250cmlidXRpb25cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tb3V0bGluZS1lcnJvciBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUmVxdWVzdENoYW5nZVBvcHVwKCdyZWplY3RRdWVzdGlvbicpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3JlamVjdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICA8aSBjbGFzcz1cInt7bGFiZWxDb25maWdEYXRhLnJlamVjdF9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICB7e2xhYmVsQ29uZmlnRGF0YS5yZWplY3RfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8ucHVibGlzaENvbnRlbnQgJiYgbGFiZWxDb25maWdEYXRhPy5xdWVzdGlvbkNvbnRyaWJ1dGlvblwiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1zZWNvbmRhcnkgc2ItYnRuLW5vcm1hbCByaXBwbGVcIiAoY2xpY2spPVwiZmlyc3RMZXZlbFB1Ymxpc2goKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdwdWJsaXNoJywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEucHVibGlzaF9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICB7e2xhYmVsQ29uZmlnRGF0YS5wdWJsaXNoX2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnNlbmRGb3JDb3JyZWN0aW9uc0NvbnRlbnRcIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tb3V0bGluZS1wcmltYXJ5IHNiLWJ0bi1ub3JtYWwgcmlwcGxlIG1yLTEwXCIgKGNsaWNrKT1cIm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoJ3NlbmRGb3JDb3JyZWN0aW9uc1F1ZXN0aW9uJylcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnc2VuZF9iYWNrX2Zvcl9jb3JyZWN0aW9uX3F1ZXN0aW9uJywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc2VuZF9iYWNrX2Zvcl9jb3JyZWN0aW9uX2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNlbmRfYmFja19mb3JfY29ycmVjdGlvbl9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5zb3VyY2luZ0FwcHJvdmVDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLXNlY29uZGFyeSBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUHVibGlzaENoZWNrTGlzdFBvcHVwKCdzb3VyY2luZ0FwcHJvdmVRdWVzdGlvbicpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2FwcHJvdmUnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zb3VyY2luZ19hcHByb3ZlX2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNvdXJjaW5nX2FwcHJvdmVfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc291cmNpbmdSZWplY3RDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLWVycm9yIHNiLWJ0bi1ub3JtYWwgcmlwcGxlXCIgKGNsaWNrKT1cIm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoJ3NvdXJjaW5nUmVqZWN0UXVlc3Rpb24nKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdyZWplY3QnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zb3VyY2luZ19yZWplY3RfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEuc291cmNpbmdfcmVqZWN0X2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwvZGl2PlxuXG48c3VpLW1vZGFsICpuZ0lmPVwic2hvd1JlcXVlc3RDaGFuZ2VzUG9wdXBcIiBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgW2lzQ2xvc2FibGVdPVwiZmFsc2VcIiBbdHJhbnNpdGlvbkR1cmF0aW9uXT1cIjBcIlxuICBbc2l6ZV09XCInbm9ybWFsJ1wiIGNsYXNzPVwic2ItbW9kYWwgYngtbm9uZSBvdmVyZmxvdy1tb2RhbFwiIGFwcEJvZHlTY3JvbGwgI21vZGFsIChkaXNtaXNzZWQpPVwic2hvd1JlcXVlc3RDaGFuZ2VzUG9wdXAgPSBmYWxzZTtcIj5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWhlYWRlclwiPlxuICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFkZFJldmlld0NvbW1lbnRzfX1cbiAgPC9kaXY+XG4gIDxmb3JtICNGb3JtQ29udHJvbD1cIm5nRm9ybVwiIGNsYXNzPVwidWkgZm9ybVwiPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiLWZpZWxkLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5lbnRlcllvdXJDb21tZW50c319PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZmllbGQgcmVsYXRpdmVcIj5cblxuICAgICAgICAgICAgICA8dGV4dGFyZWEgdHlwZT1cInRleHRcIiBjbGFzcz1cIndtZC1pbnB1dCB3aWR0aC0xMDAgc2ItZm9ybS1jb250cm9sXCIgaWQ9XCJ3bWQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInJlamVjdENvbW1lbnRcIiBwbGFjZWhvbGRlcj1cIkFkZCBjb21tZW50XCIgbmFtZT1cInJlamVjdENvbW1lbnRcIiByZXF1aXJlZCBtYXhsZW5ndGg9XCJ7e2NvbmZpZ1NlcnZpY2U/LmVkaXRvckNvbmZpZz8ucmVqZWN0Q29tbWVudHNNYXhMZW5ndGh9fVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInVpIGJhc2ljIHJlZCBlcnJvciBsYWJlbCBwdC0xIG10LTUgd2lkdGgtMTAwXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiRm9ybUNvbnRyb2wuZm9ybS5jb250cm9scy5yZWplY3RDb21tZW50Py50b3VjaGVkICYmICFGb3JtQ29udHJvbC5mb3JtLnZhbGlkXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmZpbGxDb21tZW50c319IDwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgPCEtLSA8dGV4dGFyZWEgcm93cz1cIjRcIiBuYW1lPVwibW9yZXRleHRcIiBjbGFzcz1cInNiLWZvcm0tY29udHJvbFwiIHBsYWNlaG9sZGVyPVwiVHlwZSBoZXJlLi4uXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGFyYWN0ZXJzLWxlZnRcIj4xMDAwIENoYXJhY3RlcnMgbGVmdDwvc3Bhbj4gLS0+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1hY3Rpb25zXCI+XG4gICAgPGJ1dHRvbiBpZD1cInN1Ym1pdFJldmlld1wiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsXCIgW25nQ2xhc3NdPVwieydzYi1idG4tcHJpbWFyeSc6IEZvcm1Db250cm9sLmZvcm0udmFsaWQsICdzYi1idG4tZGlzYWJsZWQnOiAhRm9ybUNvbnRyb2wuZm9ybS52YWxpZH1cIiAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogYWN0aW9uVHlwZSwgY29tbWVudDogcmVqZWN0Q29tbWVudH0pOyBzaG93UmVxdWVzdENoYW5nZXNQb3B1cCA9IGZhbHNlO1wiXG4gICAgW2Rpc2FibGVkXT1cIiFGb3JtQ29udHJvbC5mb3JtLnZhbGlkXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3N1Ym1pdF9yZXZpZXcnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLCB7a2V5OiAnZGlhbG9nX2lkJywgdmFsdWU6ICdhZGRfcmV2aWV3X2NvbW1lbnRzJ30pXCJcbiAgICA+IHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uc3VibWl0X3Jldmlld19idG5fbGFiZWx9fSA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kZW55KCdkZW5pZWQnKVwiXG4gICAgbGliVGVsZW1ldHJ5SW50ZXJhY3QgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdjYW5jZWwnLCdjbGljaycsJ2NhbmNlbCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLCAge2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnYWRkX3Jldmlld19jb21tZW50cyd9KVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uY2FuY2VsX2J0bl9sYWJlbH19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuPC9zdWktbW9kYWw+XG5cblxuXG48bGliLXB1Ymxpc2gtY2hlY2tsaXN0ICpuZ0lmPVwic2hvd1B1Ymxpc2hDb2xsZWN0aW9uUG9wdXBcIiBbYWN0aW9uVHlwZV09XCJhY3Rpb25UeXBlXCIgW3B1Ymxpc2hjaGVja2xpc3RdPVwicHVibGlzaGNoZWNrbGlzdFwiIFxuIChwdWJsaXNoRW1pdHRlcik9XCJwdWJsaXNoRW1pdHRlcigkZXZlbnQpXCI+XG48L2xpYi1wdWJsaXNoLWNoZWNrbGlzdD5cblxuXG4iXX0=
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJeEgsT0FBTyxLQUFLLENBQUMsTUFBTSxXQUFXLENBQUM7QUFFL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7OztBQVEzQyxNQUFNLE9BQU8sZUFBZTtJQU0xQixJQUFhLGFBQWEsQ0FBQyxNQUFjO1FBQ3ZDLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQW9CRCxZQUFvQixhQUE0QixFQUN2QyxnQkFBd0MsRUFDeEMsYUFBNEI7UUFGakIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCM0IsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHNUMsd0JBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQVlqRCxpQkFB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M2tCQXFPQTs7NEZEdE5hLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsWUFBWSxpQkFHUCxpQkFBaUIsQ0FBQyxJQUFJO3FLQUc1QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNPLGFBQWE7c0JBQXpCLEtBQUs7Z0JBS0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ21CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDRyxLQUFLO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBQ1IsbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZWxlbWV0cnkvdGVsZW1ldHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcbiAgQElucHV0KCkgcGFnZUlkOiBhbnk7XG4gIEBJbnB1dCgpIGxhYmVsQ29uZmlnRGF0YTogYW55O1xuICBASW5wdXQoKSBidXR0b25Mb2FkZXJzOiBhbnk7XG4gIEBJbnB1dCgpIHNob3dDb21tZW50OiBhbnk7XG4gIEBJbnB1dCgpIHB1Ymxpc2hjaGVja2xpc3Q6IGFueTtcbiAgQElucHV0KCkgc2V0IHJlcXVlc3RDaGFuZ2UoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoYWN0aW9uKSB7XG4gICAgICB0aGlzLm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoYWN0aW9uKTtcbiAgICB9XG4gIH1cbiAgQE91dHB1dCgpIHRvb2xiYXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBidWxrVXBsb2FkRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdGb3JtQ29udHJvbCcpIEZvcm1Db250cm9sOiBOZ0Zvcm07XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgcHVibGljIG1vZGFsO1xuICBAT3V0cHV0KCkgcXVhbGl0eVBhcmFtRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgdmlzaWJpbGl0eTogYW55O1xuICBwdWJsaWMgc2hvd1Jldmlld01vZGFsOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1B1Ymxpc2hDb2xsZWN0aW9uUG9wdXA6IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93UmVxdWVzdENoYW5nZXNQb3B1cDogYm9vbGVhbjtcbiAgcHVibGljIHJlamVjdENvbW1lbnQ6IHN0cmluZztcbiAgcHVibGljIGFjdGlvblR5cGU6IHN0cmluZztcbiAgcHVibGljIG9iamVjdFR5cGU6IHN0cmluZztcbiAgcHVibGljIHNvdXJjaW5nU3RhdHVzVGV4dDogc3RyaW5nO1xuICBwdWJsaWMgc291cmNpbmdTdGF0dXNDbGFzczogc3RyaW5nO1xuICBwdWJsaWMgb3JpZ2luUHJldmlld1VybDogc3RyaW5nO1xuICBwdWJsaWMgY29ycmVjdGlvbkNvbW1lbnRzOiBzdHJpbmc7XG4gIHB1YmxpYyB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgYnVsa1VwbG9hZFN0YXR1cyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSxcbiAgICBwdWJsaWMgdGVsZW1ldHJ5U2VydmljZTogRWRpdG9yVGVsZW1ldHJ5U2VydmljZSxcbiAgICBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkgeyB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmJ1bGtVcGxvYWRTdGF0dXMkLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcbiAgICAgIGlmIChzdGF0dXMgPT09ICdwcm9jZXNzaW5nJykge1xuICAgICAgICB0aGlzLmJ1bGtVcGxvYWRTdGF0dXMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idWxrVXBsb2FkU3RhdHVzID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5vYmplY3RUeXBlID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlJyk7XG4gICAgYXdhaXQgdGhpcy5oYW5kbGVBY3Rpb25CdXR0b25zKCk7XG4gICAgdGhpcy5nZXRTb3VyY2luZ0RhdGEoKTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZUFjdGlvbkJ1dHRvbnMoKSB7XG4gICAgdGhpcy52aXNpYmlsaXR5ID0ge307XG4gICAgLy8gRWRpdCBidXR0b24gdmlzaWJpbGl0eVxuICAgIC8vIDEuIGlmIHRoZSBlZGl0b3IgaW4gZWRpdCBtb2RlXG4gICAgLy8gMi4gaWYgUmV2aWV3TW9kaWZpY2F0aW9uQWxsb3dlZCBpcyBhbGxvd2VkIGFuZCByZXZpZXcvb3JnLXJldmlld2VyIGlzIHZpZXdpbmcgYW5kIHRoZSBxdWVzdGlvbiBpcyBub3QgYWRkZWQgZnJvbSBsaWJyYXJ5IHRoZSBxdWVzdGlvblxuICAgIHRoaXMudmlzaWJpbGl0eS5lZGl0Q29udGVudCA9IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnZWRpdCcgfHwgKCh0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ29yZ3JldmlldycgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdzb3VyY2luZ3JldmlldycpICYmIHRoaXMuZWRpdG9yU2VydmljZS5pc1Jldmlld01vZGlmaWNhdGlvbkFsbG93ZWQgJiYgIV8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb250ZXh0LmlzQWRkZWRGcm9tTGlicmFyeScsIGZhbHNlKSk7XG4gICAgdGhpcy52aXNpYmlsaXR5LnNhdmVDb250ZW50ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdlZGl0JyB8fCAoKHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnb3JncmV2aWV3JyB8fCB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ3NvdXJjaW5ncmV2aWV3JykgJiYgdGhpcy5lZGl0b3JTZXJ2aWNlLmlzUmV2aWV3TW9kaWZpY2F0aW9uQWxsb3dlZCk7XG4gICAgdGhpcy52aXNpYmlsaXR5LnN1Ym1pdENvbnRlbnQgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ2VkaXQnO1xuICAgIHRoaXMudmlzaWJpbGl0eS5yZWplY3RDb250ZW50ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdyZXZpZXcnIHx8IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnb3JncmV2aWV3JztcbiAgICB0aGlzLnZpc2liaWxpdHkucHVibGlzaENvbnRlbnQgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ3JldmlldycgfHwgdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdvcmdyZXZpZXcnO1xuICAgIHRoaXMudmlzaWJpbGl0eS5zZW5kRm9yQ29ycmVjdGlvbnNDb250ZW50ID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUgPT09ICdzb3VyY2luZ3JldmlldycgJiYgIV8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb250ZXh0LmlzQWRkZWRGcm9tTGlicmFyeScsIGZhbHNlKTtcbiAgICB0aGlzLnZpc2liaWxpdHkuc291cmNpbmdBcHByb3ZlQ29udGVudCA9IHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnc291cmNpbmdyZXZpZXcnO1xuICAgIHRoaXMudmlzaWJpbGl0eS5zb3VyY2luZ1JlamVjdENvbnRlbnQgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ3NvdXJjaW5ncmV2aWV3JztcbiAgICB0aGlzLnZpc2liaWxpdHkucHJldmlld0NvbnRlbnQgPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLm9iamVjdFR5cGUnKSA9PT0gJ1F1ZXN0aW9uU2V0JztcbiAgICB0aGlzLnZpc2liaWxpdHkuZGlhbGNvZGUgPSB0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSA9PT0gJ2VkaXQnO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICB0aGlzLnZpc2liaWxpdHkuYnVsa1VwbG9hZCA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb25maWcub2JqZWN0VHlwZScpID09PSAnUXVlc3Rpb25TZXQnICYmIHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JNb2RlID09PSAnZWRpdCc7XG4gICAgdGhpcy52aXNpYmlsaXR5LnNob3dPcmlnaW5QcmV2aWV3VXJsID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbmZpZy5zaG93T3JpZ2luUHJldmlld1VybCcpO1xuICAgIHRoaXMudmlzaWJpbGl0eS5zaG93U291cmNpbmdTdGF0dXMgPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLnNob3dTb3VyY2luZ1N0YXR1cycpO1xuICAgIHRoaXMudmlzaWJpbGl0eS5zaG93Q29ycmVjdGlvbkNvbW1lbnRzID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbmZpZy5zaG93Q29ycmVjdGlvbkNvbW1lbnRzJyk7XG4gICAgdGhpcy52aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG4gPSBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29uZmlnLmhpZGVTdWJtaXRGb3JSZXZpZXdCdG4nKSB8fCBmYWxzZTtcbiAgICB0aGlzLnZpc2liaWxpdHkuYWRkQ29sbGFib3JhdG9yID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbmZpZy5zaG93QWRkQ29sbGFib3JhdG9yJyk7XG4gICAgdGhpcy52aXNpYmlsaXR5LnNob3dQYWdpbmF0aW9uQnRuID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbmZpZy5lbmFibGVQYWdpbmF0aW9uJyk7XG4gIH1cblxuICBnZXRTb3VyY2luZ0RhdGEoKSB7XG4gICAgdGhpcy5zb3VyY2luZ1N0YXR1c1RleHQgPSAodGhpcy52aXNpYmlsaXR5LnNob3dTb3VyY2luZ1N0YXR1cykgPyBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29udGV4dC5zb3VyY2luZ1Jlc291cmNlU3RhdHVzJykgOiAnJztcbiAgICB0aGlzLnNvdXJjaW5nU3RhdHVzQ2xhc3MgPSAodGhpcy52aXNpYmlsaXR5LnNob3dTb3VyY2luZ1N0YXR1cykgPyBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UsICdlZGl0b3JDb25maWcuY29udGV4dC5zb3VyY2luZ1Jlc291cmNlU3RhdHVzQ2xhc3MnKSA6ICcnO1xuICAgIHRoaXMub3JpZ2luUHJldmlld1VybCA9ICh0aGlzLnZpc2liaWxpdHkuc2hvd09yaWdpblByZXZpZXdVcmwpID8gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbnRleHQub3JpZ2luUHJldmlld1VybCcpIDogJyc7XG4gICAgdGhpcy5jb3JyZWN0aW9uQ29tbWVudHMgPSAodGhpcy52aXNpYmlsaXR5LnNob3dDb3JyZWN0aW9uQ29tbWVudHMpID8gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLCAnZWRpdG9yQ29uZmlnLmNvbnRleHQuY29ycmVjdGlvbkNvbW1lbnRzJykgOiAnJztcbiAgfVxuXG4gIG9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFjdGlvblR5cGUgPSBhY3Rpb247XG4gICAgdGhpcy5zaG93UmVxdWVzdENoYW5nZXNQb3B1cCA9IHRydWU7XG4gIH1cblxuICBidXR0b25FbWl0dGVyKGFjdGlvbikge1xuICAgIHRoaXMudG9vbGJhckVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogYWN0aW9uLnR5cGUsIC4uLihhY3Rpb24uY29tbWVudCAmJiB7IGNvbW1lbnQ6IHRoaXMucmVqZWN0Q29tbWVudCB9KSB9KTtcbiAgfVxuXG4gIG9wZW5QdWJsaXNoQ2hlY2tMaXN0UG9wdXAoYWN0aW9uKSB7XG4gICAgdGhpcy5hY3Rpb25UeXBlID0gYWN0aW9uO1xuICAgIHRoaXMuc2hvd1B1Ymxpc2hDb2xsZWN0aW9uUG9wdXAgPSB0cnVlO1xuICB9XG5cbiAgZmlyc3RMZXZlbFB1Ymxpc2goKSB7XG4gICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5pc1Jldmlld2VyUXVhbGl0eUNoZWNrRW5hYmxlZCkge1xuICAgICAgdGhpcy50b29sYmFyRW1pdHRlci5lbWl0KHtidXR0b246ICdzYXZlUXVhbGl0eVBhcmFtZXRlcnMnfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYnV0dG9uRW1pdHRlcih7dHlwZTogJ3B1Ymxpc2hRdWVzdGlvbid9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaXNoRW1pdHRlcihldmVudCkge1xuICAgIHRoaXMuc2hvd1B1Ymxpc2hDb2xsZWN0aW9uUG9wdXAgPSBmYWxzZTtcbiAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAncHVibGlzaENvbnRlbnQnIHx8IGV2ZW50LmJ1dHRvbiA9PT0gJ3B1Ymxpc2hRdWVzdGlvbicgfHwgZXZlbnQuYnV0dG9uID09PSAnc291cmNpbmdBcHByb3ZlJyB8fCBldmVudC5idXR0b24gPT09ICdzb3VyY2luZ0FwcHJvdmVRdWVzdGlvbicpIHtcbiAgICAgIHRoaXMudG9vbGJhckVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgYnVsa1VwbG9hZExpc3RlbmVyKGV2ZW50KSB7XG4gICAgdGhpcy5idWxrVXBsb2FkRW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLm1vZGFsICYmIHRoaXMubW9kYWwuZGVueSkge1xuICAgICAgdGhpcy5tb2RhbC5kZW55KCk7XG4gICAgfVxuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8IS0tIEJsdWUgSGVhZGVyIC0tPlxuPGRpdiBjbGFzcz1cInNiLWJnLWNvbG9yLXByaW1hcnlcIj5cbiAgPGRpdiBjbGFzcz1cInVpIGNvbnRhaW5lciBweS0xNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1haS1jZW50ZXIgc2ItY29sb3Itd2hpdGVcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLXByaW1hcnkgc2ItYnRuLXhzIGJhY2stYnRuIHB4LTAgaG92ZXItbm9uZSBmcy0wLTkyIGZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgICAgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6ICdiYWNrQ29udGVudCd9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2JhY2snLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiIGFyaWEtbGFiZWw9XCJiYWNrXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiYXJyb3cgbGVmdCBpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LmJhY2tfYnRuX2xhYmVsfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwic2ItYmctbGlnaHRCbHVlIGJiLTFcIj5cbjxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1qYy1zcGFjZS1iZXR3ZWVuIGZsZXgtYWktY2VudGVyIHB5LTIwIHVpIGNvbnRhaW5lclwiPlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJwcmFjdGljYWwtaGVhZGVyX190aXRsZSBmb250LXdlaWdodC1ib2xkIHBsLTIwIGZzLTAtOTJcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS50aXRsZSB9fVxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm10LTggcGwtMjBcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgbXItMTBcIiAqbmdJZj1cInZpc2liaWxpdHkuc2hvd1NvdXJjaW5nU3RhdHVzXCIgW25nQ2xhc3NdPVwic291cmNpbmdTdGF0dXNDbGFzc1wiPnt7IHNvdXJjaW5nU3RhdHVzVGV4dCB9fTwvc3Bhbj5cbiAgICAgIDwhLS1zcGFuIGRhdGEtdGl0bGU9XCJWaWV3IHJldmlldyBjb21tZW50c1wiICgoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3Nob3dSZXZpZXdjb21tZW50cyd9KVwiICpuZ0lmPVwiYnV0dG9uTG9hZGVycz8uc2hvd1Jldmlld0NvbW1lbnRcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdCBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3ZpZXdfY29tbWVudHMnLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8aSBjbGFzcz1cImljb24gY29tbWVudCBmbGV4LWFzLWJhc2VsaW5lIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy52aWV3Q29tbWVudHN9fVxuICAgICAgPC9zcGFuLS0+XG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTAtOTJcIiBkYXRhLXRpdGxlPVwiVmlldyByZXZpZXcgY29tbWVudHNcIiAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3Nob3dSZXZpZXdjb21tZW50cyd9KVwiICpuZ0lmPVwiYnV0dG9uTG9hZGVycz8uc2hvd1Jldmlld0NvbW1lbnQgfHwgdmlzaWJpbGl0eS5zaG93Q29ycmVjdGlvbkNvbW1lbnRzXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3QgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCd2aWV3X2NvbW1lbnRzJywnY2xpY2snLCdsYXVuY2gnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNvbW1lbnQgYWx0ZXJuYXRlIG91dGxpbmUgc2ItY29sb3ItcHJpbWFyeSBmbGV4LWFzLWJhc2VsaW5lIG1yLTA1XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy52aWV3Q29tbWVudHN9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPGEgKm5nSWY9XCJ2aXNpYmlsaXR5LnNob3dPcmlnaW5QcmV2aWV3VXJsICYmIG9yaWdpblByZXZpZXdVcmxcIiBjbGFzcz1cInNiLWNvbG9yLXByaW1hcnkgbXItOCBwbC0xMCBmcy0wLTc4NSBmb250LXdlaWdodC1ib2xkXCJcbiAgICAgIGhyZWY9XCJ7e29yaWdpblByZXZpZXdVcmx9fVwiIHRhcmdldD1cIl9ibGFua1wiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy52aWV3T25PcmlnaW59fTwvYT5cbiAgICAgIDxsYWJlbCAqbmdJZj1cInZpc2liaWxpdHkuc2hvd09yaWdpblByZXZpZXdVcmwgJiYgIW9yaWdpblByZXZpZXdVcmxcIiBjbGFzcz1cInNiLWNvbG9yLWVycm9yIG1yLTggcGwtMTAgZnMtMC03ODUgZm9udC13ZWlnaHQtYm9sZFwiPlxuICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmVycj8uY29udGVudE5vdEZvdW5kb25PcmlnaW59fVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1haS1jZW50ZXJcIiAqbmdJZj1cInBhZ2VJZCA9PT0gJ2NvbGxlY3Rpb25fZWRpdG9yJyAmJiBsYWJlbENvbmZpZ0RhdGFcIj5cbiAgICA8ZGl2ICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5hZGRDb2xsYWJvcmF0b3JcIiBbYXR0ci5kYXRhLXRpdGxlXT1cImxhYmVsQ29uZmlnRGF0YT8uaXNBZGRDb2xsYWJvcmF0b3IgPyAnQWRkIGNvbGxhYm9yYXRvcicgOiAnVmlldyBjb2xsYWJvcmF0b3InXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBzYi1jb2xvci1wcmltYXJ5IG1yLTIwIGZvbnQtd2VpZ2h0LWJvbGRcIlxuICAgIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOiAnYWRkQ29sbGFib3JhdG9yJ30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2FkZF9jb2xsYWJvcmF0b3InLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJpY29uIHVzZXIgcGx1cyBtci0wXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgIDwvZGl2PlxuICAgIDxsaWItZGlhbGNvZGUgKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LmRpYWxjb2RlICYmIGxhYmVsQ29uZmlnRGF0YT8uc2hvd0RpYWxjb2RlID09PSAneWVzJ1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtYWktY2VudGVyXCI+PC9saWItZGlhbGNvZGU+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc3VibWl0Q29udGVudCAmJiAhYnVsa1VwbG9hZFN0YXR1cyAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICF2aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG4gJiYgdmlzaWJpbGl0eS5zaG93UGFnaW5hdGlvbkJ0blwiXG4gICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tcHJpbWFyeSBtci0xMFwiIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOidwYWdpbmF0aW9uJ30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3N1Ym1pdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCJcbiAgICA+XG4gICAgICA8ZW0gY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zdWJtaXRfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9lbT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLmFkZF9wYWdlX251bWJlcnNfdG9fcXVlc3Rpb25zX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc3VibWl0Q29udGVudCAmJiAhYnVsa1VwbG9hZFN0YXR1cyAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICF2aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG4gJiYgdmlzaWJpbGl0eS5zaG93UGFnaW5hdGlvbkJ0blwiXG4gICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tcHJpbWFyeSBtci0xMFwiIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOidwcm9ncmVzc1N0YXR1cyd9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzdWJtaXQnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiXG4gICAgPlxuICAgICAgPGVtIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc3VibWl0X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvZW0+XG4gICAgICBQcm9ncmVzc1xuICAgIDwvYnV0dG9uPlxuICAgIDxsaWItYnVsay11cGxvYWQgKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LmJ1bGtVcGxvYWQgJiYgbGFiZWxDb25maWdEYXRhPy5zaG93QnVsa1VwbG9hZEJ0blwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtYWktY2VudGVyIG1yLTEwXCIgKGJ1bGtVcGxvYWRFbWl0dGVyKT1cImJ1bGtVcGxvYWRMaXN0ZW5lcigkZXZlbnQpXCIgPjwvbGliLWJ1bGstdXBsb2FkPlxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnByZXZpZXdDb250ZW50ICAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICFidWxrVXBsb2FkU3RhdHVzXCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tb3V0bGluZS1wcmltYXJ5IG1yLTEwXCJcbiAgICAgIFtuZ0NsYXNzXT1cIiFidXR0b25Mb2FkZXJzPy5wcmV2aWV3QnV0dG9uTG9hZGVyID8gJyc6ICdzYi1idG4tbG9hZGluZy1zcGlubmVyIHNiLWJ0bi1vdXRsaW5lLWRpc2FibGVkJ1wiXG4gICAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3ByZXZpZXdDb250ZW50J30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgncHJldmlldycsJ2NsaWNrJywnbGF1bmNoJywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItbG9hZGluZy1zcGlubmVyXCIgKm5nSWY9XCJidXR0b25Mb2FkZXJzPy5wcmV2aWV3QnV0dG9uTG9hZGVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgPGkgKm5nSWY9XCJsYWJlbENvbmZpZ0RhdGEucHJldmlld19jb2xsZWN0aW9uX2J0bl9pY29uICYmICFidXR0b25Mb2FkZXJzPy5wcmV2aWV3QnV0dG9uTG9hZGVyXCIgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5wcmV2aWV3X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5wcmV2aWV3X2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnNhdmVDb250ZW50ICYmICFidWxrVXBsb2FkU3RhdHVzXCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tb3V0bGluZS1wcmltYXJ5IG1yLTEwXCJcbiAgICBbbmdDbGFzc109XCIhYnV0dG9uTG9hZGVycz8uc2F2ZUFzRHJhZnRCdXR0b25Mb2FkZXIgPyAnJzogJ3NiLWJ0bi1sb2FkaW5nLXNwaW5uZXIgc2ItYnRuLW91dGxpbmUtZGlzYWJsZWQnXCJcbiAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTonc2F2ZUNvbnRlbnQnfSlcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnc2F2ZV9hc19kcmFmdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cInt7bGFiZWxDb25maWdEYXRhLnNhdmVfY29sbGVjdGlvbl9idG5faWNvbn19XCIgKm5nSWY9XCIhYnV0dG9uTG9hZGVycz8uc2F2ZUFzRHJhZnRCdXR0b25Mb2FkZXJcIj48L2k+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItbG9hZGluZy1zcGlubmVyXCIgKm5nSWY9XCJidXR0b25Mb2FkZXJzPy5zYXZlQXNEcmFmdEJ1dHRvbkxvYWRlclwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNhdmVfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc3VibWl0Q29udGVudCAmJiAhYnVsa1VwbG9hZFN0YXR1cyAmJiBsYWJlbENvbmZpZ0RhdGE/Lmhhc0NoaWxkcmVuICYmICF2aXNpYmlsaXR5LmhpZGVTdWJtaXRGb3JSZXZpZXdCdG5cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1wcmltYXJ5IG1yLTEwXCIgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6J3N1Ym1pdENvbnRlbnQnfSlcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnc2VuZF9mb3JfcmV2aWV3JywnY2xpY2snLCdsYXVuY2gnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIlxuICAgID5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc3VibWl0X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnN1Ym1pdF9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5yZWplY3RDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW91dGxpbmUtZXJyb3Igc2ItYnRuLW5vcm1hbCByaXBwbGUgbXItMTBcIiAoY2xpY2spPVwib3BlblJlcXVlc3RDaGFuZ2VQb3B1cCgncmVqZWN0Q29udGVudCcpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3JlamVjdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICA8aSBjbGFzcz1cInt7bGFiZWxDb25maWdEYXRhLnJlamVjdF9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICB7e2xhYmVsQ29uZmlnRGF0YS5yZWplY3RfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8ucHVibGlzaENvbnRlbnRcIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tc2Vjb25kYXJ5IHNiLWJ0bi1ub3JtYWwgcmlwcGxlXCIgKGNsaWNrKT1cIm9wZW5QdWJsaXNoQ2hlY2tMaXN0UG9wdXAoJ3B1Ymxpc2hDb250ZW50JylcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgncHVibGlzaCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICA8aSBjbGFzcz1cInt7bGFiZWxDb25maWdEYXRhLnB1Ymxpc2hfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEucHVibGlzaF9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5zZW5kRm9yQ29ycmVjdGlvbnNDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUmVxdWVzdENoYW5nZVBvcHVwKCdzZW5kRm9yQ29ycmVjdGlvbnMnKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzZW5kX2JhY2tfZm9yX2NvcnJlY3Rpb24nLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zZW5kX2JhY2tfZm9yX2NvcnJlY3Rpb25fY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEuc2VuZF9iYWNrX2Zvcl9jb3JyZWN0aW9uX2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnNvdXJjaW5nQXBwcm92ZUNvbnRlbnRcIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tc2Vjb25kYXJ5IHNiLWJ0bi1ub3JtYWwgcmlwcGxlIG1yLTEwXCIgKGNsaWNrKT1cIm9wZW5QdWJsaXNoQ2hlY2tMaXN0UG9wdXAoJ3NvdXJjaW5nQXBwcm92ZScpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2FwcHJvdmUnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zb3VyY2luZ19hcHByb3ZlX2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNvdXJjaW5nX2FwcHJvdmVfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc291cmNpbmdSZWplY3RDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLWVycm9yIHNiLWJ0bi1ub3JtYWwgcmlwcGxlXCIgKGNsaWNrKT1cIm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoJ3NvdXJjaW5nUmVqZWN0JylcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgncmVqZWN0JywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc291cmNpbmdfcmVqZWN0X2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNvdXJjaW5nX3JlamVjdF9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1haS1jZW50ZXJcIiAqbmdJZj1cInBhZ2VJZCA9PT0gJ3F1ZXN0aW9uJyAmJiBsYWJlbENvbmZpZ0RhdGFcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxDb25maWdEYXRhLnNob3dQcmV2aWV3OyBlbHNlIGVkaXRNb2RlXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xMFwiICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5lZGl0Q29udGVudFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOiAnZWRpdENvbnRlbnQnfSlcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2VkaXQnLCdjbGljaycsJ2xhdW5jaCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8aSAqbmdJZj1cImxhYmVsQ29uZmlnRGF0YS5lZGl0X3F1ZXN0aW9uX2J0bl9pY29uXCIgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5lZGl0X3F1ZXN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5lZGl0X3F1ZXN0aW9uX2J0bl9sYWJlbH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2VkaXRNb2RlPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1vdXRsaW5lLXByaW1hcnkgbXItMTBcIiAqbmdJZj1cIiFsYWJlbENvbmZpZ0RhdGEuc2hvd1ByZXZpZXdcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIhYnV0dG9uTG9hZGVycz8ucHJldmlld0J1dHRvbkxvYWRlciA/ICcnOiAnc2ItYnRuLWxvYWRpbmctc3Bpbm5lciBzYi1idG4tb3V0bGluZS1kaXNhYmxlZCdcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYnV0dG9uRW1pdHRlcih7dHlwZTogJ3ByZXZpZXdDb250ZW50J30pXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgICAgICAgICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdwcmV2aWV3JywnY2xpY2snLCdsYXVuY2gnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiLWxvYWRpbmctc3Bpbm5lclwiICpuZ0lmPVwiYnV0dG9uTG9hZGVycz8ucHJldmlld0J1dHRvbkxvYWRlclwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Rpdj5cbiAgICAgICAgPGkgKm5nSWY9XCJsYWJlbENvbmZpZ0RhdGEucHJldmlld19xdWVzdGlvbl9idG5faWNvbiAmJiAhYnV0dG9uTG9hZGVycz8ucHJldmlld0J1dHRvbkxvYWRlclwiIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEucHJldmlld19xdWVzdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAgICB7eyBsYWJlbENvbmZpZ0RhdGEucHJldmlld19xdWVzdGlvbl9idG5fbGFiZWx9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOiAnY2FuY2VsQ29udGVudCd9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0ICpuZ0lmPVwidmlzaWJpbGl0eT8uc2F2ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2NhbmNlbCcsJ2NsaWNrJywnbGF1bmNoJywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICAgIDxpICpuZ0lmPVwibGFiZWxDb25maWdEYXRhLmNhbmNlbF9xdWVzdGlvbl9idG5faWNvblwiIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuY2FuY2VsX3F1ZXN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5jYW5jZWxfcXVlc3Rpb25fYnRuX2xhYmVsfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1wcmltYXJ5IG1yLTEwXCIgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6ICdzYXZlQ29udGVudCd9KVwiICpuZ0lmPVwidmlzaWJpbGl0eT8uc2F2ZUNvbnRlbnRcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCIhYnV0dG9uTG9hZGVycz8uc2F2ZUJ1dHRvbkxvYWRlciA/ICcnOiAnc2ItYnRuLWxvYWRpbmctc3Bpbm5lciBzYi1idG4tb3V0bGluZS1kaXNhYmxlZCdcIlxuICAgICAgICAgICAgICBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3NhdmUnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItbG9hZGluZy1zcGlubmVyXCIgKm5nSWY9XCJidXR0b25Mb2FkZXJzPy5zYXZlQnV0dG9uTG9hZGVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvZGl2PlxuICAgICAgICA8aSAqbmdJZj1cImxhYmVsQ29uZmlnRGF0YS5zYXZlX3F1ZXN0aW9uX2J0bl9pY29uICYmICFidXR0b25Mb2FkZXJzPy5zYXZlQnV0dG9uTG9hZGVyXCIgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zYXZlX3F1ZXN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICAgIHt7IGxhYmVsQ29uZmlnRGF0YS5zYXZlX3F1ZXN0aW9uX2J0bl9sYWJlbH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwibGFiZWxDb25maWdEYXRhLmFkZF90cmFuc2xhdGlvblwiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBtci0xMFwiXG4gICAgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6ICdzaG93VHJhbnNsYXRpb24nfSlcIj5cbiAgICA8aSBjbGFzcz1cInBsdXMgY2lyY2xlIGljb25cIj48L2k+XG4gICAge3sgbGFiZWxDb25maWdEYXRhLmFkZF90cmFuc2xhdGlvbl9sYWJlbH19XG4gICAgPC9idXR0b24+IC0tPlxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnN1Ym1pdENvbnRlbnQgJiYgbGFiZWxDb25maWdEYXRhPy5xdWVzdGlvbkNvbnRyaWJ1dGlvbiAmJiAhdmlzaWJpbGl0eS5oaWRlU3VibWl0Rm9yUmV2aWV3QnRuICYmICF2aXNpYmlsaXR5LnNob3dTb3VyY2luZ1N0YXR1c1wiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWwgc2ItYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJidXR0b25FbWl0dGVyKHt0eXBlOidzdWJtaXRRdWVzdGlvbid9KVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzdWJtaXQnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiXG4gICAgPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zdWJtaXRfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEuc3VibWl0X2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5yZWplY3RDb250ZW50ICYmIGxhYmVsQ29uZmlnRGF0YT8ucXVlc3Rpb25Db250cmlidXRpb25cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tb3V0bGluZS1lcnJvciBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUmVxdWVzdENoYW5nZVBvcHVwKCdyZWplY3RRdWVzdGlvbicpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3JlamVjdCcsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQpXCI+XG4gICAgICA8aSBjbGFzcz1cInt7bGFiZWxDb25maWdEYXRhLnJlamVjdF9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICB7e2xhYmVsQ29uZmlnRGF0YS5yZWplY3RfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8ucHVibGlzaENvbnRlbnQgJiYgbGFiZWxDb25maWdEYXRhPy5xdWVzdGlvbkNvbnRyaWJ1dGlvblwiIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1zZWNvbmRhcnkgc2ItYnRuLW5vcm1hbCByaXBwbGVcIiAoY2xpY2spPVwiZmlyc3RMZXZlbFB1Ymxpc2goKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdwdWJsaXNoJywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEucHVibGlzaF9jb2xsZWN0aW9uX2J0bl9pY29ufX1cIj48L2k+XG4gICAgICB7e2xhYmVsQ29uZmlnRGF0YS5wdWJsaXNoX2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCJ2aXNpYmlsaXR5ICYmIHZpc2liaWxpdHk/LnNlbmRGb3JDb3JyZWN0aW9uc0NvbnRlbnRcIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tb3V0bGluZS1wcmltYXJ5IHNiLWJ0bi1ub3JtYWwgcmlwcGxlIG1yLTEwXCIgKGNsaWNrKT1cIm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoJ3NlbmRGb3JDb3JyZWN0aW9uc1F1ZXN0aW9uJylcIiBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnc2VuZF9iYWNrX2Zvcl9jb3JyZWN0aW9uX3F1ZXN0aW9uJywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgIDxpIGNsYXNzPVwie3tsYWJlbENvbmZpZ0RhdGEuc2VuZF9iYWNrX2Zvcl9jb3JyZWN0aW9uX2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNlbmRfYmFja19mb3JfY29ycmVjdGlvbl9jb2xsZWN0aW9uX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwidmlzaWJpbGl0eSAmJiB2aXNpYmlsaXR5Py5zb3VyY2luZ0FwcHJvdmVDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLXNlY29uZGFyeSBzYi1idG4tbm9ybWFsIHJpcHBsZSBtci0xMFwiIChjbGljayk9XCJvcGVuUHVibGlzaENoZWNrTGlzdFBvcHVwKCdzb3VyY2luZ0FwcHJvdmVRdWVzdGlvbicpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2FwcHJvdmUnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zb3VyY2luZ19hcHByb3ZlX2NvbGxlY3Rpb25fYnRuX2ljb259fVwiPjwvaT5cbiAgICAgIHt7bGFiZWxDb25maWdEYXRhLnNvdXJjaW5nX2FwcHJvdmVfY29sbGVjdGlvbl9idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiAqbmdJZj1cInZpc2liaWxpdHkgJiYgdmlzaWJpbGl0eT8uc291cmNpbmdSZWplY3RDb250ZW50XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLWVycm9yIHNiLWJ0bi1ub3JtYWwgcmlwcGxlXCIgKGNsaWNrKT1cIm9wZW5SZXF1ZXN0Q2hhbmdlUG9wdXAoJ3NvdXJjaW5nUmVqZWN0UXVlc3Rpb24nKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdyZWplY3QnLCdjbGljaycsJ3N1Ym1pdCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkKVwiPlxuICAgICAgPGkgY2xhc3M9XCJ7e2xhYmVsQ29uZmlnRGF0YS5zb3VyY2luZ19yZWplY3RfY29sbGVjdGlvbl9idG5faWNvbn19XCI+PC9pPlxuICAgICAge3tsYWJlbENvbmZpZ0RhdGEuc291cmNpbmdfcmVqZWN0X2NvbGxlY3Rpb25fYnRuX2xhYmVsfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwvZGl2PlxuXG48c3VpLW1vZGFsICpuZ0lmPVwic2hvd1JlcXVlc3RDaGFuZ2VzUG9wdXBcIiBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgW2lzQ2xvc2FibGVdPVwiZmFsc2VcIiBbdHJhbnNpdGlvbkR1cmF0aW9uXT1cIjBcIlxuICBbc2l6ZV09XCInbm9ybWFsJ1wiIGNsYXNzPVwic2ItbW9kYWwgYngtbm9uZSBvdmVyZmxvdy1tb2RhbFwiIGFwcEJvZHlTY3JvbGwgI21vZGFsIChkaXNtaXNzZWQpPVwic2hvd1JlcXVlc3RDaGFuZ2VzUG9wdXAgPSBmYWxzZTtcIj5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWhlYWRlclwiPlxuICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFkZFJldmlld0NvbW1lbnRzfX1cbiAgPC9kaXY+XG4gIDxmb3JtICNGb3JtQ29udHJvbD1cIm5nRm9ybVwiIGNsYXNzPVwidWkgZm9ybVwiPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiLWZpZWxkLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5lbnRlcllvdXJDb21tZW50c319PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZmllbGQgcmVsYXRpdmVcIj5cblxuICAgICAgICAgICAgICA8dGV4dGFyZWEgdHlwZT1cInRleHRcIiBjbGFzcz1cIndtZC1pbnB1dCB3aWR0aC0xMDAgc2ItZm9ybS1jb250cm9sXCIgaWQ9XCJ3bWQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInJlamVjdENvbW1lbnRcIiBwbGFjZWhvbGRlcj1cIkFkZCBjb21tZW50XCIgbmFtZT1cInJlamVjdENvbW1lbnRcIiByZXF1aXJlZCBtYXhsZW5ndGg9XCJ7e2NvbmZpZ1NlcnZpY2U/LmVkaXRvckNvbmZpZz8ucmVqZWN0Q29tbWVudHNNYXhMZW5ndGh9fVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInVpIGJhc2ljIHJlZCBlcnJvciBsYWJlbCBwdC0xIG10LTUgd2lkdGgtMTAwXCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiRm9ybUNvbnRyb2wuZm9ybS5jb250cm9scy5yZWplY3RDb21tZW50Py50b3VjaGVkICYmICFGb3JtQ29udHJvbC5mb3JtLnZhbGlkXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmZpbGxDb21tZW50c319IDwvbGFiZWw+XG4gICAgICAgICAgICAgIDwhLS0gPHRleHRhcmVhIHJvd3M9XCI0XCIgbmFtZT1cIm1vcmV0ZXh0XCIgY2xhc3M9XCJzYi1mb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlR5cGUgaGVyZS4uLlwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hhcmFjdGVycy1sZWZ0XCI+MTAwMCBDaGFyYWN0ZXJzIGxlZnQ8L3NwYW4+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9uc1wiPlxuICAgIDxidXR0b24gaWQ9XCJzdWJtaXRSZXZpZXdcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiIFtuZ0NsYXNzXT1cInsnc2ItYnRuLXByaW1hcnknOiBGb3JtQ29udHJvbC5mb3JtLnZhbGlkLCAnc2ItYnRuLWRpc2FibGVkJzogIUZvcm1Db250cm9sLmZvcm0udmFsaWR9XCIgKGNsaWNrKT1cImJ1dHRvbkVtaXR0ZXIoe3R5cGU6IGFjdGlvblR5cGUsIGNvbW1lbnQ6IHJlamVjdENvbW1lbnR9KTsgc2hvd1JlcXVlc3RDaGFuZ2VzUG9wdXAgPSBmYWxzZTtcIlxuICAgIFtkaXNhYmxlZF09XCIhRm9ybUNvbnRyb2wuZm9ybS52YWxpZFwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzdWJtaXRfcmV2aWV3JywnY2xpY2snLCdzdWJtaXQnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCwge2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnYWRkX3Jldmlld19jb21tZW50cyd9KVwiXG4gICAgPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LnN1Ym1pdF9yZXZpZXdfYnRuX2xhYmVsfX0gPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGVueSgnZGVuaWVkJylcIlxuICAgIGxpYlRlbGVtZXRyeUludGVyYWN0IFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnY2FuY2VsJywnY2xpY2snLCdjYW5jZWwnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCwgIHtrZXk6ICdkaWFsb2dfaWQnLCB2YWx1ZTogJ2FkZF9yZXZpZXdfY29tbWVudHMnfSlcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LmNhbmNlbF9idG5fbGFiZWx9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT5cbjwvc3VpLW1vZGFsPlxuXG5cblxuPGxpYi1wdWJsaXNoLWNoZWNrbGlzdCAqbmdJZj1cInNob3dQdWJsaXNoQ29sbGVjdGlvblBvcHVwXCIgW2FjdGlvblR5cGVdPVwiYWN0aW9uVHlwZVwiIFtvYmplY3RUeXBlXT1cIm9iamVjdFR5cGVcIiBbcHVibGlzaGNoZWNrbGlzdF09XCJwdWJsaXNoY2hlY2tsaXN0XCJcbiAocHVibGlzaEVtaXR0ZXIpPVwicHVibGlzaEVtaXR0ZXIoJGV2ZW50KVwiPlxuPC9saWItcHVibGlzaC1jaGVja2xpc3Q+XG5cblxuIl19