@deeksha2309/sunbird-collection-editor 8.0.7
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.
- package/README.md +24 -0
- package/esm2022/lib/collection-editor-cursor.service.mjs +3 -0
- package/esm2022/lib/collection-editor-library.component.mjs +16 -0
- package/esm2022/lib/collection-editor-library.module.mjs +137 -0
- package/esm2022/lib/components/answer/answer.component.mjs +43 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +325 -0
- package/esm2022/lib/components/asset-browser/asset-browser.data.mjs +53 -0
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +191 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +895 -0
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +43 -0
- package/esm2022/lib/components/contentplayer-page/contentplayer-page.component.mjs +351 -0
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +178 -0
- package/esm2022/lib/components/dialcode/dialcode.component.mjs +182 -0
- package/esm2022/lib/components/editor/editor.component.mjs +1125 -0
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +529 -0
- package/esm2022/lib/components/header/header.component.mjs +123 -0
- package/esm2022/lib/components/library/library.component.mjs +242 -0
- package/esm2022/lib/components/library-filter/library-filter.component.mjs +149 -0
- package/esm2022/lib/components/library-list/library-list.component.mjs +92 -0
- package/esm2022/lib/components/library-player/library-player.component.mjs +62 -0
- package/esm2022/lib/components/manage-collaborator/manage-collaborator.component.mjs +256 -0
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +377 -0
- package/esm2022/lib/components/options/options.component.mjs +144 -0
- package/esm2022/lib/components/plain-tree/plain-tree.component.mjs +125 -0
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +46 -0
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +67 -0
- package/esm2022/lib/components/quality-params-modal/quality-params-modal.component.mjs +52 -0
- package/esm2022/lib/components/question/question.component.mjs +1360 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +73 -0
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +84 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +143 -0
- package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +26 -0
- package/esm2022/lib/components/template/template.component.mjs +42 -0
- package/esm2022/lib/components/term-and-condition/term-and-condition.component.mjs +68 -0
- package/esm2022/lib/directives/telemetry-interact/telemetry-interact.directive.mjs +33 -0
- package/esm2022/lib/interfaces/McqForm.mjs +29 -0
- package/esm2022/lib/interfaces/editor.mjs +2 -0
- package/esm2022/lib/interfaces/framework.mjs +2 -0
- package/esm2022/lib/interfaces/httpOptions.mjs +2 -0
- package/esm2022/lib/interfaces/requestParam.mjs +2 -0
- package/esm2022/lib/interfaces/serverResponse.mjs +2 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +20 -0
- package/esm2022/lib/services/config/category.config.json +8 -0
- package/esm2022/lib/services/config/config.service.mjs +27 -0
- package/esm2022/lib/services/config/editor.config.json +31 -0
- package/esm2022/lib/services/config/label.config.json +314 -0
- package/esm2022/lib/services/config/player.config.json +96 -0
- package/esm2022/lib/services/config/url.config.json +69 -0
- package/esm2022/lib/services/data/data.service.mjs +192 -0
- package/esm2022/lib/services/dialcode/dialcode.service.mjs +309 -0
- package/esm2022/lib/services/editor/editor.service.mjs +682 -0
- package/esm2022/lib/services/framework/framework.service.mjs +106 -0
- package/esm2022/lib/services/helper/helper.service.mjs +160 -0
- package/esm2022/lib/services/player/player.service.mjs +99 -0
- package/esm2022/lib/services/public-data/public-data.service.mjs +21 -0
- package/esm2022/lib/services/question/question.service.mjs +167 -0
- package/esm2022/lib/services/telemetry/telemetry.service.mjs +120 -0
- package/esm2022/lib/services/toaster/toaster.service.mjs +105 -0
- package/esm2022/lib/services/tree/tree.service.mjs +284 -0
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +5 -0
- package/esm2022/public-api.mjs +4 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs +10138 -0
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/assets/.gitkeep +0 -0
- package/lib/assets/images/MCQ.png +0 -0
- package/lib/assets/images/Spin.gif +0 -0
- package/lib/assets/images/bulkuploadfile.png +0 -0
- package/lib/assets/images/cancel-sign copy.png +0 -0
- package/lib/assets/images/cancel-sign.png +0 -0
- package/lib/assets/images/emptyResult.svg +1 -0
- package/lib/assets/images/icons-rtl.gif +0 -0
- package/lib/assets/images/icons.gif +0 -0
- package/lib/assets/images/imageicon.svg +16 -0
- package/lib/assets/images/imageicon_blue.svg +16 -0
- package/lib/assets/images/layoutoneicon.svg +16 -0
- package/lib/assets/images/layoutoneicon_blue.svg +16 -0
- package/lib/assets/images/layoutthreeicon.svg +18 -0
- package/lib/assets/images/layoutthreeicon_blue.svg +18 -0
- package/lib/assets/images/layouttwoicon.svg +18 -0
- package/lib/assets/images/layouttwoicon_blue.svg +18 -0
- package/lib/assets/images/leftalignicon.svg +17 -0
- package/lib/assets/images/leftalignicon_blue.svg +17 -0
- package/lib/assets/images/loader.gif +0 -0
- package/lib/assets/images/loader.svg +1 -0
- package/lib/assets/images/loading.gif +0 -0
- package/lib/assets/images/middlealignicon.svg +17 -0
- package/lib/assets/images/middlealignicon_blue.svg +17 -0
- package/lib/assets/images/question_collection.svg +18 -0
- package/lib/assets/images/rightalignicon.svg +17 -0
- package/lib/assets/images/rightalignicon_blue.svg +17 -0
- package/lib/assets/images/vline-rtl.gif +0 -0
- package/lib/assets/images/vline.gif +0 -0
- package/lib/assets/images/writing.png +0 -0
- package/lib/collection-editor-cursor.service.d.ts +5 -0
- package/lib/collection-editor-cursor.service.d.ts.map +1 -0
- package/lib/collection-editor-library.component.d.ts +9 -0
- package/lib/collection-editor-library.component.d.ts.map +1 -0
- package/lib/collection-editor-library.module.d.ts +50 -0
- package/lib/collection-editor-library.module.d.ts.map +1 -0
- package/lib/components/answer/answer.component.d.ts +24 -0
- package/lib/components/answer/answer.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts +81 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts +52 -0
- package/lib/components/asset-browser/asset-browser.data.d.ts.map +1 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts +38 -0
- package/lib/components/assign-page-number/assign-page-number.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +161 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts +18 -0
- package/lib/components/collection-icon/collection-icon.component.d.ts.map +1 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts +54 -0
- package/lib/components/contentplayer-page/contentplayer-page.component.d.ts.map +1 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts +42 -0
- package/lib/components/csv-upload/csv-upload.component.d.ts.map +1 -0
- package/lib/components/dialcode/dialcode.component.d.ts +48 -0
- package/lib/components/dialcode/dialcode.component.d.ts.map +1 -0
- package/lib/components/editor/editor.component.d.ts +146 -0
- package/lib/components/editor/editor.component.d.ts.map +1 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +77 -0
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -0
- package/lib/components/header/header.component.d.ts +46 -0
- package/lib/components/header/header.component.d.ts.map +1 -0
- package/lib/components/library/library.component.d.ts +69 -0
- package/lib/components/library/library.component.d.ts.map +1 -0
- package/lib/components/library-filter/library-filter.component.d.ts +47 -0
- package/lib/components/library-filter/library-filter.component.d.ts.map +1 -0
- package/lib/components/library-list/library-list.component.d.ts +32 -0
- package/lib/components/library-list/library-list.component.d.ts.map +1 -0
- package/lib/components/library-player/library-player.component.d.ts +24 -0
- package/lib/components/library-player/library-player.component.d.ts.map +1 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts +75 -0
- package/lib/components/manage-collaborator/manage-collaborator.component.d.ts.map +1 -0
- package/lib/components/meta-form/meta-form.component.d.ts +51 -0
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -0
- package/lib/components/options/options.component.d.ts +53 -0
- package/lib/components/options/options.component.d.ts.map +1 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts +20 -0
- package/lib/components/plain-tree/plain-tree.component.d.ts.map +1 -0
- package/lib/components/progress-status/progress-status.component.d.ts +25 -0
- package/lib/components/progress-status/progress-status.component.d.ts.map +1 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +23 -0
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts +24 -0
- package/lib/components/quality-params-modal/quality-params-modal.component.d.ts.map +1 -0
- package/lib/components/question/question.component.d.ts +215 -0
- package/lib/components/question/question.component.d.ts.map +1 -0
- package/lib/components/quml-player/quml-player.component.d.ts +26 -0
- package/lib/components/quml-player/quml-player.component.d.ts.map +1 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts +31 -0
- package/lib/components/qumlplayer-page/qumlplayer-page.component.d.ts.map +1 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts +45 -0
- package/lib/components/resource-reorder/resource-reorder.component.d.ts.map +1 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +13 -0
- package/lib/components/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/components/template/template.component.d.ts +21 -0
- package/lib/components/template/template.component.d.ts.map +1 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts +26 -0
- package/lib/components/term-and-condition/term-and-condition.component.d.ts.map +1 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts +27 -0
- package/lib/directives/telemetry-interact/telemetry-interact.directive.d.ts.map +1 -0
- package/lib/interfaces/McqForm.d.ts +32 -0
- package/lib/interfaces/McqForm.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +78 -0
- package/lib/interfaces/editor.d.ts.map +1 -0
- package/lib/interfaces/framework.d.ts +46 -0
- package/lib/interfaces/framework.d.ts.map +1 -0
- package/lib/interfaces/httpOptions.d.ts +35 -0
- package/lib/interfaces/httpOptions.d.ts.map +1 -0
- package/lib/interfaces/requestParam.d.ts +24 -0
- package/lib/interfaces/requestParam.d.ts.map +1 -0
- package/lib/interfaces/serverResponse.d.ts +38 -0
- package/lib/interfaces/serverResponse.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +11 -0
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -0
- package/lib/services/config/config.service.d.ts +13 -0
- package/lib/services/config/config.service.d.ts.map +1 -0
- package/lib/services/data/data.service.d.ts +85 -0
- package/lib/services/data/data.service.d.ts.map +1 -0
- package/lib/services/dialcode/dialcode.service.d.ts +36 -0
- package/lib/services/dialcode/dialcode.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +150 -0
- package/lib/services/editor/editor.service.d.ts.map +1 -0
- package/lib/services/framework/framework.service.d.ts +35 -0
- package/lib/services/framework/framework.service.d.ts.map +1 -0
- package/lib/services/helper/helper.service.d.ts +41 -0
- package/lib/services/helper/helper.service.d.ts.map +1 -0
- package/lib/services/player/player.service.d.ts +33 -0
- package/lib/services/player/player.service.d.ts.map +1 -0
- package/lib/services/public-data/public-data.service.d.ts +15 -0
- package/lib/services/public-data/public-data.service.d.ts.map +1 -0
- package/lib/services/question/question.service.d.ts +30 -0
- package/lib/services/question/question.service.d.ts.map +1 -0
- package/lib/services/telemetry/telemetry.service.d.ts +45 -0
- package/lib/services/telemetry/telemetry.service.d.ts.map +1 -0
- package/lib/services/toaster/toaster.service.d.ts +50 -0
- package/lib/services/toaster/toaster.service.d.ts.map +1 -0
- package/lib/services/tree/tree.service.d.ts +51 -0
- package/lib/services/tree/tree.service.d.ts.map +1 -0
- package/package.json +32 -0
- package/project-sunbird-sunbird-collection-editor.d.ts.map +1 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
|
@@ -0,0 +1,1125 @@
|
|
|
1
|
+
import { Component, HostListener, Input, EventEmitter, Output, ViewEncapsulation, ViewChild } from '@angular/core';
|
|
2
|
+
import { filter, map, switchMap, take, takeUntil, tap, catchError } from 'rxjs/operators';
|
|
3
|
+
import { throwError, forkJoin, Subject, merge, of } from 'rxjs';
|
|
4
|
+
import * as _ from 'lodash-es';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/editor/editor.service";
|
|
7
|
+
import * as i2 from "../../services/tree/tree.service";
|
|
8
|
+
import * as i3 from "../../services/framework/framework.service";
|
|
9
|
+
import * as i4 from "../../services/helper/helper.service";
|
|
10
|
+
import * as i5 from "../../services/telemetry/telemetry.service";
|
|
11
|
+
import * as i6 from "@angular/router";
|
|
12
|
+
import * as i7 from "../../services/toaster/toaster.service";
|
|
13
|
+
import * as i8 from "../../services/dialcode/dialcode.service";
|
|
14
|
+
import * as i9 from "../../services/config/config.service";
|
|
15
|
+
import * as i10 from "@angular/common";
|
|
16
|
+
import * as i11 from "@angular/forms";
|
|
17
|
+
import * as i12 from "@project-sunbird/ng2-semantic-ui";
|
|
18
|
+
import * as i13 from "@project-sunbird/sunbird-resource-library";
|
|
19
|
+
import * as i14 from "@angular/cdk/a11y";
|
|
20
|
+
import * as i15 from "../contentplayer-page/contentplayer-page.component";
|
|
21
|
+
import * as i16 from "../qumlplayer-page/qumlplayer-page.component";
|
|
22
|
+
import * as i17 from "../header/header.component";
|
|
23
|
+
import * as i18 from "../fancy-tree/fancy-tree.component";
|
|
24
|
+
import * as i19 from "../meta-form/meta-form.component";
|
|
25
|
+
import * as i20 from "../library/library.component";
|
|
26
|
+
import * as i21 from "../question/question.component";
|
|
27
|
+
import * as i22 from "../template/template.component";
|
|
28
|
+
import * as i23 from "../../directives/telemetry-interact/telemetry-interact.directive";
|
|
29
|
+
import * as i24 from "../quml-player/quml-player.component";
|
|
30
|
+
import * as i25 from "../csv-upload/csv-upload.component";
|
|
31
|
+
import * as i26 from "../manage-collaborator/manage-collaborator.component";
|
|
32
|
+
import * as i27 from "../assign-page-number/assign-page-number.component";
|
|
33
|
+
import * as i28 from "../progress-status/progress-status.component";
|
|
34
|
+
export class EditorComponent {
|
|
35
|
+
constructor(editorService, treeService, frameworkService, helperService, telemetryService, router, toasterService, dialcodeService, configService, changeDetectionRef) {
|
|
36
|
+
this.editorService = editorService;
|
|
37
|
+
this.treeService = treeService;
|
|
38
|
+
this.frameworkService = frameworkService;
|
|
39
|
+
this.helperService = helperService;
|
|
40
|
+
this.telemetryService = telemetryService;
|
|
41
|
+
this.router = router;
|
|
42
|
+
this.toasterService = toasterService;
|
|
43
|
+
this.dialcodeService = dialcodeService;
|
|
44
|
+
this.configService = configService;
|
|
45
|
+
this.changeDetectionRef = changeDetectionRef;
|
|
46
|
+
this.editorEmitter = new EventEmitter();
|
|
47
|
+
this.questionComponentInput = {};
|
|
48
|
+
this.selectedNodeData = {};
|
|
49
|
+
this.showConfirmPopup = false;
|
|
50
|
+
this.terms = false;
|
|
51
|
+
this.pageId = 'collection_editor';
|
|
52
|
+
this.showLibraryPage = false;
|
|
53
|
+
this.libraryComponentInput = {};
|
|
54
|
+
this.showQuestionTemplatePopup = false;
|
|
55
|
+
this.showDeleteConfirmationPopUp = false;
|
|
56
|
+
this.showPreview = false;
|
|
57
|
+
this.formStatusMapper = {};
|
|
58
|
+
this.buttonLoaders = {
|
|
59
|
+
saveAsDraftButtonLoader: false,
|
|
60
|
+
addFromLibraryButtonLoader: false,
|
|
61
|
+
addQuestionFromLibraryButtonLoader: false,
|
|
62
|
+
previewButtonLoader: false,
|
|
63
|
+
showReviewComment: false
|
|
64
|
+
};
|
|
65
|
+
this.csvDropDownOptions = {};
|
|
66
|
+
this.showCsvUploadPopup = false;
|
|
67
|
+
this.isCreateCsv = true;
|
|
68
|
+
this.isStatusReviewMode = false;
|
|
69
|
+
this.ishierarchyConfigSet = false;
|
|
70
|
+
this.isComponenetInitialized = false;
|
|
71
|
+
this.unsubscribe$ = new Subject();
|
|
72
|
+
this.onComponentDestroy$ = new Subject();
|
|
73
|
+
this.questionlibraryInput = {};
|
|
74
|
+
}
|
|
75
|
+
unloadHandler(event) {
|
|
76
|
+
this.generateTelemetryEndEvent();
|
|
77
|
+
}
|
|
78
|
+
ngOnInit() {
|
|
79
|
+
if (this.editorConfig) {
|
|
80
|
+
if (typeof this.editorConfig === 'string') {
|
|
81
|
+
try {
|
|
82
|
+
this.editorConfig = JSON.parse(this.editorConfig);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
console.error('Invalid editorConfig: ', error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
this.editorService.initialize(this.editorConfig);
|
|
90
|
+
this.editorMode = this.editorService.editorMode;
|
|
91
|
+
this.treeService.initialize(this.editorConfig);
|
|
92
|
+
this.collectionId = _.get(this.editorConfig, 'context.identifier');
|
|
93
|
+
this.objectType = _.get(this.editorConfig, 'config.objectType');
|
|
94
|
+
this.toolbarConfig = this.editorService.getToolbarConfig();
|
|
95
|
+
this.isObjectTypeCollection = this.configService.categoryConfig[this.editorConfig.config.objectType] === 'questionSet' ? false : true;
|
|
96
|
+
this.isStatusReviewMode = this.isReviewMode();
|
|
97
|
+
this.mergeCollectionExternalProperties().subscribe((response) => {
|
|
98
|
+
const hierarchyResponse = _.first(response);
|
|
99
|
+
const collection = _.get(hierarchyResponse, `result.${this.configService.categoryConfig[this.editorConfig.config.objectType]}`);
|
|
100
|
+
this.toolbarConfig.title = collection.name;
|
|
101
|
+
this.toolbarConfig.isAddCollaborator = (collection.createdBy === _.get(this.editorConfig, 'context.user.id'));
|
|
102
|
+
this.organisationFramework = _.get(collection, 'framework') || _.get(this.editorConfig, 'context.framework');
|
|
103
|
+
this.targetFramework = _.get(collection, 'targetFWIds') || _.get(this.editorConfig, 'context.targetFWIds');
|
|
104
|
+
if (this.organisationFramework) {
|
|
105
|
+
this.frameworkService.initialize(this.organisationFramework);
|
|
106
|
+
}
|
|
107
|
+
if (!_.isEmpty(this.targetFramework)) {
|
|
108
|
+
this.frameworkService.getTargetFrameworkCategories(this.targetFramework);
|
|
109
|
+
}
|
|
110
|
+
const channel = _.get(collection, 'channel') || _.get(this.editorConfig, 'context.channel');
|
|
111
|
+
this.helperService.initialize(channel);
|
|
112
|
+
});
|
|
113
|
+
this.editorService.getCategoryDefinition(this.editorConfig.config.primaryCategory, this.editorConfig.context.channel, this.editorConfig.config.objectType)
|
|
114
|
+
.subscribe((response) => {
|
|
115
|
+
// tslint:disable-next-line:max-line-length
|
|
116
|
+
const dialcode = _.get(response, 'result.objectCategoryDefinition.objectMetadata.schema.properties.generateDIALCodes.default');
|
|
117
|
+
this.toolbarConfig.showDialcode = dialcode ? dialcode.toLowerCase() : 'no';
|
|
118
|
+
// tslint:disable-next-line:max-line-length
|
|
119
|
+
const enableBulkUpload = _.get(response, 'result.objectCategoryDefinition.objectMetadata.config.sourcingSettings.collection.enableBulkUpload');
|
|
120
|
+
this.toolbarConfig.showBulkUploadBtn = enableBulkUpload ? enableBulkUpload : false;
|
|
121
|
+
this.sourcingSettings = _.get(response, 'result.objectCategoryDefinition.objectMetadata.config.sourcingSettings', {});
|
|
122
|
+
this.helperService.channelData$.subscribe((channelResponse) => {
|
|
123
|
+
this.sethierarchyConfig(response);
|
|
124
|
+
this.primaryCategoryDef = response;
|
|
125
|
+
});
|
|
126
|
+
}, (error) => {
|
|
127
|
+
console.log(error);
|
|
128
|
+
});
|
|
129
|
+
this.pageStartTime = Date.now();
|
|
130
|
+
this.telemetryService.initializeTelemetry(this.editorConfig);
|
|
131
|
+
this.telemetryService.telemetryPageId = this.pageId;
|
|
132
|
+
this.telemetryService.start({ type: 'editor', pageid: this.telemetryService.telemetryPageId });
|
|
133
|
+
this.unSubscribeShowLibraryPageEmitter = this.editorService.getshowLibraryPageEmitter()
|
|
134
|
+
.subscribe(item => this.showLibraryComponentPage());
|
|
135
|
+
this.treeService.treeStatus$.pipe(takeUntil(this.unsubscribe$)).subscribe((status) => {
|
|
136
|
+
if (status === 'loaded') {
|
|
137
|
+
this.getFrameworkDetails(this.primaryCategoryDef);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
getFrameworkDetails(categoryDefinitionData) {
|
|
142
|
+
let orgFWIdentifiers;
|
|
143
|
+
let targetFWIdentifiers;
|
|
144
|
+
let orgFWType;
|
|
145
|
+
let targetFWType;
|
|
146
|
+
orgFWIdentifiers = _.get(categoryDefinitionData, 'result.objectCategoryDefinition.objectMetadata.schema.properties.framework.enum') ||
|
|
147
|
+
_.get(categoryDefinitionData, 'result.objectCategoryDefinition.objectMetadata.schema.properties.framework.default');
|
|
148
|
+
if (_.get(this.editorConfig, 'config.renderTaxonomy') === true) {
|
|
149
|
+
const orgId = _.get(this.editorConfig, 'context.identifier');
|
|
150
|
+
this.editorService.fetchOutComeDeclaration(orgId).toPromise()
|
|
151
|
+
.then(data => {
|
|
152
|
+
if (data?.result) {
|
|
153
|
+
this.outcomeDeclaration = _.get(data?.result, 'questionset.outcomeDeclaration');
|
|
154
|
+
this.levelsArray = Object.keys(this.outcomeDeclaration);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
// tslint:disable-next-line:max-line-length
|
|
159
|
+
this.publishchecklist = _.get(categoryDefinitionData, 'result.objectCategoryDefinition.forms.publishchecklist.properties') || _.get(categoryDefinitionData, 'result.objectCategoryDefinition.forms.review.properties') || [];
|
|
160
|
+
if (_.isEmpty(this.targetFramework || _.get(this.editorConfig, 'context.targetFWIds'))) {
|
|
161
|
+
// tslint:disable-next-line:max-line-length
|
|
162
|
+
targetFWIdentifiers = _.get(categoryDefinitionData, 'result.objectCategoryDefinition.objectMetadata.schema.properties.targetFWIds.default');
|
|
163
|
+
if (_.isEmpty(targetFWIdentifiers)) {
|
|
164
|
+
// tslint:disable-next-line:max-line-length
|
|
165
|
+
targetFWType = _.get(categoryDefinitionData, 'result.objectCategoryDefinition.objectMetadata.config.frameworkMetadata.targetFWType');
|
|
166
|
+
const channelFrameworks = _.get(this.helperService.channelInfo, 'frameworks');
|
|
167
|
+
const channelFrameworksType = _.map(channelFrameworks, 'type');
|
|
168
|
+
const channelFrameworksIdentifiers = _.map(_.get(this.helperService.channelInfo, 'frameworks'), 'identifier');
|
|
169
|
+
const difference = _.difference(targetFWType, _.uniq(channelFrameworksType));
|
|
170
|
+
if (targetFWType && channelFrameworksType && _.isEmpty(difference)) {
|
|
171
|
+
this.targetFramework = _.get(_.first(_.filter(channelFrameworks, framework => {
|
|
172
|
+
return framework.type === _.first(targetFWType);
|
|
173
|
+
})), 'identifier');
|
|
174
|
+
this.treeService.updateMetaDataProperty('targetFWIds', _.castArray(this.targetFramework));
|
|
175
|
+
this.frameworkService.getTargetFrameworkCategories(_.castArray(this.targetFramework));
|
|
176
|
+
}
|
|
177
|
+
else if ((targetFWType && channelFrameworksType && !_.isEmpty(difference)) || _.isEmpty(channelFrameworksType)) {
|
|
178
|
+
this.frameworkService.getFrameworkData(undefined, difference, undefined, 'Yes').subscribe((targetResponse) => {
|
|
179
|
+
this.targetFramework = _.get(_.first(_.get(targetResponse, 'result.Framework')), 'identifier');
|
|
180
|
+
if (!_.isEmpty(this.targetFramework)) {
|
|
181
|
+
this.treeService.updateMetaDataProperty('targetFWIds', _.castArray(this.targetFramework));
|
|
182
|
+
this.frameworkService.getTargetFrameworkCategories(_.castArray(this.targetFramework));
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.frameworkService.getFrameworkData(undefined, undefined, targetFWIdentifiers).subscribe((targetResponse) => {
|
|
189
|
+
this.targetFramework = _.get(_.first(_.get(targetResponse, 'result.Framework')), 'identifier');
|
|
190
|
+
if (!_.isEmpty(this.targetFramework)) {
|
|
191
|
+
this.treeService.updateMetaDataProperty('targetFWIds', _.castArray(this.targetFramework));
|
|
192
|
+
this.frameworkService.getTargetFrameworkCategories(_.castArray(this.targetFramework));
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (_.isEmpty(orgFWIdentifiers)) {
|
|
198
|
+
let orgFrameworkList = [];
|
|
199
|
+
orgFWType = _.get(categoryDefinitionData, 'result.objectCategoryDefinition.objectMetadata.config.frameworkMetadata.orgFWType');
|
|
200
|
+
const channelFrameworksType = _.map(_.get(this.helperService.channelInfo, 'frameworks'), 'type');
|
|
201
|
+
const difference = _.difference(orgFWType, _.uniq(channelFrameworksType));
|
|
202
|
+
if (channelFrameworksType) {
|
|
203
|
+
orgFrameworkList = _.map(_.get(this.helperService.channelInfo, 'frameworks'), (framework) => {
|
|
204
|
+
return { label: framework.name, identifier: framework.identifier };
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
if (orgFWType && channelFrameworksType && _.isEmpty(difference)) {
|
|
208
|
+
this.frameworkService.frameworkValues = orgFrameworkList;
|
|
209
|
+
this.setEditorForms(categoryDefinitionData);
|
|
210
|
+
}
|
|
211
|
+
else if (orgFWType && channelFrameworksType && !_.isEmpty(difference) || _.isEmpty(channelFrameworksType)) {
|
|
212
|
+
this.frameworkService.getFrameworkData(undefined, difference, undefined, 'Yes').subscribe((response) => {
|
|
213
|
+
this.frameworkService.frameworkValues = _.concat(_.map(_.get(response, 'result.Framework'), framework => {
|
|
214
|
+
return { label: framework.name, identifier: framework.identifier };
|
|
215
|
+
}), orgFrameworkList);
|
|
216
|
+
this.setEditorForms(categoryDefinitionData);
|
|
217
|
+
}, error => {
|
|
218
|
+
console.log('error', error);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
else if (this.organisationFramework) {
|
|
222
|
+
this.setEditorForms(categoryDefinitionData);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
this.frameworkService.getFrameworkData(undefined, undefined, orgFWIdentifiers).subscribe((response) => {
|
|
227
|
+
this.frameworkService.frameworkValues = _.concat(_.map(_.get(response, 'result.Framework'), framework => {
|
|
228
|
+
return { label: framework.name, identifier: framework.identifier };
|
|
229
|
+
}));
|
|
230
|
+
this.setEditorForms(categoryDefinitionData);
|
|
231
|
+
}, error => {
|
|
232
|
+
console.log('error', error);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
setEditorForms(categoryDefinitionData) {
|
|
237
|
+
const formsConfigObj = _.get(categoryDefinitionData, 'result.objectCategoryDefinition.forms');
|
|
238
|
+
this.unitFormConfig = _.get(formsConfigObj, 'unitMetadata.properties');
|
|
239
|
+
this.rootFormConfig = _.get(formsConfigObj, 'create.properties');
|
|
240
|
+
let formData;
|
|
241
|
+
if (this.rootFormConfig?.length) {
|
|
242
|
+
formData = this.rootFormConfig[0].fields || [];
|
|
243
|
+
}
|
|
244
|
+
formData.forEach((field) => {
|
|
245
|
+
if (field.code === 'evidenceMimeType') {
|
|
246
|
+
this.evidenceMimeType = field.range;
|
|
247
|
+
field.options = this.setEvidence;
|
|
248
|
+
field.range = null;
|
|
249
|
+
}
|
|
250
|
+
else if (field.code === 'allowECM') {
|
|
251
|
+
field.options = this.setAllowEcm;
|
|
252
|
+
}
|
|
253
|
+
else if (field.code === 'ecm') {
|
|
254
|
+
this.ecm = field.options;
|
|
255
|
+
field.options = this.setEcm;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
if (this.objectType === 'questionset' && _.has(formsConfigObj, 'searchConfig')) {
|
|
259
|
+
this.libraryComponentInput.searchFormConfig = _.get(formsConfigObj, 'searchConfig.properties');
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
this.libraryComponentInput.searchFormConfig = _.get(formsConfigObj, 'search.properties');
|
|
263
|
+
}
|
|
264
|
+
this.leafFormConfig = _.get(formsConfigObj, 'childMetadata.properties');
|
|
265
|
+
this.relationFormConfig = _.get(formsConfigObj, 'relationalMetadata.properties');
|
|
266
|
+
}
|
|
267
|
+
ngAfterViewInit() {
|
|
268
|
+
this.telemetryService.impression({
|
|
269
|
+
type: 'edit', pageid: this.telemetryService.telemetryPageId, uri: this.router.url,
|
|
270
|
+
duration: (Date.now() - this.pageStartTime) / 1000
|
|
271
|
+
});
|
|
272
|
+
this.isComponenetInitialized = true;
|
|
273
|
+
}
|
|
274
|
+
mergeCollectionExternalProperties() {
|
|
275
|
+
const requests = [];
|
|
276
|
+
this.collectionTreeNodes = null;
|
|
277
|
+
this.isTreeInitialized = true;
|
|
278
|
+
const objectType = this.configService.categoryConfig[this.editorConfig.config.objectType];
|
|
279
|
+
requests.push(this.editorService.fetchCollectionHierarchy(this.collectionId));
|
|
280
|
+
if (objectType === 'questionSet') {
|
|
281
|
+
requests.push(this.editorService.readQuestionSet(this.collectionId));
|
|
282
|
+
}
|
|
283
|
+
return forkJoin(requests).pipe(tap(responseList => {
|
|
284
|
+
const hierarchyResponse = _.first(responseList);
|
|
285
|
+
this.collectionTreeNodes = {
|
|
286
|
+
data: _.get(hierarchyResponse, `result.${objectType}`)
|
|
287
|
+
};
|
|
288
|
+
this.buttonLoaders.showReviewComment = this.showCommentAddedAgainstContent();
|
|
289
|
+
if (_.isEmpty(this.collectionTreeNodes.data.children)) {
|
|
290
|
+
this.toolbarConfig.hasChildren = false;
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
this.toolbarConfig.hasChildren = true;
|
|
294
|
+
}
|
|
295
|
+
if (objectType === 'questionSet') {
|
|
296
|
+
const questionSetResponse = _.last(responseList);
|
|
297
|
+
const data = _.get(questionSetResponse, _.toLower(`result.${objectType}`));
|
|
298
|
+
this.collectionTreeNodes.data.instructions = data.instructions ? data.instructions : '';
|
|
299
|
+
}
|
|
300
|
+
}));
|
|
301
|
+
}
|
|
302
|
+
sethierarchyConfig(primaryCatConfig) {
|
|
303
|
+
let hierarchyConfig;
|
|
304
|
+
if (_.get(primaryCatConfig, 'result.objectCategoryDefinition.objectMetadata.config')) {
|
|
305
|
+
hierarchyConfig = _.get(primaryCatConfig, 'result.objectCategoryDefinition.objectMetadata.config.sourcingSettings.collection');
|
|
306
|
+
if (!_.isEmpty(hierarchyConfig.children)) {
|
|
307
|
+
hierarchyConfig.children = this.getHierarchyChildrenConfig(hierarchyConfig.children);
|
|
308
|
+
}
|
|
309
|
+
if (!_.isEmpty(hierarchyConfig.hierarchy)) {
|
|
310
|
+
_.forEach(hierarchyConfig.hierarchy, (hierarchyValue) => {
|
|
311
|
+
if (_.get(hierarchyValue, 'children')) {
|
|
312
|
+
hierarchyValue['children'] = this.getHierarchyChildrenConfig(_.get(hierarchyValue, 'children'));
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
this.editorConfig.config = _.assign(this.editorConfig.config, hierarchyConfig);
|
|
318
|
+
if (_.get(this.editorConfig, 'config.renderTaxonomy') === true && _.isEmpty(_.get(this.collectionTreeNodes, 'data.children'))) {
|
|
319
|
+
this.fetchFrameWorkDetails();
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
this.ishierarchyConfigSet = true;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
fetchFrameWorkDetails() {
|
|
326
|
+
this.frameworkService.frameworkData$.pipe(takeUntil(this.onComponentDestroy$), filter(data => _.get(data, `frameworkdata.${this.frameworkService.organisationFramework}`)), take(1)).subscribe((frameworkDetails) => {
|
|
327
|
+
if (frameworkDetails && !frameworkDetails.err) {
|
|
328
|
+
const orgFrameworkData = _.get(frameworkDetails, `frameworkdata.${this.frameworkService.organisationFramework}.categories`);
|
|
329
|
+
const categoryInstanceData = _.find(orgFrameworkData, { code: _.get(this.editorConfig, 'config.categoryInstance') });
|
|
330
|
+
this.collectionTreeNodes.data.children = _.get(categoryInstanceData, 'terms');
|
|
331
|
+
this.ishierarchyConfigSet = true;
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
getHierarchyChildrenConfig(childrenData) {
|
|
336
|
+
_.forEach(childrenData, (value, key) => {
|
|
337
|
+
if (_.isEmpty(value)) {
|
|
338
|
+
switch (key) {
|
|
339
|
+
case 'Question':
|
|
340
|
+
childrenData[key] = _.map(this.helperService.questionPrimaryCategories, 'name') || this.editorConfig.config.questionPrimaryCategories;
|
|
341
|
+
;
|
|
342
|
+
break;
|
|
343
|
+
case 'Content':
|
|
344
|
+
childrenData[key] = _.map(this.helperService.contentPrimaryCategories, 'name') || [];
|
|
345
|
+
break;
|
|
346
|
+
case 'Collection':
|
|
347
|
+
childrenData[key] = _.map(this.helperService.collectionPrimaryCategories, 'name') || [];
|
|
348
|
+
break;
|
|
349
|
+
case 'QuestionSet':
|
|
350
|
+
childrenData[key] = _.map(this.helperService.questionsetPrimaryCategories, 'name') || [];
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
return childrenData;
|
|
356
|
+
}
|
|
357
|
+
toggleCollaboratorModalPoup() {
|
|
358
|
+
this.isEnableCsvAction = true;
|
|
359
|
+
if (this.addCollaborator) {
|
|
360
|
+
this.addCollaborator = false;
|
|
361
|
+
}
|
|
362
|
+
else if (!this.addCollaborator) {
|
|
363
|
+
this.addCollaborator = true;
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
toolbarEventListener(event) {
|
|
369
|
+
this.actionType = event.button;
|
|
370
|
+
switch (event.button) {
|
|
371
|
+
case 'saveContent':
|
|
372
|
+
this.buttonLoaders.saveAsDraftButtonLoader = true;
|
|
373
|
+
this.saveContent().then((message) => {
|
|
374
|
+
this.buttonLoaders.saveAsDraftButtonLoader = false;
|
|
375
|
+
this.toasterService.success(message);
|
|
376
|
+
this.isEnableCsvAction = true;
|
|
377
|
+
}).catch(((error) => {
|
|
378
|
+
this.buttonLoaders.saveAsDraftButtonLoader = false;
|
|
379
|
+
this.isEnableCsvAction = false;
|
|
380
|
+
this.toasterService.error(error);
|
|
381
|
+
}));
|
|
382
|
+
break;
|
|
383
|
+
case 'previewContent':
|
|
384
|
+
this.previewContent();
|
|
385
|
+
break;
|
|
386
|
+
case 'addFromLibrary':
|
|
387
|
+
this.showLibraryComponentPage();
|
|
388
|
+
break;
|
|
389
|
+
case 'submitContent':
|
|
390
|
+
this.submitHandler();
|
|
391
|
+
break;
|
|
392
|
+
case 'removeContent':
|
|
393
|
+
this.deleteConfirmMessage = this.configService.labelConfig?.lbl?.confirmDeleteNode;
|
|
394
|
+
this.showDeleteConfirmationPopUp = true;
|
|
395
|
+
break;
|
|
396
|
+
case 'editContent':
|
|
397
|
+
this.redirectToQuestionTab('edit');
|
|
398
|
+
break;
|
|
399
|
+
case 'rejectContent':
|
|
400
|
+
this.rejectContent(event.comment);
|
|
401
|
+
break;
|
|
402
|
+
case 'publishContent':
|
|
403
|
+
this.publishContent(event);
|
|
404
|
+
break;
|
|
405
|
+
case 'onFormStatusChange':
|
|
406
|
+
const selectedNode = this.treeService.getActiveNode();
|
|
407
|
+
if (selectedNode && selectedNode.data.id) {
|
|
408
|
+
this.formStatusMapper[selectedNode.data.id] = event.event.isValid;
|
|
409
|
+
}
|
|
410
|
+
if (this.isObjectTypeCollection) {
|
|
411
|
+
this.handleCsvDropdownOptionsOnCollection();
|
|
412
|
+
}
|
|
413
|
+
break;
|
|
414
|
+
case 'onFormValueChange':
|
|
415
|
+
this.updateToolbarTitle(event);
|
|
416
|
+
break;
|
|
417
|
+
case 'backContent':
|
|
418
|
+
this.redirectToChapterListTab();
|
|
419
|
+
break;
|
|
420
|
+
case 'sendForCorrections':
|
|
421
|
+
this.redirectToChapterListTab({ comment: event.comment });
|
|
422
|
+
break;
|
|
423
|
+
case 'sourcingApprove':
|
|
424
|
+
this.sourcingApproveContent(event);
|
|
425
|
+
break;
|
|
426
|
+
case 'sourcingReject':
|
|
427
|
+
this.sourcingRejectContent({ comment: event.comment });
|
|
428
|
+
break;
|
|
429
|
+
case 'addCollaborator':
|
|
430
|
+
this.toggleCollaboratorModalPoup();
|
|
431
|
+
break;
|
|
432
|
+
case 'showReviewcomments':
|
|
433
|
+
this.showReviewModal = !this.showReviewModal;
|
|
434
|
+
break;
|
|
435
|
+
case 'reviewContent':
|
|
436
|
+
this.redirectToQuestionTab('review');
|
|
437
|
+
break;
|
|
438
|
+
case 'pagination':
|
|
439
|
+
this.pageId = 'pagination';
|
|
440
|
+
break;
|
|
441
|
+
case 'progressStatus':
|
|
442
|
+
this.pageId = 'progressStatus';
|
|
443
|
+
break;
|
|
444
|
+
// case 'showCorrectioncomments':
|
|
445
|
+
// this.contentComment = _.get(this.editorConfig, 'context.correctionComments')
|
|
446
|
+
// this.showReviewModal = !this.showReviewModal;
|
|
447
|
+
// break;
|
|
448
|
+
default:
|
|
449
|
+
break;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
redirectToChapterListTab(data) {
|
|
453
|
+
this.editorEmitter.emit({
|
|
454
|
+
close: true, library: 'collection_editor', action: this.actionType, identifier: this.collectionId,
|
|
455
|
+
...data
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
updateToolbarTitle(data) {
|
|
459
|
+
const selectedNode = this.treeService.getActiveNode();
|
|
460
|
+
if (!_.isEmpty(data?.data?.name) && selectedNode?.data?.root) {
|
|
461
|
+
this.toolbarConfig.title = data.data.name;
|
|
462
|
+
}
|
|
463
|
+
else if (_.isEmpty(data?.data?.name) && selectedNode?.data?.root) {
|
|
464
|
+
this.toolbarConfig.title = 'Untitled';
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
showLibraryComponentPage() {
|
|
468
|
+
if (this.editorService.checkIfContentsCanbeAdded()) {
|
|
469
|
+
this.buttonLoaders.addFromLibraryButtonLoader = true;
|
|
470
|
+
this.saveContent().then(res => {
|
|
471
|
+
this.libraryComponentInput.collectionId = this.collectionId;
|
|
472
|
+
this.buttonLoaders.addFromLibraryButtonLoader = false;
|
|
473
|
+
this.pageId = 'library';
|
|
474
|
+
}).catch(err => {
|
|
475
|
+
this.toasterService.error(err);
|
|
476
|
+
this.buttonLoaders.addFromLibraryButtonLoader = false;
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
showQuestionLibraryComponentPage() {
|
|
481
|
+
if (_.isUndefined(this.libraryComponentInput.searchFormConfig) || _.isEmpty(this.libraryComponentInput.searchFormConfig)) {
|
|
482
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.err.searchConfigNotFound'));
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
if (this.editorService.checkIfContentsCanbeAdded()) {
|
|
486
|
+
const questionCategory = [];
|
|
487
|
+
this.buttonLoaders.addQuestionFromLibraryButtonLoader = true;
|
|
488
|
+
if (!_.isUndefined(this.editorService.templateList) &&
|
|
489
|
+
_.isArray(this.editorService.templateList)) {
|
|
490
|
+
_.forEach(this.editorService.templateList, (template) => {
|
|
491
|
+
questionCategory.push({ name: template, targetObjectType: 'Question' });
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
this.saveContent().then((message) => {
|
|
495
|
+
const activeNode = this.treeService.getActiveNode();
|
|
496
|
+
this.buttonLoaders.addQuestionFromLibraryButtonLoader = false;
|
|
497
|
+
this.questionlibraryInput = {
|
|
498
|
+
libraryLabels: {
|
|
499
|
+
itemType: _.get(this.configService, 'labelConfig.lbl.questionsetAddFromLibraryItemLabel'),
|
|
500
|
+
collectionType: _.get(this.configService, 'labelConfig.lbl.questionsetAddFromLibraryCollectionLabel')
|
|
501
|
+
},
|
|
502
|
+
targetPrimaryCategories: questionCategory,
|
|
503
|
+
collectionId: this.collectionId,
|
|
504
|
+
existingcontentCounts: this.editorService.getContentChildrens().length,
|
|
505
|
+
collection: activeNode?.data?.metadata,
|
|
506
|
+
framework: this.organisationFramework,
|
|
507
|
+
editorConfig: this.editorConfig,
|
|
508
|
+
searchFormConfig: this.libraryComponentInput.searchFormConfig
|
|
509
|
+
};
|
|
510
|
+
this.pageId = 'question_library';
|
|
511
|
+
console.log(this.questionlibraryInput);
|
|
512
|
+
}).catch(((error) => {
|
|
513
|
+
this.toasterService.error(error);
|
|
514
|
+
this.buttonLoaders.addQuestionFromLibraryButtonLoader = false;
|
|
515
|
+
}));
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
libraryEventListener(event) {
|
|
519
|
+
this.mergeCollectionExternalProperties().subscribe((res) => {
|
|
520
|
+
this.pageId = 'collection_editor';
|
|
521
|
+
this.telemetryService.telemetryPageId = this.pageId;
|
|
522
|
+
this.isEnableCsvAction = true;
|
|
523
|
+
this.isComponenetInitialized = true;
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
saveContent() {
|
|
527
|
+
return new Promise(async (resolve, reject) => {
|
|
528
|
+
if (!this.validateFormStatus()) {
|
|
529
|
+
return reject(_.get(this.configService, 'labelConfig.messages.error.029'));
|
|
530
|
+
}
|
|
531
|
+
const nodesModified = _.get(this.editorService.getCollectionHierarchy(), 'nodesModified');
|
|
532
|
+
const objectType = this.configService.categoryConfig[this.editorConfig.config.objectType];
|
|
533
|
+
if (objectType === 'questionSet') {
|
|
534
|
+
const maxScore = await this.editorService.getMaxScore();
|
|
535
|
+
this.treeService.updateMetaDataProperty('maxScore', maxScore);
|
|
536
|
+
}
|
|
537
|
+
this.editorService.updateHierarchy()
|
|
538
|
+
.pipe(map(data => _.get(data, 'result'))).subscribe(response => {
|
|
539
|
+
if (this.toolbarConfig.showDialcode === 'yes') {
|
|
540
|
+
this.dialcodeService.highlightNodeForInvalidDialCode(response, nodesModified, this.collectionId);
|
|
541
|
+
}
|
|
542
|
+
if (!_.isEmpty(response.identifiers)) {
|
|
543
|
+
this.treeService.replaceNodeId(response.identifiers);
|
|
544
|
+
}
|
|
545
|
+
this.treeService.clearTreeCache();
|
|
546
|
+
this.treeService.nextTreeStatus('saved');
|
|
547
|
+
resolve(_.get(this.configService, 'labelConfig.messages.success.001'));
|
|
548
|
+
}, err => {
|
|
549
|
+
reject(_.get(this.configService, 'labelConfig.messages.error.001'));
|
|
550
|
+
});
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
submitHandler() {
|
|
554
|
+
if (!this.validateFormStatus()) {
|
|
555
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.005'));
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
else if (this.toolbarConfig.showDialcode === 'yes') {
|
|
559
|
+
if (this.dialcodeService.validateUnitsDialcodes()) {
|
|
560
|
+
this.showConfirmPopup = true;
|
|
561
|
+
}
|
|
562
|
+
else {
|
|
563
|
+
this.toasterService.warning(_.get(this.configService, 'labelConfig.messages.warning.001'));
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
this.showConfirmPopup = true;
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
validateFormStatus() {
|
|
571
|
+
const isValid = _.every(this.formStatusMapper, Boolean);
|
|
572
|
+
if (isValid) {
|
|
573
|
+
return true;
|
|
574
|
+
}
|
|
575
|
+
_.forIn(this.formStatusMapper, (value, key) => {
|
|
576
|
+
if (value) {
|
|
577
|
+
this.treeService.highlightNode(key, 'remove');
|
|
578
|
+
}
|
|
579
|
+
else {
|
|
580
|
+
this.treeService.highlightNode(key, 'add');
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
return false;
|
|
584
|
+
}
|
|
585
|
+
previewContent() {
|
|
586
|
+
this.buttonLoaders.previewButtonLoader = true;
|
|
587
|
+
if (!this.isStatusReviewMode) {
|
|
588
|
+
this.saveContent().then(res => {
|
|
589
|
+
this.setUpdatedTreeNodeData();
|
|
590
|
+
}).catch(err => {
|
|
591
|
+
this.toasterService.error(err);
|
|
592
|
+
this.buttonLoaders.previewButtonLoader = false;
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
this.setUpdatedTreeNodeData();
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
sendForReview() {
|
|
600
|
+
this.saveContent().then(messg => {
|
|
601
|
+
this.editorService.reviewContent(this.collectionId).subscribe(data => {
|
|
602
|
+
this.toasterService.success(_.get(this.configService, 'labelConfig.messages.success.002'));
|
|
603
|
+
this.redirectToChapterListTab();
|
|
604
|
+
}, err => {
|
|
605
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.002'));
|
|
606
|
+
});
|
|
607
|
+
}).catch(err => this.toasterService.error(err));
|
|
608
|
+
}
|
|
609
|
+
rejectContent(comment) {
|
|
610
|
+
const editableFields = _.get(this.editorConfig.config, 'editableFields');
|
|
611
|
+
if (this.editorMode === 'orgreview' && editableFields && !_.isEmpty(editableFields[this.editorMode])) {
|
|
612
|
+
if (!this.validateFormStatus()) {
|
|
613
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.029'));
|
|
614
|
+
return false;
|
|
615
|
+
}
|
|
616
|
+
this.editorService.updateCollection(this.collectionId).subscribe(res => {
|
|
617
|
+
this.editorService.submitRequestChanges(this.collectionId, comment).subscribe(res => {
|
|
618
|
+
this.toasterService.success(_.get(this.configService, 'labelConfig.messages.success.003'));
|
|
619
|
+
this.redirectToChapterListTab();
|
|
620
|
+
}, err => {
|
|
621
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.003'));
|
|
622
|
+
});
|
|
623
|
+
}, err => {
|
|
624
|
+
this.toasterService.error(err);
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
this.editorService.submitRequestChanges(this.collectionId, comment).subscribe(res => {
|
|
629
|
+
this.toasterService.success(_.get(this.configService, 'labelConfig.messages.success.003'));
|
|
630
|
+
this.redirectToChapterListTab();
|
|
631
|
+
}, err => {
|
|
632
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.003'));
|
|
633
|
+
});
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
publishContent(event) {
|
|
637
|
+
const editableFields = _.get(this.editorConfig, 'config.editableFields');
|
|
638
|
+
if (this.editorMode === 'orgreview' && editableFields && !_.isEmpty(editableFields[this.editorMode])) {
|
|
639
|
+
if (!this.validateFormStatus()) {
|
|
640
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.029'));
|
|
641
|
+
return false;
|
|
642
|
+
}
|
|
643
|
+
this.editorService.updateCollection(this.collectionId).subscribe(res => {
|
|
644
|
+
this.editorService.publishContent(this.collectionId, event).subscribe(response => {
|
|
645
|
+
this.toasterService.success(_.get(this.configService, 'labelConfig.messages.success.004'));
|
|
646
|
+
this.redirectToChapterListTab();
|
|
647
|
+
}, err => {
|
|
648
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.004'));
|
|
649
|
+
});
|
|
650
|
+
}, err => {
|
|
651
|
+
this.toasterService.error(err);
|
|
652
|
+
});
|
|
653
|
+
}
|
|
654
|
+
else {
|
|
655
|
+
this.editorService.publishContent(this.collectionId, event).subscribe(res => {
|
|
656
|
+
this.toasterService.success(_.get(this.configService, 'labelConfig.messages.success.004'));
|
|
657
|
+
this.redirectToChapterListTab();
|
|
658
|
+
}, err => {
|
|
659
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.004'));
|
|
660
|
+
});
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
sourcingApproveContent(event) {
|
|
664
|
+
const editableFields = _.get(this.editorConfig.config, 'editableFields');
|
|
665
|
+
// tslint:disable-next-line:max-line-length
|
|
666
|
+
if (this.editorMode === 'sourcingreview' && ((editableFields && !_.isEmpty(editableFields[this.editorMode])) || !_.isEmpty(this.publishchecklist))) {
|
|
667
|
+
if (!this.validateFormStatus()) {
|
|
668
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.029'));
|
|
669
|
+
return false;
|
|
670
|
+
}
|
|
671
|
+
this.editorService.updateCollection(this.collectionId, event).subscribe(res => {
|
|
672
|
+
this.redirectToChapterListTab();
|
|
673
|
+
}, err => {
|
|
674
|
+
this.toasterService.error(err);
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
else {
|
|
678
|
+
this.redirectToChapterListTab();
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
sourcingRejectContent(obj) {
|
|
682
|
+
const editableFields = _.get(this.editorConfig.config, 'editableFields');
|
|
683
|
+
if (this.editorMode === 'sourcingreview' && editableFields && !_.isEmpty(editableFields[this.editorMode])) {
|
|
684
|
+
if (!this.validateFormStatus()) {
|
|
685
|
+
this.toasterService.error(_.get(this.configService, 'labelConfig.messages.error.029'));
|
|
686
|
+
return false;
|
|
687
|
+
}
|
|
688
|
+
this.editorService.updateCollection(this.collectionId).subscribe(res => {
|
|
689
|
+
this.redirectToChapterListTab(obj);
|
|
690
|
+
}, err => {
|
|
691
|
+
this.toasterService.error(err);
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
else {
|
|
695
|
+
this.redirectToChapterListTab(obj);
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
setUpdatedTreeNodeData() {
|
|
699
|
+
this.editorService.fetchCollectionHierarchy(this.collectionId).subscribe((res) => {
|
|
700
|
+
console.log('hierarchyData', res);
|
|
701
|
+
this.collectionTreeNodes = {
|
|
702
|
+
data: _.get(res, `result.${this.configService.categoryConfig[this.editorConfig.config.objectType]}`)
|
|
703
|
+
};
|
|
704
|
+
this.updateTreeNodeData();
|
|
705
|
+
this.buttonLoaders.previewButtonLoader = false;
|
|
706
|
+
this.showPreview = true;
|
|
707
|
+
setTimeout(() => {
|
|
708
|
+
const element = document.querySelector('#previewPlayerContainer');
|
|
709
|
+
if (element) {
|
|
710
|
+
element.focus();
|
|
711
|
+
}
|
|
712
|
+
}, 500);
|
|
713
|
+
}, error => {
|
|
714
|
+
this.buttonLoaders.previewButtonLoader = false;
|
|
715
|
+
this.toasterService.error(_.get(error, 'error.params.errmsg'));
|
|
716
|
+
});
|
|
717
|
+
}
|
|
718
|
+
updateTreeNodeData() {
|
|
719
|
+
const treeNodeData = _.get(this.treeService.getFirstChild(), 'data.metadata');
|
|
720
|
+
if (!treeNodeData.timeLimits) {
|
|
721
|
+
treeNodeData.timeLimits = {};
|
|
722
|
+
}
|
|
723
|
+
if (treeNodeData.maxTime) {
|
|
724
|
+
treeNodeData.timeLimits.maxTime = this.helperService.hmsToSeconds(treeNodeData.maxTime);
|
|
725
|
+
}
|
|
726
|
+
if (treeNodeData.warningTime) {
|
|
727
|
+
treeNodeData.timeLimits.warningTime = this.helperService.hmsToSeconds(treeNodeData.warningTime);
|
|
728
|
+
}
|
|
729
|
+
this.collectionTreeNodes.data = _.merge(this.collectionTreeNodes.data, _.omit(treeNodeData, ['childNodes']));
|
|
730
|
+
}
|
|
731
|
+
treeEventListener(event) {
|
|
732
|
+
this.actionType = event.type;
|
|
733
|
+
this.updateTreeNodeData();
|
|
734
|
+
if (this.isObjectTypeCollection) {
|
|
735
|
+
this.handleCsvDropdownOptionsOnCollection();
|
|
736
|
+
}
|
|
737
|
+
switch (event.type) {
|
|
738
|
+
case 'nodeSelect':
|
|
739
|
+
this.updateSubmitBtnVisibility();
|
|
740
|
+
this.selectedNodeData = _.cloneDeep(event.data);
|
|
741
|
+
this.isCurrentNodeFolder = _.get(this.selectedNodeData, 'folder');
|
|
742
|
+
this.isCurrentNodeRoot = _.get(this.selectedNodeData, 'data.root');
|
|
743
|
+
// TODO: rethink below line code
|
|
744
|
+
this.isQumlPlayer = _.get(this.selectedNodeData, 'data.metadata.mimeType') === 'application/vnd.sunbird.question';
|
|
745
|
+
this.setTemplateList();
|
|
746
|
+
this.changeDetectionRef.detectChanges();
|
|
747
|
+
break;
|
|
748
|
+
case 'deleteNode':
|
|
749
|
+
this.deleteConfirmMessage = this.configService.labelConfig?.lbl?.confirmDeleteNode;
|
|
750
|
+
if (!event.isContent && _.has(this.editorConfig.config, 'hierarchy.level1')) {
|
|
751
|
+
// tslint:disable-next-line:max-line-length
|
|
752
|
+
this.deleteConfirmMessage = _.replace(this.deleteConfirmMessage, 'Node', _.get(this.editorConfig.config, 'hierarchy.level1.name'));
|
|
753
|
+
}
|
|
754
|
+
this.showDeleteConfirmationPopUp = true;
|
|
755
|
+
break;
|
|
756
|
+
case 'createNewContent':
|
|
757
|
+
if (this.editorService.checkIfContentsCanbeAdded()) {
|
|
758
|
+
this.buttonLoaders.addFromLibraryButtonLoader = true;
|
|
759
|
+
this.saveContent().then((message) => {
|
|
760
|
+
this.buttonLoaders.addFromLibraryButtonLoader = false;
|
|
761
|
+
this.showQuestionTemplatePopup = true;
|
|
762
|
+
}).catch(((error) => {
|
|
763
|
+
this.toasterService.error(error);
|
|
764
|
+
this.buttonLoaders.addFromLibraryButtonLoader = false;
|
|
765
|
+
}));
|
|
766
|
+
}
|
|
767
|
+
break;
|
|
768
|
+
default:
|
|
769
|
+
break;
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
setTemplateList() {
|
|
773
|
+
if (this.isCurrentNodeRoot) {
|
|
774
|
+
this.templateList = _.flatMap(_.get(this.editorConfig, 'config.children'));
|
|
775
|
+
}
|
|
776
|
+
else {
|
|
777
|
+
this.templateList = _.flatMap(_.get(this.editorService.editorConfig.config, `hierarchy.level${this.selectedNodeData.getLevel() - 1}.children`));
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
deleteNode() {
|
|
781
|
+
const activeNode = this.treeService.getActiveNode();
|
|
782
|
+
delete this.formStatusMapper[activeNode.data.id];
|
|
783
|
+
const children = this.treeService.getChildren();
|
|
784
|
+
_.forEach(children, (node) => {
|
|
785
|
+
if (_.has(this.formStatusMapper, node.data.id)) {
|
|
786
|
+
delete this.formStatusMapper[node.data.id];
|
|
787
|
+
}
|
|
788
|
+
});
|
|
789
|
+
this.treeService.removeNode();
|
|
790
|
+
this.updateSubmitBtnVisibility();
|
|
791
|
+
this.showDeleteConfirmationPopUp = false;
|
|
792
|
+
this.collectionTreeNodes.data.childNodes = _.filter(this.collectionTreeNodes.data.childNodes, (key) => {
|
|
793
|
+
return key !== activeNode.data.id;
|
|
794
|
+
});
|
|
795
|
+
}
|
|
796
|
+
updateSubmitBtnVisibility() {
|
|
797
|
+
const rootFirstChildNode = this.treeService.getFirstChild();
|
|
798
|
+
if (rootFirstChildNode && !rootFirstChildNode.children) {
|
|
799
|
+
this.toolbarConfig.hasChildren = false;
|
|
800
|
+
}
|
|
801
|
+
else {
|
|
802
|
+
this.toolbarConfig.hasChildren = true;
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
generateTelemetryEndEvent() {
|
|
806
|
+
const telemetryEnd = {
|
|
807
|
+
type: 'editor',
|
|
808
|
+
pageid: this.telemetryService?.telemetryPageId,
|
|
809
|
+
mode: this.editorMode,
|
|
810
|
+
duration: _.toString((Date.now() - this.pageStartTime) / 1000)
|
|
811
|
+
};
|
|
812
|
+
this.telemetryService?.end(telemetryEnd);
|
|
813
|
+
}
|
|
814
|
+
handleTemplateSelection($event) {
|
|
815
|
+
const selectedQuestionType = $event;
|
|
816
|
+
this.showQuestionTemplatePopup = false;
|
|
817
|
+
if (selectedQuestionType && selectedQuestionType.type === 'close') {
|
|
818
|
+
return false;
|
|
819
|
+
}
|
|
820
|
+
// tslint:disable-next-line:max-line-length
|
|
821
|
+
this.editorService.getCategoryDefinition(selectedQuestionType, null, 'Question').pipe(catchError(error => {
|
|
822
|
+
const errInfo = {
|
|
823
|
+
errorMsg: _.get(this.configService, 'labelConfig.messages.error.006'),
|
|
824
|
+
};
|
|
825
|
+
return throwError(this.editorService.apiErrorHandling(error, errInfo));
|
|
826
|
+
})).subscribe((res) => {
|
|
827
|
+
const selectedtemplateDetails = res.result.objectCategoryDefinition;
|
|
828
|
+
this.editorService.selectedChildren['label'] = selectedtemplateDetails.label;
|
|
829
|
+
const selectedTemplateFormFields = _.get(selectedtemplateDetails, 'forms.create.properties');
|
|
830
|
+
if (!_.isEmpty(selectedTemplateFormFields)) {
|
|
831
|
+
const questionCategoryConfig = selectedTemplateFormFields;
|
|
832
|
+
questionCategoryConfig.forEach(field => {
|
|
833
|
+
if (field.code === 'evidenceMimeType') {
|
|
834
|
+
this.evidenceMimeType = field.range;
|
|
835
|
+
field.options = this.setEvidence;
|
|
836
|
+
field.range = null;
|
|
837
|
+
}
|
|
838
|
+
});
|
|
839
|
+
this.leafFormConfig = questionCategoryConfig;
|
|
840
|
+
}
|
|
841
|
+
const catMetaData = _.get(selectedtemplateDetails, 'objectMetadata');
|
|
842
|
+
this.sourcingSettings = _.get(catMetaData, 'config.sourcingSettings') || {};
|
|
843
|
+
!_.isUndefined(this.editorConfig.config.renderTaxonomy) ? (this.questionComponentInput.config = { maximumOptions: _.get(catMetaData, 'config.maximumOptions') }) : '';
|
|
844
|
+
if (!_.has(this.sourcingSettings, 'enforceCorrectAnswer')) {
|
|
845
|
+
this.sourcingSettings.enforceCorrectAnswer = true;
|
|
846
|
+
}
|
|
847
|
+
if (_.isEmpty(_.get(catMetaData, 'schema.properties.interactionTypes.items.enum'))) {
|
|
848
|
+
// this.toasterService.error(this.resourceService.messages.emsg.m0026);
|
|
849
|
+
this.editorService.selectedChildren = {
|
|
850
|
+
primaryCategory: selectedQuestionType,
|
|
851
|
+
mimeType: catMetaData.schema.properties.mimeType.enum[0],
|
|
852
|
+
interactionType: null
|
|
853
|
+
};
|
|
854
|
+
this.redirectToQuestionTab(undefined, 'default');
|
|
855
|
+
}
|
|
856
|
+
else {
|
|
857
|
+
const interactionTypes = catMetaData.schema.properties.interactionTypes.items.enum;
|
|
858
|
+
this.editorService.selectedChildren = {
|
|
859
|
+
primaryCategory: selectedQuestionType,
|
|
860
|
+
mimeType: catMetaData.schema.properties.mimeType.enum[0],
|
|
861
|
+
interactionType: interactionTypes[0]
|
|
862
|
+
};
|
|
863
|
+
this.redirectToQuestionTab(undefined, interactionTypes[0]);
|
|
864
|
+
}
|
|
865
|
+
});
|
|
866
|
+
}
|
|
867
|
+
redirectToQuestionTab(mode, interactionType) {
|
|
868
|
+
let questionId = !_.isUndefined(mode) ? this.selectedNodeData?.data?.metadata?.identifier : undefined;
|
|
869
|
+
let questionCategory = '';
|
|
870
|
+
if (this.objectType === 'question') {
|
|
871
|
+
questionId = _.get(this.editorConfig, 'context.identifier');
|
|
872
|
+
interactionType = _.get(this.editorConfig, 'config.interactionType');
|
|
873
|
+
questionCategory = _.get(this.editorConfig, 'config.questionCategory');
|
|
874
|
+
this.creationContext = {
|
|
875
|
+
mode: mode,
|
|
876
|
+
objectType: this.objectType,
|
|
877
|
+
collectionObjectType: _.get(this.editorConfig, 'context.collectionObjectType'),
|
|
878
|
+
isReadOnlyMode: _.get(this.editorConfig, 'config.isReadOnlyMode'),
|
|
879
|
+
unitIdentifier: _.get(this.editorConfig, 'context.unitIdentifier'),
|
|
880
|
+
correctionComments: _.get(this.editorConfig, 'context.correctionComments'),
|
|
881
|
+
editableFields: _.get(this.editorConfig, 'config.editableFields')
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
this.questionComponentInput = {
|
|
885
|
+
questionSetId: this.collectionId,
|
|
886
|
+
questionId: questionId,
|
|
887
|
+
type: interactionType,
|
|
888
|
+
setChildQueston: mode === 'edit' ? false : this.setChildQuestion,
|
|
889
|
+
category: questionCategory,
|
|
890
|
+
creationContext: this.creationContext,
|
|
891
|
+
creationMode: mode
|
|
892
|
+
};
|
|
893
|
+
if (!_.isUndefined(mode) && !_.isUndefined(this.editorConfig.config.renderTaxonomy)) {
|
|
894
|
+
this.editorService.selectedChildren = {
|
|
895
|
+
primaryCategory: _.get(this.selectedNodeData, 'data.metadata.primaryCategory'),
|
|
896
|
+
interactionType: _.get(this.selectedNodeData, 'data.metadata.interactionTypes[0]')
|
|
897
|
+
};
|
|
898
|
+
this.questionComponentInput = {
|
|
899
|
+
...this.questionComponentInput,
|
|
900
|
+
creationContext: {
|
|
901
|
+
isReadOnlyMode: mode !== 'edit' ? true : false,
|
|
902
|
+
correctionComments: this.contentComment
|
|
903
|
+
}
|
|
904
|
+
};
|
|
905
|
+
this.editorService.getCategoryDefinition(this.selectedNodeData.data.metadata.primaryCategory, null, 'Question')
|
|
906
|
+
.subscribe((res) => {
|
|
907
|
+
const selectedtemplateDetails = res.result.objectCategoryDefinition;
|
|
908
|
+
this.editorService.selectedChildren['label'] = selectedtemplateDetails.label;
|
|
909
|
+
const selectedTemplateFormFields = _.get(selectedtemplateDetails, 'forms.create.properties');
|
|
910
|
+
this.questionComponentInput.config = { maximumOptions: _.get(selectedtemplateDetails, 'objectMetadata.config.maximumOptions') };
|
|
911
|
+
if (!_.isEmpty(selectedTemplateFormFields)) {
|
|
912
|
+
const questionCategoryConfig = selectedTemplateFormFields;
|
|
913
|
+
questionCategoryConfig.forEach(field => {
|
|
914
|
+
if (field.code === 'evidenceMimeType') {
|
|
915
|
+
this.evidenceMimeType = field.range;
|
|
916
|
+
field.options = this.setEvidence;
|
|
917
|
+
field.range = null;
|
|
918
|
+
}
|
|
919
|
+
});
|
|
920
|
+
this.leafFormConfig = questionCategoryConfig;
|
|
921
|
+
}
|
|
922
|
+
const catMetaData = selectedtemplateDetails.objectMetadata;
|
|
923
|
+
this.sourcingSettings = catMetaData?.config?.sourcingSettings || {};
|
|
924
|
+
if (!_.has(this.sourcingSettings, 'enforceCorrectAnswer')) {
|
|
925
|
+
this.sourcingSettings.enforceCorrectAnswer = true;
|
|
926
|
+
}
|
|
927
|
+
this.pageId = 'question';
|
|
928
|
+
}, (error) => {
|
|
929
|
+
const errInfo = {
|
|
930
|
+
errorMsg: _.get(this.configService, 'labelConfig.messages.error.006'),
|
|
931
|
+
};
|
|
932
|
+
return throwError(this.editorService.apiErrorHandling(error, errInfo));
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
else {
|
|
936
|
+
this.pageId = 'question';
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
questionEventListener(event) {
|
|
940
|
+
this.selectedNodeData = undefined;
|
|
941
|
+
this.mergeCollectionExternalProperties().subscribe((res) => {
|
|
942
|
+
this.pageId = 'collection_editor';
|
|
943
|
+
this.telemetryService.telemetryPageId = this.pageId;
|
|
944
|
+
this.isEnableCsvAction = true;
|
|
945
|
+
});
|
|
946
|
+
}
|
|
947
|
+
get contentPolicyUrl() {
|
|
948
|
+
return this.editorService.contentPolicyUrl;
|
|
949
|
+
}
|
|
950
|
+
showCommentAddedAgainstContent() {
|
|
951
|
+
// tslint:disable-next-line:max-line-length
|
|
952
|
+
if (this.collectionTreeNodes.data.status === 'Draft' && this.collectionTreeNodes.data.prevStatus === 'Review' && _.has(this.collectionTreeNodes.data, 'rejectComment')) {
|
|
953
|
+
this.contentComment = _.get(this.collectionTreeNodes.data, 'rejectComment');
|
|
954
|
+
return true;
|
|
955
|
+
}
|
|
956
|
+
else if (_.get(this.editorService, 'editorConfig.config.showCorrectionComments')) {
|
|
957
|
+
this.contentComment = _.get(this.editorConfig, 'context.correctionComments');
|
|
958
|
+
return true;
|
|
959
|
+
}
|
|
960
|
+
return false;
|
|
961
|
+
}
|
|
962
|
+
handleCsvDropdownOptionsOnCollection() {
|
|
963
|
+
if (this.isTreeInitialized) {
|
|
964
|
+
this.isEnableCsvAction = true;
|
|
965
|
+
this.isTreeInitialized = false;
|
|
966
|
+
}
|
|
967
|
+
else {
|
|
968
|
+
this.isEnableCsvAction = false;
|
|
969
|
+
}
|
|
970
|
+
this.setCsvDropDownOptionsDisable(true);
|
|
971
|
+
}
|
|
972
|
+
onClickFolder() {
|
|
973
|
+
if (this.isComponenetInitialized) {
|
|
974
|
+
this.isComponenetInitialized = false;
|
|
975
|
+
this.setCsvDropDownOptionsDisable();
|
|
976
|
+
}
|
|
977
|
+
else if (this.isEnableCsvAction) {
|
|
978
|
+
this.setCsvDropDownOptionsDisable();
|
|
979
|
+
}
|
|
980
|
+
}
|
|
981
|
+
setCsvDropDownOptionsDisable(disable) {
|
|
982
|
+
const status = this.editorService.getHierarchyFolder().length ? true : false;
|
|
983
|
+
this.csvDropDownOptions.isDisableCreateCsv = disable ? disable : status;
|
|
984
|
+
this.csvDropDownOptions.isDisableUpdateCsv = disable ? disable : !status;
|
|
985
|
+
this.csvDropDownOptions.isDisableDownloadCsv = disable ? disable : !status;
|
|
986
|
+
}
|
|
987
|
+
downloadHierarchyCsv() {
|
|
988
|
+
this.editorService.downloadHierarchyCsv(this.collectionId).subscribe(res => {
|
|
989
|
+
const tocUrl = _.get(res, 'result.collection.tocUrl');
|
|
990
|
+
this.downloadCSVFile(tocUrl);
|
|
991
|
+
}, error => {
|
|
992
|
+
this.toasterService.error(_.get(error, 'error.params.errmsg'));
|
|
993
|
+
});
|
|
994
|
+
}
|
|
995
|
+
isReviewMode() {
|
|
996
|
+
return _.includes(['review', 'read', 'sourcingreview', 'orgreview'], this.editorService.editorMode);
|
|
997
|
+
}
|
|
998
|
+
downloadCSVFile(tocUrl) {
|
|
999
|
+
const downloadConfig = {
|
|
1000
|
+
blobUrl: tocUrl,
|
|
1001
|
+
successMessage: false,
|
|
1002
|
+
fileType: 'csv',
|
|
1003
|
+
fileName: this.collectionId
|
|
1004
|
+
};
|
|
1005
|
+
window.open(downloadConfig.blobUrl, '_blank');
|
|
1006
|
+
/*this.editorService.downloadBlobUrlFile(downloadConfig);*/
|
|
1007
|
+
}
|
|
1008
|
+
hanndleCsvEmitter(event) {
|
|
1009
|
+
switch (event.type) {
|
|
1010
|
+
case 'closeModal':
|
|
1011
|
+
this.showCsvUploadPopup = false;
|
|
1012
|
+
break;
|
|
1013
|
+
case 'updateHierarchy':
|
|
1014
|
+
this.mergeCollectionExternalProperties().subscribe((res) => {
|
|
1015
|
+
this.pageId = 'collection_editor';
|
|
1016
|
+
this.telemetryService.telemetryPageId = this.pageId;
|
|
1017
|
+
this.isEnableCsvAction = true;
|
|
1018
|
+
});
|
|
1019
|
+
break;
|
|
1020
|
+
case 'createCsv':
|
|
1021
|
+
this.showCsvUploadPopup = true;
|
|
1022
|
+
this.isCreateCsv = true;
|
|
1023
|
+
break;
|
|
1024
|
+
case 'updateCsv':
|
|
1025
|
+
this.showCsvUploadPopup = true;
|
|
1026
|
+
this.isCreateCsv = false;
|
|
1027
|
+
break;
|
|
1028
|
+
case 'downloadCsv':
|
|
1029
|
+
this.downloadHierarchyCsv();
|
|
1030
|
+
break;
|
|
1031
|
+
default:
|
|
1032
|
+
break;
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
onFormStatusChange(form) {
|
|
1036
|
+
const selectedNode = this.treeService.getActiveNode();
|
|
1037
|
+
if (selectedNode && selectedNode.data.id) {
|
|
1038
|
+
this.formStatusMapper[selectedNode.data.id] = form.isValid;
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
assignPageEmitterListener(event) {
|
|
1042
|
+
this.pageId = 'collection_editor';
|
|
1043
|
+
}
|
|
1044
|
+
ngOnDestroy() {
|
|
1045
|
+
if (this.telemetryService && this.telemetryService?.end) {
|
|
1046
|
+
this.generateTelemetryEndEvent();
|
|
1047
|
+
}
|
|
1048
|
+
if (this.treeService) {
|
|
1049
|
+
this.treeService.clearTreeCache();
|
|
1050
|
+
}
|
|
1051
|
+
if (this.dialcodeService) {
|
|
1052
|
+
this.dialcodeService.clearDialCodeMaps();
|
|
1053
|
+
}
|
|
1054
|
+
if (this.modal && this.modal.deny) {
|
|
1055
|
+
this.modal.deny();
|
|
1056
|
+
}
|
|
1057
|
+
if (this.unSubscribeShowLibraryPageEmitter) {
|
|
1058
|
+
this.unSubscribeShowLibraryPageEmitter.unsubscribe();
|
|
1059
|
+
}
|
|
1060
|
+
if (this.unSubscribeshowQuestionLibraryPageEmitter) {
|
|
1061
|
+
this.unSubscribeshowQuestionLibraryPageEmitter.unsubscribe();
|
|
1062
|
+
}
|
|
1063
|
+
this.unsubscribe$ && this.unsubscribe$.next();
|
|
1064
|
+
this.unsubscribe$ && this.unsubscribe$.complete();
|
|
1065
|
+
}
|
|
1066
|
+
setEvidence(control, depends, formGroup, loading, loaded) {
|
|
1067
|
+
control.isVisible = 'no';
|
|
1068
|
+
control.range = this.evidenceMimeType;
|
|
1069
|
+
return merge(..._.map(depends, depend => depend.valueChanges)).pipe(switchMap((value) => {
|
|
1070
|
+
if (!_.isEmpty(value) && _.toLower(value) === 'yes') {
|
|
1071
|
+
control.isVisible = 'yes';
|
|
1072
|
+
return of({ range: this.evidenceMimeType });
|
|
1073
|
+
}
|
|
1074
|
+
else {
|
|
1075
|
+
control.isVisible = 'no';
|
|
1076
|
+
return of(null);
|
|
1077
|
+
}
|
|
1078
|
+
}));
|
|
1079
|
+
}
|
|
1080
|
+
setEcm(control, depends, formGroup, loading, loaded) {
|
|
1081
|
+
control.isVisible = 'no';
|
|
1082
|
+
control.options = this.ecm;
|
|
1083
|
+
return merge(..._.map(depends, depend => depend.valueChanges)).pipe(switchMap((value) => {
|
|
1084
|
+
if (!_.isEmpty(value) && _.toLower(value) === 'yes') {
|
|
1085
|
+
control.isVisible = 'yes';
|
|
1086
|
+
return of({ options: this.ecm });
|
|
1087
|
+
}
|
|
1088
|
+
else {
|
|
1089
|
+
control.isVisible = 'no';
|
|
1090
|
+
return of(null);
|
|
1091
|
+
}
|
|
1092
|
+
}));
|
|
1093
|
+
}
|
|
1094
|
+
setAllowEcm(control, depends) {
|
|
1095
|
+
control.isVisible = 'no';
|
|
1096
|
+
const response = merge(..._.map(depends, depend => depend.valueChanges)).pipe(switchMap((value) => {
|
|
1097
|
+
if (!_.isEmpty(value) && _.toLower(value) === 'self') {
|
|
1098
|
+
control.isVisible = 'no';
|
|
1099
|
+
return of(null);
|
|
1100
|
+
}
|
|
1101
|
+
else {
|
|
1102
|
+
control.isVisible = 'yes';
|
|
1103
|
+
return of(null);
|
|
1104
|
+
}
|
|
1105
|
+
}));
|
|
1106
|
+
return response;
|
|
1107
|
+
}
|
|
1108
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorComponent, deps: [{ token: i1.EditorService }, { token: i2.TreeService }, { token: i3.FrameworkService }, { token: i4.HelperService }, { token: i5.EditorTelemetryService }, { token: i6.Router }, { token: i7.ToasterService }, { token: i8.DialcodeService }, { token: i9.ConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EditorComponent, selector: "lib-editor", inputs: { editorConfig: "editorConfig" }, outputs: { editorEmitter: "editorEmitter" }, host: { listeners: { "window:unload": "unloadHandler($event)" } }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<ng-container [ngSwitch]=\"pageId\">\n <ng-container *ngSwitchCase=\"'collection_editor'\">\n <div class=\"add-to-library mb-10\">\n <lib-header [pageId]=\"pageId\" [publishchecklist]=\"publishchecklist\"\n [labelConfigData]=\"toolbarConfig\" [buttonLoaders]=\"buttonLoaders\" (toolbarEmitter)=\"toolbarEventListener($event)\"> </lib-header>\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0 \">\n <!-- Left Sidebar for cards -->\n <div class=\"p-50 sb-folder-menu\" *ngIf=\"isObjectTypeCollection\">\n <div> {{configService.labelConfig?.lbl?.folders}} </div>\n <a class=\"profile-avtar computer only p-0 pr-10\" tabindex=\"0\">\n <div suiDropdown class=\"ui dropdown right top pointing z-index-9\" id=\"dropdown-menu-list-header\" *ngIf=\"!isStatusReviewMode\">\n <i class=\"icon ellipsis vertical h-1\" aria-hidden=\"true\" [ngClass]=\"{'sb-disable-icon': isStatusReviewMode}\" (click)=\"onClickFolder()\"></i>\n <div class=\"menu\" suiDropdownMenu >\n <button type=\"button\" class=\"item fs-0-785 bg-none\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('open_popup','click',configService.labelConfig?.lbl?.createHierarchyCsv,\n this.telemetryService.telemetryPageId,{key: 'dialog_id', value: configService.labelConfig?.lbl?.createHierarchyCsv})\"\n (click)=\"hanndleCsvEmitter({type: 'createCsv'})\" [disabled]=\"csvDropDownOptions.isDisableCreateCsv\">\n <i class=\"icon folder outline sb-color-primary\" [ngClass]=\"{'sb-disable-icon': csvDropDownOptions.isDisableCreateCsv}\" aria-hidden=\"true\"></i>\n <span class=\"text\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableCreateCsv}\">{{configService.labelConfig?.lbl?.createHierarchyCsv}}</span>\n </button>\n <div class=\"ui divider\"></div>\n <button libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('csv_download','click',configService.labelConfig?.lbl?.downloadFoldersInCSV,\n this.telemetryService.telemetryPageId,{key: 'identifier', value: collectionId})\"\n type=\"button\" class=\"item fs-0-785 bg-none\" (click)=\"hanndleCsvEmitter({type: 'downloadCsv'})\" [disabled]=\"csvDropDownOptions.isDisableDownloadCsv\">\n <i class=\"icon download sb-color-primary\" [ngClass]=\"{'sb-disable-icon': csvDropDownOptions.isDisableDownloadCsv}\" aria-hidden=\"true\"></i> \n <span class=\"text\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableDownloadCsv}\" > \n {{configService.labelConfig?.lbl?.downloadFoldersInCSV}}</span>\n </button>\n <div class=\"ui divider\">\n </div>\n <button \n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('open_popup','click',configService.labelConfig?.lbl?.uploadUpdateCSV,\n this.telemetryService.telemetryPageId,{key: 'dialog_id', value: configService.labelConfig?.lbl?.uploadUpdateCSV})\"\n type=\"button\" class=\"item fs-0-785 bg-none\" (click)=\"hanndleCsvEmitter({type: 'updateCsv'})\" [disabled]=\"csvDropDownOptions.isDisableUpdateCsv\">\n <i class=\"icon upload sb-color-primary\" aria-hidden=\"true\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableUpdateCsv}\"></i> \n <span class=\"text\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableUpdateCsv}\" > \n {{configService.labelConfig?.lbl?.uploadUpdateCSV}}\n </span>\n </button>\n </div>\n </div>\n </a>\n </div>\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\" [ngClass]=\"{'mt-50': isObjectTypeCollection}\">\n <lib-fancy-tree *ngIf=\"collectionTreeNodes && collectionTreeNodes.data && ishierarchyConfigSet\"\n [nodes]=\"collectionTreeNodes\" [options]=\"{ showConnectors: true }\" [buttonLoaders]=\"buttonLoaders\"\n (treeEventEmitter)=\"treeEventListener($event)\" class=\"sb-collectionTree-fancyTree sb-collectionTree-fancyTreelist sb-questionset-scroll\">\n </lib-fancy-tree>\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <ng-container *ngIf=\"(isCurrentNodeFolder === true || isCurrentNodeRoot === true) && unitFormConfig && selectedNodeData && rootFormConfig\">\n <lib-meta-form [rootFormConfig]=\"rootFormConfig\" [nodeMetadata]=\"selectedNodeData\" [unitFormConfig]=\"unitFormConfig\"\n (toolbarEmitter)=\"toolbarEventListener($event)\"></lib-meta-form>\n </ng-container>\n <ng-container *ngIf=\"isCurrentNodeFolder === false && isCurrentNodeRoot !== true\">\n <lib-contentplayer-page *ngIf=\"!isQumlPlayer\" [contentMetadata]=\"selectedNodeData\" ></lib-contentplayer-page>\n <lib-qumlplayer-page *ngIf=\"isQumlPlayer\" [questionMetaData]=\"selectedNodeData\" [questionSetHierarchy]=\"collectionTreeNodes?.data\"\n (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-qumlplayer-page>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <sui-modal *ngIf=\"showDeleteConfirmationPopUp\" [mustScroll]=\"true\" [isClosable]=\"true\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll\n (dismissed)=\"showDeleteConfirmationPopUp = !showDeleteConfirmationPopUp\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.confirmDeleteContent}}\n </div>\n <div class=\"sb-modal-content\">\n <!-- <div class=\"sb-publish-content\">\n <div class=\"review-modal-list\">\n {{ contentComment }}\n </div> -->\n <div> {{deleteConfirmMessage}}</div>\n </div>\n <div class=\"sb-modal-actions\">\n <button type=\"button\" class=\"sb-btn sb-btn-normal sb-btn-primary mr-8\" (click)=\"showDeleteConfirmationPopUp = !showDeleteConfirmationPopUp\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', this.telemetryService.telemetryPageId,{key: 'dialog_id', value: 'confirm_delete_content','identifier' : selectedNodeData?.data?.id})\"> {{configService.labelConfig?.button_labels?.no_btn_label}} </button>\n <button type=\"button\" class=\"sb-btn sb-btn-secondary sb-btn-normal \" (click)=\"deleteNode();\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', this.telemetryService.telemetryPageId,{key: 'dialog_id', value: 'confirm_delete_content','identifier' : selectedNodeData?.data?.id})\"> {{configService.labelConfig?.button_labels?.yes_btn_label}} </button>\n </div>\n </sui-modal>\n <sui-modal *ngIf='showConfirmPopup' [mustScroll]=\"false\" [isClosable]=\"true\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal overflow-modal\" appBodyScroll (dismissed)=\"showConfirmPopup = !showConfirmPopup; terms = false;\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.acceptTerms}}\n </div>\n <div class=\"sb-modal-content\">\n <div class=\"ui grid\">\n <div class=\"twelve wide column sb-checkbox-tnc mt-10\">\n <div class=\"sb-checkbox sb-checkbox-primary font-italic p-0 m-0\"><input [(ngModel)]=\"terms\" id=\"termAndConditions\"\n name=\"example\" type=\"checkbox\">\n <label for=\"termAndConditions\" class=\"fsmall pl-32\">\n <div class=\"d-flex flex-ai-center\">\n <span class=\"sb-required\">*</span><span\n class=\"font-weight-bold mb-4 d-block\">\"{{configService.labelConfig?.lbl?.iAgreeSubmit}}</span>\n </div>\n <div class=\"sb-color-gray-300\">{{configService.labelConfig?.lbl?.iconfirmContent}}<a\n class=\"sb-color-primary font-weight-bold cursor-pointer\" href=\"https://creativecommons.org/licenses\" target=\"_blank\" > {{configService.labelConfig?.lbl?.createCommonFramework}}</a>\n {{configService.labelConfig?.lbl?.accordance}} \n <a class=\"sb-color-primary font-weight-bold cursor-pointer\" href=\"{{contentPolicyUrl}}\" target=\"_blank\" >{{configService.labelConfig?.lbl?.contentPolicy}}</a> {{configService.labelConfig?.lbl?.privacyRights}}\"</div>\n </label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button type=\"button\" class=\"sb-btn sb-btn-normal\" [ngClass]=\"!terms ? 'sb-btn-disabled' : 'sb-btn-primary'\" [disabled]=\"!terms\"\n (click)=\"sendForReview()\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', this.telemetryService.telemetryPageId,{key: 'dialog_id', value: 'accepting_terms_conditions','termAndConditions' : terms})\">\n {{configService.labelConfig?.button_labels?.submit_btn_label}}\n </button>\n </div>\n </sui-modal>\n <sui-modal *ngIf='showPreview' [mustScroll]=\"false\" [isClosable]=\"true\" [transitionDuration]=\"0\" [size]=\"'large'\"\n class=\"sb-modal overflow-modal preview-modal\" appBodyScroll (dismissed)=\"showPreview = !showPreview;\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.questionSetPreview}}\n </div>\n <div class=\"sb-modal-content\">\n <div class=\"br-2 b-1-100\" id=\"previewPlayerContainer\" tabindex=\"0\" cdkTrapFocus>\n <lib-quml-player [questionSetHierarchy]=\"collectionTreeNodes?.data\"></lib-quml-player>\n </div>\n </div>\n </sui-modal>\n <lib-template *ngIf='showQuestionTemplatePopup' [templateList]=\"templateList\"\n (templateSelection)=\"handleTemplateSelection($event)\">\n </lib-template>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'library'\">\n <lib-library [libraryInput]=\"libraryComponentInput\" (libraryEmitter)=\"libraryEventListener($event)\">\n </lib-library>\n </ng-container>\n <ng-container *ngSwitchCase=\"'question'\">\n <lib-question [questionInput]=\"questionComponentInput\" [leafFormConfig]=\"leafFormConfig\" (questionEmitter)=\"questionEventListener($event)\">\n </lib-question>\n </ng-container>\n <ng-container *ngSwitchCase=\"'pagination'\">\n <lib-assign-page-number (assignPageEmitter)=\"assignPageEmitterListener($event)\"></lib-assign-page-number>\n </ng-container>\n <ng-container *ngSwitchCase=\"'progressStatus'\">\n <lib-progress-status (assignPageEmitter)=\"assignPageEmitterListener($event)\"></lib-progress-status>\n </ng-container>\n</ng-container>\n<ng-container *ngIf=\"addCollaborator\">\n <lib-manage-collaborator [addCollaborator]=\"addCollaborator\" [collectionId]=\"collectionId\" (modalDismissEmitter)=\"toggleCollaboratorModalPoup()\"></lib-manage-collaborator>\n</ng-container>\n<sui-modal *ngIf=\"showReviewModal\" [mustScroll]=\"true\" [isClosable]=\"false\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll #modal (dismissed)=\"showReviewModal = false;\">\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.reviewComments}}\n </div>\n <div class=\"sb-modal-content\">\n <div class=\"sb-field\">\n <label>{{configService.labelConfig?.lbl?.comments}}</label>\n <textarea disabled=\"disabled\" type=\"text\" class=\"wmd-input width-100 sb-form-control p-10 sb-disabled-textarea\" id=\"wmd-input\" [(ngModel)]=\"contentComment\" name=\"rejectedComment\"></textarea>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"modal.deny('denied')\"\n libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('close','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'review_comments'})\">{{configService.labelConfig?.button_labels?.close_btn_label}}</button>\n </div>\n</sui-modal>\n\n <lib-csv-upload *ngIf=\"showCsvUploadPopup\" [isCreateCsv]= \"isCreateCsv\" (csvUploadEmitter)= \"hanndleCsvEmitter($event)\" [collectionId]=\"collectionId\">\n </lib-csv-upload>\n\n", styles: [".fancytree-helper-hidden{display:none}.fancytree-helper-indeterminate-cb{color:#777}.fancytree-helper-disabled{color:silver}.fancytree-helper-spin{animation:spin 1s infinite linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}ul.fancytree-container{font-family:inherit;font-size:10pt;white-space:nowrap;padding:3px;margin:0;background-color:#fff;border:1px dotted gray;min-height:0;position:relative}ul.fancytree-container ul{padding:0 0 0 16px;margin:0}ul.fancytree-container ul>li:before{content:none}ul.fancytree-container li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}ul.fancytree-container li.fancytree-lastsib{background-image:none}.ui-fancytree-disabled ul.fancytree-container{opacity:.5;background-color:silver}ul.fancytree-connectors.fancytree-container li{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPcAAAAAANPT0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAgxAP8JHPgvAMGDCA0iXFiQ4UKFDglCjChwIkWLETE61MiQ40OKEkEO9JhQZEWTDRcGBAA7);background-position:0 0}ul.fancytree-container li.fancytree-lastsib,ul.fancytree-no-connector>li{background-image:none}li.fancytree-animating{position:relative}#fancytree-drop-marker,span.fancytree-checkbox,span.fancytree-drag-helper-img,span.fancytree-empty,span.fancytree-expander,span.fancytree-icon,span.fancytree-vline{width:16px;height:16px;display:inline-block;vertical-align:top;background-repeat:no-repeat;background-image:url(data:image/gif;base64,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);background-position:0 0}span.fancytree-checkbox,span.fancytree-custom-icon,span.fancytree-expander,span.fancytree-icon{margin-top:0}span.fancytree-custom-icon{width:16px;height:16px;display:inline-block;margin-left:3px;background-position:0 0}img.fancytree-icon{width:16px;height:16px;margin-left:3px;margin-top:0;vertical-align:top;border-style:none}span.fancytree-expander{cursor:pointer}.fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{background-image:none;cursor:default}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(data:image/gif;base64,R0lGODlhYADIAPcAAAAAAAAYMQAhOQgIawAQcwwYdxApQhgxShgxUiExSikxQiAzeyFCWilCWj1GVjlKa0JSY0pSa0JXc1JSc1pjY1Jje1pje2Nra3NzawAplAA5pQBCpQBCrQBaxghjxgBr1gBz3gB73lJahFJajFpalFpanFpapUJznEJ7lF5vg1JzlFp7lFpjtVJ7rWNjlGNjnGd3mHNzjHN7iHd7nHt7lGtrvWtzrXN7tXt7vSGlIXOtKULOY1LWawCE5wCM9wCc/wic/xiU9xil/yGEzjGMziGc5zGl50KElEqElEqMlEqUjFKMlFqEnFKcjFKUlFqcnFqErVKMtVKlhFKthFq1hGOEnGuEnGOEqWuMpWuMtWuUpWucrWuUtXuEpXuMpXOMvXuEvXOUpXOUrXOcrXuUrXOUtXuctWO1jGO1lGu1nHO9nHOlrXOtpXutpVKU1kK173uMxnucznOlznulxnutxnul1nul3krG91rG/5wAALtVUP8AAP8ICP8UFP8/P/9aWv9zc4O9NpC9WoSEhIyMjISUnIyUnJSUlISEtYyUpYyktYWwo5C2uaWlnK2lnKmpqaWlua2ttbWlpbW1tb29vYSXyIOuyYiwz5S1ypGy25m61oOz5Ki11rW1xrW9xr29xpTnpbXvvZ/G24fH7orF/5TO/5/D9JzO/5TW/5zW/6nK2q3O3rjA2bXa2q3G563G763O56XW/63W/63e/7XO57rO7L3W57XW/7XZ87Xe/73e/7Xvxr3vxq3n/7Xn/73n/9Ozr/+QkP+cnP+9vcbGvcbGxsbGzs7Ozs7O1tbOztPT09bW1tbW3t7e3sbb6cbe/9bW59be597e597e78731tb33sbn/8bv/8zm887n/87v/873/9bn99bv99bv/97v/9735973///Kyv/W1v/e3ufn3ufn5+Ln7+/v7+fv9+/v9+f35+f/7+//7+f//+/39+/3/+//9/f39/f3///39////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAABgAMgAAAj/AP/9W1asoMFiAhMmJHiwoEKFDBs+XNjQ4cSBFRFejHjw4r9i5kKKfKTxIUiRIUlePIlS5USWI0sqhJlSZkKa5lyaNNesZ89H6Gx+5OmzWaOgL4n6BCoUZFGjSHc+ZZr06dGmPInmlBf1ptZm0h5xtelUq9iuAp024xl2rFSzbmd+bYt2aFaej+rFTStybblH8/baXYtXL1qWfgELPkm4Wd7Ffc39DXwYHcqchAYRkknMcsvMm2d6Hgma8+iUpUVffpQ6YefVrdN6Hr1sWTOZlCzP7mkbt+6Q6JrZbkZJ4aff5oILv60wd3Lgy4kbR668d3Ou6LJrz1785vbv6LoL/ySmDrx23NjNi/9H3nx29O7DX3cvbz2l9N/rzzevP+F9+vbht11/Av3HX4DyJKhggvUguOCCDj6YYIQSUvighRA2p5eEE2rIoTwNeshhiP5tKCGJBZr4IIr/UKLigiy6yOCMetm34Y0gEtgijjnWKCKOPpY4Y486ypgjkTbWo6SSICqZZD30LLnkJBpKqdeST0ZpJZUlWtlkjEtqKSWXKX65JIjrTWLllU4qpOaZW3oo5ZdpzhmnkHa22eWaegr0Jp8s/slnnYAGWqihha5XTCSPHOIoIY4+EolMizb6aKSTzsSoo4dAeoiklG566aeZ3iRqp5iGaimqpArl0auwxv8q66y01vqPMWbkaoYxsOKqK6+v+porsB4Ju2uvuh4bbLLEXmSGKKqIIooZsD4b7bTVQistta9au22213LrkbfYesSIGJhgogkmZIQhhrvvtsuIIuiqy6678IYhL73prtvuu2LEG8a89fqLb8D6Dsyvvf/mu2/B9wIsMCNkYMNNNBZj44zGztjiMS76WowxNxpz7LEtIFd8ccYbO9PxxyGvTHLLL6Mc88glu3xyyiKzbDLMZJwsNC20rGK0Kqu0K/TJRBu9CtJKL21L00cnHYbUUxddddRLU/201Vh7jbQYZBTt9deqpK0K2WZrXbXaa5e9ytlIw8323G6jrfbddD//vbfcfavtirtOF86K2tq+C0vhRh+eduJhLM6449FGqzjjq1AOueSGI2555JhrHm0YkcP9uLSicCIt4aZfK63qorBuOuqpry6G33DTDrvsuaO+++2t6756GMJrIoomyCMfO/GvS2t88sqT7rvzx0O//PTHV5/89c1nD73x0nf/vPWkf4+8ut9roYX565qvPvvoQ/+++fEnP//39SN/P/T5a6IFFpm4BCYEeIkCGtCA/wvgAAd4wAMmkIAMbGABH7hACSIQgBC04AQxWEENqu8SljAgHQoYQgNu4n8gTGEJS1jAE2JBhSmMYQtRGMIakvCALoThCnFIQxjK8BIupIMQ/4U4hyEakQ7/OyIdiqjEJB6RiUd0ohGhaEQpDpGKQ7QiEZVIByxggQlgDKMYxejFMZoxjGU8oxnTqEYyfrGNboQjGW1Fxzra8Y54zKNHIAABWvFRj4AM5ENSEIAEzIqQhhTkq44xiUc04hGOfMQkjjERRkYykpOcCCdwwIJOepIEAQiAJxSySU9+MpSjTIglH4lJSj5klZB8ZCYVcgxKmGNN5qCEKwVSy1taKZe7/AcnKlGLb7gjHMfshgEC8ABSEtOYyAyHMplJS1viUpfV9KWUgKmQSGjzl5Ho5je3Gc6E3MAV2UinOglpABso5JzqXGcA2ilOvehCF7jQhZLMUf9OgXjTnvjUZz34qZBGzKNQjSjoQQGV0ISY4J66wIYunoGJUCrCBAp56D0lSlGLYjQhBpUHLmSBi1uMVEkNFUhIR1rSk9Yjpf84xJWGpJdDKESmR8KRTRNSAllUIQBVwAUuEBAACeiiBArp6U+DOtSiHvWm9YhFLGQh1Vi8Ihby2KlAZCpVqkr1qlkt6IcSBNNGjFUeMCXBKawQyjKoYJ6wiAUJFKJWtgbArXCVq1hJMQq++nUU8yirPP7618DelCvP+U1YE3IIxP7GMosVCAlGcQoJBEAAoRQDX+eakMlW9rKZ3exhSUHaUpCWtOjQakwHW9rTkiK1BS3PY5MT2X//NEK2iaWtakdAWlw0IJQPSAVpRaAQ3pLCt8AVLimIC1J1pEIW1viFLFKRilKgNbbPje50q3tdxjo2Obrp7la/mx3awlQEp0hFLHDBgAPElbrMFQh61cte98YCvodFxylmwd9ZxCI7qm2sfvvrXwAr5BHNcI9jDpxg8yw4ITHQxCx84QtuaOMXvpiFJmKgkAhPuMIXzvCGGZyd/voiOw8WCIJLzN8TB+cRM6FEg7dDHErJGDw1VggkvKCKa1xjGz6+hiq8AAkd89jHQPbxkIt8kxt/J8dNnrF2oHwTRx6iEVf+VFOsjGUs6yQhkIjBBMZM5hjA+CGQSAGZy3zmmXA5/8tfTsubvewqRdr5znjOs573zOc+v8oci7oySczhEUBHQtAg8cg0OAGHGtQADpyYhqIZ7WhIS/oihkY0oTEd6EcmeiLLeISME0ScSCQD1KJuBqkpYeqJsAIOmWBFN7pRC0yAgRWuhrWsaW1rXD8k1KOWR6lP/etUr7rVEEHwmhyzDIUkQ9lWYrZCWAEGV3DDG9jOhjdccetpV/va2d52txcCbSlJOyHPbsayH9FsgeRE3XwK9ab5Ce81yVsg06j2M6zxDGzse9+cAMOl8+2Kf/ub39YI+KXfrSSDK+ne/6C3kvjt74c/YtPFcNFMmeQkjWQcSmyik0aGeYt75jOg9/+sBCcEQnKTuzzlK/+IxvN5clx0PC0uokcuai5QSmgEwWd9MNDH+mBEZMKksrDEAQ5giZHKIhOIEEgXjj5SpTPd6VBX8TLoQVKSmtSkwj4z0L/OUrA/+BDo4FDaubJTtC/oHQ+C7T9eYIqqHiCUB/iqKV4gELp/9e4ByLtV977VtHe1qlJle+HlgXjEKz6muX2sZdoO3sg/Z6cu2IRfAY8Av26C7//IvF+JGoDO9/XzW01OX1fv15BQHh2sZ73rtV5e3dh+GQ1lt+0Tmx3cS90Op1U6AixxWjt04ffBP8Dwi3982y4DHa0lhWlfG2qVPj/600dH9VuUm93bnhLdAX//7SvPne5A4gulSMUpoGuN6Z6iFFlg8vnTn932qx/+TP5E99U/C2vc9xTh0R36lx3853/qF4AC4RjHsB3gpX2NIA0J+AgLqB0NiHsQ+A/MMAOXEAsExoGxcAkzwAwCkYEbyF+y0F8fGIIROIH9JQvZkQwPuIIsNgsuiA4weIEfIYHgcQxfVgw6+B08KBOdMAOa4Au/cIQYhgkz0AkKMYRFiIRJuIRuNoHbEYRTuINx5oOTsAwhsQyNtGVb2IVfOBGdQANkoArYgA2qkAhS+BCTMANnmIaiwIZMaBKSxIXm4IVxloNhmIdjOBHEgWWEkGoeEYidQogXgQyQIAMWYAE0/wAJyOARisiIjvgIkXgRhjiIMlaIlCCIiOhnoKhnylAroxiKgFSKs4KKsqKKpnhHrAgrr/gqsdiKtjKLF2GLE4GLtLiKpNiLu+iKvpiKvwiMtKKLCmGMw3iLwciLyUhHyCgQz/gP0diM0EiKynCN2DiL2ZiN1CiLy9iNihSN0wiOxfiN5HiK5niOeSSO6hiO6diOdjSO8DiP9FiP9niPu3gI7SYr+siPg/CPADkIqsVYAQmQA3lT+xgr/Tgr/9hmsNKQsbIMBfmPzbAREzkIFekRECkrGxkrABkaD/mPIOkRjyCS/0gmE1GSmnGSsAIp/1hnCeGSgwCTAlGQh7BpF/9hkzg5EQFJCB75kR7JaocgkOXwKoMglAK5kw9hkgCZkTy5kk3pEZSwksG0EgBZlTxJDODHGoOQkAoxCFpJCSrplEsZkDdplGaplA8xlDD1KmzJkfonkWepkXGZlGipGTT5Dx+Zl//QDIOglpj4lxxZGyOpkYSZl//YTyGpmBFZK16pkTnBkJHJj2QJKws5jIdQmW6pmfjYmZ75maAZmqI5mqTpEZepkI85EUM5kQcZUxfZmluVmhdxmiHpkGhpm6B2kZwpkRPJmTU5CLiZk8DJkCKJmMUJKyqZGYOAkg+RnCz5KjKZl9H5kwYJmL9ZnXepGdSpnQ+JlIdQlBrpndb/qZdQSZEaWZ4YKZVUGSvFcJUeGZZcKZtguZXmKZzYeZ73aZqD0Jb6yZ88WZdzmZMAOp57SZ2FWYiCKSt+OZ4J0ZXLcKA8eZg/yZjnSaGvIpsbIZnByZOTqZC+qZoYCoqZSSsjWpomeqIomqL1OAyA0KLiMBGHsibzuAd7ACvD4Ad8QKN70Ad/8KIJEaNWAo86WqMXAQg5yqN/8Ad9sKPC8KNAuiRCqqN5MBHBwAd9AAjkoCT0oKRW6qNPCqXtOKRTqhDk0Ad8EAxhoqQ8ugd+IBCHkgNBGqZS+hDCYKVZCiVqOgzDYKXj8A+FkgNwKiVRSqNjmhDBsAd/ECVb2gd9hzAMSmKmTSolgVoPgDqpSjKoe1CoAvEHiIqnjOqoSsKpgOCnSwKolGqqcSqneaCp/3CofrCojSolSxqppVqplgqm8LiqEzEMjJqnUuKqbiqpqCqjUeoRnNoHfgCqSlKmfNCkpCqphYKpFyEOZvoHyioMONqmwfqlmMqqAiEMS2qlarqjPvqsT/86o5nqrQIhDn6wpDSKrH3qpNw6j7oKK+MgDPharvJ6rir6EF96qf0asJ2ZqoGkDvJwEe2wDuzQDnaWsAtbR/VwAwRwA/XwEA7LsHQEDQNQADiYEOsACtSgsIr0sSHLDnRUDwSQshWrECQrsrbCCgOwsR37D+CwAzwQCuuAsYBUszebs7aCsir7EDyLszoLK1LCCgRQAAtwaQJRs7zQs0V7EWayJglCszvwtEQbK2aSAVx7JgfrtFAbK3GgAWRbtmS7AUxbDTtQDbvAA9TQDvEAK/NQBx5Qt3Zrt3VwsGrLtm4Lt3JbBxwQuIIruHn7D3vbtm8bt6/iAR3QuI7ruG7/oA5Nu7bVwAtrq7geUQ93u7l1W7E1Ww2Ve7lGy7iP+7ge4LmUa7nVgLkXsQkg8Lqw+7ohwA3t9rlPm7iwIg+b8AG827u9uwnnYLWV27esOxG667vIuwmEZrvEGytSkgs+4ANB8A1OCbZZm7tfEgmT8AnGMAnGgAwiaL0+CysGuyQ9cL5LIg28Ir5RCyu58AM/IATfkJDrYLPXC0j1G7a1Ug/R6wMr67H2O7604g1AIL9eSbIPK0gI3L7OC78/8L8CscB0pA7wUA+a2Q4YzMB4lMEaTL6k8AOkEA0Wm8EC+xDnoA4D1SwlvMIs3MIu7BEGi7AK28EpqrEcOxEta7Is/wyzMiu0AUzDo3m0Sbu0CsG+AgEAKDq2Zlu2aJsQh9u8AIDEJkq6pdu4kTu5oKu6cRvFXNzFXvzFYPzF/4DEZMxnrhu7sDu7tbu2t+u3UYyizxu901u9V6u/Uqyi7xu/88uyP8zCBGzADyHBLEzBFjwRHPzCiJzIivyZUyAFTdAESpAESIACUBBzAoEGaNDIjxzJk1zJEJERHsERBnER3FAPOqAD9aAJlmAJZSAGZVAG/nrKqbzKZPDKsKwQU/AEbOAEWzAwjPDLjNACuKzLvOzLwCzMXrEaroITe6gkghAIS5IO0pwOm6ACTvrM0TzN1YzLWZAFlqAIJ9AIkQB+k/9Qzq40Bd38zeE8zpRQzrOkFktRF0NhFXWhA8/8zKgMUe8wCtv8D/YcCPhcD/rMz9YsEOjMBVyACSdwDMtgJWd20Am90A0tJWdWFj2xFXWhFmxxFjKhA4Hw0YGQz/dksPNQAQLh0c8c0gI90vJQ0gkxBQg9BoyAyY0AfuBXDw8d04yAAo1Q0zaN03zBE+UgY49xGH1BDI5hGCWhJB+9JCZ3C7LwDiZNqk2tJE8d1VP9DzA9BjKNAuBnDaeADeEA1FrNBVy9018d1mNd0ZZhFIlgCBeAAXipEK9hFIaQCHE91wKhCaYs0rrwdVi913290n9dUoFt0GOwBmuw01dGCi3/0At48FKIrdiM3QiODdmS3SLoUA6EkAWaUAkxQAHH0Ayf0BzB0dmZANqiLR0CYQlSUtiycAtTpQ4R0NqvjXSyLQu0nRBUoNiL7dWUoA2ncA2oQNa9TdnALdzETdafIA+SsAJEIAd6EAUwkBvEYBzyMAnQPQfTXd1dYQnyAFElBdVWlQrpUNv/AN7ifQvk/Qrmjd7/0Nts0AZtgAJXZtMuslPyTd/27dM3vVP3QQxXMASYQAdFEAWSQA8BAgxQQOAGjuAKnhBloA4QZVJTFQuncArn0Ef/IAYUfk8WTlUZvuG8Pd/0fQTghxKZTQUm3gYobksikdn3kQyJ8AZG8AZ3/1AIxFAk8kDjNo7jOk4gEw7bsiALdWcKGu4AAjHk+FTksnAKsYDk56DkAkEF9N0GaoAEPQ1+H6ffV57lW/4JWlkPAK4X+zkKo6AIGCAPES4kZ57ma97m/zDhO5cLsi1VplAKpTDlAuHhO8feUR7les7nVY7lWI4EKR7jXq4Gh57oIUHmZUIPjQApjhAlRaIXkk7pWiIeZfAOf53bSP5+ppAOVN7phX3hSK7n6EDl8d0Gi6AGi5AE9/3TXv7qsT7r/50iYWIlTwJyY5IQKsAM76AO6XAOxn7s6XAMCiAQwT7s0nzsxp7sy17lalDtapAEBfEdDUUF1n7t2b4dDSUocIaCKF7SJ26lAipQARUQAREAAQ7w7gow1eee7useAQ7g7g4Q77x9BmmQBtc+CDJgCALf06Ud35hc7UkA8AJvCASv64CCkhr38KHYCozQBksgKxRv8bBSKZziKaCiKavi8aWyyCRf8iZ/8iif8iq/8izf8i7/8jAf8zI/8zRf8zZ/8zif8+QYEAA7);margin-top:0}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-n span.fancytree-expander:hover{background-position:0 -64px}.fancytree-connectors .fancytree-exp-nl span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander:hover{background-position:-16px -64px}.fancytree-exp-c span.fancytree-expander{background-position:0 -80px}.fancytree-exp-c span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-cl span.fancytree-expander{background-position:0 -96px}.fancytree-exp-cl span.fancytree-expander:hover{background-position:-16px -96px}.fancytree-exp-cd span.fancytree-expander{background-position:-64px -80px}.fancytree-exp-cd span.fancytree-expander:hover{background-position:-80px -80px}.fancytree-exp-cdl span.fancytree-expander{background-position:-64px -96px}.fancytree-exp-cdl span.fancytree-expander:hover{background-position:-80px -96px}.fancytree-exp-e span.fancytree-expander,.fancytree-exp-ed span.fancytree-expander{background-position:-32px -80px}.fancytree-exp-e span.fancytree-expander:hover,.fancytree-exp-ed span.fancytree-expander:hover{background-position:-48px -80px}.fancytree-exp-edl span.fancytree-expander,.fancytree-exp-el span.fancytree-expander{background-position:-32px -96px}.fancytree-exp-edl span.fancytree-expander:hover,.fancytree-exp-el span.fancytree-expander:hover{background-position:-48px -96px}.fancytree-fade-expander span.fancytree-expander{transition:opacity 1.5s;opacity:0}.fancytree-fade-expander .fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander [class*=fancytree-statusnode-] span.fancytree-expander,.fancytree-fade-expander.fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander:hover span.fancytree-expander{transition:opacity .6s;opacity:1}span.fancytree-checkbox{margin-left:3px;background-position:0 -32px}span.fancytree-checkbox:hover{background-position:-16px -32px}span.fancytree-checkbox.fancytree-radio{background-position:0 -48px}span.fancytree-checkbox.fancytree-radio:hover{background-position:-16px -48px}.fancytree-partsel span.fancytree-checkbox{background-position:-64px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -32px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio{background-position:-64px -48px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio:hover{background-position:-80px -48px}.fancytree-selected span.fancytree-checkbox{background-position:-32px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -32px}.fancytree-selected span.fancytree-checkbox.fancytree-radio{background-position:-32px -48px}.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-48px -48px}.fancytree-unselectable span.fancytree-checkbox{opacity:.4}.fancytree-unselectable span.fancytree-checkbox:hover{background-position:0 -32px}.fancytree-unselectable span.fancytree-checkbox.fancytree-radio:hover{background-position:0 -48px}.fancytree-unselectable.fancytree-partsel span.fancytree-checkbox:hover{background-position:-64px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox:hover{background-position:-32px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-32px -48px}.fancytree-container.fancytree-checkbox-auto-hide span.fancytree-checkbox{visibility:hidden}.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node.fancytree-selected span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node:hover span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr.fancytree-selected td span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr:hover td span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus .fancytree-node.fancytree-active span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus tr.fancytree-active td span.fancytree-checkbox{visibility:unset}span.fancytree-icon{margin-left:3px;background-position:0 0}.fancytree-ico-c span.fancytree-icon:hover{background-position:-16px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon{background-position:-32px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon:hover{background-position:-48px 0}.fancytree-ico-e span.fancytree-icon{background-position:-64px 0}.fancytree-ico-e span.fancytree-icon:hover{background-position:-80px 0}.fancytree-ico-cf span.fancytree-icon{background-position:0 -16px}.fancytree-ico-cf span.fancytree-icon:hover{background-position:-16px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon{background-position:-32px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon:hover{background-position:-48px -16px}.fancytree-ico-ef span.fancytree-icon{background-position:-64px -16px}.fancytree-ico-ef span.fancytree-icon:hover{background-position:-80px -16px}.fancytree-loading span.fancytree-expander,.fancytree-loading span.fancytree-expander:hover,.fancytree-statusnode-loading span.fancytree-icon,.fancytree-statusnode-loading span.fancytree-icon:hover,span.fancytree-icon.fancytree-icon-loading{background-image:url(data:image/gif;base64,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);background-position:0 0}.fancytree-statusnode-error span.fancytree-icon,.fancytree-statusnode-error span.fancytree-icon:hover{background-position:0 -112px}span.fancytree-node{display:inherit;width:100%;margin-top:1px;min-height:16px}span.fancytree-title{color:#000;cursor:pointer;display:inline-block;vertical-align:top;min-height:16px;padding:0 3px;margin:0 0 0 3px;border:1px solid transparent;border-radius:0}span.fancytree-node.fancytree-error span.fancytree-title{color:red}span.fancytree-childcounter{color:#fff;background:#337ab7;border:1px solid gray;border-radius:10px;padding:2px;text-align:center}div.fancytree-drag-helper span.fancytree-childcounter,div.fancytree-drag-helper span.fancytree-dnd-modifier{display:inline-block;color:#fff;background:#337ab7;border:1px solid gray;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}div.fancytree-drag-helper span.fancytree-childcounter{position:absolute;top:-6px;right:-6px}div.fancytree-drag-helper span.fancytree-dnd-modifier{background:#5cb85c;border:none;font-weight:bolder}div.fancytree-drag-helper.fancytree-drop-accept span.fancytree-drag-helper-img{background-position:-32px -112px}div.fancytree-drag-helper.fancytree-drop-reject span.fancytree-drag-helper-img{background-position:-16px -112px}#fancytree-drop-marker{width:32px;position:absolute;background-position:0 -128px;margin:0}#fancytree-drop-marker.fancytree-drop-after,#fancytree-drop-marker.fancytree-drop-before{width:64px;background-position:0 -144px}#fancytree-drop-marker.fancytree-drop-copy{background-position:-64px -128px}#fancytree-drop-marker.fancytree-drop-move{background-position:-32px -128px}span.fancytree-drag-source.fancytree-drag-remove{opacity:.15}.fancytree-container.fancytree-rtl span.fancytree-connector,.fancytree-container.fancytree-rtl span.fancytree-drag-helper-img,.fancytree-container.fancytree-rtl span.fancytree-expander,.fancytree-container.fancytree-rtl span.fancytree-icon{background-image:url(data:image/gif;base64,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)}.fancytree-container.fancytree-rtl .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl .fancytree-exp-nl span.fancytree-expander{background-image:none}.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(data:image/gif;base64,R0lGODlhYADIAPcAAAAAAAAYMQAhOQAQdAgZehUFahApQhgxShgxUiExSikxQiFCWilCWj1GVjlKa0JSY0pSa0JXc1JSc1pjY1Jje1pje2Nra3NzawAplx8wjQQ5pwBCrg5ayABiyQBr2AB04FJahFJajFpalFpanFpapUJznEJ7lF5vg1JzlFp7lFpjtVJ7rWNjlGNjnGd3mHNzjHN7iHd7nHt7lGtrvWtzrXN7tXp7tXt7vSGlIXOtKULOYUzWaACA5gCN+QCU+gCc/wSl/SGEzjGMziGc5zGl50KElEqElEqMlEqUjFKMlFqEnFKcjFKUlFqcnFqErVKMtVKlhFKthFq1hGOEnGuEnGOEqWuMpWuMtWuUpWucrWuUtXuEpXuMpXOMvXuEvXOUpXOUrXOcrXuUrXOUtXuctWO1jGO1lGu1nHO9nHOlrXOtpXutpU+U1kK173uMxnOlznulxnutxnmi1nul3nm17UrG91rG/3rO/ZwAALtVUP8AAP8ICP8UFP8/P/9aWv9zc4O9NpC9WoSEhIyMjISUnIyUnJSUlISEtYyUpYyktYWwo5C2uaWlnK2lnKmpqaWluayttbWlpbW1tbS1vr29vYSXyIOuyYiwz5S1ypGy25m61oOz5Ki11rW1xrW9xry9xrW02LW835LnprXvv5/G24fH7orF/5TO/5/D9JzO/5TW/5zW/6nK2q3O3rjA2bXa2q3G563G763O56XW/63W/63e/7XO57rO7L3W57XW/7XZ87Pe/73e/7Lwxrvwx63n/7Xn/73n/9Ozr/+QkP+cnP+9vcbGvcbGxsbGzs7OzsXG0M7O1tbOztPT09TW09bW1tbW3t3e3cbb6cbe/9LX4Nbe59nW6N7e597e78/318bn/8bv/8zm887n/87v/873/9/g6tbn99bv99Xu/t7v/9T44N/25973///Kyv/W1v/e3uHd7+fn3ufn5+Ln7+bo5e/v7+fv9+Ds++/v9+7v+ej26uf//+/39+j/8O7/+ff39/b2//H88f/39/7//gAAACH5BAEAAP8ALAAAAABgAMgAAAj/AP/9e3asoMFjAhMmJHiwoEKFDBs+XNjQ4cSBFRFejHjw4r9j7UKKdKTxIUiRIUlePIlS5USWI0sqhJlSZkKa7VyabBetZ09H8Gx+5OkzGqOgL4n6BCoUZFGjSHc+ZZr06dGmPInm1Bf1ptZo1xxxtelUq9iuAp1G4xl2rFSzbmd+bYt2aFaejvzFTStyLTtH+/baXYtXL1qWfgELPkk4Wt7Ffdv9DXwYHsqcgwQNkmnMcsvMm2d6Hgma8+iUpUVfdpQ6YefVrdN6Hv3sWTSZlCzP7mkbt+6Q8KLZjkZJ4aff7YILv60wd3Lgy4kbR668d3Ou8LJrz1785vbv8LoL/zQ2D7x23NjNi/9H3nx29O7DX3evbz2l9N/rzzevP+F9+vbht11/Av3HX4D6JKhggv4guOCCDj6YYIQSUvighRA2p5eEE2rIoT4NeshhiP5tKCGJBZr4IIr/UKLigiy6yOCMetm34Y0gEtgijjnWKCKOPpY4Y486ypgjkTb6o6SSICqZpD/9LLmkJBpKqdeST0ZpJZUlWtlkjEtqKSWXKX65JIjrSWLllU4qpOaZW3oo5ZdpzhmnkHa22eWaegr0Jp8s/slnnYAGWqihha53DCSOGOLoII46AolMizb6aKSTzsSoo4ZAaoiklG566aeZ3iRqp5iGaimqpArl0auwxv8q66y01voPMmTkSgYysOKqK6+v+porsB4Ju2uvuh4bbLLEXkQGKayQQgoZsD4b7bTVQistta9au22213LrkbfYerQIGJhgogkmYnwBhrvvtrtIIuiqy6678H4hL73prtvuu2DE+8W89fqLb8D6Dsyvvf/mu2/B9wIs8CJicBNONRZzI43G0uDisS76WoxxOBpz7DEuIFd8ccYbS9PxxyGvTHLLL6Mc88glu3xyyiKzbDLMYpwstC22tGI0K620K/TJRBvdCtJKL41L00cn/YXUUxddddRLU/201Vh7jTQYYhTt9despM0K2WZrXbXaa5fdytlIw8323G6jrfbddD//vbfcfasNi7tOF+6K2tq+K0vhRh+eduJfLM6449FGqzjjrVAOueSGI2555JhrHu0XkcP9uLSkcCIt4aZfK63qpLBuOuqprw6G33DTDrvsuaO+++2t6776F8JrQoomyCMfO/GvS2t88sqT7rvzx0O//PTHV5/89c1nD73x0nf/vPWkf4+8ut9jgYX565qvPvvoQ/+++fEnP//39SN/P/T5a4KFFZm4BCYEeIkCGtCA/wvgAAd4wAMmkIAMbGABH7hACSIQgBC04AQxWEENqu8SljBgHAoYQgNu4n8gTGEJS1jAE1pBhSmMYQtRGMIakvCALoThCnFIQxjK8BIujIMQ/4UIhyEaMQ7/O2IciqjEJB6RiUd0ohGhaEQpDpGKQ7QiEZUYBytYQQlgDKMYxejFMZoxjGU8oxnTqEYyfrGNboQjGW1Fxzra8Y54zKNHHvAAWvFRj4AM5ENOEIAEzIqQhhTkq5IhCUcwwhGOdIQkkjERRkYykpOcCCduoIJOelIEAQiAJxSySU9+MpSjTIglH4lJSj5klZB8ZCYVkgxKtGNN7aCEKwVSy1taKZe7/AcnKnELctjjHMcUhwEC4ABSEtOYyDyHMplJS1viUpfV9KWUgKkQSGjzl5Do5je3Gc6E1AAW3UinOglpABoo5JzqXGcA2ilOvfCCF7rghZLaUf9OgXjTnvjUpz/4qRBG7KNQjCjoQQGV0ISQ4J684AYvpoGJUCaCBAp56D0lSlGLYjQhBtWHLmihi1yMVEkNFUhIR1rSk/ojpf8wxJWGpBdDKESmR8KRTRMyAlpMIQBT0IUuEBCACPBiBArp6U+DOtSiHvWm/pjFLGgh1VnEYhb62KlAZCpVqkr1qlkt6IcSBFNGjFUfMBVBKqgQyjGgYJ6ymIUIFKJWtgbArXCVq1hNUQq++rUU+yirPv7618DelCvP+U1YE2IIxP7GMosViAhKkYoIBEAAoQQDX+eakMlW9rKZ3exhTUHaU5CWtPDQakwHW9rTmiK1BS3PY5MT2X//MEK2iaWtakNAWl0wIJQOWAVpQaAQ3prCt8AVrimIC9J5rIIW2ggGLVaxilOgNbbPje50q3tdxjo2Obrp7la/mx3awhQEqVjFLHSxgAPElbrMFQh61cte984CvoeFRypqwd9azCI7qm2sfvvrXwArxBHRcI9jDpxg8yw4IS/QRC2AAYxweCMYwKiFJl6gkAhPuMIXzvCGGZyd/gIjOw8WCIJLzN8TB8cRM6FEg7dDHErJGDw1VsgjuMCKbWzjGz7eBiu48Agd89jHQPbxkIt8kxt/J8dNnrF2oHwTRxqCEVf+VFOsjGUs6yQhj3iBBMZM5hfA+CGPOAGZy3zmmXA5/8tfTsubvewqRdr5znjOs573zOc+v6odi7oySdrhEUBDQtAg8Qg2OOGGGczADZzAhqIZ7WhIS/oihkY0oTEd6EcmeiLPcISME0QcSDAD1KKOBqkpYeqJuMINmXCFOMRxC0x4wRWuhrWsaW1rXD8k1KPWR6lP/etUr7rVEEHwmhzzDIUwQ9lWYrZCXOEFWIRjHNjuxjhgcetpV/va2d52txcCbSlJOyHPjsayHdFsgeRE3XwK9ab5Ce81yVsg2Kj2NLQxDW7se9+c8MKl8w2Lf/ub39oI+KXfrSSDK+ne/6C3kvjt74c7YtPHcNFMmeQkjWQcSmyik0aGmYt75jOg9/+sBCcEQnKTuzzlK/+IxvN5cl10PC0u6scuai5QSmgEwWd9MNDH+uBDZMKktLDEAQ5giZHSIhOHEMgWjj5SpTPd6VBX8TP6QVKSmtSkwj4z0L/OUrA/2BDw4FDaubJTtC/oHg+C7T9agIqqHiCUB/gqKlogELp/9e4ByLtV977VtHe1qlJle+H1gXjEKz6muX2sZdoO3sg/Z6cs2IRfAY8Av26C7//IvF+JGoDO9/XzW01OX1fv15BQHh6sZ73rtV5e3dj+GQ1lt+0Tmx3cS30Op1U6Aixx2jls4ffBP8Dwi3982z4DHq01hWlfG2qVPj/604dH9VuUm93bnhLdAX//7SvPne48ogunWEUqoKuN6abiFFdg8vnTn932qx/+TP5E99VfC23cNxXh0R36lx3853/qF4AC4RjJsB3gpX2McA0J6AgLqB0NiHsQ+A/QEAOXMAsExoGzcAkxAA0CkYEbyF+00F8fGIIROIH9RQvZwQwPuIIsVgsuCA8weIEfIYHgkQxfdgw6+B08KBOdEAOaAAzBcIQYhgkx0AkKMYRFiIRJuIRuNoHbEYRTuINx5oOS8Awh8QyNtGVb2IVfOBGdIANiwArcwA2sgAhS+BCSEANnmIakwIZMaBKSxIXt4IVxloNhmIdjOBHEgWWDkGoeEYidQogXsQyPAAMVUAEy//AIy+ARisiIjugIkXgRhjiIMlaIlCCIiOhnoKhnzVAroxiKgFSKs4KKsqKKpnhHrAgrr/gqsdiKtjKLF2GLE4GLtLiKpNiLu+iKvpiKvwiMtKKLCmGMw3iLwciLyUhHyCgQz/gP0diM0OgRzXCN2HiN1piN2EiNtbiM3qhI0TiN4ViM4FiOp3iO6JhH47iO4qiO7mhH5BiP9FiP9niP+DiMz6BasLKPsGIIghCQAikI/LhVAymQBflrCbkRC/kQjhCQs/KQgtCPBxmQ0bARFSkIF/kqEhmREAkrx5AZH/kqISmQsSKRIkkmE4GSAamSJhGQnRIrxwCTg/BnADmQNv95kLIykDUJKzzpEewAkIYACZQwkUAplERplIDIkyP5ENHAlEr5KkWZGcG0EgJZlQLxDJohapRgDFEJEVsJfl6ZkzhZaDdpkrICkDD1KmqZk89ACZ/wlQrRDgD5lnEpkyIplyaRl7PylJsWK36Jl7WhlzMxCIM5K5DQlK+SmIQJarXSbrJycY15YO0wmQoRDQ3plJnpZ5hJK52Zj6AZmqI5mqRZmqZ5mqjZiv44K6vpEWc5kAn5mggZK61Jm5upYorpER35KlpZkRv5axn5mxexmyeZm3uJliTJl7DCkoLgkgcWkClJkjQpk9NpljppnWXpkwLZk6/ykxcRlASZlK//Ap5DWZSFCJXnuZ3G+RBTKQhY+ZIB+Z5aqYldSZjzyZVjiZ3IORF0eZ2x0pZpKQhrOZd1CZeN2Z92aZkluZ43oZyAKQh/CSuBCZKGqZWCaaGywpiIyaC/9pi0IpkRWZmeeZsJSKJ79pmygqKpuaIs2qKCVAx/EKPoMBGHsib0qAd6ACvF0Ad7gKN6wAd+MKMJUaNWEo8+mqMX8Qc9CqR+4Ad88KPEMKREuiRG6qN4MBHDsAd88AfqoCT94KRaKqRTSqXueKRXqhDqwAd7MAxh4qRAqgd9IBCHggNFWqZW+hDEoKVdCiVuWgzFoKXp8A+FggN0KiVViqNnmhDDoAd+jRAlX8oHfFAMSqKmUSolheoPhHqpSnKoepCoAuEHjMqnkCqpSgKqfyCoS0KomKqqdWqneOCp/7CoffCokSolT1qpqZqpmkqm8fiqE1EMkNqnUiKrcmqprGqjVeoRoMoHfUCqSpKmexClqGqphcKpF4EOauoHzkoMPBqnxTqmnAqrAkEMT6qlbvqjQjqtU/96o50qrgKBDn3wpDjKrIEqpeBKj74KK+lADPyarva6ri76EGO6qQFbsAbbqrbCD/hQD/xwEfxAD3aksAyrSBLbsArhDzYwADbgD3W0sNkgCvUwEeBAAAVgDXTksSArSCgbshc7AC7LsQlbD6OwAzpgDg8xsgVQAKAQszNbs4HEDzJLszbbsi/LszvgCz6bEOuQAQRAAKFgqLECtDOLtDbLD/xwKBbrEVJ7tD5rtUuCAWArJVnrEfnAD9mwA71QDjpQDkq7ARrwtnD7tnIAK2V7tmm7tv+gD3LQAXzbt30rB/vwKnWLtmrLtnq7AYibuIkLuLGSD2rrC+WgtkNLD2z/wAGWe7mX2wF0+7iR67P+4Legy7cwexGOqwOQK7mC2gGYu7odMLpka7ZHi7r/4AzywAMfcLu4e7t0QLewC7k+Cw504AHCO7zDSwdj+xCD67s2+w7BS7zEa7yysrVUmxDRIA8+0AM9sAtQCyvS67PUoAzKMAnK8AmTAAlLwg/6wL1BO73KAA5LwgPwe74QG71BqwMsKxC0CwQ/8AO7YLT2+7P1e79yir094Lq0orAfK8CzKw/6Ow50hMAp+7P4kMACu78/YMAHbLXH+w/qtg/zm7AaTLEhrBDgcAc/cAcfbLCxogzv4A/0AA4qHMMyPMM03GcV67AprMIrK7Ika7Ix/7y1SZsQOKuzBQsAAtG9QysQS9u0T8urqAkARjy4d8u2Suy2cQu3c7tnRrzF/wDFXvzFYBzGYhzG/1C6p5u0lLu6mKu5qQnFZdy7sku7tpu7uLu7K2rE/4DE1Gu92Ku9TtyiQCzA+bu//SvDEKzAg+zAM6zBG9zBOVzDkBzJklxHUQAFS7AESHAERmACThBzAmEGZlDJl5zJm9zJEJERHsERBnER4eAPOZAD/qAJlmAJYwAGYzAGAvvKsTzLYnDLuKwQUdAEasAEWTAwi3DMi7ACwCzMxGzMyKzMXrEaroITe6gkgQAISxIP2hwPm4ACUnrN2bzN3QzMV3AFlpAIJf/ACERJCZLQzq4UBeV8zum8zu08S2qxFHUxFFZRFzlwzdcMyxB1D6Uwzv/Qz4Dwz/4Q0APtzQIBz1qgBZhQAsnwDFZyZg4N0RJN0VJyZmXRE1tRF2rBFmchEzkACCYNCAB9T/OgD/tAAQJR0teM0gmt0izt0g390GGwCKDMCOAHfv5g0Ti9CCbACDzd0z/NFzzBDjL2GIfRF8bgGIZREkpi0kticrlAC/dg01ONzUpi1Vht0/8QBVoQBjltAuCnDanADedw1GE91mV91mm91hxtGUaBCIVgARegGabBE4xQCIiA13qdEJrgyinNC1/31QIx2LoMUYed1QkRBWGQBmn/INRXZgor8At28FINHdmTbQKVfdmZ3VC5wQ6DcAWaUAkvMAHJEA2f0BzBUdqZgNqqLR0CYQlSYtgjlQtTNQ8QUNu3jXS6TQu8nRBSINmdDX7ekArboApsXdySLdTIrdzMfWafoA+RkAJC8AZ58AQukBvGYBz6IAnYDQfb3d1dYQn6AFElddVWtQrx0Nv/gN7qnQvsHQvuDd//UNxqsAZr4NlF7dM7pd/87d897SI7dR/GUAVBgAlxMARPEAn9ECDC4AQL3uAPHuEJMQbzwNi6MFWzkAqp4A599A9gsOH3ZFIeDuIiTtz7zd9FAH4oodn53eJr8OK2JBIyfh/MgAht/0AEbVAHhGAMRaIPO97jPx7kBKLhuE0LTF53qBDiDSAQSo5PTE4LqTALT+4OUS4QUsDfa4AGRkDU4PdxAe7lYC7mn2AMBl4mAloKpZAIF6APGC4kbf7mcT7n/6DhO7cLui1VqHAKp6DlAlHiO0ffWI7lgC7oXP7lX24EMI7jZY4Gjf7oIeEPB64X/cAIkNIIUVIkmK7phsDpfTIG92DYwf3k74cK8bDlpI7bHv7kgA4PW57fa6AIaKAIR3BlBW7pi27ruK7rRn3pYWIlTwJyY5IQKAAN9zAP8eAOzv7s8ZAMCiAQyb7s2vzszh7t087laNDtaHAEBfEdDSUF3v7t4Yu+HQ0lKHCCKF4y6ijw7hRAARAAAQ/QAPauADbtVvAu7xDQAPXeAPhO3GVwBmfw7YIAA4WQ8ETd2vkNyt1+BAef8IWw8ClSKCqpcYDinHr2CouwBkkgKxzv8SB5Kp4CKpqyKiVfKpO88izf8i7/8jAf8zI/8zRf8zZ/8zif8zq/8zzf8z7/80BfjgEBADs=)}ul.fancytree-container.fancytree-rtl ul{padding:0 16px 0 0}ul.fancytree-container.fancytree-rtl.fancytree-connectors li{background-position:right 0;background-image:url(data:image/gif;base64,R0lGODlhEAAQAPcAAAAAANPT0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAgxAP8JHPgvAMGDCA0iXFiQ4UKFDglCjChwIkWLETE61MiQ40OKEkEO9JhQZEWTDRcGBAA7)}ul.fancytree-container.fancytree-rtl li.fancytree-lastsib,ul.fancytree-container.fancytree-rtl.fancytree-no-connector>li{background-image:none}#fancytree-drop-marker.fancytree-rtl{background-image:url(data:image/gif;base64,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)}table.fancytree-ext-table{font-family:inherit;font-size:10pt;border-collapse:collapse}table.fancytree-ext-table span.fancytree-node{display:inline-block;box-sizing:border-box}table.fancytree-ext-table td.fancytree-status-merged{text-align:center;font-style:italic;color:silver}table.fancytree-ext-table tr.fancytree-statusnode-error td.fancytree-status-merged{color:red}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr.fancytree-active>td{background-color:#eee}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr>td.fancytree-active-cell{background-color:#cbe8f6}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode.fancytree-cell-nav-mode>tbody>tr>td.fancytree-active-cell{background-color:#3875d7}table.fancytree-ext-columnview tbody tr td{position:relative;border:1px solid gray;vertical-align:top;overflow:auto}table.fancytree-ext-columnview tbody tr td>ul{padding:0}table.fancytree-ext-columnview tbody tr td>ul li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}table.fancytree-ext-columnview span.fancytree-node{position:relative;display:inline-block}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#e0e0e0}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#cbe8f6}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right{position:absolute;right:3px;background-position:0 -80px}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right:hover{background-position:-16px -80px}.fancytree-ext-filter-dimm span.fancytree-node span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-submatch span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-match span.fancytree-title{color:#000;font-weight:700}.fancytree-ext-filter-hide span.fancytree-node.fancytree-hide,.fancytree-ext-filter-hide tr.fancytree-hide{display:none}.fancytree-ext-filter-hide span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-submatch span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-hide span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-match span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-match span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-match span.fancytree-expander{visibility:hidden}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-submatch span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-submatch span.fancytree-expander{visibility:visible}.fancytree-ext-childcounter span.fancytree-custom-icon,.fancytree-ext-childcounter span.fancytree-icon,.fancytree-ext-filter span.fancytree-custom-icon,.fancytree-ext-filter span.fancytree-icon{position:relative}.fancytree-ext-childcounter span.fancytree-childcounter,.fancytree-ext-filter span.fancytree-childcounter{color:#fff;background:#777;border:1px solid gray;position:absolute;top:-6px;right:-6px;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}ul.fancytree-ext-wide{position:relative;min-width:100%;z-index:2;box-sizing:border-box}ul.fancytree-ext-wide span.fancytree-node>span{position:relative;z-index:2}ul.fancytree-ext-wide span.fancytree-node span.fancytree-title{position:absolute;z-index:1;left:0;min-width:100%;margin-left:0;margin-right:0;box-sizing:border-box}.fancytree-ext-fixed-wrapper .fancytree-ext-fixed-hidden{display:none}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-bottom{border-bottom:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-right{border-right:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tl{position:absolute;overflow:hidden;z-index:3;top:0;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tr{position:absolute;overflow:hidden;z-index:2;top:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-bl{position:absolute;overflow:hidden;z-index:2;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-br{position:absolute;overflow:scroll;z-index:1}span.fancytree-title{border:1px solid transparent;border-radius:0}span.fancytree-focused span.fancytree-title{outline:1px dotted #000}span.fancytree-active span.fancytree-title,span.fancytree-selected span.fancytree-title{background-color:#d4d4d4}span.fancytree-selected span.fancytree-title{font-style:italic}.fancytree-treefocus span.fancytree-active span.fancytree-title,.fancytree-treefocus span.fancytree-selected span.fancytree-title{color:#fff;background-color:#3875d7}table.fancytree-ext-table{border-collapse:collapse}table.fancytree-ext-table tbody tr.fancytree-focused{background-color:#99defd}table.fancytree-ext-table tbody tr.fancytree-active{background-color:#4169e1}table.fancytree-ext-table tbody tr.fancytree-selected{background-color:#99defd}table.fancytree-ext-columnview tbody tr td{border:1px solid gray}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#ccc}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#4169e1}.optionsArrayMap,.optionsLast,.optionsArray{color:#000!important}.dynamic-form .required .sb-modal-dropdown-web label:after,.add-to-library .dynamic-form .required .sb-modal-dropdown-web .multi-select-container .list-border ul:after,.add-to-library .dynamic-form .multi-select-container .list-border .required .sb-modal-dropdown-web ul:after{content:\" \"!important}.dynamic-form sb-dynamic-checkbox{margin-top:3.5rem}.dynamic-form .sb-dropdown-select{padding:16px 8px!important}.dynamic-form .list-border{margin-top:2px!important}body{background:#fff!important}.add-to-library{position:relative;z-index:999!important;background:#e5edf5}.add-to-library .sb-required{color:#ff4558;padding-left:2px;position:relative;top:-5px}.add-to-library .back-btn:hover{background:none!important}.add-to-library .back-btn{min-width:auto}.add-to-library .dynamic-form .multi-select-section-app label,.add-to-library .dynamic-form .multi-select-section-app .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .multi-select-section-app ul{margin-bottom:.3rem!important;z-index:inherit}.add-to-library .dynamic-form label,.add-to-library .dynamic-form .multi-select-container .list-border ul{font-size:12px!important;margin-bottom:.5rem!important;color:#121213e0;font-weight:600}.add-to-library .dynamic-form .sb-textbox,.add-to-library .dynamic-form .topic-picker-selector,.add-to-library .dynamic-form select,.add-to-library .dynamic-form .sb-textarea,.add-to-library .dynamic-form .list-border{border:1px solid rgba(34,36,38,.15)!important;padding:.85rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500}.add-to-library .dynamic-form select{padding:12px 8px!important}.add-to-library .dynamic-form .list-border{margin-top:14px!important;min-height:43px!important;height:inherit!important;padding:5px 8px!important}.add-to-library .dynamic-form .multi-select-container .list-border .placeholder{font-weight:500!important;color:#333!important}.add-to-library .dynamic-form .multi-select-container .list-border ul{color:#333;padding:0;margin:0!important;opacity:1!important;font-weight:500!important;position:inherit!important}.add-to-library .dynamic-form .sb-modal-dropdown-web ul{color:#333;padding:0;margin:0!important;opacity:1!important;font-size:12px!important;font-weight:500;border:2px solid #eeeeef;z-index:99999!important}.add-to-library .dynamic-form .sb-keywordbox{border:1px solid rgba(34,36,38,.15)!important;padding:.45rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500;padding:0!important}.add-to-library .dynamic-form .sb-keywordbox .ng2-tag-input{padding:0}.add-to-library .dynamic-form .sb-keywordbox .ng2-tag-input tag{margin-left:.5rem}.add-to-library .dynamic-form .sb-keywordbox .ng2-tags-container{margin-top:.2rem}.add-to-library .dynamic-form .sb-keywordbox .tag-wrapper,.add-to-library .dynamic-form .sb-keywordbox delete-icon svg{height:24px;line-height:24px}.add-to-library .dynamic-form .sb-dropdown label,.add-to-library .dynamic-form .sb-dropdown .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .sb-dropdown ul{padding:0}.add-to-library .dynamic-form .sb-textarea-container .sb-textarea{height:2.9rem;padding-top:.5rem!important}.add-to-library .dynamic-form .sb-textarea-container label,.add-to-library .dynamic-form .sb-textarea-container .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .sb-textarea-container ul{padding:0}.add-to-library .dynamic-form .sb-checkbox{padding:0;margin-top:0}.add-to-library .dynamic-form sb-icon-dropdown{top:10px!important;right:6px!important}.add-to-library .sb-textarea-container,.add-to-library .sb-dropdown{margin:1rem 0!important}.add-to-library .sb-container{width:95%!important}.sb-checkbox-tnc .sb-required{position:absolute;padding-left:0;left:18px}.h-100vh{height:100vh}.ui.column.grid>[class*=\"eight wide\"].column{width:73%!important}.footer-fix{padding-bottom:1rem!important}.bg-white,.ui.twelve.grid{background:#fff!important}@keyframes spinner-border{to{transform:rotate(360deg)}}.sb-loading-spinner{width:1rem;height:1rem;margin-right:8px;border-width:.2em;display:inline-block;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.sb-btn-loading:before{position:absolute;content:\"\";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.sb-btn-loading:after{position:absolute;content:\"\";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;animation:button-spin .6s linear;animation-iteration-count:infinite;border-radius:500rem;border-color:#fff transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.sb-btn-outline-disabled{background-color:#fff;border:1px solid #cccccc;color:#999;cursor:default;font-weight:400}lib-chat-window,.chat_bot{display:none!important}.sb-textbox::-webkit-input-placeholder,.add-to-library .dynamic-form .topic-picker-selector::-webkit-input-placeholder{color:var(--gray-100)!important;font-weight:600!important}.treepicker-parent{margin:.6rem 0!important}.ck-content ul{list-style-type:disc!important}.ck-content ul li{margin-bottom:0!important}sb-dynamic-richtext .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-left:1px solid #c4c4c4!important;border-right:1px solid #c4c4c4!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;border-bottom:0!important}sb-dynamic-richtext .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,sb-dynamic-richtext .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:1px solid #c4c4c4!important;border-color:var(--ck-color-base-border)!important}sb-dynamic-richtext .ck-content .table{margin:.8rem 0!important}.sb-textbox::placeholder,.add-to-library .dynamic-form .topic-picker-selector::placeholder,.sb-textarea::placeholder{color:#333!important;font-weight:500!important}.multi-select-container .sb-modal-dropdown-web ul{border:1px solid #d6d4d4!important;box-shadow:0 0 2px #cecaca!important}.sb-disabled-textarea{background:var(--gray-0)!important;border:.0625rem solid var(--gray-100)!important;opacity:.45!important;pointer-events:none!important;font-size:1em!important}.overflow-y{overflow-y:auto}input:focus-visible{border:none!important}.dialcodeModal input:focus-visible{border:.0625rem solid #999999!important}#fancytree-drop-marker.fa-long-arrow-right:before{content:\" \"!important}.sb-collectionTree-fancyTreelist ul>li>span:first-child{padding:15px 33px}.sb-collectionTree-fancyTreelist .fancytree-exp-n span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-nl span.fancytree-expander{background:none!important}.sb-collectionTree-fancyTreelist .ui-fancytree:before,.sb-collectionTree-fancyTreelist .ui-fancytree ul:before{content:none!important}.sb-collectionTree-fancyTreelist .ui-fancytree li:before,.sb-collectionTree-fancyTreelist .ui-fancytree ul li:before{content:none!important}.sb-collectionTree-fancyTreelist .ui-fancytree li .fancytree-custom-icon:before{color:var(--primary-color)!important;margin-left:5px}.sb-collectionTree-fancyTreelist .ui-fancytree .fancytree-folder .fancytree-title{color:var(--primary-color)!important;font-size:.9286rem!important;font-weight:700!important;padding-left:5px;width:inherit!important}.sb-collectionTree-fancyTreelist .ui-fancytree .fa-caret-right,.sb-collectionTree-fancyTreelist .ui-fancytree .fa-caret-down,.sb-collectionTree-fancyTreelist .ui-fancytree ul .fa-caret-right,.sb-collectionTree-fancyTreelist .ui-fancytree ul .fa-caret-down{display:block!important}.sb-collectionTree-fancyTreelist ul.fancytree-container{font-size:inherit!important;font-family:inherit!important;border:none!important}.sb-collectionTree-fancyTreelist ul.fancytree-connectors.fancytree-container li{background-image:none!important}.sb-collectionTree-fancyTreelist span.fancytree-node{width:inherit!important}.sb-collectionTree-fancyTreelist span.fancytree-active span.fancytree-title,.sb-collectionTree-fancyTreelist span.fancytree-selected span.fancytree-title,.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-active span.fancytree-title,.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-selected span.fancytree-title{background:none!important}.sb-collectionTree-fancyTreelist .fancytree-exp-edl span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-el span.fancytree-expander{background-position:-34px -94px}.sb-collectionTree-fancyTreelist span.fancytree-focused span.fancytree-title{outline:0!important}.sb-collectionTree-fancyTreelist .ui-fancytree{margin:0!important}.sb-collectionTree-fancyTreelist.ui-fancytree,.sb-collectionTree-fancyTreelist .ui-fancytree ul{margin:0 0 0 .625rem!important}.sb-collectionTree-fancyTreelist .fancytree-exp-e span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-ed span.fancytree-expander{background-position:-32px -68px!important}.sb-collectionTree-fancyTreelist .fancytree-exp-edl span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-el span.fancytree-expander{background-position:-34px -94px!important}.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-active span.fancytree-title,.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-selected span.fancytree-title{color:inherit}.sb-loader{position:fixed;top:0%;left:23%;transform:translate(-50%,-50%)}.sb-loader:after{content:\"\";width:32px;height:32px;border-radius:50%;border:2px solid;border-color:#ccc #ccc transparent;animation:loader .5s infinite;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sb-loader.dimmer{width:100%;height:100%;background:#000c;z-index:9999}@keyframes loader{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sb-success-loader{position:absolute!important;top:46%!important;left:-12%!important;transform:translate(-46%,-50%)!important}.sb-success-loader:after{width:1.2rem!important;height:1.2rem!important}.pos-relative{position:relative}.sb-circle-ul{list-style-type:disc;padding:0;font-size:.785rem}.sb-circle-ul li{margin:0!important;line-height:1.4}.sb-bg-color-success-0{background:#e1ffdf}.flex-ai-center{align-self:center!important}.sb-br-primary{border:1px dashed #aedbfd!important}.sb-min-h-250{min-height:250px}.z-index-9 .menu{z-index:99999!important}.p-50{padding:10px 0 10px 50px}.h-1{height:1.1em!important}.mn-15{margin:-15px!important}.upload-input-button{position:relative}.upload-input-button input{position:absolute;opacity:0;left:0}.bg-none{background:none}.label-disable{opacity:.3!important;font-weight:500!important}.sb-folder-menu{position:absolute;left:35px;display:flex;justify-content:space-between;width:24%;margin-top:5px}.sb-disable-icon{color:#ccc!important}.sb-w-240px{width:240px}.showCollaborator .ui.dimmer{overflow-y:unset!important}.showCollaborator .ui.segment{max-height:calc(80vh - 8em)!important;overflow-y:auto!important}.showCollaborator .sb-modal-content .flex-align-item-center{border-bottom:solid 1px #ccc;margin:0 -16px;padding:0 20px}.showCollaborator .ui.pointing{margin:0 -15px!important}.showCollaborator .ui.pointing .item.active{font-weight:600!important}.publish-checklist label,.publish-checklist .add-to-library .dynamic-form .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .publish-checklist ul{font-size:13px!important;padding:0 1.5rem!important}.sb-keywords input{width:100%}.sb-keywords input::placeholder{display:block!important;width:100%}.sb-keywords .ng2-tags-container{width:inherit!important;display:block!important}.sb-keywords .ng2-tags-container tag{display:inline-flex!important}.sb-dialcode{border-bottom:.5px solid #333333;padding:8px 5px!important;border-radius:0!important}.sb-dialcode:focus-visible{border-bottom:.5px solid #333333!important;border-radius:0!important;outline:0!important}sb-dynamic-timer .sb-timer-input{width:10rem;font-size:.785rem!important;border:1px solid rgba(34,36,38,.15)!important;border-radius:.28571429rem;padding:12px 10px;margin-right:5px;height:44px}sb-dynamic-timer .sb-timer-input:focus-visible{border:1px solid rgba(34,36,38,.15)!important}sb-dynamic-timer .sb-btn-normal{height:42px!important}\n"], dependencies: [{ kind: "directive", type: i10.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i10.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i11.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: i11.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i12.SuiDropdown, selector: "[suiDropdown]", inputs: ["isOpen", "isDisabled", "tabindex", "autoClose"], outputs: ["isOpenChange"] }, { kind: "directive", type: i12.SuiDropdownMenu, selector: "[suiDropdownMenu]", inputs: ["menuTransition", "menuTransitionDuration", "menuAutoSelectFirst", "menuSelectedItemClass"] }, { kind: "directive", type: i12.SuiDropdownMenuItem, selector: ".item" }, { kind: "component", type: i12.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i13.LibraryComponent, selector: "lib-library", inputs: ["libraryInput"], outputs: ["libraryEmitter"] }, { kind: "directive", type: i14.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: i15.ContentplayerPageComponent, selector: "lib-contentplayer-page", inputs: ["contentMetadata"] }, { kind: "component", type: i16.QumlplayerPageComponent, selector: "lib-qumlplayer-page", inputs: ["questionMetaData", "questionSetHierarchy"], outputs: ["toolbarEmitter"] }, { kind: "component", type: i17.HeaderComponent, selector: "lib-header", inputs: ["pageId", "labelConfigData", "buttonLoaders", "showComment", "publishchecklist", "requestChange"], outputs: ["toolbarEmitter", "qualityParamEmitter"] }, { kind: "component", type: i18.FancyTreeComponent, selector: "lib-fancy-tree", inputs: ["nodes", "options", "buttonLoaders"], outputs: ["treeEventEmitter"] }, { kind: "component", type: i19.MetaFormComponent, selector: "lib-meta-form", inputs: ["rootFormConfig", "unitFormConfig", "nodeMetadata"], outputs: ["toolbarEmitter"] }, { kind: "component", type: i20.LibraryComponent, selector: "lib-library", inputs: ["libraryInput"], outputs: ["libraryEmitter"] }, { kind: "component", type: i21.QuestionComponent, selector: "lib-question", inputs: ["questionInput", "leafFormConfig"], outputs: ["questionEmitter"] }, { kind: "component", type: i22.TemplateComponent, selector: "lib-template", inputs: ["templateList"], outputs: ["templateSelection"] }, { kind: "directive", type: i23.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "component", type: i24.QumlPlayerComponent, selector: "lib-quml-player", inputs: ["questionSetHierarchy", "isSingleQuestionPreview"], outputs: ["toolbarEmitter"] }, { kind: "component", type: i25.CsvUploadComponent, selector: "lib-csv-upload", inputs: ["collectionId", "isCreateCsv"], outputs: ["csvUploadEmitter"] }, { kind: "component", type: i26.ManageCollaboratorComponent, selector: "lib-manage-collaborator", inputs: ["addCollaborator", "collectionId"], outputs: ["modalDismissEmitter"] }, { kind: "component", type: i27.AssignPageNumberComponent, selector: "lib-assign-page-number", outputs: ["assignPageEmitter"] }, { kind: "component", type: i28.ProgressStatusComponent, selector: "lib-progress-status", outputs: ["assignPageEmitter"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1110
|
+
}
|
|
1111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditorComponent, decorators: [{
|
|
1112
|
+
type: Component,
|
|
1113
|
+
args: [{ selector: 'lib-editor', encapsulation: ViewEncapsulation.None, template: "<ng-container [ngSwitch]=\"pageId\">\n <ng-container *ngSwitchCase=\"'collection_editor'\">\n <div class=\"add-to-library mb-10\">\n <lib-header [pageId]=\"pageId\" [publishchecklist]=\"publishchecklist\"\n [labelConfigData]=\"toolbarConfig\" [buttonLoaders]=\"buttonLoaders\" (toolbarEmitter)=\"toolbarEventListener($event)\"> </lib-header>\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0 \">\n <!-- Left Sidebar for cards -->\n <div class=\"p-50 sb-folder-menu\" *ngIf=\"isObjectTypeCollection\">\n <div> {{configService.labelConfig?.lbl?.folders}} </div>\n <a class=\"profile-avtar computer only p-0 pr-10\" tabindex=\"0\">\n <div suiDropdown class=\"ui dropdown right top pointing z-index-9\" id=\"dropdown-menu-list-header\" *ngIf=\"!isStatusReviewMode\">\n <i class=\"icon ellipsis vertical h-1\" aria-hidden=\"true\" [ngClass]=\"{'sb-disable-icon': isStatusReviewMode}\" (click)=\"onClickFolder()\"></i>\n <div class=\"menu\" suiDropdownMenu >\n <button type=\"button\" class=\"item fs-0-785 bg-none\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('open_popup','click',configService.labelConfig?.lbl?.createHierarchyCsv,\n this.telemetryService.telemetryPageId,{key: 'dialog_id', value: configService.labelConfig?.lbl?.createHierarchyCsv})\"\n (click)=\"hanndleCsvEmitter({type: 'createCsv'})\" [disabled]=\"csvDropDownOptions.isDisableCreateCsv\">\n <i class=\"icon folder outline sb-color-primary\" [ngClass]=\"{'sb-disable-icon': csvDropDownOptions.isDisableCreateCsv}\" aria-hidden=\"true\"></i>\n <span class=\"text\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableCreateCsv}\">{{configService.labelConfig?.lbl?.createHierarchyCsv}}</span>\n </button>\n <div class=\"ui divider\"></div>\n <button libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('csv_download','click',configService.labelConfig?.lbl?.downloadFoldersInCSV,\n this.telemetryService.telemetryPageId,{key: 'identifier', value: collectionId})\"\n type=\"button\" class=\"item fs-0-785 bg-none\" (click)=\"hanndleCsvEmitter({type: 'downloadCsv'})\" [disabled]=\"csvDropDownOptions.isDisableDownloadCsv\">\n <i class=\"icon download sb-color-primary\" [ngClass]=\"{'sb-disable-icon': csvDropDownOptions.isDisableDownloadCsv}\" aria-hidden=\"true\"></i> \n <span class=\"text\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableDownloadCsv}\" > \n {{configService.labelConfig?.lbl?.downloadFoldersInCSV}}</span>\n </button>\n <div class=\"ui divider\">\n </div>\n <button \n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('open_popup','click',configService.labelConfig?.lbl?.uploadUpdateCSV,\n this.telemetryService.telemetryPageId,{key: 'dialog_id', value: configService.labelConfig?.lbl?.uploadUpdateCSV})\"\n type=\"button\" class=\"item fs-0-785 bg-none\" (click)=\"hanndleCsvEmitter({type: 'updateCsv'})\" [disabled]=\"csvDropDownOptions.isDisableUpdateCsv\">\n <i class=\"icon upload sb-color-primary\" aria-hidden=\"true\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableUpdateCsv}\"></i> \n <span class=\"text\" [ngClass]=\"{'label-disable': csvDropDownOptions.isDisableUpdateCsv}\" > \n {{configService.labelConfig?.lbl?.uploadUpdateCSV}}\n </span>\n </button>\n </div>\n </div>\n </a>\n </div>\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\" [ngClass]=\"{'mt-50': isObjectTypeCollection}\">\n <lib-fancy-tree *ngIf=\"collectionTreeNodes && collectionTreeNodes.data && ishierarchyConfigSet\"\n [nodes]=\"collectionTreeNodes\" [options]=\"{ showConnectors: true }\" [buttonLoaders]=\"buttonLoaders\"\n (treeEventEmitter)=\"treeEventListener($event)\" class=\"sb-collectionTree-fancyTree sb-collectionTree-fancyTreelist sb-questionset-scroll\">\n </lib-fancy-tree>\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <ng-container *ngIf=\"(isCurrentNodeFolder === true || isCurrentNodeRoot === true) && unitFormConfig && selectedNodeData && rootFormConfig\">\n <lib-meta-form [rootFormConfig]=\"rootFormConfig\" [nodeMetadata]=\"selectedNodeData\" [unitFormConfig]=\"unitFormConfig\"\n (toolbarEmitter)=\"toolbarEventListener($event)\"></lib-meta-form>\n </ng-container>\n <ng-container *ngIf=\"isCurrentNodeFolder === false && isCurrentNodeRoot !== true\">\n <lib-contentplayer-page *ngIf=\"!isQumlPlayer\" [contentMetadata]=\"selectedNodeData\" ></lib-contentplayer-page>\n <lib-qumlplayer-page *ngIf=\"isQumlPlayer\" [questionMetaData]=\"selectedNodeData\" [questionSetHierarchy]=\"collectionTreeNodes?.data\"\n (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-qumlplayer-page>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n\n <sui-modal *ngIf=\"showDeleteConfirmationPopUp\" [mustScroll]=\"true\" [isClosable]=\"true\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll\n (dismissed)=\"showDeleteConfirmationPopUp = !showDeleteConfirmationPopUp\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.confirmDeleteContent}}\n </div>\n <div class=\"sb-modal-content\">\n <!-- <div class=\"sb-publish-content\">\n <div class=\"review-modal-list\">\n {{ contentComment }}\n </div> -->\n <div> {{deleteConfirmMessage}}</div>\n </div>\n <div class=\"sb-modal-actions\">\n <button type=\"button\" class=\"sb-btn sb-btn-normal sb-btn-primary mr-8\" (click)=\"showDeleteConfirmationPopUp = !showDeleteConfirmationPopUp\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', this.telemetryService.telemetryPageId,{key: 'dialog_id', value: 'confirm_delete_content','identifier' : selectedNodeData?.data?.id})\"> {{configService.labelConfig?.button_labels?.no_btn_label}} </button>\n <button type=\"button\" class=\"sb-btn sb-btn-secondary sb-btn-normal \" (click)=\"deleteNode();\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', this.telemetryService.telemetryPageId,{key: 'dialog_id', value: 'confirm_delete_content','identifier' : selectedNodeData?.data?.id})\"> {{configService.labelConfig?.button_labels?.yes_btn_label}} </button>\n </div>\n </sui-modal>\n <sui-modal *ngIf='showConfirmPopup' [mustScroll]=\"false\" [isClosable]=\"true\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal overflow-modal\" appBodyScroll (dismissed)=\"showConfirmPopup = !showConfirmPopup; terms = false;\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.acceptTerms}}\n </div>\n <div class=\"sb-modal-content\">\n <div class=\"ui grid\">\n <div class=\"twelve wide column sb-checkbox-tnc mt-10\">\n <div class=\"sb-checkbox sb-checkbox-primary font-italic p-0 m-0\"><input [(ngModel)]=\"terms\" id=\"termAndConditions\"\n name=\"example\" type=\"checkbox\">\n <label for=\"termAndConditions\" class=\"fsmall pl-32\">\n <div class=\"d-flex flex-ai-center\">\n <span class=\"sb-required\">*</span><span\n class=\"font-weight-bold mb-4 d-block\">\"{{configService.labelConfig?.lbl?.iAgreeSubmit}}</span>\n </div>\n <div class=\"sb-color-gray-300\">{{configService.labelConfig?.lbl?.iconfirmContent}}<a\n class=\"sb-color-primary font-weight-bold cursor-pointer\" href=\"https://creativecommons.org/licenses\" target=\"_blank\" > {{configService.labelConfig?.lbl?.createCommonFramework}}</a>\n {{configService.labelConfig?.lbl?.accordance}} \n <a class=\"sb-color-primary font-weight-bold cursor-pointer\" href=\"{{contentPolicyUrl}}\" target=\"_blank\" >{{configService.labelConfig?.lbl?.contentPolicy}}</a> {{configService.labelConfig?.lbl?.privacyRights}}\"</div>\n </label>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button type=\"button\" class=\"sb-btn sb-btn-normal\" [ngClass]=\"!terms ? 'sb-btn-disabled' : 'sb-btn-primary'\" [disabled]=\"!terms\"\n (click)=\"sendForReview()\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('submit','click','submit', this.telemetryService.telemetryPageId,{key: 'dialog_id', value: 'accepting_terms_conditions','termAndConditions' : terms})\">\n {{configService.labelConfig?.button_labels?.submit_btn_label}}\n </button>\n </div>\n </sui-modal>\n <sui-modal *ngIf='showPreview' [mustScroll]=\"false\" [isClosable]=\"true\" [transitionDuration]=\"0\" [size]=\"'large'\"\n class=\"sb-modal overflow-modal preview-modal\" appBodyScroll (dismissed)=\"showPreview = !showPreview;\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.questionSetPreview}}\n </div>\n <div class=\"sb-modal-content\">\n <div class=\"br-2 b-1-100\" id=\"previewPlayerContainer\" tabindex=\"0\" cdkTrapFocus>\n <lib-quml-player [questionSetHierarchy]=\"collectionTreeNodes?.data\"></lib-quml-player>\n </div>\n </div>\n </sui-modal>\n <lib-template *ngIf='showQuestionTemplatePopup' [templateList]=\"templateList\"\n (templateSelection)=\"handleTemplateSelection($event)\">\n </lib-template>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"'library'\">\n <lib-library [libraryInput]=\"libraryComponentInput\" (libraryEmitter)=\"libraryEventListener($event)\">\n </lib-library>\n </ng-container>\n <ng-container *ngSwitchCase=\"'question'\">\n <lib-question [questionInput]=\"questionComponentInput\" [leafFormConfig]=\"leafFormConfig\" (questionEmitter)=\"questionEventListener($event)\">\n </lib-question>\n </ng-container>\n <ng-container *ngSwitchCase=\"'pagination'\">\n <lib-assign-page-number (assignPageEmitter)=\"assignPageEmitterListener($event)\"></lib-assign-page-number>\n </ng-container>\n <ng-container *ngSwitchCase=\"'progressStatus'\">\n <lib-progress-status (assignPageEmitter)=\"assignPageEmitterListener($event)\"></lib-progress-status>\n </ng-container>\n</ng-container>\n<ng-container *ngIf=\"addCollaborator\">\n <lib-manage-collaborator [addCollaborator]=\"addCollaborator\" [collectionId]=\"collectionId\" (modalDismissEmitter)=\"toggleCollaboratorModalPoup()\"></lib-manage-collaborator>\n</ng-container>\n<sui-modal *ngIf=\"showReviewModal\" [mustScroll]=\"true\" [isClosable]=\"false\" [transitionDuration]=\"0\"\n [size]=\"'normal'\" class=\"sb-modal bx-none overflow-modal\" appBodyScroll #modal (dismissed)=\"showReviewModal = false;\">\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.reviewComments}}\n </div>\n <div class=\"sb-modal-content\">\n <div class=\"sb-field\">\n <label>{{configService.labelConfig?.lbl?.comments}}</label>\n <textarea disabled=\"disabled\" type=\"text\" class=\"wmd-input width-100 sb-form-control p-10 sb-disabled-textarea\" id=\"wmd-input\" [(ngModel)]=\"contentComment\" name=\"rejectedComment\"></textarea>\n </div>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"modal.deny('denied')\"\n libTelemetryInteract [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('close','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'review_comments'})\">{{configService.labelConfig?.button_labels?.close_btn_label}}</button>\n </div>\n</sui-modal>\n\n <lib-csv-upload *ngIf=\"showCsvUploadPopup\" [isCreateCsv]= \"isCreateCsv\" (csvUploadEmitter)= \"hanndleCsvEmitter($event)\" [collectionId]=\"collectionId\">\n </lib-csv-upload>\n\n", styles: [".fancytree-helper-hidden{display:none}.fancytree-helper-indeterminate-cb{color:#777}.fancytree-helper-disabled{color:silver}.fancytree-helper-spin{animation:spin 1s infinite linear}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(359deg)}}ul.fancytree-container{font-family:inherit;font-size:10pt;white-space:nowrap;padding:3px;margin:0;background-color:#fff;border:1px dotted gray;min-height:0;position:relative}ul.fancytree-container ul{padding:0 0 0 16px;margin:0}ul.fancytree-container ul>li:before{content:none}ul.fancytree-container li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}ul.fancytree-container li.fancytree-lastsib{background-image:none}.ui-fancytree-disabled ul.fancytree-container{opacity:.5;background-color:silver}ul.fancytree-connectors.fancytree-container li{background-image:url(data:image/gif;base64,R0lGODlhEAAQAPcAAAAAANPT0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAgxAP8JHPgvAMGDCA0iXFiQ4UKFDglCjChwIkWLETE61MiQ40OKEkEO9JhQZEWTDRcGBAA7);background-position:0 0}ul.fancytree-container li.fancytree-lastsib,ul.fancytree-no-connector>li{background-image:none}li.fancytree-animating{position:relative}#fancytree-drop-marker,span.fancytree-checkbox,span.fancytree-drag-helper-img,span.fancytree-empty,span.fancytree-expander,span.fancytree-icon,span.fancytree-vline{width:16px;height:16px;display:inline-block;vertical-align:top;background-repeat:no-repeat;background-image:url(data:image/gif;base64,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);background-position:0 0}span.fancytree-checkbox,span.fancytree-custom-icon,span.fancytree-expander,span.fancytree-icon{margin-top:0}span.fancytree-custom-icon{width:16px;height:16px;display:inline-block;margin-left:3px;background-position:0 0}img.fancytree-icon{width:16px;height:16px;margin-left:3px;margin-top:0;vertical-align:top;border-style:none}span.fancytree-expander{cursor:pointer}.fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{background-image:none;cursor:default}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(data:image/gif;base64,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);margin-top:0}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-n span.fancytree-expander:hover{background-position:0 -64px}.fancytree-connectors .fancytree-exp-nl span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander:hover{background-position:-16px -64px}.fancytree-exp-c span.fancytree-expander{background-position:0 -80px}.fancytree-exp-c span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-cl span.fancytree-expander{background-position:0 -96px}.fancytree-exp-cl span.fancytree-expander:hover{background-position:-16px -96px}.fancytree-exp-cd span.fancytree-expander{background-position:-64px -80px}.fancytree-exp-cd span.fancytree-expander:hover{background-position:-80px -80px}.fancytree-exp-cdl span.fancytree-expander{background-position:-64px -96px}.fancytree-exp-cdl span.fancytree-expander:hover{background-position:-80px -96px}.fancytree-exp-e span.fancytree-expander,.fancytree-exp-ed span.fancytree-expander{background-position:-32px -80px}.fancytree-exp-e span.fancytree-expander:hover,.fancytree-exp-ed span.fancytree-expander:hover{background-position:-48px -80px}.fancytree-exp-edl span.fancytree-expander,.fancytree-exp-el span.fancytree-expander{background-position:-32px -96px}.fancytree-exp-edl span.fancytree-expander:hover,.fancytree-exp-el span.fancytree-expander:hover{background-position:-48px -96px}.fancytree-fade-expander span.fancytree-expander{transition:opacity 1.5s;opacity:0}.fancytree-fade-expander .fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander [class*=fancytree-statusnode-] span.fancytree-expander,.fancytree-fade-expander.fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander:hover span.fancytree-expander{transition:opacity .6s;opacity:1}span.fancytree-checkbox{margin-left:3px;background-position:0 -32px}span.fancytree-checkbox:hover{background-position:-16px -32px}span.fancytree-checkbox.fancytree-radio{background-position:0 -48px}span.fancytree-checkbox.fancytree-radio:hover{background-position:-16px -48px}.fancytree-partsel span.fancytree-checkbox{background-position:-64px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -32px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio{background-position:-64px -48px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio:hover{background-position:-80px -48px}.fancytree-selected span.fancytree-checkbox{background-position:-32px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -32px}.fancytree-selected span.fancytree-checkbox.fancytree-radio{background-position:-32px -48px}.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-48px -48px}.fancytree-unselectable span.fancytree-checkbox{opacity:.4}.fancytree-unselectable span.fancytree-checkbox:hover{background-position:0 -32px}.fancytree-unselectable span.fancytree-checkbox.fancytree-radio:hover{background-position:0 -48px}.fancytree-unselectable.fancytree-partsel span.fancytree-checkbox:hover{background-position:-64px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox:hover{background-position:-32px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-32px -48px}.fancytree-container.fancytree-checkbox-auto-hide span.fancytree-checkbox{visibility:hidden}.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node.fancytree-selected span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node:hover span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr.fancytree-selected td span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr:hover td span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus .fancytree-node.fancytree-active span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus tr.fancytree-active td span.fancytree-checkbox{visibility:unset}span.fancytree-icon{margin-left:3px;background-position:0 0}.fancytree-ico-c span.fancytree-icon:hover{background-position:-16px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon{background-position:-32px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon:hover{background-position:-48px 0}.fancytree-ico-e span.fancytree-icon{background-position:-64px 0}.fancytree-ico-e span.fancytree-icon:hover{background-position:-80px 0}.fancytree-ico-cf span.fancytree-icon{background-position:0 -16px}.fancytree-ico-cf span.fancytree-icon:hover{background-position:-16px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon{background-position:-32px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon:hover{background-position:-48px -16px}.fancytree-ico-ef span.fancytree-icon{background-position:-64px -16px}.fancytree-ico-ef span.fancytree-icon:hover{background-position:-80px -16px}.fancytree-loading span.fancytree-expander,.fancytree-loading span.fancytree-expander:hover,.fancytree-statusnode-loading span.fancytree-icon,.fancytree-statusnode-loading span.fancytree-icon:hover,span.fancytree-icon.fancytree-icon-loading{background-image:url(data:image/gif;base64,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);background-position:0 0}.fancytree-statusnode-error span.fancytree-icon,.fancytree-statusnode-error span.fancytree-icon:hover{background-position:0 -112px}span.fancytree-node{display:inherit;width:100%;margin-top:1px;min-height:16px}span.fancytree-title{color:#000;cursor:pointer;display:inline-block;vertical-align:top;min-height:16px;padding:0 3px;margin:0 0 0 3px;border:1px solid transparent;border-radius:0}span.fancytree-node.fancytree-error span.fancytree-title{color:red}span.fancytree-childcounter{color:#fff;background:#337ab7;border:1px solid gray;border-radius:10px;padding:2px;text-align:center}div.fancytree-drag-helper span.fancytree-childcounter,div.fancytree-drag-helper span.fancytree-dnd-modifier{display:inline-block;color:#fff;background:#337ab7;border:1px solid gray;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}div.fancytree-drag-helper span.fancytree-childcounter{position:absolute;top:-6px;right:-6px}div.fancytree-drag-helper span.fancytree-dnd-modifier{background:#5cb85c;border:none;font-weight:bolder}div.fancytree-drag-helper.fancytree-drop-accept span.fancytree-drag-helper-img{background-position:-32px -112px}div.fancytree-drag-helper.fancytree-drop-reject span.fancytree-drag-helper-img{background-position:-16px -112px}#fancytree-drop-marker{width:32px;position:absolute;background-position:0 -128px;margin:0}#fancytree-drop-marker.fancytree-drop-after,#fancytree-drop-marker.fancytree-drop-before{width:64px;background-position:0 -144px}#fancytree-drop-marker.fancytree-drop-copy{background-position:-64px -128px}#fancytree-drop-marker.fancytree-drop-move{background-position:-32px -128px}span.fancytree-drag-source.fancytree-drag-remove{opacity:.15}.fancytree-container.fancytree-rtl span.fancytree-connector,.fancytree-container.fancytree-rtl span.fancytree-drag-helper-img,.fancytree-container.fancytree-rtl span.fancytree-expander,.fancytree-container.fancytree-rtl span.fancytree-icon{background-image:url(data:image/gif;base64,R0lGODlhYADIAPcAAAAAAAAYMQAhOQAQdAgZehUFahApQhgxShgxUiExSikxQiFCWilCWj1GVjlKa0JSY0pSa0JXc1JSc1pjY1Jje1pje2Nra3NzawAplx8wjQQ5pwBCrg5ayABiyQBr2AB04FJahFJajFpalFpanFpapUJznEJ7lF5vg1JzlFp7lFpjtVJ7rWNjlGNjnGd3mHNzjHN7iHd7nHt7lGtrvWtzrXN7tXp7tXt7vSGlIXOtKULOYUzWaACA5gCN+QCU+gCc/wSl/SGEzjGMziGc5zGl50KElEqElEqMlEqUjFKMlFqEnFKcjFKUlFqcnFqErVKMtVKlhFKthFq1hGOEnGuEnGOEqWuMpWuMtWuUpWucrWuUtXuEpXuMpXOMvXuEvXOUpXOUrXOcrXuUrXOUtXuctWO1jGO1lGu1nHO9nHOlrXOtpXutpU+U1kK173uMxnOlznulxnutxnmi1nul3nm17UrG91rG/3rO/ZwAALtVUP8AAP8ICP8UFP8/P/9aWv9zc4O9NpC9WoSEhIyMjISUnIyUnJSUlISEtYyUpYyktYWwo5C2uaWlnK2lnKmpqaWluayttbWlpbW1tbS1vr29vYSXyIOuyYiwz5S1ypGy25m61oOz5Ki11rW1xrW9xry9xrW02LW835LnprXvv5/G24fH7orF/5TO/5/D9JzO/5TW/5zW/6nK2q3O3rjA2bXa2q3G563G763O56XW/63W/63e/7XO57rO7L3W57XW/7XZ87Pe/73e/7Lwxrvwx63n/7Xn/73n/9Ozr/+QkP+cnP+9vcbGvcbGxsbGzs7OzsXG0M7O1tbOztPT09TW09bW1tbW3t3e3cbb6cbe/9LX4Nbe59nW6N7e597e78/318bn/8bv/8zm887n/87v/873/9/g6tbn99bv99Xu/t7v/9T44N/25973///Kyv/W1v/e3uHd7+fn3ufn5+Ln7+bo5e/v7+fv9+Ds++/v9+7v+ej26uf//+/39+j/8O7/+ff39/b2//H88f/39/7//gAAACH5BAEAAP8ALAAAAABgAMgAAAj/AP/9e3asoMFjAhMmJHiwoEKFDBs+XNjQ4cSBFRFejHjw4r9j7UKKdKTxIUiRIUlePIlS5USWI0sqhJlSZkKa7VyabBetZ09H8Gx+5OkzGqOgL4n6BCoUZFGjSHc+ZZr06dGmPInm1Bf1ptZo1xxxtelUq9iuAp1G4xl2rFSzbmd+bYt2aFaejvzFTStyLTtH+/baXYtXL1qWfgELPkk4Wt7Ffdv9DXwYHsqcgwQNkmnMcsvMm2d6Hgma8+iUpUVfdpQ6YefVrdN6Hv3sWTSZlCzP7mkbt+6Q8KLZjkZJ4aff7YILv60wd3Lgy4kbR668d3Ou8LJrz1785vbv8LoL/zQ2D7x23NjNi/9H3nx29O7DX3evbz2l9N/rzzevP+F9+vbht11/Av3HX4D6JKhggv4guOCCDj6YYIQSUvighRA2p5eEE2rIoT4NeshhiP5tKCGJBZr4IIr/UKLigiy6yOCMetm34Y0gEtgijjnWKCKOPpY4Y486ypgjkTb6o6SSICqZpD/9LLmkJBpKqdeST0ZpJZUlWtlkjEtqKSWXKX65JIjrSWLllU4qpOaZW3oo5ZdpzhmnkHa22eWaegr0Jp8s/slnnYAGWqihha53DCSOGOLoII46AolMizb6aKSTzsSoo4ZAaoiklG566aeZ3iRqp5iGaimqpArl0auwxv8q66y01voPMmTkSgYysOKqK6+v+porsB4Ju2uvuh4bbLLEXkQGKayQQgoZsD4b7bTVQistta9au22213LrkbfYerQIGJhgogkmYnwBhrvvtrtIIuiqy6678H4hL73prtvuu2DE+8W89fqLb8D6Dsyvvf/mu2/B9wIs8CJicBNONRZzI43G0uDisS76WoxxOBpz7DEuIFd8ccYbS9PxxyGvTHLLL6Mc88glu3xyyiKzbDLMYpwstC22tGI0K620K/TJRBvdCtJKL41L00cn/YXUUxddddRLU/201Vh7jTQYYhTt9despM0K2WZrXbXaa5fdytlIw8323G6jrfbddD//vbfcfasNi7tOF+6K2tq+K0vhRh+eduJfLM6449FGqzjjrVAOueSGI2555JhrHu0XkcP9uLSkcCIt4aZfK63qpLBuOuqprw6G33DTDrvsuaO+++2t6776F8JrQoomyCMfO/GvS2t88sqT7rvzx0O//PTHV5/89c1nD73x0nf/vPWkf4+8ut9jgYX565qvPvvoQ/+++fEnP//39SN/P/T5a4KFFZm4BCYEeIkCGtCA/wvgAAd4wAMmkIAMbGABH7hACSIQgBC04AQxWEENqu8SljBgHAoYQgNu4n8gTGEJS1jAE1pBhSmMYQtRGMIakvCALoThCnFIQxjK8BIujIMQ/4UIhyEaMQ7/O2IciqjEJB6RiUd0ohGhaEQpDpGKQ7QiEZUYBytYQQlgDKMYxejFMZoxjGU8oxnTqEYyfrGNboQjGW1Fxzra8Y54zKNHHvAAWvFRj4AM5ENOEIAEzIqQhhTkq5IhCUcwwhGOdIQkkjERRkYykpOcCCduoIJOelIEAQiAJxSySU9+MpSjTIglH4lJSj5klZB8ZCYVkgxKtGNN7aCEKwVSy1taKZe7/AcnKnELctjjHMcUhwEC4ABSEtOYyDyHMplJS1viUpfV9KWUgKkQSGjzl5Do5je3Gc6E1AAW3UinOglpABoo5JzqXGcA2ilOvfCCF7rghZLaUf9OgXjTnvjUpz/4qRBG7KNQjCjoQQGV0ISQ4J684AYvpoGJUCaCBAp56D0lSlGLYjQhBtWHLmihi1yMVEkNFUhIR1rSk/ojpf8wxJWGpBdDKESmR8KRTRMyAlpMIQBT0IUuEBCACPBiBArp6U+DOtSiHvWm/pjFLGgh1VnEYhb62KlAZCpVqkr1qlkt6IcSBFNGjFUfMBVBKqgQyjGgYJ6ymIUIFKJWtgbArXCVq1hNUQq++rUU+yirPv7618DelCvP+U1YE2IIxP7GMosViAhKkYoIBEAAoQQDX+eakMlW9rKZ3exhTUHaU5CWtPDQakwHW9rTmiK1BS3PY5MT2X//MEK2iaWtakNAWl0wIJQOWAVpQaAQ3prCt8AVrimIC9J5rIIW2ggGLVaxilOgNbbPje50q3tdxjo2Obrp7la/mx3awhQEqVjFLHSxgAPElbrMFQh61cte984CvoeFRypqwd9azCI7qm2sfvvrXwArxBHRcI9jDpxg8yw4IS/QRC2AAYxweCMYwKiFJl6gkAhPuMIXzvCGGZyd/gIjOw8WCIJLzN8TB8cRM6FEg7dDHErJGDw1VsgjuMCKbWzjGz7eBiu48Agd89jHQPbxkIt8kxt/J8dNnrF2oHwTRxqCEVf+VFOsjGUs6yQhj3iBBMZM5hfA+CGPOAGZy3zmmXA5/8tfTsubvewqRdr5znjOs573zOc+v6odi7oySdrhEUBDQtAg8Qg2OOGGGczADZzAhqIZ7WhIS/oihkY0oTEd6EcmeiLPcISME0QcSDAD1KKOBqkpYeqJuMINmXCFOMRxC0x4wRWuhrWsaW1rXD8k1KPWR6lP/etUr7rVEEHwmhzzDIUwQ9lWYrZCXOEFWIRjHNjuxjhgcetpV/va2d52txcCbSlJOyHPjsayHdFsgeRE3XwK9ab5Ce81yVsg2Kj2NLQxDW7se9+c8MKl8w2Lf/ub39oI+KXfrSSDK+ne/6C3kvjt74c7YtPHcNFMmeQkjWQcSmyik0aGmYt75jOg9/+sBCcEQnKTuzzlK/+IxvN5cl10PC0u6scuai5QSmgEwWd9MNDH+uBDZMKktLDEAQ5giZHSIhOHEMgWjj5SpTPd6VBX8TP6QVKSmtSkwj4z0L/OUrA/2BDw4FDaubJTtC/oHg+C7T9agIqqHiCUB/gqKlogELp/9e4ByLtV977VtHe1qlJle+H1gXjEKz6muX2sZdoO3sg/Z6cs2IRfAY8Av26C7//IvF+JGoDO9/XzW01OX1fv15BQHh6sZ73rtV5e3dj+GQ1lt+0Tmx3cS30Op1U6Aixx2jls4ffBP8Dwi3982z4DHq01hWlfG2qVPj/604dH9VuUm93bnhLdAX//7SvPne48ogunWEUqoKuN6abiFFdg8vnTn932qx/+TP5E99VfC23cNxXh0R36lx3853/qF4AC4RjJsB3gpX2McA0J6AgLqB0NiHsQ+A/QEAOXMAsExoGzcAkxAA0CkYEbyF+00F8fGIIROIH9RQvZwQwPuIIsVgsuCA8weIEfIYHgkQxfdgw6+B08KBOdEAOaAAzBcIQYhgkx0AkKMYRFiIRJuIRuNoHbEYRTuINx5oOS8Awh8QyNtGVb2IVfOBGdIANiwArcwA2sgAhS+BCSEANnmIakwIZMaBKSxIXt4IVxloNhmIdjOBHEgWWDkGoeEYidQogXsQyPAAMVUAEy//AIy+ARisiIjugIkXgRhjiIMlaIlCCIiOhnoKhnzVAroxiKgFSKs4KKsqKKpnhHrAgrr/gqsdiKtjKLF2GLE4GLtLiKpNiLu+iKvpiKvwiMtKKLCmGMw3iLwciLyUhHyCgQz/gP0diM0OgRzXCN2HiN1piN2EiNtbiM3qhI0TiN4ViM4FiOp3iO6JhH47iO4qiO7mhH5BiP9FiP9niP+DiMz6BasLKPsGIIghCQAikI/LhVAymQBflrCbkRC/kQjhCQs/KQgtCPBxmQ0bARFSkIF/kqEhmREAkrx5AZH/kqISmQsSKRIkkmE4GSAamSJhGQnRIrxwCTg/BnADmQNv95kLIykDUJKzzpEewAkIYACZQwkUAplERplIDIkyP5ENHAlEr5KkWZGcG0EgJZlQLxDJohapRgDFEJEVsJfl6ZkzhZaDdpkrICkDD1KmqZk89ACZ/wlQrRDgD5lnEpkyIplyaRl7PylJsWK36Jl7WhlzMxCIM5K5DQlK+SmIQJarXSbrJycY15YO0wmQoRDQ3plJnpZ5hJK52Zj6AZmqI5mqRZmqZ5mqjZiv44K6vpEWc5kAn5mggZK61Jm5upYorpER35KlpZkRv5axn5mxexmyeZm3uJliTJl7DCkoLgkgcWkClJkjQpk9NpljppnWXpkwLZk6/ykxcRlASZlK//Ap5DWZSFCJXnuZ3G+RBTKQhY+ZIB+Z5aqYldSZjzyZVjiZ3IORF0eZ2x0pZpKQhrOZd1CZeN2Z92aZkluZ43oZyAKQh/CSuBCZKGqZWCaaGywpiIyaC/9pi0IpkRWZmeeZsJSKJ79pmygqKpuaIs2qKCVAx/EKPoMBGHsib0qAd6ACvF0Ad7gKN6wAd+MKMJUaNWEo8+mqMX8Qc9CqR+4Ad88KPEMKREuiRG6qN4MBHDsAd88AfqoCT94KRaKqRTSqXueKRXqhDqwAd7MAxh4qRAqgd9IBCHggNFWqZW+hDEoKVdCiVuWgzFoKXp8A+FggN0KiVViqNnmhDDoAd+jRAlX8oHfFAMSqKmUSolheoPhHqpSnKoepCoAuEHjMqnkCqpSgKqfyCoS0KomKqqdWqneOCp/7CoffCokSolT1qpqZqpmkqm8fiqE1EMkNqnUiKrcmqprGqjVeoRoMoHfUCqSpKmexClqGqphcKpF4EOauoHzkoMPBqnxTqmnAqrAkEMT6qlbvqjQjqtU/96o50qrgKBDn3wpDjKrIEqpeBKj74KK+lADPyarva6ri76EGO6qQFbsAbbqrbCD/hQD/xwEfxAD3aksAyrSBLbsArhDzYwADbgD3W0sNkgCvUwEeBAAAVgDXTksSArSCgbshc7AC7LsQlbD6OwAzpgDg8xsgVQAKAQszNbs4HEDzJLszbbsi/LszvgCz6bEOuQAQRAAKFgqLECtDOLtDbLD/xwKBbrEVJ7tD5rtUuCAWArJVnrEfnAD9mwA71QDjpQDkq7ARrwtnD7tnIAK2V7tmm7tv+gD3LQAXzbt30rB/vwKnWLtmrLtnq7AYibuIkLuLGSD2rrC+WgtkNLD2z/wAGWe7mX2wF0+7iR67P+4Legy7cwexGOqwOQK7mC2gGYu7odMLpka7ZHi7r/4AzywAMfcLu4e7t0QLewC7k+Cw504AHCO7zDSwdj+xCD67s2+w7BS7zEa7yysrVUmxDRIA8+0AM9sAtQCyvS67PUoAzKMAnK8AmTAAlLwg/6wL1BO73KAA5LwgPwe74QG71BqwMsKxC0CwQ/8AO7YLT2+7P1e79yir094Lq0orAfK8CzKw/6Ow50hMAp+7P4kMACu78/YMAHbLXH+w/qtg/zm7AaTLEhrBDgcAc/cAcfbLCxogzv4A/0AA4qHMMyPMM03GcV67AprMIrK7Ika7Ix/7y1SZsQOKuzBQsAAtG9QysQS9u0T8urqAkARjy4d8u2Suy2cQu3c7tnRrzF/wDFXvzFYBzGYhzG/1C6p5u0lLu6mKu5qQnFZdy7sku7tpu7uLu7K2rE/4DE1Gu92Ku9TtyiQCzA+bu//SvDEKzAg+zAM6zBG9zBOVzDkBzJklxHUQAFS7AESHAERmACThBzAmEGZlDJl5zJm9zJEJERHsERBnER4eAPOZAD/qAJlmAJYwAGYzAGAvvKsTzLYnDLuKwQUdAEasAEWTAwi3DMi7ACwCzMxGzMyKzMXrEaroITe6gkgQAISxIP2hwPm4ACUnrN2bzN3QzMV3AFlpAIJf/ACERJCZLQzq4UBeV8zum8zu08S2qxFHUxFFZRFzlwzdcMyxB1D6Uwzv/Qz4Dwz/4Q0APtzQIBz1qgBZhQAsnwDFZyZg4N0RJN0VJyZmXRE1tRF2rBFmchEzkACCYNCAB9T/OgD/tAAQJR0teM0gmt0izt0g390GGwCKDMCOAHfv5g0Ti9CCbACDzd0z/NFzzBDjL2GIfRF8bgGIZREkpi0kticrlAC/dg01ONzUpi1Vht0/8QBVoQBjltAuCnDanADedw1GE91mV91mm91hxtGUaBCIVgARegGabBE4xQCIiA13qdEJrgyinNC1/31QIx2LoMUYed1QkRBWGQBmn/INRXZgor8At28FINHdmTbQKVfdmZ3VC5wQ6DcAWaUAkvMAHJEA2f0BzBUdqZgNqqLR0CYQlSYtgjlQtTNQ8QUNu3jXS6TQu8nRBSINmdDX7ekArboApsXdySLdTIrdzMfWafoA+RkAJC8AZ58AQukBvGYBz6IAnYDQfb3d1dYQn6AFElddVWtQrx0Nv/gN7qnQvsHQvuDd//UNxqsAZr4NlF7dM7pd/87d897SI7dR/GUAVBgAlxMARPEAn9ECDC4AQL3uAPHuEJMQbzwNi6MFWzkAqp4A599A9gsOH3ZFIeDuIiTtz7zd9FAH4oodn53eJr8OK2JBIyfh/MgAht/0AEbVAHhGAMRaIPO97jPx7kBKLhuE0LTF53qBDiDSAQSo5PTE4LqTALT+4OUS4QUsDfa4AGRkDU4PdxAe7lYC7mn2AMBl4mAloKpZAIF6APGC4kbf7mcT7n/6DhO7cLui1VqHAKp6DlAlHiO0ffWI7lgC7oXP7lX24EMI7jZY4Gjf7oIeEPB64X/cAIkNIIUVIkmK7phsDpfTIG92DYwf3k74cK8bDlpI7bHv7kgA4PW57fa6AIaKAIR3BlBW7pi27ruK7rRn3pYWIlTwJyY5IQKAAN9zAP8eAOzv7s8ZAMCiAQyb7s2vzszh7t087laNDtaHAEBfEdDSUF3v7t4Yu+HQ0lKHCCKF4y6ijw7hRAARAAAQ/QAPauADbtVvAu7xDQAPXeAPhO3GVwBmfw7YIAA4WQ8ETd2vkNyt1+BAef8IWw8ClSKCqpcYDinHr2CouwBkkgKxzv8SB5Kp4CKpqyKiVfKpO88izf8i7/8jAf8zI/8zRf8zZ/8zif8zq/8zzf8z7/80BfjgEBADs=)}.fancytree-container.fancytree-rtl .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl .fancytree-exp-nl span.fancytree-expander{background-image:none}.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(data:image/gif;base64,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)}ul.fancytree-container.fancytree-rtl ul{padding:0 16px 0 0}ul.fancytree-container.fancytree-rtl.fancytree-connectors li{background-position:right 0;background-image:url(data:image/gif;base64,R0lGODlhEAAQAPcAAAAAANPT0wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAQABAAAAgxAP8JHPgvAMGDCA0iXFiQ4UKFDglCjChwIkWLETE61MiQ40OKEkEO9JhQZEWTDRcGBAA7)}ul.fancytree-container.fancytree-rtl li.fancytree-lastsib,ul.fancytree-container.fancytree-rtl.fancytree-no-connector>li{background-image:none}#fancytree-drop-marker.fancytree-rtl{background-image:url(data:image/gif;base64,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)}table.fancytree-ext-table{font-family:inherit;font-size:10pt;border-collapse:collapse}table.fancytree-ext-table span.fancytree-node{display:inline-block;box-sizing:border-box}table.fancytree-ext-table td.fancytree-status-merged{text-align:center;font-style:italic;color:silver}table.fancytree-ext-table tr.fancytree-statusnode-error td.fancytree-status-merged{color:red}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr.fancytree-active>td{background-color:#eee}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr>td.fancytree-active-cell{background-color:#cbe8f6}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode.fancytree-cell-nav-mode>tbody>tr>td.fancytree-active-cell{background-color:#3875d7}table.fancytree-ext-columnview tbody tr td{position:relative;border:1px solid gray;vertical-align:top;overflow:auto}table.fancytree-ext-columnview tbody tr td>ul{padding:0}table.fancytree-ext-columnview tbody tr td>ul li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}table.fancytree-ext-columnview span.fancytree-node{position:relative;display:inline-block}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#e0e0e0}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#cbe8f6}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right{position:absolute;right:3px;background-position:0 -80px}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right:hover{background-position:-16px -80px}.fancytree-ext-filter-dimm span.fancytree-node span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-submatch span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-match span.fancytree-title{color:#000;font-weight:700}.fancytree-ext-filter-hide span.fancytree-node.fancytree-hide,.fancytree-ext-filter-hide tr.fancytree-hide{display:none}.fancytree-ext-filter-hide span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-submatch span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-hide span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-match span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-match span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-match span.fancytree-expander{visibility:hidden}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-submatch span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-submatch span.fancytree-expander{visibility:visible}.fancytree-ext-childcounter span.fancytree-custom-icon,.fancytree-ext-childcounter span.fancytree-icon,.fancytree-ext-filter span.fancytree-custom-icon,.fancytree-ext-filter span.fancytree-icon{position:relative}.fancytree-ext-childcounter span.fancytree-childcounter,.fancytree-ext-filter span.fancytree-childcounter{color:#fff;background:#777;border:1px solid gray;position:absolute;top:-6px;right:-6px;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}ul.fancytree-ext-wide{position:relative;min-width:100%;z-index:2;box-sizing:border-box}ul.fancytree-ext-wide span.fancytree-node>span{position:relative;z-index:2}ul.fancytree-ext-wide span.fancytree-node span.fancytree-title{position:absolute;z-index:1;left:0;min-width:100%;margin-left:0;margin-right:0;box-sizing:border-box}.fancytree-ext-fixed-wrapper .fancytree-ext-fixed-hidden{display:none}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-bottom{border-bottom:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-right{border-right:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tl{position:absolute;overflow:hidden;z-index:3;top:0;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tr{position:absolute;overflow:hidden;z-index:2;top:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-bl{position:absolute;overflow:hidden;z-index:2;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-br{position:absolute;overflow:scroll;z-index:1}span.fancytree-title{border:1px solid transparent;border-radius:0}span.fancytree-focused span.fancytree-title{outline:1px dotted #000}span.fancytree-active span.fancytree-title,span.fancytree-selected span.fancytree-title{background-color:#d4d4d4}span.fancytree-selected span.fancytree-title{font-style:italic}.fancytree-treefocus span.fancytree-active span.fancytree-title,.fancytree-treefocus span.fancytree-selected span.fancytree-title{color:#fff;background-color:#3875d7}table.fancytree-ext-table{border-collapse:collapse}table.fancytree-ext-table tbody tr.fancytree-focused{background-color:#99defd}table.fancytree-ext-table tbody tr.fancytree-active{background-color:#4169e1}table.fancytree-ext-table tbody tr.fancytree-selected{background-color:#99defd}table.fancytree-ext-columnview tbody tr td{border:1px solid gray}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#ccc}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#4169e1}.optionsArrayMap,.optionsLast,.optionsArray{color:#000!important}.dynamic-form .required .sb-modal-dropdown-web label:after,.add-to-library .dynamic-form .required .sb-modal-dropdown-web .multi-select-container .list-border ul:after,.add-to-library .dynamic-form .multi-select-container .list-border .required .sb-modal-dropdown-web ul:after{content:\" \"!important}.dynamic-form sb-dynamic-checkbox{margin-top:3.5rem}.dynamic-form .sb-dropdown-select{padding:16px 8px!important}.dynamic-form .list-border{margin-top:2px!important}body{background:#fff!important}.add-to-library{position:relative;z-index:999!important;background:#e5edf5}.add-to-library .sb-required{color:#ff4558;padding-left:2px;position:relative;top:-5px}.add-to-library .back-btn:hover{background:none!important}.add-to-library .back-btn{min-width:auto}.add-to-library .dynamic-form .multi-select-section-app label,.add-to-library .dynamic-form .multi-select-section-app .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .multi-select-section-app ul{margin-bottom:.3rem!important;z-index:inherit}.add-to-library .dynamic-form label,.add-to-library .dynamic-form .multi-select-container .list-border ul{font-size:12px!important;margin-bottom:.5rem!important;color:#121213e0;font-weight:600}.add-to-library .dynamic-form .sb-textbox,.add-to-library .dynamic-form .topic-picker-selector,.add-to-library .dynamic-form select,.add-to-library .dynamic-form .sb-textarea,.add-to-library .dynamic-form .list-border{border:1px solid rgba(34,36,38,.15)!important;padding:.85rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500}.add-to-library .dynamic-form select{padding:12px 8px!important}.add-to-library .dynamic-form .list-border{margin-top:14px!important;min-height:43px!important;height:inherit!important;padding:5px 8px!important}.add-to-library .dynamic-form .multi-select-container .list-border .placeholder{font-weight:500!important;color:#333!important}.add-to-library .dynamic-form .multi-select-container .list-border ul{color:#333;padding:0;margin:0!important;opacity:1!important;font-weight:500!important;position:inherit!important}.add-to-library .dynamic-form .sb-modal-dropdown-web ul{color:#333;padding:0;margin:0!important;opacity:1!important;font-size:12px!important;font-weight:500;border:2px solid #eeeeef;z-index:99999!important}.add-to-library .dynamic-form .sb-keywordbox{border:1px solid rgba(34,36,38,.15)!important;padding:.45rem .5rem!important;border-radius:.28571429rem;font-size:.785rem!important;font-weight:500;padding:0!important}.add-to-library .dynamic-form .sb-keywordbox .ng2-tag-input{padding:0}.add-to-library .dynamic-form .sb-keywordbox .ng2-tag-input tag{margin-left:.5rem}.add-to-library .dynamic-form .sb-keywordbox .ng2-tags-container{margin-top:.2rem}.add-to-library .dynamic-form .sb-keywordbox .tag-wrapper,.add-to-library .dynamic-form .sb-keywordbox delete-icon svg{height:24px;line-height:24px}.add-to-library .dynamic-form .sb-dropdown label,.add-to-library .dynamic-form .sb-dropdown .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .sb-dropdown ul{padding:0}.add-to-library .dynamic-form .sb-textarea-container .sb-textarea{height:2.9rem;padding-top:.5rem!important}.add-to-library .dynamic-form .sb-textarea-container label,.add-to-library .dynamic-form .sb-textarea-container .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .sb-textarea-container ul{padding:0}.add-to-library .dynamic-form .sb-checkbox{padding:0;margin-top:0}.add-to-library .dynamic-form sb-icon-dropdown{top:10px!important;right:6px!important}.add-to-library .sb-textarea-container,.add-to-library .sb-dropdown{margin:1rem 0!important}.add-to-library .sb-container{width:95%!important}.sb-checkbox-tnc .sb-required{position:absolute;padding-left:0;left:18px}.h-100vh{height:100vh}.ui.column.grid>[class*=\"eight wide\"].column{width:73%!important}.footer-fix{padding-bottom:1rem!important}.bg-white,.ui.twelve.grid{background:#fff!important}@keyframes spinner-border{to{transform:rotate(360deg)}}.sb-loading-spinner{width:1rem;height:1rem;margin-right:8px;border-width:.2em;display:inline-block;vertical-align:text-bottom;border:.15em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.sb-btn-loading:before{position:absolute;content:\"\";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;border-radius:500rem;border:.2em solid rgba(0,0,0,.15)}.sb-btn-loading:after{position:absolute;content:\"\";top:50%;left:50%;margin:-.64285714em 0 0 -.64285714em;width:1.28571429em;height:1.28571429em;animation:button-spin .6s linear;animation-iteration-count:infinite;border-radius:500rem;border-color:#fff transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}.sb-btn-outline-disabled{background-color:#fff;border:1px solid #cccccc;color:#999;cursor:default;font-weight:400}lib-chat-window,.chat_bot{display:none!important}.sb-textbox::-webkit-input-placeholder,.add-to-library .dynamic-form .topic-picker-selector::-webkit-input-placeholder{color:var(--gray-100)!important;font-weight:600!important}.treepicker-parent{margin:.6rem 0!important}.ck-content ul{list-style-type:disc!important}.ck-content ul li{margin-bottom:0!important}sb-dynamic-richtext .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-left:1px solid #c4c4c4!important;border-right:1px solid #c4c4c4!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important;border-bottom:0!important}sb-dynamic-richtext .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,sb-dynamic-richtext .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:1px solid #c4c4c4!important;border-color:var(--ck-color-base-border)!important}sb-dynamic-richtext .ck-content .table{margin:.8rem 0!important}.sb-textbox::placeholder,.add-to-library .dynamic-form .topic-picker-selector::placeholder,.sb-textarea::placeholder{color:#333!important;font-weight:500!important}.multi-select-container .sb-modal-dropdown-web ul{border:1px solid #d6d4d4!important;box-shadow:0 0 2px #cecaca!important}.sb-disabled-textarea{background:var(--gray-0)!important;border:.0625rem solid var(--gray-100)!important;opacity:.45!important;pointer-events:none!important;font-size:1em!important}.overflow-y{overflow-y:auto}input:focus-visible{border:none!important}.dialcodeModal input:focus-visible{border:.0625rem solid #999999!important}#fancytree-drop-marker.fa-long-arrow-right:before{content:\" \"!important}.sb-collectionTree-fancyTreelist ul>li>span:first-child{padding:15px 33px}.sb-collectionTree-fancyTreelist .fancytree-exp-n span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-nl span.fancytree-expander{background:none!important}.sb-collectionTree-fancyTreelist .ui-fancytree:before,.sb-collectionTree-fancyTreelist .ui-fancytree ul:before{content:none!important}.sb-collectionTree-fancyTreelist .ui-fancytree li:before,.sb-collectionTree-fancyTreelist .ui-fancytree ul li:before{content:none!important}.sb-collectionTree-fancyTreelist .ui-fancytree li .fancytree-custom-icon:before{color:var(--primary-color)!important;margin-left:5px}.sb-collectionTree-fancyTreelist .ui-fancytree .fancytree-folder .fancytree-title{color:var(--primary-color)!important;font-size:.9286rem!important;font-weight:700!important;padding-left:5px;width:inherit!important}.sb-collectionTree-fancyTreelist .ui-fancytree .fa-caret-right,.sb-collectionTree-fancyTreelist .ui-fancytree .fa-caret-down,.sb-collectionTree-fancyTreelist .ui-fancytree ul .fa-caret-right,.sb-collectionTree-fancyTreelist .ui-fancytree ul .fa-caret-down{display:block!important}.sb-collectionTree-fancyTreelist ul.fancytree-container{font-size:inherit!important;font-family:inherit!important;border:none!important}.sb-collectionTree-fancyTreelist ul.fancytree-connectors.fancytree-container li{background-image:none!important}.sb-collectionTree-fancyTreelist span.fancytree-node{width:inherit!important}.sb-collectionTree-fancyTreelist span.fancytree-active span.fancytree-title,.sb-collectionTree-fancyTreelist span.fancytree-selected span.fancytree-title,.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-active span.fancytree-title,.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-selected span.fancytree-title{background:none!important}.sb-collectionTree-fancyTreelist .fancytree-exp-edl span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-el span.fancytree-expander{background-position:-34px -94px}.sb-collectionTree-fancyTreelist span.fancytree-focused span.fancytree-title{outline:0!important}.sb-collectionTree-fancyTreelist .ui-fancytree{margin:0!important}.sb-collectionTree-fancyTreelist.ui-fancytree,.sb-collectionTree-fancyTreelist .ui-fancytree ul{margin:0 0 0 .625rem!important}.sb-collectionTree-fancyTreelist .fancytree-exp-e span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-ed span.fancytree-expander{background-position:-32px -68px!important}.sb-collectionTree-fancyTreelist .fancytree-exp-edl span.fancytree-expander,.sb-collectionTree-fancyTreelist .fancytree-exp-el span.fancytree-expander{background-position:-34px -94px!important}.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-active span.fancytree-title,.sb-collectionTree-fancyTreelist .fancytree-treefocus span.fancytree-selected span.fancytree-title{color:inherit}.sb-loader{position:fixed;top:0%;left:23%;transform:translate(-50%,-50%)}.sb-loader:after{content:\"\";width:32px;height:32px;border-radius:50%;border:2px solid;border-color:#ccc #ccc transparent;animation:loader .5s infinite;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sb-loader.dimmer{width:100%;height:100%;background:#000c;z-index:9999}@keyframes loader{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.sb-success-loader{position:absolute!important;top:46%!important;left:-12%!important;transform:translate(-46%,-50%)!important}.sb-success-loader:after{width:1.2rem!important;height:1.2rem!important}.pos-relative{position:relative}.sb-circle-ul{list-style-type:disc;padding:0;font-size:.785rem}.sb-circle-ul li{margin:0!important;line-height:1.4}.sb-bg-color-success-0{background:#e1ffdf}.flex-ai-center{align-self:center!important}.sb-br-primary{border:1px dashed #aedbfd!important}.sb-min-h-250{min-height:250px}.z-index-9 .menu{z-index:99999!important}.p-50{padding:10px 0 10px 50px}.h-1{height:1.1em!important}.mn-15{margin:-15px!important}.upload-input-button{position:relative}.upload-input-button input{position:absolute;opacity:0;left:0}.bg-none{background:none}.label-disable{opacity:.3!important;font-weight:500!important}.sb-folder-menu{position:absolute;left:35px;display:flex;justify-content:space-between;width:24%;margin-top:5px}.sb-disable-icon{color:#ccc!important}.sb-w-240px{width:240px}.showCollaborator .ui.dimmer{overflow-y:unset!important}.showCollaborator .ui.segment{max-height:calc(80vh - 8em)!important;overflow-y:auto!important}.showCollaborator .sb-modal-content .flex-align-item-center{border-bottom:solid 1px #ccc;margin:0 -16px;padding:0 20px}.showCollaborator .ui.pointing{margin:0 -15px!important}.showCollaborator .ui.pointing .item.active{font-weight:600!important}.publish-checklist label,.publish-checklist .add-to-library .dynamic-form .multi-select-container .list-border ul,.add-to-library .dynamic-form .multi-select-container .list-border .publish-checklist ul{font-size:13px!important;padding:0 1.5rem!important}.sb-keywords input{width:100%}.sb-keywords input::placeholder{display:block!important;width:100%}.sb-keywords .ng2-tags-container{width:inherit!important;display:block!important}.sb-keywords .ng2-tags-container tag{display:inline-flex!important}.sb-dialcode{border-bottom:.5px solid #333333;padding:8px 5px!important;border-radius:0!important}.sb-dialcode:focus-visible{border-bottom:.5px solid #333333!important;border-radius:0!important;outline:0!important}sb-dynamic-timer .sb-timer-input{width:10rem;font-size:.785rem!important;border:1px solid rgba(34,36,38,.15)!important;border-radius:.28571429rem;padding:12px 10px;margin-right:5px;height:44px}sb-dynamic-timer .sb-timer-input:focus-visible{border:1px solid rgba(34,36,38,.15)!important}sb-dynamic-timer .sb-btn-normal{height:42px!important}\n"] }]
|
|
1114
|
+
}], ctorParameters: function () { return [{ type: i1.EditorService }, { type: i2.TreeService }, { type: i3.FrameworkService }, { type: i4.HelperService }, { type: i5.EditorTelemetryService }, { type: i6.Router }, { type: i7.ToasterService }, { type: i8.DialcodeService }, { type: i9.ConfigService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { editorConfig: [{
|
|
1115
|
+
type: Input
|
|
1116
|
+
}], editorEmitter: [{
|
|
1117
|
+
type: Output
|
|
1118
|
+
}], modal: [{
|
|
1119
|
+
type: ViewChild,
|
|
1120
|
+
args: ['modal']
|
|
1121
|
+
}], unloadHandler: [{
|
|
1122
|
+
type: HostListener,
|
|
1123
|
+
args: ['window:unload', ['$event']]
|
|
1124
|
+
}] } });
|
|
1125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbGxlY3Rpb24tZWRpdG9yLWxpYnJhcnkvc3JjL2xpYi9jb21wb25lbnRzL2VkaXRvci9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvZWRpdG9yL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQzlCLFlBQVksRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQWlCLFNBQVMsRUFDbEUsTUFBTSxlQUFlLENBQUM7QUFVdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFGLE9BQU8sRUFBYyxVQUFVLEVBQUUsUUFBUSxFQUFnQixPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUy9CLE1BQU0sT0FBTyxlQUFlO0lBb0UxQixZQUFvQixhQUE0QixFQUFTLFdBQXdCLEVBQVUsZ0JBQWtDLEVBQ3pHLGFBQTRCLEVBQVMsZ0JBQXdDLEVBQVUsTUFBYyxFQUNyRyxjQUE4QixFQUFVLGVBQWdDLEVBQ3pFLGFBQTRCLEVBQVUsa0JBQXFDO1FBSDFFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3pHLGtCQUFhLEdBQWIsYUFB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SUFBSSxDQUFDLENBQUM7YUFDbEI7UUFDTixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQzsrR0F4bkNVLGVBQWU7bUdBQWYsZUFBZSw0U0N4QjVCLCtnYUFtTEE7OzRGRDNKYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLFlBQVksaUJBR1AsaUJBQWlCLENBQUMsSUFBSTswV0FJNUIsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNxQixLQUFLO3NCQUFoQyxTQUFTO3VCQUFDLE9BQU87Z0JBdUVsQixhQUFhO3NCQURaLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgQWZ0ZXJWaWV3SW5pdCwgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3IvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJlZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmVlL3RyZWUuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJhbWV3b3JrL2ZyYW1ld29yay5zZXJ2aWNlJztcbmltcG9ydCB7IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZWxlbWV0cnkvdGVsZW1ldHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2FzdGVyL3RvYXN0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaGVscGVyL2hlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7IElFZGl0b3JDb25maWcgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2VkaXRvcic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFrZVVudGlsLCB0YXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmb3JrSm9pbiwgU3Vic2NyaXB0aW9uLCBTdWJqZWN0LCBtZXJnZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbGNvZGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbGNvZGUvZGlhbGNvZGUuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgZWRpdG9yQ29uZmlnOiBJRWRpdG9yQ29uZmlnIHwgdW5kZWZpbmVkO1xuICBAT3V0cHV0KCkgZWRpdG9yRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKCdtb2RhbCcpIHByaXZhdGUgbW9kYWw7XG4gIHB1YmxpYyBxdWVzdGlvbkNvbXBvbmVudElucHV0OiBhbnkgPSB7fTtcbiAgcHVibGljIGNvbGxlY3Rpb25UcmVlTm9kZXM6IGFueTtcbiAgcHVibGljIHNlbGVjdGVkTm9kZURhdGE6IGFueSA9IHt9O1xuICBwdWJsaWMgdGVtcGxhdGVMaXN0OiBhbnk7XG4gIHB1YmxpYyBzaG93Q29uZmlybVBvcHVwID0gZmFsc2U7XG4gIHB1YmxpYyB0ZXJtcyA9IGZhbHNlO1xuICBwdWJsaWMgcGFnZUlkID0gJ2NvbGxlY3Rpb25fZWRpdG9yJztcbiAgcHVibGljIHBhZ2VTdGFydFRpbWU7XG4gIHB1YmxpYyByb290Rm9ybUNvbmZpZzogYW55O1xuICBwdWJsaWMgdW5pdEZvcm1Db25maWc6IGFueTtcbiAgcHVibGljIGxlYWZGb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBzaG93TGlicmFyeVBhZ2UgPSBmYWxzZTtcbiAgcHVibGljIGxpYnJhcnlDb21wb25lbnRJbnB1dDogYW55ID0ge307XG4gIHB1YmxpYyBlZGl0b3JNb2RlO1xuICBwdWJsaWMgY29sbGVjdGlvbklkO1xuICBwdWJsaWMgaXNDdXJyZW50Tm9kZUZvbGRlcjogYm9vbGVhbjtcbiAgcHVibGljIGlzQ3VycmVudE5vZGVSb290OiBib29sZWFuO1xuICBwdWJsaWMgaXNRdW1sUGxheWVyOiBib29sZWFuO1xuICBwdWJsaWMgc2hvd1F1ZXN0aW9uVGVtcGxhdGVQb3B1cCA9IGZhbHNlO1xuICBwdWJsaWMgZGVsZXRlQ29uZmlybU1lc3NhZ2U7XG4gIHB1YmxpYyBzaG93RGVsZXRlQ29uZmlybWF0aW9uUG9wVXAgPSBmYWxzZTtcbiAgcHVibGljIHNob3dQcmV2aWV3ID0gZmFsc2U7XG4gIHB1YmxpYyBhY3Rpb25UeXBlOiBzdHJpbmc7XG4gIHByaXZhdGUgZm9ybVN0YXR1c01hcHBlcjogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgcHVibGljIHRhcmdldEZyYW1ld29yaztcbiAgcHVibGljIG9yZ2FuaXNhdGlvbkZyYW1ld29yaztcbiAgcHVibGljIHByaW1hcnlDYXRlZ29yeURlZjogYW55O1xuICB0b29sYmFyQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBidXR0b25Mb2FkZXJzID0ge1xuICAgIHNhdmVBc0RyYWZ0QnV0dG9uTG9hZGVyOiBmYWxzZSxcbiAgICBhZGRGcm9tTGlicmFyeUJ1dHRvbkxvYWRlcjogZmFsc2UsXG4gICAgYWRkUXVlc3Rpb25Gcm9tTGlicmFyeUJ1dHRvbkxvYWRlcjogZmFsc2UsXG4gICAgcHJldmlld0J1dHRvbkxvYWRlcjogZmFsc2UsXG4gICAgc2hvd1Jldmlld0NvbW1lbnQ6IGZhbHNlXG4gIH07XG4gIHB1YmxpYyBjb250ZW50Q29tbWVudDogc3RyaW5nO1xuICBwdWJsaWMgc2hvd0NvbW1lbnQ6IGJvb2xlYW47XG4gIHB1YmxpYyBzaG93UmV2aWV3TW9kYWw6IGJvb2xlYW47XG4gIHB1YmxpYyBjc3ZEcm9wRG93bk9wdGlvbnM6IGFueSA9IHt9O1xuICBwdWJsaWMgc2hvd0NzdlVwbG9hZFBvcHVwID0gZmFsc2U7XG4gIHB1YmxpYyBpc09iamVjdFR5cGVDb2xsZWN0aW9uOiBhbnk7XG4gIHB1YmxpYyBpc0NyZWF0ZUNzdiA9IHRydWU7XG4gIHB1YmxpYyBpc1N0YXR1c1Jldmlld01vZGUgPSBmYWxzZTtcbiAgcHVibGljIGlzRW5hYmxlQ3N2QWN0aW9uIDogYW55O1xuICBwdWJsaWMgaXNUcmVlSW5pdGlhbGl6ZWQ6IGFueTtcbiAgcHVibGljIGlzaGllcmFyY2h5Q29uZmlnU2V0ID0gIGZhbHNlO1xuICBwdWJsaWMgYWRkQ29sbGFib3JhdG9yOiBib29sZWFuO1xuICBwdWJsaWMgcHVibGlzaGNoZWNrbGlzdDogYW55O1xuICBwdWJsaWMgaXNDb21wb25lbmV0SW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgcHVibGljIHVuU3Vic2NyaWJlU2hvd0xpYnJhcnlQYWdlRW1pdHRlcjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgdW5TdWJzY3JpYmVzaG93UXVlc3Rpb25MaWJyYXJ5UGFnZUVtaXR0ZXI6IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIHNvdXJjaW5nU2V0dGluZ3M6IGFueTtcbiAgcHVibGljIHNldENoaWxkUXVlc3Rpb246IGFueTtcbiAgcHVibGljIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHB1YmxpYyBvbkNvbXBvbmVudERlc3Ryb3kkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICBwdWJsaWMgb3V0Y29tZURlY2xhcmF0aW9uOiBhbnk7XG4gIHB1YmxpYyBsZXZlbHNBcnJheTogYW55O1xuICBwdWJsaWMgb2JqZWN0VHlwZTogYW55O1xuICBwdWJsaWMgcmVsYXRpb25Gb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBxdWVzdGlvbmxpYnJhcnlJbnB1dDogYW55ID0ge307XG4gIHB1YmxpYyBjcmVhdGlvbkNvbnRleHQ6IGFueTtcbiAgcHJpdmF0ZSBldmlkZW5jZU1pbWVUeXBlOiBhbnk7XG4gIHByaXZhdGUgZWNtOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHVibGljIHRyZWVTZXJ2aWNlOiBUcmVlU2VydmljZSwgcHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGhlbHBlclNlcnZpY2U6IEhlbHBlclNlcnZpY2UsIHB1YmxpYyB0ZWxlbWV0cnlTZXJ2aWNlOiBFZGl0b3JUZWxlbWV0cnlTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHRvYXN0ZXJTZXJ2aWNlOiBUb2FzdGVyU2VydmljZSwgcHJpdmF0ZSBkaWFsY29kZVNlcnZpY2U6IERpYWxjb2RlU2VydmljZSxcbiAgICAgICAgICAgICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnVubG9hZCcsIFsnJGV2ZW50J10pXG4gIHVubG9hZEhhbmRsZXIoZXZlbnQpIHtcbiAgICB0aGlzLmdlbmVyYXRlVGVsZW1ldHJ5RW5kRXZlbnQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgaWYgKHRoaXMuZWRpdG9yQ29uZmlnKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuZWRpdG9yQ29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuZWRpdG9yQ29uZmlnID0gSlNPTi5wYXJzZSh0aGlzLmVkaXRvckNvbmZpZyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBlZGl0b3JDb25maWc6ICcsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuaW5pdGlhbGl6ZSh0aGlzLmVkaXRvckNvbmZpZyk7XG4gICAgdGhpcy5lZGl0b3JNb2RlID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGU7XG4gICAgdGhpcy50cmVlU2VydmljZS5pbml0aWFsaXplKHRoaXMuZWRpdG9yQ29uZmlnKTtcbiAgICB0aGlzLmNvbGxlY3Rpb25JZCA9IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC5pZGVudGlmaWVyJyk7XG4gICAgdGhpcy5vYmplY3RUeXBlID0gXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb25maWcub2JqZWN0VHlwZScpO1xuICAgIHRoaXMudG9vbGJhckNvbmZpZyA9IHRoaXMuZWRpdG9yU2VydmljZS5nZXRUb29sYmFyQ29uZmlnKCk7XG4gICAgdGhpcy5pc09iamVjdFR5cGVDb2xsZWN0aW9uID0gdGhpcy5jb25maWdTZXJ2aWNlLmNhdGVnb3J5Q29uZmlnW3RoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlXSA9PT0gJ3F1ZXN0aW9uU2V0JyA/IGZhbHNlIDogdHJ1ZTtcbiAgICB0aGlzLmlzU3RhdHVzUmV2aWV3TW9kZSA9IHRoaXMuaXNSZXZpZXdNb2RlKCk7XG4gICAgdGhpcy5tZXJnZUNvbGxlY3Rpb25FeHRlcm5hbFByb3BlcnRpZXMoKS5zdWJzY3JpYmUoXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3QgaGllcmFyY2h5UmVzcG9uc2UgPSBfLmZpcnN0KHJlc3BvbnNlKTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IF8uZ2V0KGhpZXJhcmNoeVJlc3BvbnNlLCBgcmVzdWx0LiR7dGhpcy5jb25maWdTZXJ2aWNlLmNhdGVnb3J5Q29uZmlnW3RoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlXX1gKTtcbiAgICAgICAgdGhpcy50b29sYmFyQ29uZmlnLnRpdGxlID0gY29sbGVjdGlvbi5uYW1lO1xuICAgICAgICB0aGlzLnRvb2xiYXJDb25maWcuaXNBZGRDb2xsYWJvcmF0b3IgPSAoY29sbGVjdGlvbi5jcmVhdGVkQnkgPT09IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC51c2VyLmlkJykpO1xuICAgICAgICB0aGlzLm9yZ2FuaXNhdGlvbkZyYW1ld29yayA9IF8uZ2V0KGNvbGxlY3Rpb24sICdmcmFtZXdvcmsnKSB8fCBfLmdldCh0aGlzLmVkaXRvckNvbmZpZywgJ2NvbnRleHQuZnJhbWV3b3JrJyk7XG4gICAgICAgIHRoaXMudGFyZ2V0RnJhbWV3b3JrID0gXy5nZXQoY29sbGVjdGlvbiwgJ3RhcmdldEZXSWRzJykgfHwgXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb250ZXh0LnRhcmdldEZXSWRzJyk7XG4gICAgICAgIGlmICh0aGlzLm9yZ2FuaXNhdGlvbkZyYW1ld29yaykge1xuICAgICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5pbml0aWFsaXplKHRoaXMub3JnYW5pc2F0aW9uRnJhbWV3b3JrKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLnRhcmdldEZyYW1ld29yaykpIHtcbiAgICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0VGFyZ2V0RnJhbWV3b3JrQ2F0ZWdvcmllcyh0aGlzLnRhcmdldEZyYW1ld29yayk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2hhbm5lbCA9IF8uZ2V0KGNvbGxlY3Rpb24sICdjaGFubmVsJykgfHwgXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb250ZXh0LmNoYW5uZWwnKTtcbiAgICAgICAgdGhpcy5oZWxwZXJTZXJ2aWNlLmluaXRpYWxpemUoY2hhbm5lbCk7XG4gICAgICB9KTtcbiAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0Q2F0ZWdvcnlEZWZpbml0aW9uKHRoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5wcmltYXJ5Q2F0ZWdvcnksXG4gICAgICB0aGlzLmVkaXRvckNvbmZpZy5jb250ZXh0LmNoYW5uZWwsIHRoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIGNvbnN0IGRpYWxjb2RlID0gXy5nZXQocmVzcG9uc2UsICdyZXN1bHQub2JqZWN0Q2F0ZWdvcnlEZWZpbml0aW9uLm9iamVjdE1ldGFkYXRhLnNjaGVtYS5wcm9wZXJ0aWVzLmdlbmVyYXRlRElBTENvZGVzLmRlZmF1bHQnKTtcbiAgICAgICAgICB0aGlzLnRvb2xiYXJDb25maWcuc2hvd0RpYWxjb2RlID0gZGlhbGNvZGUgPyBkaWFsY29kZS50b0xvd2VyQ2FzZSgpIDogJ25vJztcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgICAgY29uc3QgZW5hYmxlQnVsa1VwbG9hZCA9IF8uZ2V0KHJlc3BvbnNlLCAncmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbi5vYmplY3RNZXRhZGF0YS5jb25maWcuc291cmNpbmdTZXR0aW5ncy5jb2xsZWN0aW9uLmVuYWJsZUJ1bGtVcGxvYWQnKTtcbiAgICAgICAgICB0aGlzLnRvb2xiYXJDb25maWcuc2hvd0J1bGtVcGxvYWRCdG4gPSBlbmFibGVCdWxrVXBsb2FkID8gZW5hYmxlQnVsa1VwbG9hZCA6IGZhbHNlO1xuXG4gICAgICAgICAgdGhpcy5zb3VyY2luZ1NldHRpbmdzID0gXy5nZXQocmVzcG9uc2UsICdyZXN1bHQub2JqZWN0Q2F0ZWdvcnlEZWZpbml0aW9uLm9iamVjdE1ldGFkYXRhLmNvbmZpZy5zb3VyY2luZ1NldHRpbmdzJywge30pO1xuICAgICAgICAgIHRoaXMuaGVscGVyU2VydmljZS5jaGFubmVsRGF0YSQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgKGNoYW5uZWxSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNldGhpZXJhcmNoeUNvbmZpZyhyZXNwb25zZSk7XG4gICAgICAgICAgICAgIHRoaXMucHJpbWFyeUNhdGVnb3J5RGVmID0gcmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIHRoaXMucGFnZVN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLmluaXRpYWxpemVUZWxlbWV0cnkodGhpcy5lZGl0b3JDb25maWcpO1xuICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQgPSB0aGlzLnBhZ2VJZDtcbiAgICB0aGlzLnRlbGVtZXRyeVNlcnZpY2Uuc3RhcnQoeyB0eXBlOiAnZWRpdG9yJywgcGFnZWlkOiB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkIH0pO1xuICAgIHRoaXMudW5TdWJzY3JpYmVTaG93TGlicmFyeVBhZ2VFbWl0dGVyID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldHNob3dMaWJyYXJ5UGFnZUVtaXR0ZXIoKVxuICAgICAgLnN1YnNjcmliZShpdGVtID0+IHRoaXMuc2hvd0xpYnJhcnlDb21wb25lbnRQYWdlKCkpO1xuICAgIHRoaXMudHJlZVNlcnZpY2UudHJlZVN0YXR1cyQucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSQpKS5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gJ2xvYWRlZCcpIHtcbiAgICAgICAgdGhpcy5nZXRGcmFtZXdvcmtEZXRhaWxzKHRoaXMucHJpbWFyeUNhdGVnb3J5RGVmKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldEZyYW1ld29ya0RldGFpbHMoY2F0ZWdvcnlEZWZpbml0aW9uRGF0YSkge1xuICAgIGxldCBvcmdGV0lkZW50aWZpZXJzOiBhbnk7XG4gICAgbGV0IHRhcmdldEZXSWRlbnRpZmllcnM6IGFueTtcbiAgICBsZXQgb3JnRldUeXBlOiBhbnk7XG4gICAgbGV0IHRhcmdldEZXVHlwZTogYW55O1xuICAgIG9yZ0ZXSWRlbnRpZmllcnMgPSBfLmdldChjYXRlZ29yeURlZmluaXRpb25EYXRhLCAncmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbi5vYmplY3RNZXRhZGF0YS5zY2hlbWEucHJvcGVydGllcy5mcmFtZXdvcmsuZW51bScpIHx8XG4gICAgICBfLmdldChjYXRlZ29yeURlZmluaXRpb25EYXRhLCAncmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbi5vYmplY3RNZXRhZGF0YS5zY2hlbWEucHJvcGVydGllcy5mcmFtZXdvcmsuZGVmYXVsdCcpO1xuICAgIGlmIChfLmdldCh0aGlzLmVkaXRvckNvbmZpZywgJ2NvbmZpZy5yZW5kZXJUYXhvbm9teScpID09PSB0cnVlKSB7XG4gICAgICBjb25zdCBvcmdJZCA9IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC5pZGVudGlmaWVyJyk7XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZmV0Y2hPdXRDb21lRGVjbGFyYXRpb24ob3JnSWQpLnRvUHJvbWlzZSgpXG4gICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgaWYgKGRhdGE/LnJlc3VsdCkge1xuICAgICAgICAgIHRoaXMub3V0Y29tZURlY2xhcmF0aW9uID0gXy5nZXQoZGF0YT8ucmVzdWx0LCAncXVlc3Rpb25zZXQub3V0Y29tZURlY2xhcmF0aW9uJyk7XG4gICAgICAgICAgdGhpcy5sZXZlbHNBcnJheSA9IE9iamVjdC5rZXlzKHRoaXMub3V0Y29tZURlY2xhcmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICB0aGlzLnB1Ymxpc2hjaGVja2xpc3QgPSBfLmdldChjYXRlZ29yeURlZmluaXRpb25EYXRhLCAncmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbi5mb3Jtcy5wdWJsaXNoY2hlY2tsaXN0LnByb3BlcnRpZXMnKSB8fCBfLmdldChjYXRlZ29yeURlZmluaXRpb25EYXRhLCAncmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbi5mb3Jtcy5yZXZpZXcucHJvcGVydGllcycpIHx8IFtdO1xuICAgIGlmIChfLmlzRW1wdHkodGhpcy50YXJnZXRGcmFtZXdvcmsgfHwgXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb250ZXh0LnRhcmdldEZXSWRzJykpKSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICB0YXJnZXRGV0lkZW50aWZpZXJzID0gXy5nZXQoY2F0ZWdvcnlEZWZpbml0aW9uRGF0YSwgJ3Jlc3VsdC5vYmplY3RDYXRlZ29yeURlZmluaXRpb24ub2JqZWN0TWV0YWRhdGEuc2NoZW1hLnByb3BlcnRpZXMudGFyZ2V0RldJZHMuZGVmYXVsdCcpO1xuICAgICAgaWYgKF8uaXNFbXB0eSh0YXJnZXRGV0lkZW50aWZpZXJzKSkge1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgICAgIHRhcmdldEZXVHlwZSA9IF8uZ2V0KGNhdGVnb3J5RGVmaW5pdGlvbkRhdGEsICdyZXN1bHQub2JqZWN0Q2F0ZWdvcnlEZWZpbml0aW9uLm9iamVjdE1ldGFkYXRhLmNvbmZpZy5mcmFtZXdvcmtNZXRhZGF0YS50YXJnZXRGV1R5cGUnKTtcbiAgICAgICAgY29uc3QgY2hhbm5lbEZyYW1ld29ya3MgPSBfLmdldCh0aGlzLmhlbHBlclNlcnZpY2UuY2hhbm5lbEluZm8sICdmcmFtZXdvcmtzJyk7XG4gICAgICAgIGNvbnN0IGNoYW5uZWxGcmFtZXdvcmtzVHlwZSA9IF8ubWFwKGNoYW5uZWxGcmFtZXdvcmtzLCAndHlwZScpO1xuICAgICAgICBjb25zdCBjaGFubmVsRnJhbWV3b3Jrc0lkZW50aWZpZXJzID0gXy5tYXAoXy5nZXQodGhpcy5oZWxwZXJTZXJ2aWNlLmNoYW5uZWxJbmZvLCAnZnJhbWV3b3JrcycpLCAnaWRlbnRpZmllcicpO1xuICAgICAgICBjb25zdCBkaWZmZXJlbmNlID0gXy5kaWZmZXJlbmNlKHRhcmdldEZXVHlwZSwgXy51bmlxKGNoYW5uZWxGcmFtZXdvcmtzVHlwZSkpO1xuXG4gICAgICAgIGlmICh0YXJnZXRGV1R5cGUgJiYgY2hhbm5lbEZyYW1ld29ya3NUeXBlICYmIF8uaXNFbXB0eShkaWZmZXJlbmNlKSkge1xuICAgICAgICAgIHRoaXMudGFyZ2V0RnJhbWV3b3JrID0gXy5nZXQoXy5maXJzdChfLmZpbHRlcihjaGFubmVsRnJhbWV3b3JrcywgZnJhbWV3b3JrID0+IHtcbiAgICAgICAgICAgIHJldHVybiBmcmFtZXdvcmsudHlwZSA9PT0gXy5maXJzdCh0YXJnZXRGV1R5cGUpO1xuICAgICAgICAgIH0pKSwgJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnVwZGF0ZU1ldGFEYXRhUHJvcGVydHkoJ3RhcmdldEZXSWRzJywgXy5jYXN0QXJyYXkodGhpcy50YXJnZXRGcmFtZXdvcmspKTtcbiAgICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0VGFyZ2V0RnJhbWV3b3JrQ2F0ZWdvcmllcyhfLmNhc3RBcnJheSh0aGlzLnRhcmdldEZyYW1ld29yaykpO1xuICAgICAgICB9IGVsc2UgaWYgKCh0YXJnZXRGV1R5cGUgJiYgY2hhbm5lbEZyYW1ld29ya3NUeXBlICYmICFfLmlzRW1wdHkoZGlmZmVyZW5jZSkpIHx8IF8uaXNFbXB0eShjaGFubmVsRnJhbWV3b3Jrc1R5cGUpKSB7XG4gICAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldEZyYW1ld29ya0RhdGEodW5kZWZpbmVkLCBkaWZmZXJlbmNlLCB1bmRlZmluZWQsICdZZXMnKS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAodGFyZ2V0UmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50YXJnZXRGcmFtZXdvcmsgPSBfLmdldChfLmZpcnN0KF8uZ2V0KHRhcmdldFJlc3BvbnNlLCAncmVzdWx0LkZyYW1ld29yaycpKSwgJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy50YXJnZXRGcmFtZXdvcmspKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlU2VydmljZS51cGRhdGVNZXRhRGF0YVByb3BlcnR5KCd0YXJnZXRGV0lkcycsIF8uY2FzdEFycmF5KHRoaXMudGFyZ2V0RnJhbWV3b3JrKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmdldFRhcmdldEZyYW1ld29ya0NhdGVnb3JpZXMoXy5jYXN0QXJyYXkodGhpcy50YXJnZXRGcmFtZXdvcmspKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtEYXRhKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0YXJnZXRGV0lkZW50aWZpZXJzKS5zdWJzY3JpYmUoXG4gICAgICAgICAgKHRhcmdldFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRhcmdldEZyYW1ld29yayA9IF8uZ2V0KF8uZmlyc3QoXy5nZXQodGFyZ2V0UmVzcG9uc2UsICdyZXN1bHQuRnJhbWV3b3JrJykpLCAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy50YXJnZXRGcmFtZXdvcmspKSB7XG4gICAgICAgICAgICAgIHRoaXMudHJlZVNlcnZpY2UudXBkYXRlTWV0YURhdGFQcm9wZXJ0eSgndGFyZ2V0RldJZHMnLCBfLmNhc3RBcnJheSh0aGlzLnRhcmdldEZyYW1ld29yaykpO1xuICAgICAgICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0VGFyZ2V0RnJhbWV3b3JrQ2F0ZWdvcmllcyhfLmNhc3RBcnJheSh0aGlzLnRhcmdldEZyYW1ld29yaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KG9yZ0ZXSWRlbnRpZmllcnMpKSB7XG4gICAgICBsZXQgb3JnRnJhbWV3b3JrTGlzdCA9IFtdO1xuICAgICAgb3JnRldUeXBlID0gXy5nZXQoY2F0ZWdvcnlEZWZpbml0aW9uRGF0YSwgJ3Jlc3VsdC5vYmplY3RDYXRlZ29yeURlZmluaXRpb24ub2JqZWN0TWV0YWRhdGEuY29uZmlnLmZyYW1ld29ya01ldGFkYXRhLm9yZ0ZXVHlwZScpO1xuICAgICAgY29uc3QgY2hhbm5lbEZyYW1ld29ya3NUeXBlID0gXy5tYXAoXy5nZXQodGhpcy5oZWxwZXJTZXJ2aWNlLmNoYW5uZWxJbmZvLCAnZnJhbWV3b3JrcycpLCAndHlwZScpO1xuICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IF8uZGlmZmVyZW5jZShvcmdGV1R5cGUsIF8udW5pcShjaGFubmVsRnJhbWV3b3Jrc1R5cGUpKTtcbiAgICAgIGlmIChjaGFubmVsRnJhbWV3b3Jrc1R5cGUpIHtcbiAgICAgICAgb3JnRnJhbWV3b3JrTGlzdCA9IF8ubWFwKF8uZ2V0KHRoaXMuaGVscGVyU2VydmljZS5jaGFubmVsSW5mbywgJ2ZyYW1ld29ya3MnKSwgKGZyYW1ld29yaykgPT4ge1xuICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBmcmFtZXdvcmsubmFtZSwgaWRlbnRpZmllcjogZnJhbWV3b3JrLmlkZW50aWZpZXIgfTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcmdGV1R5cGUgJiYgY2hhbm5lbEZyYW1ld29ya3NUeXBlICYmIF8uaXNFbXB0eShkaWZmZXJlbmNlKSkge1xuICAgICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZnJhbWV3b3JrVmFsdWVzID0gb3JnRnJhbWV3b3JrTGlzdDtcbiAgICAgICAgdGhpcy5zZXRFZGl0b3JGb3JtcyhjYXRlZ29yeURlZmluaXRpb25EYXRhKTtcbiAgICAgIH0gZWxzZSBpZiAob3JnRldUeXBlICYmIGNoYW5uZWxGcmFtZXdvcmtzVHlwZSAmJiAhXy5pc0VtcHR5KGRpZmZlcmVuY2UpIHx8IF8uaXNFbXB0eShjaGFubmVsRnJhbWV3b3Jrc1R5cGUpKSB7XG4gICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtEYXRhKHVuZGVmaW5lZCwgZGlmZmVyZW5jZSwgdW5kZWZpbmVkLCAnWWVzJykuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmZyYW1ld29ya1ZhbHVlcyA9IF8uY29uY2F0KF8ubWFwKF8uZ2V0KHJlc3BvbnNlLCAncmVzdWx0LkZyYW1ld29yaycpLCBmcmFtZXdvcmsgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4geyBsYWJlbDogZnJhbWV3b3JrLm5hbWUsIGlkZW50aWZpZXI6IGZyYW1ld29yay5pZGVudGlmaWVyIH07XG4gICAgICAgICAgICB9KSwgb3JnRnJhbWV3b3JrTGlzdCk7XG4gICAgICAgICAgICB0aGlzLnNldEVkaXRvckZvcm1zKGNhdGVnb3J5RGVmaW5pdGlvbkRhdGEpO1xuICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3JnYW5pc2F0aW9uRnJhbWV3b3JrKSB7XG4gICAgICAgIHRoaXMuc2V0RWRpdG9yRm9ybXMoY2F0ZWdvcnlEZWZpbml0aW9uRGF0YSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtEYXRhKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvcmdGV0lkZW50aWZpZXJzKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5mcmFtZXdvcmtWYWx1ZXMgPSBfLmNvbmNhdChfLm1hcChfLmdldChyZXNwb25zZSwgJ3Jlc3VsdC5GcmFtZXdvcmsnKSwgZnJhbWV3b3JrID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7IGxhYmVsOiBmcmFtZXdvcmsubmFtZSwgaWRlbnRpZmllcjogZnJhbWV3b3JrLmlkZW50aWZpZXIgfTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgdGhpcy5zZXRFZGl0b3JGb3JtcyhjYXRlZ29yeURlZmluaXRpb25EYXRhKTtcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZXRFZGl0b3JGb3JtcyhjYXRlZ29yeURlZmluaXRpb25EYXRhKSB7XG4gICAgY29uc3QgZm9ybXNDb25maWdPYmogPSBfLmdldChjYXRlZ29yeURlZmluaXRpb25EYXRhLCAncmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbi5mb3JtcycpO1xuICAgIHRoaXMudW5pdEZvcm1Db25maWcgPSBfLmdldChmb3Jtc0NvbmZpZ09iaiwgJ3VuaXRNZXRhZGF0YS5wcm9wZXJ0aWVzJyk7XG4gICAgdGhpcy5yb290Rm9ybUNvbmZpZyA9IF8uZ2V0KGZvcm1zQ29uZmlnT2JqLCAnY3JlYXRlLnByb3BlcnRpZXMnKTtcbiAgICBsZXQgZm9ybURhdGE7XG4gICAgaWYgKHRoaXMucm9vdEZvcm1Db25maWc/Lmxlbmd0aCkge1xuICAgICAgZm9ybURhdGEgPSB0aGlzLnJvb3RGb3JtQ29uZmlnWzBdLmZpZWxkcyB8fCBbXTtcbiAgICB9XG4gICAgZm9ybURhdGEuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnZXZpZGVuY2VNaW1lVHlwZScpIHtcbiAgICAgICAgdGhpcy5ldmlkZW5jZU1pbWVUeXBlID0gZmllbGQucmFuZ2U7XG4gICAgICAgIGZpZWxkLm9wdGlvbnMgPSB0aGlzLnNldEV2aWRlbmNlO1xuICAgICAgICBmaWVsZC5yYW5nZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkLmNvZGUgPT09ICdhbGxvd0VDTScpIHtcbiAgICAgICAgZmllbGQub3B0aW9ucyA9IHRoaXMuc2V0QWxsb3dFY207XG4gICAgICB9IGVsc2UgaWYgKGZpZWxkLmNvZGUgPT09ICdlY20nKSB7XG4gICAgICAgIHRoaXMuZWNtID0gZmllbGQub3B0aW9ucztcbiAgICAgICAgZmllbGQub3B0aW9ucyA9IHRoaXMuc2V0RWNtO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICggdGhpcy5vYmplY3RUeXBlID09PSAncXVlc3Rpb25zZXQnICYmIF8uaGFzKGZvcm1zQ29uZmlnT2JqLCAnc2VhcmNoQ29uZmlnJykpIHtcbiAgICAgICAgdGhpcy5saWJyYXJ5Q29tcG9uZW50SW5wdXQuc2VhcmNoRm9ybUNvbmZpZyA9IF8uZ2V0KGZvcm1zQ29uZmlnT2JqLCAnc2VhcmNoQ29uZmlnLnByb3BlcnRpZXMnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5saWJyYXJ5Q29tcG9uZW50SW5wdXQuc2VhcmNoRm9ybUNvbmZpZyA9IF8uZ2V0KGZvcm1zQ29uZmlnT2JqLCAnc2VhcmNoLnByb3BlcnRpZXMnKTtcbiAgICB9XG4gICAgdGhpcy5sZWFmRm9ybUNvbmZpZyA9IF8uZ2V0KGZvcm1zQ29uZmlnT2JqLCAnY2hpbGRNZXRhZGF0YS5wcm9wZXJ0aWVzJyk7XG4gICAgdGhpcy5yZWxhdGlvbkZvcm1Db25maWcgPSBfLmdldChmb3Jtc0NvbmZpZ09iaiwgJ3JlbGF0aW9uYWxNZXRhZGF0YS5wcm9wZXJ0aWVzJyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLmltcHJlc3Npb24oe1xuICAgICAgdHlwZTogJ2VkaXQnLCBwYWdlaWQ6IHRoaXMudGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQsIHVyaTogdGhpcy5yb3V0ZXIudXJsLFxuICAgICAgZHVyYXRpb246IChEYXRlLm5vdygpIC0gdGhpcy5wYWdlU3RhcnRUaW1lKSAvIDEwMDBcbiAgICB9KTtcbiAgICB0aGlzLmlzQ29tcG9uZW5ldEluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG1lcmdlQ29sbGVjdGlvbkV4dGVybmFsUHJvcGVydGllcygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHJlcXVlc3RzID0gW107XG4gICAgdGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzID0gbnVsbDtcbiAgICB0aGlzLmlzVHJlZUluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICBjb25zdCBvYmplY3RUeXBlID0gdGhpcy5jb25maWdTZXJ2aWNlLmNhdGVnb3J5Q29uZmlnW3RoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlXTtcbiAgICByZXF1ZXN0cy5wdXNoKHRoaXMuZWRpdG9yU2VydmljZS5mZXRjaENvbGxlY3Rpb25IaWVyYXJjaHkodGhpcy5jb2xsZWN0aW9uSWQpKTtcbiAgICBpZiAob2JqZWN0VHlwZSA9PT0gJ3F1ZXN0aW9uU2V0Jykge1xuICAgICAgcmVxdWVzdHMucHVzaCh0aGlzLmVkaXRvclNlcnZpY2UucmVhZFF1ZXN0aW9uU2V0KHRoaXMuY29sbGVjdGlvbklkKSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JrSm9pbihyZXF1ZXN0cykucGlwZSh0YXAocmVzcG9uc2VMaXN0ID0+IHtcbiAgICAgIGNvbnN0IGhpZXJhcmNoeVJlc3BvbnNlID0gXy5maXJzdChyZXNwb25zZUxpc3QpO1xuICAgICAgdGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzID0ge1xuICAgICAgICBkYXRhOiBfLmdldChoaWVyYXJjaHlSZXNwb25zZSwgYHJlc3VsdC4ke29iamVjdFR5cGV9YClcbiAgICAgIH07XG4gICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuc2hvd1Jldmlld0NvbW1lbnQgPSB0aGlzLnNob3dDb21tZW50QWRkZWRBZ2FpbnN0Q29udGVudCgpO1xuICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzLmNvbGxlY3Rpb25UcmVlTm9kZXMuZGF0YS5jaGlsZHJlbikpIHtcbiAgICAgICAgdGhpcy50b29sYmFyQ29uZmlnLmhhc0NoaWxkcmVuID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnRvb2xiYXJDb25maWcuaGFzQ2hpbGRyZW4gPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqZWN0VHlwZSA9PT0gJ3F1ZXN0aW9uU2V0Jykge1xuICAgICAgICBjb25zdCBxdWVzdGlvblNldFJlc3BvbnNlID0gXy5sYXN0KHJlc3BvbnNlTGlzdCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBfLmdldChxdWVzdGlvblNldFJlc3BvbnNlLCBfLnRvTG93ZXIoYHJlc3VsdC4ke29iamVjdFR5cGV9YCkpO1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb25UcmVlTm9kZXMuZGF0YS5pbnN0cnVjdGlvbnMgPSBkYXRhLmluc3RydWN0aW9ucyA/IGRhdGEuaW5zdHJ1Y3Rpb25zIDogJyc7XG4gICAgICB9XG4gICAgfVxuICAgICkpO1xuICB9XG4gIHNldGhpZXJhcmNoeUNvbmZpZyhwcmltYXJ5Q2F0Q29uZmlnKSB7XG4gICAgbGV0IGhpZXJhcmNoeUNvbmZpZztcbiAgICBpZiAoXy5nZXQocHJpbWFyeUNhdENvbmZpZywgJ3Jlc3VsdC5vYmplY3RDYXRlZ29yeURlZmluaXRpb24ub2JqZWN0TWV0YWRhdGEuY29uZmlnJykpIHtcbiAgICAgIGhpZXJhcmNoeUNvbmZpZyA9IF8uZ2V0KHByaW1hcnlDYXRDb25maWcsICdyZXN1bHQub2JqZWN0Q2F0ZWdvcnlEZWZpbml0aW9uLm9iamVjdE1ldGFkYXRhLmNvbmZpZy5zb3VyY2luZ1NldHRpbmdzLmNvbGxlY3Rpb24nKTtcbiAgICAgIGlmICghXy5pc0VtcHR5KGhpZXJhcmNoeUNvbmZpZy5jaGlsZHJlbikpIHtcbiAgICAgICAgaGllcmFyY2h5Q29uZmlnLmNoaWxkcmVuID0gdGhpcy5nZXRIaWVyYXJjaHlDaGlsZHJlbkNvbmZpZyhoaWVyYXJjaHlDb25maWcuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgICAgaWYgKCFfLmlzRW1wdHkoaGllcmFyY2h5Q29uZmlnLmhpZXJhcmNoeSkpIHtcbiAgICAgICAgXy5mb3JFYWNoKGhpZXJhcmNoeUNvbmZpZy5oaWVyYXJjaHksIChoaWVyYXJjaHlWYWx1ZSkgPT4ge1xuICAgICAgICAgIGlmIChfLmdldChoaWVyYXJjaHlWYWx1ZSwgJ2NoaWxkcmVuJykpIHtcbiAgICAgICAgICAgIGhpZXJhcmNoeVZhbHVlWydjaGlsZHJlbiddID0gdGhpcy5nZXRIaWVyYXJjaHlDaGlsZHJlbkNvbmZpZyhfLmdldChoaWVyYXJjaHlWYWx1ZSwgJ2NoaWxkcmVuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZyA9IF8uYXNzaWduKHRoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZywgaGllcmFyY2h5Q29uZmlnKTtcbiAgICBpZiAoXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb25maWcucmVuZGVyVGF4b25vbXknKSA9PT0gdHJ1ZSAmJiBfLmlzRW1wdHkoXy5nZXQodGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzLCAnZGF0YS5jaGlsZHJlbicpKSkge1xuICAgICAgdGhpcy5mZXRjaEZyYW1lV29ya0RldGFpbHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc2hpZXJhcmNoeUNvbmZpZ1NldCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hGcmFtZVdvcmtEZXRhaWxzKCkge1xuICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5mcmFtZXdvcmtEYXRhJC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMub25Db21wb25lbnREZXN0cm95JCksXG4gICAgICBmaWx0ZXIoZGF0YSA9PiBfLmdldChkYXRhLCBgZnJhbWV3b3JrZGF0YS4ke3RoaXMuZnJhbWV3b3JrU2VydmljZS5vcmdhbmlzYXRpb25GcmFtZXdvcmt9YCkpLFxuICAgICAgdGFrZSgxKVxuICAgICkuc3Vic2NyaWJlKChmcmFtZXdvcmtEZXRhaWxzOiBhbnkpID0+IHtcbiAgICAgIGlmIChmcmFtZXdvcmtEZXRhaWxzICYmICFmcmFtZXdvcmtEZXRhaWxzLmVycikge1xuICAgICAgICBjb25zdCBvcmdGcmFtZXdvcmtEYXRhID0gXy5nZXQoZnJhbWV3b3JrRGV0YWlscywgYGZyYW1ld29ya2RhdGEuJHt0aGlzLmZyYW1ld29ya1NlcnZpY2Uub3JnYW5pc2F0aW9uRnJhbWV3b3JrfS5jYXRlZ29yaWVzYCk7XG4gICAgICAgIGNvbnN0IGNhdGVnb3J5SW5zdGFuY2VEYXRhID0gXy5maW5kKG9yZ0ZyYW1ld29ya0RhdGEsIHtjb2RlOiBfLmdldCh0aGlzLmVkaXRvckNvbmZpZywgJ2NvbmZpZy5jYXRlZ29yeUluc3RhbmNlJyl9KTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzLmRhdGEuY2hpbGRyZW4gPSBfLmdldChjYXRlZ29yeUluc3RhbmNlRGF0YSwgJ3Rlcm1zJyk7XG4gICAgICAgIHRoaXMuaXNoaWVyYXJjaHlDb25maWdTZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0SGllcmFyY2h5Q2hpbGRyZW5Db25maWcoY2hpbGRyZW5EYXRhKSB7XG4gICAgXy5mb3JFYWNoKGNoaWxkcmVuRGF0YSwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIGlmIChfLmlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgY2FzZSAnUXVlc3Rpb24nOlxuICAgICAgICAgICAgY2hpbGRyZW5EYXRhW2tleV0gPSBfLm1hcCh0aGlzLmhlbHBlclNlcnZpY2UucXVlc3Rpb25QcmltYXJ5Q2F0ZWdvcmllcywgJ25hbWUnKSB8fCB0aGlzLmVkaXRvckNvbmZpZy5jb25maWcucXVlc3Rpb25QcmltYXJ5Q2F0ZWdvcmllczs7IFxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQ29udGVudCc6XG4gICAgICAgICAgICBjaGlsZHJlbkRhdGFba2V5XSA9IF8ubWFwKHRoaXMuaGVscGVyU2VydmljZS5jb250ZW50UHJpbWFyeUNhdGVnb3JpZXMsICduYW1lJykgfHwgW107XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdDb2xsZWN0aW9uJzpcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YVtrZXldID0gXy5tYXAodGhpcy5oZWxwZXJTZXJ2aWNlLmNvbGxlY3Rpb25QcmltYXJ5Q2F0ZWdvcmllcywgJ25hbWUnKSB8fCBbXTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1F1ZXN0aW9uU2V0JzpcbiAgICAgICAgICAgIGNoaWxkcmVuRGF0YVtrZXldID0gXy5tYXAodGhpcy5oZWxwZXJTZXJ2aWNlLnF1ZXN0aW9uc2V0UHJpbWFyeUNhdGVnb3JpZXMsICduYW1lJykgfHwgW107XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjaGlsZHJlbkRhdGE7XG4gIH1cblxuICB0b2dnbGVDb2xsYWJvcmF0b3JNb2RhbFBvdXAoKSB7XG4gICAgdGhpcy5pc0VuYWJsZUNzdkFjdGlvbiA9IHRydWU7XG4gICAgaWYgKHRoaXMuYWRkQ29sbGFib3JhdG9yKSB7XG4gICAgICB0aGlzLmFkZENvbGxhYm9yYXRvciA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuYWRkQ29sbGFib3JhdG9yKSB7XG4gICAgICB0aGlzLmFkZENvbGxhYm9yYXRvciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICB9XG4gIH1cblxuICB0b29sYmFyRXZlbnRMaXN0ZW5lcihldmVudCkge1xuICAgIHRoaXMuYWN0aW9uVHlwZSA9IGV2ZW50LmJ1dHRvbjtcbiAgICBzd2l0Y2ggKGV2ZW50LmJ1dHRvbikge1xuICAgICAgY2FzZSAnc2F2ZUNvbnRlbnQnOlxuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuc2F2ZUFzRHJhZnRCdXR0b25Mb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmVDb250ZW50KCkudGhlbigobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5idXR0b25Mb2FkZXJzLnNhdmVBc0RyYWZ0QnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKG1lc3NhZ2UpO1xuICAgICAgICAgIHRoaXMuaXNFbmFibGVDc3ZBY3Rpb24gPSB0cnVlO1xuICAgICAgICB9KS5jYXRjaCgoKGVycm9yOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuc2F2ZUFzRHJhZnRCdXR0b25Mb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmlzRW5hYmxlQ3N2QWN0aW9uID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnJvcik7XG4gICAgICAgIH0pKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcmV2aWV3Q29udGVudCc6XG4gICAgICAgIHRoaXMucHJldmlld0NvbnRlbnQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZGRGcm9tTGlicmFyeSc6XG4gICAgICAgIHRoaXMuc2hvd0xpYnJhcnlDb21wb25lbnRQYWdlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3VibWl0Q29udGVudCc6XG4gICAgICAgIHRoaXMuc3VibWl0SGFuZGxlcigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlbW92ZUNvbnRlbnQnOlxuICAgICAgICB0aGlzLmRlbGV0ZUNvbmZpcm1NZXNzYWdlID0gdGhpcy5jb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNvbmZpcm1EZWxldGVOb2RlO1xuICAgICAgICB0aGlzLnNob3dEZWxldGVDb25maXJtYXRpb25Qb3BVcCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZWRpdENvbnRlbnQnOlxuICAgICAgICB0aGlzLnJlZGlyZWN0VG9RdWVzdGlvblRhYignZWRpdCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3JlamVjdENvbnRlbnQnOlxuICAgICAgICB0aGlzLnJlamVjdENvbnRlbnQoZXZlbnQuY29tbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncHVibGlzaENvbnRlbnQnOlxuICAgICAgICB0aGlzLnB1Ymxpc2hDb250ZW50KGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvbkZvcm1TdGF0dXNDaGFuZ2UnOlxuICAgICAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldEFjdGl2ZU5vZGUoKTtcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZSAmJiBzZWxlY3RlZE5vZGUuZGF0YS5pZCkge1xuICAgICAgICAgIHRoaXMuZm9ybVN0YXR1c01hcHBlcltzZWxlY3RlZE5vZGUuZGF0YS5pZF0gPSBldmVudC5ldmVudC5pc1ZhbGlkO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT2JqZWN0VHlwZUNvbGxlY3Rpb24pIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUNzdkRyb3Bkb3duT3B0aW9uc09uQ29sbGVjdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb25Gb3JtVmFsdWVDaGFuZ2UnOlxuICAgICAgICB0aGlzLnVwZGF0ZVRvb2xiYXJUaXRsZShldmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmFja0NvbnRlbnQnOlxuICAgICAgICB0aGlzLnJlZGlyZWN0VG9DaGFwdGVyTGlzdFRhYigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbmRGb3JDb3JyZWN0aW9ucyc6XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb0NoYXB0ZXJMaXN0VGFiKHsgY29tbWVudDogZXZlbnQuY29tbWVudCB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzb3VyY2luZ0FwcHJvdmUnOlxuICAgICAgICB0aGlzLnNvdXJjaW5nQXBwcm92ZUNvbnRlbnQoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NvdXJjaW5nUmVqZWN0JzpcbiAgICAgICAgdGhpcy5zb3VyY2luZ1JlamVjdENvbnRlbnQoeyBjb21tZW50OiBldmVudC5jb21tZW50IH0pXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYWRkQ29sbGFib3JhdG9yJzpcbiAgICAgICAgdGhpcy50b2dnbGVDb2xsYWJvcmF0b3JNb2RhbFBvdXAoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzaG93UmV2aWV3Y29tbWVudHMnOlxuICAgICAgICB0aGlzLnNob3dSZXZpZXdNb2RhbCA9ICF0aGlzLnNob3dSZXZpZXdNb2RhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXZpZXdDb250ZW50JzpcbiAgICAgICAgdGhpcy5yZWRpcmVjdFRvUXVlc3Rpb25UYWIoJ3JldmlldycpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BhZ2luYXRpb24nOlxuICAgICAgICB0aGlzLnBhZ2VJZCA9ICdwYWdpbmF0aW9uJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwcm9ncmVzc1N0YXR1cyc6XG4gICAgICAgIHRoaXMucGFnZUlkID0gJ3Byb2dyZXNzU3RhdHVzJztcbiAgICAgICAgYnJlYWs7XG4gICAgICAvLyBjYXNlICdzaG93Q29ycmVjdGlvbmNvbW1lbnRzJzpcbiAgICAgICAgLy8gdGhpcy5jb250ZW50Q29tbWVudCA9IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC5jb3JyZWN0aW9uQ29tbWVudHMnKVxuICAgICAgICAvLyB0aGlzLnNob3dSZXZpZXdNb2RhbCA9ICF0aGlzLnNob3dSZXZpZXdNb2RhbDtcbiAgICAgICAgLy8gYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZWRpcmVjdFRvQ2hhcHRlckxpc3RUYWIoZGF0YT86IGFueSkge1xuICAgIHRoaXMuZWRpdG9yRW1pdHRlci5lbWl0KHtcbiAgICAgIGNsb3NlOiB0cnVlLCBsaWJyYXJ5OiAnY29sbGVjdGlvbl9lZGl0b3InLCBhY3Rpb246IHRoaXMuYWN0aW9uVHlwZSwgaWRlbnRpZmllcjogdGhpcy5jb2xsZWN0aW9uSWQsXG4gICAgICAuLi5kYXRhXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVUb29sYmFyVGl0bGUoZGF0YTogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy50cmVlU2VydmljZS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgaWYgKCFfLmlzRW1wdHkoZGF0YT8uZGF0YT8ubmFtZSkgJiYgc2VsZWN0ZWROb2RlPy5kYXRhPy5yb290KSB7XG4gICAgICB0aGlzLnRvb2xiYXJDb25maWcudGl0bGUgPSBkYXRhLmRhdGEubmFtZTtcbiAgICB9IGVsc2UgaWYgKF8uaXNFbXB0eShkYXRhPy5kYXRhPy5uYW1lKSAmJiBzZWxlY3RlZE5vZGU/LmRhdGE/LnJvb3QpIHtcbiAgICAgIHRoaXMudG9vbGJhckNvbmZpZy50aXRsZSA9ICdVbnRpdGxlZCc7XG4gICAgfVxuICB9XG5cbiAgc2hvd0xpYnJhcnlDb21wb25lbnRQYWdlKCkge1xuICAgIGlmICh0aGlzLmVkaXRvclNlcnZpY2UuY2hlY2tJZkNvbnRlbnRzQ2FuYmVBZGRlZCgpKSB7XG4gICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuYWRkRnJvbUxpYnJhcnlCdXR0b25Mb2FkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5zYXZlQ29udGVudCgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgdGhpcy5saWJyYXJ5Q29tcG9uZW50SW5wdXQuY29sbGVjdGlvbklkID0gdGhpcy5jb2xsZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVycy5hZGRGcm9tTGlicmFyeUJ1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBhZ2VJZCA9ICdsaWJyYXJ5JztcbiAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZXJyKTtcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXJzLmFkZEZyb21MaWJyYXJ5QnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgc2hvd1F1ZXN0aW9uTGlicmFyeUNvbXBvbmVudFBhZ2UoKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5saWJyYXJ5Q29tcG9uZW50SW5wdXQuc2VhcmNoRm9ybUNvbmZpZykgfHwgXy5pc0VtcHR5KHRoaXMubGlicmFyeUNvbXBvbmVudElucHV0LnNlYXJjaEZvcm1Db25maWcpKSB7XG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLmVyci5zZWFyY2hDb25maWdOb3RGb3VuZCcpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZWRpdG9yU2VydmljZS5jaGVja0lmQ29udGVudHNDYW5iZUFkZGVkKCkpIHtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uQ2F0ZWdvcnkgPSBbXTtcbiAgICAgIHRoaXMuYnV0dG9uTG9hZGVycy5hZGRRdWVzdGlvbkZyb21MaWJyYXJ5QnV0dG9uTG9hZGVyID0gdHJ1ZTtcbiAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmVkaXRvclNlcnZpY2UudGVtcGxhdGVMaXN0KSAmJlxuICAgICAgICBfLmlzQXJyYXkodGhpcy5lZGl0b3JTZXJ2aWNlLnRlbXBsYXRlTGlzdCkpIHtcbiAgICAgICAgICBfLmZvckVhY2godGhpcy5lZGl0b3JTZXJ2aWNlLnRlbXBsYXRlTGlzdCwgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgICBxdWVzdGlvbkNhdGVnb3J5LnB1c2goe25hbWU6IHRlbXBsYXRlLCB0YXJnZXRPYmplY3RUeXBlOiAnUXVlc3Rpb24nfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIHRoaXMuc2F2ZUNvbnRlbnQoKS50aGVuKChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlTm9kZSA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0QWN0aXZlTm9kZSgpO1xuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuYWRkUXVlc3Rpb25Gcm9tTGlicmFyeUJ1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnF1ZXN0aW9ubGlicmFyeUlucHV0ID0ge1xuICAgICAgICAgIGxpYnJhcnlMYWJlbHM6IHtcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5sYmwucXVlc3Rpb25zZXRBZGRGcm9tTGlicmFyeUl0ZW1MYWJlbCcpLFxuICAgICAgICAgICAgY29sbGVjdGlvblR5cGU6IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLmxibC5xdWVzdGlvbnNldEFkZEZyb21MaWJyYXJ5Q29sbGVjdGlvbkxhYmVsJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRhcmdldFByaW1hcnlDYXRlZ29yaWVzOiBxdWVzdGlvbkNhdGVnb3J5LFxuICAgICAgICAgIGNvbGxlY3Rpb25JZDogdGhpcy5jb2xsZWN0aW9uSWQsXG4gICAgICAgICAgZXhpc3Rpbmdjb250ZW50Q291bnRzOiB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0Q29udGVudENoaWxkcmVucygpLmxlbmd0aCxcbiAgICAgICAgICBjb2xsZWN0aW9uOiBhY3RpdmVOb2RlPy5kYXRhPy5tZXRhZGF0YSxcbiAgICAgICAgICBmcmFtZXdvcms6IHRoaXMub3JnYW5pc2F0aW9uRnJhbWV3b3JrLFxuICAgICAgICAgIGVkaXRvckNvbmZpZzogdGhpcy5lZGl0b3JDb25maWcsXG4gICAgICAgICAgc2VhcmNoRm9ybUNvbmZpZzogIHRoaXMubGlicmFyeUNvbXBvbmVudElucHV0LnNlYXJjaEZvcm1Db25maWdcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5wYWdlSWQgPSAncXVlc3Rpb25fbGlicmFyeSc7XG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25saWJyYXJ5SW5wdXQpO1xuICAgICAgfSkuY2F0Y2goKChlcnJvcjogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuYWRkUXVlc3Rpb25Gcm9tTGlicmFyeUJ1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgfSkpO1xuICAgIH1cbiAgfVxuXG4gIGxpYnJhcnlFdmVudExpc3RlbmVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm1lcmdlQ29sbGVjdGlvbkV4dGVybmFsUHJvcGVydGllcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMucGFnZUlkID0gJ2NvbGxlY3Rpb25fZWRpdG9yJztcbiAgICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQgPSB0aGlzLnBhZ2VJZDtcbiAgICAgIHRoaXMuaXNFbmFibGVDc3ZBY3Rpb24gPSB0cnVlO1xuICAgICAgdGhpcy5pc0NvbXBvbmVuZXRJbml0aWFsaXplZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlQ29udGVudCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRm9ybVN0YXR1cygpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDI5JykpO1xuICAgICAgfVxuICAgICAgY29uc3Qgbm9kZXNNb2RpZmllZCA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5nZXRDb2xsZWN0aW9uSGllcmFyY2h5KCksICdub2Rlc01vZGlmaWVkJyk7XG4gICAgICBjb25zdCBvYmplY3RUeXBlID0gdGhpcy5jb25maWdTZXJ2aWNlLmNhdGVnb3J5Q29uZmlnW3RoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlXTtcbiAgICAgIGlmIChvYmplY3RUeXBlID09PSAncXVlc3Rpb25TZXQnKSB7XG4gICAgICAgIGNvbnN0IG1heFNjb3JlID0gYXdhaXQgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldE1heFNjb3JlKCk7XG4gICAgICAgIHRoaXMudHJlZVNlcnZpY2UudXBkYXRlTWV0YURhdGFQcm9wZXJ0eSgnbWF4U2NvcmUnLCBtYXhTY29yZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UudXBkYXRlSGllcmFyY2h5KClcbiAgICAgICAgLnBpcGUobWFwKGRhdGEgPT4gXy5nZXQoZGF0YSwgJ3Jlc3VsdCcpKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy50b29sYmFyQ29uZmlnLnNob3dEaWFsY29kZSA9PT0gJ3llcycpIHtcbiAgICAgICAgICAgIHRoaXMuZGlhbGNvZGVTZXJ2aWNlLmhpZ2hsaWdodE5vZGVGb3JJbnZhbGlkRGlhbENvZGUocmVzcG9uc2UsIG5vZGVzTW9kaWZpZWQsIHRoaXMuY29sbGVjdGlvbklkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFfLmlzRW1wdHkocmVzcG9uc2UuaWRlbnRpZmllcnMpKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLnJlcGxhY2VOb2RlSWQocmVzcG9uc2UuaWRlbnRpZmllcnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnRyZWVTZXJ2aWNlLmNsZWFyVHJlZUNhY2hlKCk7XG4gICAgICAgICAgdGhpcy50cmVlU2VydmljZS5uZXh0VHJlZVN0YXR1cygnc2F2ZWQnKTtcbiAgICAgICAgICByZXNvbHZlKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLm1lc3NhZ2VzLnN1Y2Nlc3MuMDAxJykpO1xuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIHJlamVjdChfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5lcnJvci4wMDEnKSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3VibWl0SGFuZGxlcigpIHtcbiAgICBpZiAoIXRoaXMudmFsaWRhdGVGb3JtU3RhdHVzKCkpIHtcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDA1JykpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAodGhpcy50b29sYmFyQ29uZmlnLnNob3dEaWFsY29kZSA9PT0gJ3llcycpIHtcbiAgICAgIGlmICh0aGlzLmRpYWxjb2RlU2VydmljZS52YWxpZGF0ZVVuaXRzRGlhbGNvZGVzKCkpIHtcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybVBvcHVwID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uud2FybmluZyhfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy53YXJuaW5nLjAwMScpKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93Q29uZmlybVBvcHVwID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUZvcm1TdGF0dXMoKSB7XG4gICAgY29uc3QgaXNWYWxpZCA9IF8uZXZlcnkodGhpcy5mb3JtU3RhdHVzTWFwcGVyLCBCb29sZWFuKTtcbiAgICBpZiAoaXNWYWxpZCkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgIF8uZm9ySW4odGhpcy5mb3JtU3RhdHVzTWFwcGVyLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudHJlZVNlcnZpY2UuaGlnaGxpZ2h0Tm9kZShrZXksICdyZW1vdmUnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudHJlZVNlcnZpY2UuaGlnaGxpZ2h0Tm9kZShrZXksICdhZGQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcmV2aWV3Q29udGVudCgpIHtcbiAgICB0aGlzLmJ1dHRvbkxvYWRlcnMucHJldmlld0J1dHRvbkxvYWRlciA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmlzU3RhdHVzUmV2aWV3TW9kZSkge1xuICAgICAgdGhpcy5zYXZlQ29udGVudCgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgdGhpcy5zZXRVcGRhdGVkVHJlZU5vZGVEYXRhKCk7XG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGVycik7XG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVycy5wcmV2aWV3QnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRVcGRhdGVkVHJlZU5vZGVEYXRhKCk7XG4gICAgfVxuICB9XG4gIHNlbmRGb3JSZXZpZXcoKSB7XG4gICAgdGhpcy5zYXZlQ29udGVudCgpLnRoZW4obWVzc2cgPT4ge1xuICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnJldmlld0NvbnRlbnQodGhpcy5jb2xsZWN0aW9uSWQpLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLm1lc3NhZ2VzLnN1Y2Nlc3MuMDAyJykpO1xuICAgICAgICB0aGlzLnJlZGlyZWN0VG9DaGFwdGVyTGlzdFRhYigpO1xuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5lcnJvci4wMDInKSk7XG4gICAgICB9KTtcbiAgICB9KS5jYXRjaChlcnIgPT4gdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnIpKTtcbiAgfVxuICByZWplY3RDb250ZW50KGNvbW1lbnQpIHtcbiAgICBjb25zdCBlZGl0YWJsZUZpZWxkcyA9IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZywgJ2VkaXRhYmxlRmllbGRzJyk7XG4gICAgaWYgKHRoaXMuZWRpdG9yTW9kZSA9PT0gJ29yZ3JldmlldycgJiYgZWRpdGFibGVGaWVsZHMgJiYgIV8uaXNFbXB0eShlZGl0YWJsZUZpZWxkc1t0aGlzLmVkaXRvck1vZGVdKSkge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRm9ybVN0YXR1cygpKSB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDI5JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UudXBkYXRlQ29sbGVjdGlvbih0aGlzLmNvbGxlY3Rpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdWJtaXRSZXF1ZXN0Q2hhbmdlcyh0aGlzLmNvbGxlY3Rpb25JZCwgY29tbWVudCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLm1lc3NhZ2VzLnN1Y2Nlc3MuMDAzJykpO1xuICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0NoYXB0ZXJMaXN0VGFiKCk7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5lcnJvci4wMDMnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zdWJtaXRSZXF1ZXN0Q2hhbmdlcyh0aGlzLmNvbGxlY3Rpb25JZCwgY29tbWVudCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2Uuc3VjY2VzcyhfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5zdWNjZXNzLjAwMycpKTtcbiAgICAgICAgdGhpcy5yZWRpcmVjdFRvQ2hhcHRlckxpc3RUYWIoKTtcbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDAzJykpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGlzaENvbnRlbnQoZXZlbnQpIHtcbiAgICBjb25zdCBlZGl0YWJsZUZpZWxkcyA9IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29uZmlnLmVkaXRhYmxlRmllbGRzJyk7XG4gICAgaWYgKHRoaXMuZWRpdG9yTW9kZSA9PT0gJ29yZ3JldmlldycgJiYgZWRpdGFibGVGaWVsZHMgJiYgIV8uaXNFbXB0eShlZGl0YWJsZUZpZWxkc1t0aGlzLmVkaXRvck1vZGVdKSkge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRm9ybVN0YXR1cygpKSB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDI5JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UudXBkYXRlQ29sbGVjdGlvbih0aGlzLmNvbGxlY3Rpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5wdWJsaXNoQ29udGVudCh0aGlzLmNvbGxlY3Rpb25JZCwgZXZlbnQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLm1lc3NhZ2VzLnN1Y2Nlc3MuMDA0JykpO1xuICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0NoYXB0ZXJMaXN0VGFiKCk7XG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5lcnJvci4wMDQnKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZXJyID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnIpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5wdWJsaXNoQ29udGVudCh0aGlzLmNvbGxlY3Rpb25JZCwgZXZlbnQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLnN1Y2Nlc3MoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuc3VjY2Vzcy4wMDQnKSk7XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb0NoYXB0ZXJMaXN0VGFiKCk7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZSwgJ2xhYmVsQ29uZmlnLm1lc3NhZ2VzLmVycm9yLjAwNCcpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBzb3VyY2luZ0FwcHJvdmVDb250ZW50KGV2ZW50KSB7XG4gICAgY29uc3QgZWRpdGFibGVGaWVsZHMgPSBfLmdldCh0aGlzLmVkaXRvckNvbmZpZy5jb25maWcsICdlZGl0YWJsZUZpZWxkcycpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcbiAgICBpZiAodGhpcy5lZGl0b3JNb2RlID09PSAnc291cmNpbmdyZXZpZXcnICYmICgoZWRpdGFibGVGaWVsZHMgJiYgIV8uaXNFbXB0eShlZGl0YWJsZUZpZWxkc1t0aGlzLmVkaXRvck1vZGVdKSkgfHwgIV8uaXNFbXB0eSh0aGlzLnB1Ymxpc2hjaGVja2xpc3QpKSkge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRm9ybVN0YXR1cygpKSB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDI5JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UudXBkYXRlQ29sbGVjdGlvbih0aGlzLmNvbGxlY3Rpb25JZCwgZXZlbnQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgIHRoaXMucmVkaXJlY3RUb0NoYXB0ZXJMaXN0VGFiKCk7XG4gICAgICB9LCBlcnIgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKGVycik7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlZGlyZWN0VG9DaGFwdGVyTGlzdFRhYigpO1xuICAgIH1cbiAgfVxuICBzb3VyY2luZ1JlamVjdENvbnRlbnQob2JqKSB7XG4gICAgY29uc3QgZWRpdGFibGVGaWVsZHMgPSBfLmdldCh0aGlzLmVkaXRvckNvbmZpZy5jb25maWcsICdlZGl0YWJsZUZpZWxkcycpO1xuICAgIGlmICh0aGlzLmVkaXRvck1vZGUgPT09ICdzb3VyY2luZ3JldmlldycgJiYgZWRpdGFibGVGaWVsZHMgJiYgIV8uaXNFbXB0eShlZGl0YWJsZUZpZWxkc1t0aGlzLmVkaXRvck1vZGVdKSkge1xuICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlRm9ybVN0YXR1cygpKSB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLCAnbGFiZWxDb25maWcubWVzc2FnZXMuZXJyb3IuMDI5JykpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UudXBkYXRlQ29sbGVjdGlvbih0aGlzLmNvbGxlY3Rpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFRvQ2hhcHRlckxpc3RUYWIob2JqKTtcbiAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb0NoYXB0ZXJMaXN0VGFiKG9iaik7XG4gICAgfVxuICB9XG4gIHNldFVwZGF0ZWRUcmVlTm9kZURhdGEoKSB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmZldGNoQ29sbGVjdGlvbkhpZXJhcmNoeSh0aGlzLmNvbGxlY3Rpb25JZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdoaWVyYXJjaHlEYXRhJywgcmVzKTtcbiAgICAgIHRoaXMuY29sbGVjdGlvblRyZWVOb2RlcyA9IHtcbiAgICAgICAgZGF0YTogXy5nZXQocmVzLCBgcmVzdWx0LiR7dGhpcy5jb25maWdTZXJ2aWNlLmNhdGVnb3J5Q29uZmlnW3RoaXMuZWRpdG9yQ29uZmlnLmNvbmZpZy5vYmplY3RUeXBlXX1gKVxuICAgICAgfTtcbiAgICAgIHRoaXMudXBkYXRlVHJlZU5vZGVEYXRhKCk7XG4gICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMucHJldmlld0J1dHRvbkxvYWRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93UHJldmlldyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudDogYW55ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3ByZXZpZXdQbGF5ZXJDb250YWluZXInKTtcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDUwMCk7XG4gICAgfSwgZXJyb3IgPT4ge1xuICAgICAgdGhpcy5idXR0b25Mb2FkZXJzLnByZXZpZXdCdXR0b25Mb2FkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IoXy5nZXQoZXJyb3IsICdlcnJvci5wYXJhbXMuZXJybXNnJykpO1xuICAgIH0pO1xuICB9XG4gIHVwZGF0ZVRyZWVOb2RlRGF0YSgpIHtcbiAgICBjb25zdCB0cmVlTm9kZURhdGEgPSBfLmdldCh0aGlzLnRyZWVTZXJ2aWNlLmdldEZpcnN0Q2hpbGQoKSwgJ2RhdGEubWV0YWRhdGEnKTtcbiAgICBpZiAoIXRyZWVOb2RlRGF0YS50aW1lTGltaXRzKSB7XG4gICAgICB0cmVlTm9kZURhdGEudGltZUxpbWl0cyA9IHt9O1xuICAgIH1cbiAgICBpZiAodHJlZU5vZGVEYXRhLm1heFRpbWUpIHtcbiAgICAgIHRyZWVOb2RlRGF0YS50aW1lTGltaXRzLm1heFRpbWUgPSB0aGlzLmhlbHBlclNlcnZpY2UuaG1zVG9TZWNvbmRzKHRyZWVOb2RlRGF0YS5tYXhUaW1lKTtcbiAgICB9XG4gICAgaWYgKHRyZWVOb2RlRGF0YS53YXJuaW5nVGltZSkge1xuICAgICAgdHJlZU5vZGVEYXRhLnRpbWVMaW1pdHMud2FybmluZ1RpbWUgPSB0aGlzLmhlbHBlclNlcnZpY2UuaG1zVG9TZWNvbmRzKHRyZWVOb2RlRGF0YS53YXJuaW5nVGltZSk7XG4gICAgfVxuICAgIHRoaXMuY29sbGVjdGlvblRyZWVOb2Rlcy5kYXRhID0gXy5tZXJnZSh0aGlzLmNvbGxlY3Rpb25UcmVlTm9kZXMuZGF0YSwgXy5vbWl0KHRyZWVOb2RlRGF0YSwgWydjaGlsZE5vZGVzJ10pKTtcbiAgfVxuICB0cmVlRXZlbnRMaXN0ZW5lcihldmVudDogYW55KSB7XG4gICAgdGhpcy5hY3Rpb25UeXBlID0gZXZlbnQudHlwZTtcbiAgICB0aGlzLnVwZGF0ZVRyZWVOb2RlRGF0YSgpO1xuICAgIGlmICh0aGlzLmlzT2JqZWN0VHlwZUNvbGxlY3Rpb24pIHtcbiAgICAgIHRoaXMuaGFuZGxlQ3N2RHJvcGRvd25PcHRpb25zT25Db2xsZWN0aW9uKCk7XG4gICAgfVxuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbm9kZVNlbGVjdCc6XG4gICAgICAgIHRoaXMudXBkYXRlU3VibWl0QnRuVmlzaWJpbGl0eSgpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTm9kZURhdGEgPSBfLmNsb25lRGVlcChldmVudC5kYXRhKTtcbiAgICAgICAgdGhpcy5pc0N1cnJlbnROb2RlRm9sZGVyID0gXy5nZXQodGhpcy5zZWxlY3RlZE5vZGVEYXRhLCAnZm9sZGVyJyk7XG4gICAgICAgIHRoaXMuaXNDdXJyZW50Tm9kZVJvb3QgPSBfLmdldCh0aGlzLnNlbGVjdGVkTm9kZURhdGEsICdkYXRhLnJvb3QnKTtcbiAgICAgICAgLy8gVE9ETzogcmV0aGluayBiZWxvdyBsaW5lIGNvZGVcbiAgICAgICAgdGhpcy5pc1F1bWxQbGF5ZXIgPSBfLmdldCh0aGlzLnNlbGVjdGVkTm9kZURhdGEsICdkYXRhLm1ldGFkYXRhLm1pbWVUeXBlJykgPT09ICdhcHBsaWNhdGlvbi92bmQuc3VuYmlyZC5xdWVzdGlvbic7XG4gICAgICAgIHRoaXMuc2V0VGVtcGxhdGVMaXN0KCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkZWxldGVOb2RlJzpcbiAgICAgICAgdGhpcy5kZWxldGVDb25maXJtTWVzc2FnZSA9IHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5jb25maXJtRGVsZXRlTm9kZTtcbiAgICAgICAgaWYgKCFldmVudC5pc0NvbnRlbnQgJiYgXy5oYXModGhpcy5lZGl0b3JDb25maWcuY29uZmlnLCAnaGllcmFyY2h5LmxldmVsMScpKSB7XG4gICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgICAgICAgIHRoaXMuZGVsZXRlQ29uZmlybU1lc3NhZ2UgPSBfLnJlcGxhY2UodGhpcy5kZWxldGVDb25maXJtTWVzc2FnZSwgJ05vZGUnLCBfLmdldCh0aGlzLmVkaXRvckNvbmZpZy5jb25maWcsICdoaWVyYXJjaHkubGV2ZWwxLm5hbWUnKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zaG93RGVsZXRlQ29uZmlybWF0aW9uUG9wVXAgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NyZWF0ZU5ld0NvbnRlbnQnOlxuICAgICAgICBpZiAodGhpcy5lZGl0b3JTZXJ2aWNlLmNoZWNrSWZDb250ZW50c0NhbmJlQWRkZWQoKSkge1xuICAgICAgICAgIHRoaXMuYnV0dG9uTG9hZGVycy5hZGRGcm9tTGlicmFyeUJ1dHRvbkxvYWRlciA9IHRydWU7XG4gICAgICAgICAgdGhpcy5zYXZlQ29udGVudCgpLnRoZW4oKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy5idXR0b25Mb2FkZXJzLmFkZEZyb21MaWJyYXJ5QnV0dG9uTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNob3dRdWVzdGlvblRlbXBsYXRlUG9wdXAgPSB0cnVlO1xuICAgICAgICAgIH0pLmNhdGNoKCgoZXJyb3I6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcnMuYWRkRnJvbUxpYnJhcnlCdXR0b25Mb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBzZXRUZW1wbGF0ZUxpc3QoKSB7XG4gICAgaWYgKHRoaXMuaXNDdXJyZW50Tm9kZVJvb3QpIHtcbiAgICAgIHRoaXMudGVtcGxhdGVMaXN0ID0gXy5mbGF0TWFwKF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29uZmlnLmNoaWxkcmVuJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRlbXBsYXRlTGlzdCA9IF8uZmxhdE1hcChcbiAgICAgICAgXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcsIGBoaWVyYXJjaHkubGV2ZWwke3RoaXMuc2VsZWN0ZWROb2RlRGF0YS5nZXRMZXZlbCgpIC0gMX0uY2hpbGRyZW5gKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVOb2RlKCkge1xuICAgIGNvbnN0IGFjdGl2ZU5vZGUgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldEFjdGl2ZU5vZGUoKTtcbiAgICBkZWxldGUgdGhpcy5mb3JtU3RhdHVzTWFwcGVyW2FjdGl2ZU5vZGUuZGF0YS5pZF07XG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLnRyZWVTZXJ2aWNlLmdldENoaWxkcmVuKCk7XG4gICAgXy5mb3JFYWNoKGNoaWxkcmVuLCAobm9kZSkgPT4ge1xuICAgICAgaWYgKF8uaGFzKHRoaXMuZm9ybVN0YXR1c01hcHBlciwgbm9kZS5kYXRhLmlkKSkge1xuICAgICAgICBkZWxldGUgdGhpcy5mb3JtU3RhdHVzTWFwcGVyW25vZGUuZGF0YS5pZF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy50cmVlU2VydmljZS5yZW1vdmVOb2RlKCk7XG4gICAgdGhpcy51cGRhdGVTdWJtaXRCdG5WaXNpYmlsaXR5KCk7XG4gICAgdGhpcy5zaG93RGVsZXRlQ29uZmlybWF0aW9uUG9wVXAgPSBmYWxzZTtcbiAgICB0aGlzLmNvbGxlY3Rpb25UcmVlTm9kZXMuZGF0YS5jaGlsZE5vZGVzID0gXy5maWx0ZXIodGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzLmRhdGEuY2hpbGROb2RlcywgKGtleSkgPT4ge1xuICAgICAgcmV0dXJuIGtleSAhPT0gYWN0aXZlTm9kZS5kYXRhLmlkO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU3VibWl0QnRuVmlzaWJpbGl0eSgpIHtcbiAgICBjb25zdCByb290Rmlyc3RDaGlsZE5vZGUgPSB0aGlzLnRyZWVTZXJ2aWNlLmdldEZpcnN0Q2hpbGQoKTtcbiAgICBpZiAocm9vdEZpcnN0Q2hpbGROb2RlICYmICFyb290Rmlyc3RDaGlsZE5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMudG9vbGJhckNvbmZpZy5oYXNDaGlsZHJlbiA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRvb2xiYXJDb25maWcuaGFzQ2hpbGRyZW4gPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlVGVsZW1ldHJ5RW5kRXZlbnQoKSB7XG4gICAgY29uc3QgdGVsZW1ldHJ5RW5kID0ge1xuICAgICAgdHlwZTogJ2VkaXRvcicsXG4gICAgICBwYWdlaWQ6IHRoaXMudGVsZW1ldHJ5U2VydmljZT8udGVsZW1ldHJ5UGFnZUlkLFxuICAgICAgbW9kZTogdGhpcy5lZGl0b3JNb2RlLFxuICAgICAgZHVyYXRpb246IF8udG9TdHJpbmcoKERhdGUubm93KCkgLSB0aGlzLnBhZ2VTdGFydFRpbWUpIC8gMTAwMClcbiAgICB9O1xuICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZT8uZW5kKHRlbGVtZXRyeUVuZCk7XG4gIH1cblxuICBoYW5kbGVUZW1wbGF0ZVNlbGVjdGlvbigkZXZlbnQpIHtcbiAgICBjb25zdCBzZWxlY3RlZFF1ZXN0aW9uVHlwZSA9ICRldmVudDtcbiAgICB0aGlzLnNob3dRdWVzdGlvblRlbXBsYXRlUG9wdXAgPSBmYWxzZTtcbiAgICBpZiAoc2VsZWN0ZWRRdWVzdGlvblR5cGUgJiYgc2VsZWN0ZWRRdWVzdGlvblR5cGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bWF4LWxpbmUtbGVuZ3RoXG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldENhdGVnb3J5RGVmaW5pdGlvbihzZWxlY3RlZFF1ZXN0aW9uVHlwZSwgbnVsbCwgJ1F1ZXN0aW9uJykucGlwZShjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7XG4gICAgICAgIGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5lcnJvci4wMDYnKSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcih0aGlzLmVkaXRvclNlcnZpY2UuYXBpRXJyb3JIYW5kbGluZyhlcnJvciwgZXJySW5mbykpO1xuICAgIH0pKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWR0ZW1wbGF0ZURldGFpbHMgPSByZXMucmVzdWx0Lm9iamVjdENhdGVnb3J5RGVmaW5pdGlvbjtcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zZWxlY3RlZENoaWxkcmVuWydsYWJlbCddPXNlbGVjdGVkdGVtcGxhdGVEZXRhaWxzLmxhYmVsO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGF0ZUZvcm1GaWVsZHMgPSBfLmdldChzZWxlY3RlZHRlbXBsYXRlRGV0YWlscywgJ2Zvcm1zLmNyZWF0ZS5wcm9wZXJ0aWVzJyk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShzZWxlY3RlZFRlbXBsYXRlRm9ybUZpZWxkcykpIHtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25DYXRlZ29yeUNvbmZpZyA9IHNlbGVjdGVkVGVtcGxhdGVGb3JtRmllbGRzO1xuICAgICAgICBxdWVzdGlvbkNhdGVnb3J5Q29uZmlnLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnZXZpZGVuY2VNaW1lVHlwZScpIHtcbiAgICAgICAgICAgIHRoaXMuZXZpZGVuY2VNaW1lVHlwZSA9IGZpZWxkLnJhbmdlO1xuICAgICAgICAgICAgZmllbGQub3B0aW9ucyA9IHRoaXMuc2V0RXZpZGVuY2U7XG4gICAgICAgICAgICBmaWVsZC5yYW5nZSA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5sZWFmRm9ybUNvbmZpZyA9IHF1ZXN0aW9uQ2F0ZWdvcnlDb25maWc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhdE1ldGFEYXRhID0gXy5nZXQoc2VsZWN0ZWR0ZW1wbGF0ZURldGFpbHMsICdvYmplY3RNZXRhZGF0YScpO1xuICAgICAgdGhpcy5zb3VyY2luZ1NldHRpbmdzID0gXy5nZXQoY2F0TWV0YURhdGEsICdjb25maWcuc291cmNpbmdTZXR0aW5ncycpIHx8IHt9O1xuICAgICAgIV8uaXNVbmRlZmluZWQodGhpcy5lZGl0b3JDb25maWcuY29uZmlnLnJlbmRlclRheG9ub215KSA/ICh0aGlzLnF1ZXN0aW9uQ29tcG9uZW50SW5wdXQuY29uZmlnID17bWF4aW11bU9wdGlvbnM6Xy5nZXQoY2F0TWV0YURhdGEsICdjb25maWcubWF4aW11bU9wdGlvbnMnKX0pIDogJycgO1xuICAgICAgaWYgKCFfLmhhcyh0aGlzLnNvdXJjaW5nU2V0dGluZ3MsICdlbmZvcmNlQ29ycmVjdEFuc3dlcicpKSB7XG4gICAgICAgIHRoaXMuc291cmNpbmdTZXR0aW5ncy5lbmZvcmNlQ29ycmVjdEFuc3dlciA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoXy5pc0VtcHR5KF8uZ2V0KGNhdE1ldGFEYXRhLCAnc2NoZW1hLnByb3BlcnRpZXMuaW50ZXJhY3Rpb25UeXBlcy5pdGVtcy5lbnVtJykpKSB7XG4gICAgICAgIC8vIHRoaXMudG9hc3RlclNlcnZpY2UuZXJyb3IodGhpcy5yZXNvdXJjZVNlcnZpY2UubWVzc2FnZXMuZW1zZy5tMDAyNik7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zZWxlY3RlZENoaWxkcmVuID0ge1xuICAgICAgICAgIHByaW1hcnlDYXRlZ29yeTogc2VsZWN0ZWRRdWVzdGlvblR5cGUsXG4gICAgICAgICAgbWltZVR5cGU6IGNhdE1ldGFEYXRhLnNjaGVtYS5wcm9wZXJ0aWVzLm1pbWVUeXBlLmVudW1bMF0sXG4gICAgICAgICAgaW50ZXJhY3Rpb25UeXBlOiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb1F1ZXN0aW9uVGFiKHVuZGVmaW5lZCwgJ2RlZmF1bHQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGludGVyYWN0aW9uVHlwZXMgPSBjYXRNZXRhRGF0YS5zY2hlbWEucHJvcGVydGllcy5pbnRlcmFjdGlvblR5cGVzLml0ZW1zLmVudW07XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zZWxlY3RlZENoaWxkcmVuID0ge1xuICAgICAgICAgIHByaW1hcnlDYXRlZ29yeTogc2VsZWN0ZWRRdWVzdGlvblR5cGUsXG4gICAgICAgICAgbWltZVR5cGU6IGNhdE1ldGFEYXRhLnNjaGVtYS5wcm9wZXJ0aWVzLm1pbWVUeXBlLmVudW1bMF0sXG4gICAgICAgICAgaW50ZXJhY3Rpb25UeXBlOiBpbnRlcmFjdGlvblR5cGVzWzBdXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVkaXJlY3RUb1F1ZXN0aW9uVGFiKHVuZGVmaW5lZCwgaW50ZXJhY3Rpb25UeXBlc1swXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWRpcmVjdFRvUXVlc3Rpb25UYWIobW9kZSwgaW50ZXJhY3Rpb25UeXBlPykge1xuICAgIGxldCBxdWVzdGlvbklkID0gIV8uaXNVbmRlZmluZWQobW9kZSkgPyB0aGlzLnNlbGVjdGVkTm9kZURhdGE/LmRhdGE/Lm1ldGFkYXRhPy5pZGVudGlmaWVyIDogdW5kZWZpbmVkO1xuICAgIGxldCBxdWVzdGlvbkNhdGVnb3J5ID0gJyc7XG4gICAgaWYgKHRoaXMub2JqZWN0VHlwZSA9PT0gJ3F1ZXN0aW9uJykge1xuICAgICAgcXVlc3Rpb25JZCA9IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC5pZGVudGlmaWVyJyk7XG4gICAgICBpbnRlcmFjdGlvblR5cGUgPSBfLmdldCh0aGlzLmVkaXRvckNvbmZpZywgJ2NvbmZpZy5pbnRlcmFjdGlvblR5cGUnKTtcbiAgICAgIHF1ZXN0aW9uQ2F0ZWdvcnkgPSBfLmdldCh0aGlzLmVkaXRvckNvbmZpZywgJ2NvbmZpZy5xdWVzdGlvbkNhdGVnb3J5Jyk7XG4gICAgICB0aGlzLmNyZWF0aW9uQ29udGV4dCA9ICB7XG4gICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgIG9iamVjdFR5cGU6IHRoaXMub2JqZWN0VHlwZSxcbiAgICAgICAgY29sbGVjdGlvbk9iamVjdFR5cGU6IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC5jb2xsZWN0aW9uT2JqZWN0VHlwZScpLFxuICAgICAgICBpc1JlYWRPbmx5TW9kZTogXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb25maWcuaXNSZWFkT25seU1vZGUnKSxcbiAgICAgICAgdW5pdElkZW50aWZpZXI6IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC51bml0SWRlbnRpZmllcicpLFxuICAgICAgICBjb3JyZWN0aW9uQ29tbWVudHM6IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29udGV4dC5jb3JyZWN0aW9uQ29tbWVudHMnKSxcbiAgICAgICAgZWRpdGFibGVGaWVsZHM6IF8uZ2V0KHRoaXMuZWRpdG9yQ29uZmlnLCAnY29uZmlnLmVkaXRhYmxlRmllbGRzJylcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5xdWVzdGlvbkNvbXBvbmVudElucHV0ID0ge1xuICAgICAgcXVlc3Rpb25TZXRJZDogdGhpcy5jb2xsZWN0aW9uSWQsXG4gICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxuICAgICAgdHlwZTogaW50ZXJhY3Rpb25UeXBlLFxuICAgICAgc2V0Q2hpbGRRdWVzdG9uOm1vZGUgPT09ICdlZGl0JyA/IGZhbHNlIDogdGhpcy5zZXRDaGlsZFF1ZXN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IHF1ZXN0aW9uQ2F0ZWdvcnksXG4gICAgICBjcmVhdGlvbkNvbnRleHQ6IHRoaXMuY3JlYXRpb25Db250ZXh0LCAvLyBQYXNzIHRoZSBjcmVhdGlvbiBjb250ZXh0IHRvIHRoZSBxdWVzdGlvbi1jb21wb25lbnRcbiAgICAgIGNyZWF0aW9uTW9kZTogbW9kZVxuICAgIH07XG5cbiAgICBpZighXy5pc1VuZGVmaW5lZChtb2RlKSAmJiAhXy5pc1VuZGVmaW5lZCh0aGlzLmVkaXRvckNvbmZpZy5jb25maWcucmVuZGVyVGF4b25vbXkpKXtcbiAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5zZWxlY3RlZENoaWxkcmVuID0ge1xuICAgICAgICBwcmltYXJ5Q2F0ZWdvcnk6IF8uZ2V0KHRoaXMuc2VsZWN0ZWROb2RlRGF0YSwgJ2RhdGEubWV0YWRhdGEucHJpbWFyeUNhdGVnb3J5JyksXG4gICAgICAgIGludGVyYWN0aW9uVHlwZTogXy5nZXQodGhpcy5zZWxlY3RlZE5vZGVEYXRhLCAnZGF0YS5tZXRhZGF0YS5pbnRlcmFjdGlvblR5cGVzWzBdJylcbiAgICAgIH07XG4gICAgICAgIHRoaXMucXVlc3Rpb25Db21wb25lbnRJbnB1dCA9IHtcbiAgICAgICAgICAuLi50aGlzLnF1ZXN0aW9uQ29tcG9uZW50SW5wdXQsXG4gICAgICAgICAgY3JlYXRpb25Db250ZXh0OntcbiAgICAgICAgICAgIGlzUmVhZE9ubHlNb2RlOiBtb2RlICE9PSAnZWRpdCcgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICBjb3JyZWN0aW9uQ29tbWVudHM6dGhpcy5jb250ZW50Q29tbWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmVkaXRvclNlcnZpY2UuZ2V0Q2F0ZWdvcnlEZWZpbml0aW9uKHRoaXMuc2VsZWN0ZWROb2RlRGF0YS5kYXRhLm1ldGFkYXRhLnByaW1hcnlDYXRlZ29yeSwgbnVsbCwgJ1F1ZXN0aW9uJylcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZHRlbXBsYXRlRGV0YWlscyA9IHJlcy5yZXN1bHQub2JqZWN0Q2F0ZWdvcnlEZWZpbml0aW9uO1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2VsZWN0ZWRDaGlsZHJlblsnbGFiZWwnXT1zZWxlY3RlZHRlbXBsYXRlRGV0YWlscy5sYWJlbDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUZW1wbGF0ZUZvcm1GaWVsZHMgPSBfLmdldChzZWxlY3RlZHRlbXBsYXRlRGV0YWlscywgJ2Zvcm1zLmNyZWF0ZS5wcm9wZXJ0aWVzJyk7XG4gICAgICAgIHRoaXMucXVlc3Rpb25Db21wb25lbnRJbnB1dC5jb25maWcgPXttYXhpbXVtT3B0aW9uczpfLmdldChzZWxlY3RlZHRlbXBsYXRlRGV0YWlscywgJ29iamVjdE1ldGFkYXRhLmNvbmZpZy5tYXhpbXVtT3B0aW9ucycpfVxuICAgICAgICBpZiAoIV8uaXNFbXB0eShzZWxlY3RlZFRlbXBsYXRlRm9ybUZpZWxkcykpIHtcbiAgICAgICAgICBjb25zdCBxdWVzdGlvbkNhdGVnb3J5Q29uZmlnID0gc2VsZWN0ZWRUZW1wbGF0ZUZvcm1GaWVsZHM7XG4gICAgICAgICAgcXVlc3Rpb25DYXRlZ29yeUNvbmZpZy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5jb2RlID09PSAnZXZpZGVuY2VNaW1lVHlwZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5ldmlkZW5jZU1pbWVUeXBlID0gZmllbGQucmFuZ2U7XG4gICAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMgPSB0aGlzLnNldEV2aWRlbmNlO1xuICAgICAgICAgICAgICBmaWVsZC5yYW5nZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5sZWFmRm9ybUNvbmZpZyA9IHF1ZXN0aW9uQ2F0ZWdvcnlDb25maWc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2F0TWV0YURhdGEgPSBzZWxlY3RlZHRlbXBsYXRlRGV0YWlscy5vYmplY3RNZXRhZGF0YTtcbiAgICAgICAgdGhpcy5zb3VyY2luZ1NldHRpbmdzID0gY2F0TWV0YURhdGE/LmNvbmZpZz8uc291cmNpbmdTZXR0aW5ncyB8fCB7fTtcbiAgICAgICAgaWYgKCFfLmhhcyh0aGlzLnNvdXJjaW5nU2V0dGluZ3MsICdlbmZvcmNlQ29ycmVjdEFuc3dlcicpKSB7XG4gICAgICAgICAgdGhpcy5zb3VyY2luZ1NldHRpbmdzLmVuZm9yY2VDb3JyZWN0QW5zd2VyID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhZ2VJZCA9ICdxdWVzdGlvbic7XG4gICAgICB9LChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJJbmZvID0ge1xuICAgICAgICAgIGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UsICdsYWJlbENvbmZpZy5tZXNzYWdlcy5lcnJvci4wMDYnKSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyb3IsIGVyckluZm8pKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgdGhpcy5wYWdlSWQgPSAncXVlc3Rpb24nO1xuICAgIH1cbiAgfVxuXG4gIHF1ZXN0aW9uRXZlbnRMaXN0ZW5lcihldmVudDogYW55KSB7XG4gICAgdGhpcy5zZWxlY3RlZE5vZGVEYXRhID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubWVyZ2VDb2xsZWN0aW9uRXh0ZXJuYWxQcm9wZXJ0aWVzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgdGhpcy5wYWdlSWQgPSAnY29sbGVjdGlvbl9lZGl0b3InO1xuICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCA9IHRoaXMucGFnZUlkO1xuICAgICAgdGhpcy5pc0VuYWJsZUNzdkFjdGlvbiA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgY29udGVudFBvbGljeVVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JTZXJ2aWNlLmNvbnRlbnRQb2xpY3lVcmw7XG4gIH1cblxuICBzaG93Q29tbWVudEFkZGVkQWdhaW5zdENvbnRlbnQoKSB7XG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb25UcmVlTm9kZXMuZGF0YS5zdGF0dXMgPT09ICdEcmFmdCcgJiYgdGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzLmRhdGEucHJldlN0YXR1cyAgPT09ICdSZXZpZXcnICYmIF8uaGFzKHRoaXMuY29sbGVjdGlvblRyZWVOb2Rlcy5kYXRhLCAncmVqZWN0Q29tbWVudCcpKSB7XG4gICAgICB0aGlzLmNvbnRlbnRDb21tZW50ID0gXy5nZXQodGhpcy5jb2xsZWN0aW9uVHJlZU5vZGVzLmRhdGEsICdyZWplY3RDb21tZW50Jyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZSwgJ2VkaXRvckNvbmZpZy5jb25maWcuc2hvd0NvcnJlY3Rpb25Db21tZW50cycpKSB7XG4gICAgICB0aGlzLmNvbnRlbnRDb21tZW50ID0gXy5nZXQodGhpcy5lZGl0b3JDb25maWcsICdjb250ZXh0LmNvcnJlY3Rpb25Db21tZW50cycpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBoYW5kbGVDc3ZEcm9wZG93bk9wdGlvbnNPbkNvbGxlY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuaXNUcmVlSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuaXNFbmFibGVDc3ZBY3Rpb24gPSB0cnVlO1xuICAgICAgdGhpcy5pc1RyZWVJbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzRW5hYmxlQ3N2QWN0aW9uID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuc2V0Q3N2RHJvcERvd25PcHRpb25zRGlzYWJsZSh0cnVlKTtcbiAgfVxuICBvbkNsaWNrRm9sZGVyKCkge1xuICAgIGlmICh0aGlzLmlzQ29tcG9uZW5ldEluaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLmlzQ29tcG9uZW5ldEluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNldENzdkRyb3BEb3duT3B0aW9uc0Rpc2FibGUoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNFbmFibGVDc3ZBY3Rpb24pIHtcbiAgICAgdGhpcy5zZXRDc3ZEcm9wRG93bk9wdGlvbnNEaXNhYmxlKCk7XG4gIH1cbiAgfVxuICBzZXRDc3ZEcm9wRG93bk9wdGlvbnNEaXNhYmxlKGRpc2FibGU/KSB7XG4gICAgY29uc3Qgc3RhdHVzID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEhpZXJhcmNoeUZvbGRlcigpLmxlbmd0aCA/IHRydWUgOiBmYWxzZTtcbiAgICB0aGlzLmNzdkRyb3BEb3duT3B0aW9ucy5pc0Rpc2FibGVDcmVhdGVDc3YgPSBkaXNhYmxlID8gZGlzYWJsZSA6IHN0YXR1cztcbiAgICB0aGlzLmNzdkRyb3BEb3duT3B0aW9ucy5pc0Rpc2FibGVVcGRhdGVDc3YgPSBkaXNhYmxlID8gZGlzYWJsZSA6ICFzdGF0dXM7XG4gICAgdGhpcy5jc3ZEcm9wRG93bk9wdGlvbnMuaXNEaXNhYmxlRG93bmxvYWRDc3YgPSBkaXNhYmxlID8gZGlzYWJsZSA6ICFzdGF0dXM7XG4gIH1cbiAgZG93bmxvYWRIaWVyYXJjaHlDc3YoKSB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmRvd25sb2FkSGllcmFyY2h5Q3N2KHRoaXMuY29sbGVjdGlvbklkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIGNvbnN0IHRvY1VybCA9IF8uZ2V0KHJlcywgJ3Jlc3VsdC5jb2xsZWN0aW9uLnRvY1VybCcpO1xuICAgICAgdGhpcy5kb3dubG9hZENTVkZpbGUodG9jVXJsKTtcbiAgICB9LCBlcnJvciA9PiB7XG4gICAgICB0aGlzLnRvYXN0ZXJTZXJ2aWNlLmVycm9yKF8uZ2V0KGVycm9yLCAnZXJyb3IucGFyYW1zLmVycm1zZycpKTtcbiAgICB9KTtcbiAgfVxuICBpc1Jldmlld01vZGUoKSB7XG4gICAgcmV0dXJuICBfLmluY2x1ZGVzKFsgJ3JldmlldycsICdyZWFkJywgJ3NvdXJjaW5ncmV2aWV3JywgJ29yZ3JldmlldycgXSwgdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvck1vZGUpO1xuICAgfVxuICBkb3dubG9hZENTVkZpbGUodG9jVXJsKSB7XG4gICAgY29uc3QgZG93bmxvYWRDb25maWcgPSB7XG4gICAgICBibG9iVXJsOiB0b2NVcmwsXG4gICAgICBzdWNjZXNzTWVzc2FnZTogZmFsc2UsXG4gICAgICBmaWxlVHlwZTogJ2NzdicsXG4gICAgICBmaWxlTmFtZTogdGhpcy5jb2xsZWN0aW9uSWRcbiAgICB9O1xuICAgIHdpbmRvdy5vcGVuKGRvd25sb2FkQ29uZmlnLmJsb2JVcmwsICdfYmxhbmsnKTtcbiAgICAvKnRoaXMuZWRpdG9yU2VydmljZS5kb3dubG9hZEJsb2JVcmxGaWxlKGRvd25sb2FkQ29uZmlnKTsqL1xuICB9XG4gIGhhbm5kbGVDc3ZFbWl0dGVyKGV2ZW50KSB7XG4gICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICBjYXNlICdjbG9zZU1vZGFsJzpcbiAgICAgICAgdGhpcy5zaG93Q3N2VXBsb2FkUG9wdXAgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd1cGRhdGVIaWVyYXJjaHknOlxuICAgICAgICB0aGlzLm1lcmdlQ29sbGVjdGlvbkV4dGVybmFsUHJvcGVydGllcygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnBhZ2VJZCA9ICdjb2xsZWN0aW9uX2VkaXRvcic7XG4gICAgICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCA9IHRoaXMucGFnZUlkO1xuICAgICAgICAgIHRoaXMuaXNFbmFibGVDc3ZBY3Rpb24gPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjcmVhdGVDc3YnOlxuICAgICAgICB0aGlzLnNob3dDc3ZVcGxvYWRQb3B1cCA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNDcmVhdGVDc3YgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VwZGF0ZUNzdic6XG4gICAgICAgIHRoaXMuc2hvd0NzdlVwbG9hZFBvcHVwID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc0NyZWF0ZUNzdiA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd25sb2FkQ3N2JzpcbiAgICAgICAgdGhpcy5kb3dubG9hZEhpZXJhcmNoeUNzdigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZShmb3JtKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gdGhpcy50cmVlU2VydmljZS5nZXRBY3RpdmVOb2RlKCk7XG4gICAgaWYgKHNlbGVjdGVkTm9kZSAmJiBzZWxlY3RlZE5vZGUuZGF0YS5pZCkge1xuICAgICAgdGhpcy5mb3JtU3RhdHVzTWFwcGVyW3NlbGVjdGVkTm9kZS5kYXRhLmlkXSA9IGZvcm0uaXNWYWxpZDtcbiAgICB9XG4gIH1cblxuICBhc3NpZ25QYWdlRW1pdHRlckxpc3RlbmVyKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnBhZ2VJZCA9ICdjb2xsZWN0aW9uX2VkaXRvcic7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy50ZWxlbWV0cnlTZXJ2aWNlICYmIHRoaXMudGVsZW1ldHJ5U2VydmljZT8uZW5kKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVGVsZW1ldHJ5RW5kRXZlbnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudHJlZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMudHJlZVNlcnZpY2UuY2xlYXJUcmVlQ2FjaGUoKTtcbiAgICB9XG4gICAgIGlmICh0aGlzLmRpYWxjb2RlU2VydmljZSkge1xuICAgICAgdGhpcy5kaWFsY29kZVNlcnZpY2UuY2xlYXJEaWFsQ29kZU1hcHMoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kYWwgJiYgdGhpcy5tb2RhbC5kZW55KSB7XG4gICAgICB0aGlzLm1vZGFsLmRlbnkoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudW5TdWJzY3JpYmVTaG93TGlicmFyeVBhZ2VFbWl0dGVyKSB7XG4gICAgICB0aGlzLnVuU3Vic2NyaWJlU2hvd0xpYnJhcnlQYWdlRW1pdHRlci51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy51blN1YnNjcmliZXNob3dRdWVzdGlvbkxpYnJhcnlQYWdlRW1pdHRlcikge1xuICAgICAgdGhpcy51blN1YnNjcmliZXNob3dRdWVzdGlvbkxpYnJhcnlQYWdlRW1pdHRlci51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICB0aGlzLnVuc3Vic2NyaWJlJCAmJiB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQgJiYgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG5cbiAgc2V0RXZpZGVuY2UoY29udHJvbCwgZGVwZW5kczogRm9ybUNvbnRyb2xbXSwgZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGxvYWRpbmcsIGxvYWRlZCkge1xuICAgIGNvbnRyb2wuaXNWaXNpYmxlID0gJ25vJztcbiAgICBjb250cm9sLnJhbmdlID0gdGhpcy5ldmlkZW5jZU1pbWVUeXBlO1xuICAgIHJldHVybiBtZXJnZSguLi5fLm1hcChkZXBlbmRzLCBkZXBlbmQgPT4gZGVwZW5kLnZhbHVlQ2hhbmdlcykpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFfLmlzRW1wdHkodmFsdWUpICYmIF8udG9Mb3dlcih2YWx1ZSkgPT09ICd5ZXMnKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5pc1Zpc2libGUgPSAneWVzJztcbiAgICAgICAgICAgICAgICByZXR1cm4gb2Yoe3JhbmdlOiB0aGlzLmV2aWRlbmNlTWltZVR5cGV9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5pc1Zpc2libGUgPSAnbm8nO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0RWNtKGNvbnRyb2wsIGRlcGVuZHM6IEZvcm1Db250cm9sW10sIGZvcm1Hcm91cDogRm9ybUdyb3VwLCBsb2FkaW5nLCBsb2FkZWQpIHtcbiAgICBjb250cm9sLmlzVmlzaWJsZSA9ICdubyc7XG4gICAgY29udHJvbC5vcHRpb25zID0gdGhpcy5lY207XG4gICAgcmV0dXJuIG1lcmdlKC4uLl8ubWFwKGRlcGVuZHMsIGRlcGVuZCA9PiBkZXBlbmQudmFsdWVDaGFuZ2VzKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoIV8uaXNFbXB0eSh2YWx1ZSkgJiYgXy50b0xvd2VyKHZhbHVlKSA9PT0gJ3llcycpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmlzVmlzaWJsZSA9ICd5ZXMnO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZih7b3B0aW9uczogdGhpcy5lY219KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5pc1Zpc2libGUgPSAnbm8nO1xuICAgICAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0QWxsb3dFY20oY29udHJvbCwgZGVwZW5kczogRm9ybUNvbnRyb2xbXSkge1xuICAgIGNvbnRyb2wuaXNWaXNpYmxlID0gJ25vJztcbiAgICBjb25zdCByZXNwb25zZSA9IG1lcmdlKC4uLl8ubWFwKGRlcGVuZHMsIGRlcGVuZCA9PiBkZXBlbmQudmFsdWVDaGFuZ2VzKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgaWYgKCFfLmlzRW1wdHkodmFsdWUpICYmIF8udG9Mb3dlcih2YWx1ZSkgPT09ICdzZWxmJyApIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmlzVmlzaWJsZSA9ICdubyc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udHJvbC5pc1Zpc2libGUgPSAneWVzJztcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInBhZ2VJZFwiPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29sbGVjdGlvbl9lZGl0b3InXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZC10by1saWJyYXJ5IG1iLTEwXCI+XG4gICAgICA8bGliLWhlYWRlciBbcGFnZUlkXT1cInBhZ2VJZFwiIFtwdWJsaXNoY2hlY2tsaXN0XT1cInB1Ymxpc2hjaGVja2xpc3RcIlxuICAgICAgW2xhYmVsQ29uZmlnRGF0YV09XCJ0b29sYmFyQ29uZmlnXCIgW2J1dHRvbkxvYWRlcnNdPVwiYnV0dG9uTG9hZGVyc1wiICh0b29sYmFyRW1pdHRlcik9XCJ0b29sYmFyRXZlbnRMaXN0ZW5lcigkZXZlbnQpXCI+IDwvbGliLWhlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoLTEwMHZoIHNiLWJnLXdoaXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aSB0d2VsdmUgY29sdW1uIGdyaWQgbS0wIFwiPlxuICAgICAgICAgICAgPCEtLSBMZWZ0IFNpZGViYXIgZm9yIGNhcmRzIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNTAgc2ItZm9sZGVyLW1lbnVcIiAqbmdJZj1cImlzT2JqZWN0VHlwZUNvbGxlY3Rpb25cIj5cbiAgICAgICAgICAgIDxkaXY+ICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZm9sZGVyc319IDwvZGl2PlxuICAgICAgICAgICAgICA8YSBjbGFzcz1cInByb2ZpbGUtYXZ0YXIgY29tcHV0ZXIgb25seSBwLTAgcHItMTBcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgPGRpdiBzdWlEcm9wZG93biBjbGFzcz1cInVpIGRyb3Bkb3duIHJpZ2h0IHRvcCBwb2ludGluZyB6LWluZGV4LTlcIiAgaWQ9XCJkcm9wZG93bi1tZW51LWxpc3QtaGVhZGVyXCIgKm5nSWY9XCIhaXNTdGF0dXNSZXZpZXdNb2RlXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gZWxsaXBzaXMgdmVydGljYWwgaC0xXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgIFtuZ0NsYXNzXT1cInsnc2ItZGlzYWJsZS1pY29uJzogaXNTdGF0dXNSZXZpZXdNb2RlfVwiIChjbGljayk9XCJvbkNsaWNrRm9sZGVyKClcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWVudVwiIHN1aURyb3Bkb3duTWVudSA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaXRlbSBmcy0wLTc4NSBiZy1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgICAgICAgICAgICAgICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdvcGVuX3BvcHVwJywnY2xpY2snLGNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY3JlYXRlSGllcmFyY2h5Q3N2LFxuICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCx7a2V5OiAnZGlhbG9nX2lkJywgdmFsdWU6IGNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY3JlYXRlSGllcmFyY2h5Q3N2fSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGFubmRsZUNzdkVtaXR0ZXIoe3R5cGU6ICdjcmVhdGVDc3YnfSlcIiBbZGlzYWJsZWRdPVwiY3N2RHJvcERvd25PcHRpb25zLmlzRGlzYWJsZUNyZWF0ZUNzdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gZm9sZGVyIG91dGxpbmUgc2ItY29sb3ItcHJpbWFyeVwiIFtuZ0NsYXNzXT1cInsnc2ItZGlzYWJsZS1pY29uJzogY3N2RHJvcERvd25PcHRpb25zLmlzRGlzYWJsZUNyZWF0ZUNzdn1cIiAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiIFtuZ0NsYXNzXT1cInsnbGFiZWwtZGlzYWJsZSc6IGNzdkRyb3BEb3duT3B0aW9ucy5pc0Rpc2FibGVDcmVhdGVDc3Z9XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNyZWF0ZUhpZXJhcmNoeUNzdn19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWkgZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgICAgICAgICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnY3N2X2Rvd25sb2FkJywnY2xpY2snLGNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZG93bmxvYWRGb2xkZXJzSW5DU1YsXG4gICAgICAgICAgICAgICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCx7a2V5OiAnaWRlbnRpZmllcicsIHZhbHVlOiBjb2xsZWN0aW9uSWR9KVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpdGVtIGZzLTAtNzg1IGJnLW5vbmVcIiAoY2xpY2spPVwiaGFubmRsZUNzdkVtaXR0ZXIoe3R5cGU6ICdkb3dubG9hZENzdid9KVwiIFtkaXNhYmxlZF09XCJjc3ZEcm9wRG93bk9wdGlvbnMuaXNEaXNhYmxlRG93bmxvYWRDc3ZcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gZG93bmxvYWQgc2ItY29sb3ItcHJpbWFyeVwiIFtuZ0NsYXNzXT1cInsnc2ItZGlzYWJsZS1pY29uJzogY3N2RHJvcERvd25PcHRpb25zLmlzRGlzYWJsZURvd25sb2FkQ3N2fVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiIFtuZ0NsYXNzXT1cInsnbGFiZWwtZGlzYWJsZSc6IGNzdkRyb3BEb3duT3B0aW9ucy5pc0Rpc2FibGVEb3dubG9hZENzdn1cIiA+IFxuICAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZG93bmxvYWRGb2xkZXJzSW5DU1Z9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpIGRpdmlkZXJcIj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBcbiAgICAgICAgICAgICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgICAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ29wZW5fcG9wdXAnLCdjbGljaycsY29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy51cGxvYWRVcGRhdGVDU1YsXG4gICAgICAgICAgICAgICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCx7a2V5OiAnZGlhbG9nX2lkJywgdmFsdWU6IGNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkVXBkYXRlQ1NWfSlcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaXRlbSBmcy0wLTc4NSBiZy1ub25lXCIgKGNsaWNrKT1cImhhbm5kbGVDc3ZFbWl0dGVyKHt0eXBlOiAndXBkYXRlQ3N2J30pXCIgW2Rpc2FibGVkXT1cImNzdkRyb3BEb3duT3B0aW9ucy5pc0Rpc2FibGVVcGRhdGVDc3ZcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gdXBsb2FkIHNiLWNvbG9yLXByaW1hcnlcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmdDbGFzc109XCJ7J2xhYmVsLWRpc2FibGUnOiBjc3ZEcm9wRG93bk9wdGlvbnMuaXNEaXNhYmxlVXBkYXRlQ3N2fVwiPjwvaT4gXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiIFtuZ0NsYXNzXT1cInsnbGFiZWwtZGlzYWJsZSc6IGNzdkRyb3BEb3duT3B0aW9ucy5pc0Rpc2FibGVVcGRhdGVDc3Z9XCIgPiBcbiAgICAgICAgICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkVXBkYXRlQ1NWfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGhyZWUgd2lkZSBjb2x1bW4gcC0wIG92ZXJmbG93LXkgIG1iLTQwIGgtMTAwdmhcIiBbbmdDbGFzc109XCJ7J210LTUwJzogaXNPYmplY3RUeXBlQ29sbGVjdGlvbn1cIj5cbiAgICAgICAgICAgICAgPGxpYi1mYW5jeS10cmVlICAqbmdJZj1cImNvbGxlY3Rpb25UcmVlTm9kZXMgJiYgY29sbGVjdGlvblRyZWVOb2Rlcy5kYXRhICYmIGlzaGllcmFyY2h5Q29uZmlnU2V0XCJcbiAgICAgICAgICAgICAgW25vZGVzXT1cImNvbGxlY3Rpb25UcmVlTm9kZXNcIiBbb3B0aW9uc109XCJ7IHNob3dDb25uZWN0b3JzOiB0cnVlIH1cIiBbYnV0dG9uTG9hZGVyc109XCJidXR0b25Mb2FkZXJzXCJcbiAgICAgICAgICAgICAgKHRyZWVFdmVudEVtaXR0ZXIpPVwidHJlZUV2ZW50TGlzdGVuZXIoJGV2ZW50KVwiIGNsYXNzPVwic2ItY29sbGVjdGlvblRyZWUtZmFuY3lUcmVlIHNiLWNvbGxlY3Rpb25UcmVlLWZhbmN5VHJlZWxpc3Qgc2ItcXVlc3Rpb25zZXQtc2Nyb2xsXCI+XG4gICAgICAgICAgICAgIDwvbGliLWZhbmN5LXRyZWU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gUmlnaHQgUGxheWVyIFNlY3Rpb25zIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVpZ2h0IHdpZGUgY29sdW1uIGJnLXdoaXRlIHBsLTQwIG1iLTEwIHctNzNcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihpc0N1cnJlbnROb2RlRm9sZGVyID09PSB0cnVlIHx8IGlzQ3VycmVudE5vZGVSb290ID09PSB0cnVlKSAmJiB1bml0Rm9ybUNvbmZpZyAmJiBzZWxlY3RlZE5vZGVEYXRhICYmIHJvb3RGb3JtQ29uZmlnXCI+XG4gICAgICAgICAgICAgICAgPGxpYi1tZXRhLWZvcm0gW3Jvb3RGb3JtQ29uZmlnXT1cInJvb3RGb3JtQ29uZmlnXCIgW25vZGVNZXRhZGF0YV09XCJzZWxlY3RlZE5vZGVEYXRhXCIgW3VuaXRGb3JtQ29uZmlnXT1cInVuaXRGb3JtQ29uZmlnXCJcbiAgICAgICAgICAgICAgICAodG9vbGJhckVtaXR0ZXIpPVwidG9vbGJhckV2ZW50TGlzdGVuZXIoJGV2ZW50KVwiPjwvbGliLW1ldGEtZm9ybT5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0N1cnJlbnROb2RlRm9sZGVyID09PSBmYWxzZSAmJiBpc0N1cnJlbnROb2RlUm9vdCAhPT0gdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGxpYi1jb250ZW50cGxheWVyLXBhZ2UgKm5nSWY9XCIhaXNRdW1sUGxheWVyXCIgIFtjb250ZW50TWV0YWRhdGFdPVwic2VsZWN0ZWROb2RlRGF0YVwiID48L2xpYi1jb250ZW50cGxheWVyLXBhZ2U+XG4gICAgICAgICAgICAgICAgICA8bGliLXF1bWxwbGF5ZXItcGFnZSAqbmdJZj1cImlzUXVtbFBsYXllclwiIFtxdWVzdGlvbk1ldGFEYXRhXT1cInNlbGVjdGVkTm9kZURhdGFcIiBbcXVlc3Rpb25TZXRIaWVyYXJjaHldPVwiY29sbGVjdGlvblRyZWVOb2Rlcz8uZGF0YVwiXG4gICAgICAgICAgICAgICAgICAgICAgKHRvb2xiYXJFbWl0dGVyKT1cInRvb2xiYXJFdmVudExpc3RlbmVyKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9saWItcXVtbHBsYXllci1wYWdlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8c3VpLW1vZGFsICpuZ0lmPVwic2hvd0RlbGV0ZUNvbmZpcm1hdGlvblBvcFVwXCIgW211c3RTY3JvbGxdPVwidHJ1ZVwiIFtpc0Nsb3NhYmxlXT1cInRydWVcIiBbdHJhbnNpdGlvbkR1cmF0aW9uXT1cIjBcIlxuICAgICAgICBbc2l6ZV09XCInbm9ybWFsJ1wiIGNsYXNzPVwic2ItbW9kYWwgYngtbm9uZSBvdmVyZmxvdy1tb2RhbFwiIGFwcEJvZHlTY3JvbGxcbiAgICAgICAgKGRpc21pc3NlZCk9XCJzaG93RGVsZXRlQ29uZmlybWF0aW9uUG9wVXAgPSAhc2hvd0RlbGV0ZUNvbmZpcm1hdGlvblBvcFVwXCIgI21vZGFsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+XG4gICAgICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNvbmZpcm1EZWxldGVDb250ZW50fX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1jb250ZW50XCI+XG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJzYi1wdWJsaXNoLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlldy1tb2RhbC1saXN0XCI+XG4gICAgICAgICAgICAgICAge3sgY29udGVudENvbW1lbnQgfX1cbiAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxkaXY+IHt7ZGVsZXRlQ29uZmlybU1lc3NhZ2V9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1wcmltYXJ5IG1yLThcIiAoY2xpY2spPVwic2hvd0RlbGV0ZUNvbmZpcm1hdGlvblBvcFVwID0gIXNob3dEZWxldGVDb25maXJtYXRpb25Qb3BVcFwiXG4gICAgICAgICAgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ25vJywnY2xpY2snLCdjYW5jZWwnLCB0aGlzLnRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLHtrZXk6ICdkaWFsb2dfaWQnLCB2YWx1ZTogJ2NvbmZpcm1fZGVsZXRlX2NvbnRlbnQnLCdpZGVudGlmaWVyJyA6IHNlbGVjdGVkTm9kZURhdGE/LmRhdGE/LmlkfSlcIj4ge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5ub19idG5fbGFiZWx9fSA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tc2Vjb25kYXJ5IHNiLWJ0bi1ub3JtYWwgXCIgKGNsaWNrKT1cImRlbGV0ZU5vZGUoKTtcIlxuICAgICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCd5ZXMnLCdjbGljaycsJ3N1Ym1pdCcsIHRoaXMudGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQse2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnY29uZmlybV9kZWxldGVfY29udGVudCcsJ2lkZW50aWZpZXInIDogc2VsZWN0ZWROb2RlRGF0YT8uZGF0YT8uaWR9KVwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/Lnllc19idG5fbGFiZWx9fSA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3N1aS1tb2RhbD5cbiAgICAgIDxzdWktbW9kYWwgKm5nSWY9J3Nob3dDb25maXJtUG9wdXAnIFttdXN0U2Nyb2xsXT1cImZhbHNlXCIgW2lzQ2xvc2FibGVdPVwidHJ1ZVwiIFt0cmFuc2l0aW9uRHVyYXRpb25dPVwiMFwiIFtzaXplXT1cIidub3JtYWwnXCJcbiAgICAgICAgICBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgYXBwQm9keVNjcm9sbCAoZGlzbWlzc2VkKT1cInNob3dDb25maXJtUG9wdXAgPSAhc2hvd0NvbmZpcm1Qb3B1cDsgdGVybXMgPSBmYWxzZTtcIiAjbW9kYWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFjY2VwdFRlcm1zfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtY29udGVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVpIGdyaWRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3ZWx2ZSB3aWRlIGNvbHVtbiBzYi1jaGVja2JveC10bmMgbXQtMTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItY2hlY2tib3ggc2ItY2hlY2tib3gtcHJpbWFyeSBmb250LWl0YWxpYyBwLTAgbS0wXCI+PGlucHV0IFsobmdNb2RlbCldPVwidGVybXNcIiBpZD1cInRlcm1BbmRDb25kaXRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cImV4YW1wbGVcIiB0eXBlPVwiY2hlY2tib3hcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0ZXJtQW5kQ29uZGl0aW9uc1wiIGNsYXNzPVwiZnNtYWxsIHBsLTMyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1haS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNiLXJlcXVpcmVkXCI+Kjwvc3Bhbj48c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb250LXdlaWdodC1ib2xkIG1iLTQgZC1ibG9ja1wiPlwie3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmlBZ3JlZVN1Ym1pdH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiLWNvbG9yLWdyYXktMzAwXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lmljb25maXJtQ29udGVudH19PGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2ItY29sb3ItcHJpbWFyeSBmb250LXdlaWdodC1ib2xkIGN1cnNvci1wb2ludGVyXCIgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlc1wiIHRhcmdldD1cIl9ibGFua1wiID4ge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNyZWF0ZUNvbW1vbkZyYW1ld29ya319PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFjY29yZGFuY2V9fSBcbiAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwic2ItY29sb3ItcHJpbWFyeSBmb250LXdlaWdodC1ib2xkIGN1cnNvci1wb2ludGVyXCIgaHJlZj1cInt7Y29udGVudFBvbGljeVVybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5jb250ZW50UG9saWN5fX08L2E+IHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wcml2YWN5UmlnaHRzfX1cIjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiIFtuZ0NsYXNzXT1cIiF0ZXJtcyA/ICdzYi1idG4tZGlzYWJsZWQnIDogJ3NiLWJ0bi1wcmltYXJ5J1wiIFtkaXNhYmxlZF09XCIhdGVybXNcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic2VuZEZvclJldmlldygpXCIgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgICAgICAgICAgW3RlbGVtZXRyeUludGVyYWN0RWRhdGFdPVwidGVsZW1ldHJ5U2VydmljZS5nZXRUZWxlbWV0cnlJbnRlcmFjdEVkYXRhKCdzdWJtaXQnLCdjbGljaycsJ3N1Ym1pdCcsIHRoaXMudGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQse2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnYWNjZXB0aW5nX3Rlcm1zX2NvbmRpdGlvbnMnLCd0ZXJtQW5kQ29uZGl0aW9ucycgOiB0ZXJtc30pXCI+XG4gICAgICAgICAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uc3VibWl0X2J0bl9sYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc3VpLW1vZGFsPlxuICAgICAgPHN1aS1tb2RhbCAqbmdJZj0nc2hvd1ByZXZpZXcnIFttdXN0U2Nyb2xsXT1cImZhbHNlXCIgW2lzQ2xvc2FibGVdPVwidHJ1ZVwiIFt0cmFuc2l0aW9uRHVyYXRpb25dPVwiMFwiIFtzaXplXT1cIidsYXJnZSdcIlxuICAgICAgICAgIGNsYXNzPVwic2ItbW9kYWwgb3ZlcmZsb3ctbW9kYWwgcHJldmlldy1tb2RhbFwiIGFwcEJvZHlTY3JvbGwgKGRpc21pc3NlZCk9XCJzaG93UHJldmlldyA9ICFzaG93UHJldmlldztcIiAjbW9kYWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnF1ZXN0aW9uU2V0UHJldmlld319XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJici0yIGItMS0xMDBcIiBpZD1cInByZXZpZXdQbGF5ZXJDb250YWluZXJcIiB0YWJpbmRleD1cIjBcIiBjZGtUcmFwRm9jdXM+XG4gICAgICAgICAgICAgIDxsaWItcXVtbC1wbGF5ZXIgW3F1ZXN0aW9uU2V0SGllcmFyY2h5XT1cImNvbGxlY3Rpb25UcmVlTm9kZXM/LmRhdGFcIj48L2xpYi1xdW1sLXBsYXllcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9zdWktbW9kYWw+XG4gICAgICA8bGliLXRlbXBsYXRlICpuZ0lmPSdzaG93UXVlc3Rpb25UZW1wbGF0ZVBvcHVwJyBbdGVtcGxhdGVMaXN0XT1cInRlbXBsYXRlTGlzdFwiXG4gICAgICAodGVtcGxhdGVTZWxlY3Rpb24pPVwiaGFuZGxlVGVtcGxhdGVTZWxlY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgPC9saWItdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGlicmFyeSdcIj5cbiAgICA8bGliLWxpYnJhcnkgW2xpYnJhcnlJbnB1dF09XCJsaWJyYXJ5Q29tcG9uZW50SW5wdXRcIiAobGlicmFyeUVtaXR0ZXIpPVwibGlicmFyeUV2ZW50TGlzdGVuZXIoJGV2ZW50KVwiPlxuICAgIDwvbGliLWxpYnJhcnk+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncXVlc3Rpb24nXCI+XG4gICAgPGxpYi1xdWVzdGlvbiBbcXVlc3Rpb25JbnB1dF09XCJxdWVzdGlvbkNvbXBvbmVudElucHV0XCIgW2xlYWZGb3JtQ29uZmlnXT1cImxlYWZGb3JtQ29uZmlnXCIgICAocXVlc3Rpb25FbWl0dGVyKT1cInF1ZXN0aW9uRXZlbnRMaXN0ZW5lcigkZXZlbnQpXCI+XG4gICAgPC9saWItcXVlc3Rpb24+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGFnaW5hdGlvbidcIj5cbiAgICA8bGliLWFzc2lnbi1wYWdlLW51bWJlciAoYXNzaWduUGFnZUVtaXR0ZXIpPVwiYXNzaWduUGFnZUVtaXR0ZXJMaXN0ZW5lcigkZXZlbnQpXCI+PC9saWItYXNzaWduLXBhZ2UtbnVtYmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Byb2dyZXNzU3RhdHVzJ1wiPlxuICAgIDxsaWItcHJvZ3Jlc3Mtc3RhdHVzIChhc3NpZ25QYWdlRW1pdHRlcik9XCJhc3NpZ25QYWdlRW1pdHRlckxpc3RlbmVyKCRldmVudClcIj48L2xpYi1wcm9ncmVzcy1zdGF0dXM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwiYWRkQ29sbGFib3JhdG9yXCI+XG4gIDxsaWItbWFuYWdlLWNvbGxhYm9yYXRvciBbYWRkQ29sbGFib3JhdG9yXT1cImFkZENvbGxhYm9yYXRvclwiIFtjb2xsZWN0aW9uSWRdPVwiY29sbGVjdGlvbklkXCIgKG1vZGFsRGlzbWlzc0VtaXR0ZXIpPVwidG9nZ2xlQ29sbGFib3JhdG9yTW9kYWxQb3VwKClcIj48L2xpYi1tYW5hZ2UtY29sbGFib3JhdG9yPlxuPC9uZy1jb250YWluZXI+XG48c3VpLW1vZGFsICpuZ0lmPVwic2hvd1Jldmlld01vZGFsXCIgW211c3RTY3JvbGxdPVwidHJ1ZVwiIFtpc0Nsb3NhYmxlXT1cImZhbHNlXCIgW3RyYW5zaXRpb25EdXJhdGlvbl09XCIwXCJcbiAgW3NpemVdPVwiJ25vcm1hbCdcIiBjbGFzcz1cInNiLW1vZGFsIGJ4LW5vbmUgb3ZlcmZsb3ctbW9kYWxcIiBhcHBCb2R5U2Nyb2xsICNtb2RhbCAoZGlzbWlzc2VkKT1cInNob3dSZXZpZXdNb2RhbCA9IGZhbHNlO1wiPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+XG4gICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnJldmlld0NvbW1lbnRzfX1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItZmllbGRcIj5cbiAgICAgICAgICA8bGFiZWw+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNvbW1lbnRzfX08L2xhYmVsPlxuICAgICAgICAgICAgPHRleHRhcmVhIGRpc2FibGVkPVwiZGlzYWJsZWRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwid21kLWlucHV0IHdpZHRoLTEwMCBzYi1mb3JtLWNvbnRyb2wgcC0xMCBzYi1kaXNhYmxlZC10ZXh0YXJlYVwiIGlkPVwid21kLWlucHV0XCIgWyhuZ01vZGVsKV09XCJjb250ZW50Q29tbWVudFwiIG5hbWU9XCJyZWplY3RlZENvbW1lbnRcIj48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9uc1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbCBzYi1idG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRlbnkoJ2RlbmllZCcpXCJcbiAgICBsaWJUZWxlbWV0cnlJbnRlcmFjdCBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ2Nsb3NlJywnY2xpY2snLCdjYW5jZWwnLCB0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZCwgIHtrZXk6ICdkaWFsb2dfaWQnLCB2YWx1ZTogJ3Jldmlld19jb21tZW50cyd9KVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uY2xvc2VfYnRuX2xhYmVsfX08L2J1dHRvbj5cbiAgPC9kaXY+XG48L3N1aS1tb2RhbD5cblxuICA8bGliLWNzdi11cGxvYWQgKm5nSWY9XCJzaG93Q3N2VXBsb2FkUG9wdXBcIiBbaXNDcmVhdGVDc3ZdPSBcImlzQ3JlYXRlQ3N2XCIgIChjc3ZVcGxvYWRFbWl0dGVyKT0gXCJoYW5uZGxlQ3N2RW1pdHRlcigkZXZlbnQpXCIgW2NvbGxlY3Rpb25JZF09XCJjb2xsZWN0aW9uSWRcIj5cbiAgPC9saWItY3N2LXVwbG9hZD5cblxuIl19
|