@alfresco/adf-process-services 8.1.0-16320806191 → 9.1.0-16312921641
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/fesm2022/adf-process-services.mjs +297 -301
- package/fesm2022/adf-process-services.mjs.map +1 -1
- package/package.json +4 -6
- package/esm2022/adf-process-services.mjs +0 -5
- package/esm2022/lib/app-list/apps-list.component.mjs +0 -195
- package/esm2022/lib/app-list/icon.model.mjs +0 -166
- package/esm2022/lib/app-list/index.mjs +0 -18
- package/esm2022/lib/app-list/public-api.mjs +0 -23
- package/esm2022/lib/app-list/select-apps-dialog/select-apps-dialog.component.mjs +0 -53
- package/esm2022/lib/attachment/create-process-attachment/create-process-attachment.component.mjs +0 -73
- package/esm2022/lib/attachment/create-task-attachment/create-task-attachment.component.mjs +0 -73
- package/esm2022/lib/attachment/index.mjs +0 -18
- package/esm2022/lib/attachment/process-attachment-list/process-attachment-list.component.mjs +0 -197
- package/esm2022/lib/attachment/public-api.mjs +0 -31
- package/esm2022/lib/attachment/task-attachment-list/task-attachment-list.component.mjs +0 -196
- package/esm2022/lib/compat/types.mjs +0 -18
- package/esm2022/lib/form/events/validate-dynamic-table-row.event.mjs +0 -26
- package/esm2022/lib/form/form-custom-outcomes.component.mjs +0 -31
- package/esm2022/lib/form/form-list/form-list.component.mjs +0 -50
- package/esm2022/lib/form/form.component.mjs +0 -346
- package/esm2022/lib/form/index.mjs +0 -18
- package/esm2022/lib/form/model/form-definition.model.mjs +0 -92
- package/esm2022/lib/form/process-form-rendering.service.mjs +0 -55
- package/esm2022/lib/form/public-api.mjs +0 -32
- package/esm2022/lib/form/services/activiti-alfresco.service.mjs +0 -113
- package/esm2022/lib/form/services/ecm-model.service.mjs +0 -156
- package/esm2022/lib/form/services/editor.service.mjs +0 -87
- package/esm2022/lib/form/services/external-alfresco-api.service.mjs +0 -57
- package/esm2022/lib/form/services/index.mjs +0 -26
- package/esm2022/lib/form/services/model.service.mjs +0 -130
- package/esm2022/lib/form/services/process-content.service.mjs +0 -223
- package/esm2022/lib/form/services/process-definition.service.mjs +0 -93
- package/esm2022/lib/form/services/task-form.service.mjs +0 -127
- package/esm2022/lib/form/services/task.service.mjs +0 -77
- package/esm2022/lib/form/start-form/start-form.component.mjs +0 -141
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog-component.interface.mjs +0 -18
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.component.mjs +0 -115
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget-dialog.service.mjs +0 -100
- package/esm2022/lib/form/widgets/content-widget/attach-file-widget.component.mjs +0 -254
- package/esm2022/lib/form/widgets/content-widget/attach-folder-widget.component.mjs +0 -93
- package/esm2022/lib/form/widgets/content-widget/index.mjs +0 -18
- package/esm2022/lib/form/widgets/content-widget/public-api.mjs +0 -22
- package/esm2022/lib/form/widgets/document/content.widget.mjs +0 -125
- package/esm2022/lib/form/widgets/document/document.widget.mjs +0 -61
- package/esm2022/lib/form/widgets/dropdown/dropdown.widget.mjs +0 -182
- package/esm2022/lib/form/widgets/dynamic-table/dynamic-table.widget.mjs +0 -192
- package/esm2022/lib/form/widgets/dynamic-table/editors/amount/amount.editor.mjs +0 -47
- package/esm2022/lib/form/widgets/dynamic-table/editors/boolean/boolean.editor.mjs +0 -42
- package/esm2022/lib/form/widgets/dynamic-table/editors/date/date.editor.mjs +0 -84
- package/esm2022/lib/form/widgets/dynamic-table/editors/datetime/datetime.editor.mjs +0 -84
- package/esm2022/lib/form/widgets/dynamic-table/editors/dropdown/dropdown.editor.mjs +0 -95
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/cell-validator.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/date-cell-validator-model.mjs +0 -47
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-row-validation-summary.model.mjs +0 -24
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column-option.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-column.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table-row.model.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/dynamic-table.widget.model.mjs +0 -159
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/number-cell-validator.model.mjs +0 -45
- package/esm2022/lib/form/widgets/dynamic-table/editors/models/required-cell-validator.model.mjs +0 -40
- package/esm2022/lib/form/widgets/dynamic-table/editors/row-editor/row.editor.mjs +0 -89
- package/esm2022/lib/form/widgets/dynamic-table/editors/text/text.editor.mjs +0 -47
- package/esm2022/lib/form/widgets/dynamic-table/index.mjs +0 -18
- package/esm2022/lib/form/widgets/dynamic-table/public-api.mjs +0 -44
- package/esm2022/lib/form/widgets/file-viewer/file-viewer.widget.mjs +0 -46
- package/esm2022/lib/form/widgets/functional-group/functional-group.widget.mjs +0 -167
- package/esm2022/lib/form/widgets/index.mjs +0 -18
- package/esm2022/lib/form/widgets/people/people.widget.mjs +0 -169
- package/esm2022/lib/form/widgets/public-api.mjs +0 -54
- package/esm2022/lib/form/widgets/radio-buttons/radio-buttons.widget.mjs +0 -97
- package/esm2022/lib/form/widgets/typeahead/typeahead.widget.mjs +0 -152
- package/esm2022/lib/form/widgets/upload/upload.widget.mjs +0 -128
- package/esm2022/lib/people/components/people/people.component.mjs +0 -124
- package/esm2022/lib/people/components/people-list/people-list.component.mjs +0 -74
- package/esm2022/lib/people/components/people-search/people-search.component.mjs +0 -83
- package/esm2022/lib/people/components/people-search-field/people-search-field.component.mjs +0 -90
- package/esm2022/lib/people/components/people-selector/people-selector.component.mjs +0 -76
- package/esm2022/lib/people/helpers/get-display-user.mjs +0 -22
- package/esm2022/lib/people/index.mjs +0 -18
- package/esm2022/lib/people/interfaces/perform-search-callback.interface.mjs +0 -18
- package/esm2022/lib/people/public-api.mjs +0 -35
- package/esm2022/lib/process-comments/index.mjs +0 -21
- package/esm2022/lib/process-comments/process-comments.component.mjs +0 -45
- package/esm2022/lib/process-comments/services/comment-process.service.mjs +0 -77
- package/esm2022/lib/process-list/components/process-audit/process-audit.directive.mjs +0 -105
- package/esm2022/lib/process-list/components/process-filters/process-filters.component.mjs +0 -211
- package/esm2022/lib/process-list/components/process-instance-details/process-instance-details.component.mjs +0 -142
- package/esm2022/lib/process-list/components/process-instance-header/process-instance-header.component.mjs +0 -123
- package/esm2022/lib/process-list/components/process-instance-tasks/process-instance-tasks.component.mjs +0 -163
- package/esm2022/lib/process-list/components/process-list/process-list.component.mjs +0 -327
- package/esm2022/lib/process-list/components/start-process/start-process.component.mjs +0 -423
- package/esm2022/lib/process-list/index.mjs +0 -18
- package/esm2022/lib/process-list/public-api.mjs +0 -44
- package/esm2022/lib/process-list/services/process-filter.service.mjs +0 -182
- package/esm2022/lib/process-list/services/process.service.mjs +0 -259
- package/esm2022/lib/process.module.mjs +0 -132
- package/esm2022/lib/services/apps-process.service.mjs +0 -58
- package/esm2022/lib/services/people-process.service.mjs +0 -124
- package/esm2022/lib/services/task-comments.service.mjs +0 -65
- package/esm2022/lib/task-comments/index.mjs +0 -21
- package/esm2022/lib/task-comments/task-comments.component.mjs +0 -44
- package/esm2022/lib/task-list/components/attach-form/attach-form.component.mjs +0 -127
- package/esm2022/lib/task-list/components/checklist/checklist.component.mjs +0 -140
- package/esm2022/lib/task-list/components/start-task/start-task.component.mjs +0 -221
- package/esm2022/lib/task-list/components/task-details/task-details.component.mjs +0 -360
- package/esm2022/lib/task-list/components/task-filters/task-filters.component.mjs +0 -261
- package/esm2022/lib/task-list/components/task-form/claim-task.directive.mjs +0 -77
- package/esm2022/lib/task-list/components/task-form/task-form.component.mjs +0 -313
- package/esm2022/lib/task-list/components/task-form/unclaim-task.directive.mjs +0 -77
- package/esm2022/lib/task-list/components/task-header/task-header.component.mjs +0 -361
- package/esm2022/lib/task-list/components/task-list/task-list.component.mjs +0 -359
- package/esm2022/lib/task-list/components/task-standalone/task-standalone.component.mjs +0 -82
- package/esm2022/lib/task-list/index.mjs +0 -18
- package/esm2022/lib/task-list/models/form.model.mjs +0 -26
- package/esm2022/lib/task-list/models/task-details.event.mjs +0 -32
- package/esm2022/lib/task-list/models/task-preset.model.mjs +0 -41
- package/esm2022/lib/task-list/models/user-event.model.mjs +0 -18
- package/esm2022/lib/task-list/models/user-group.model.mjs +0 -18
- package/esm2022/lib/task-list/public-api.mjs +0 -60
- package/esm2022/lib/task-list/services/process-upload.service.mjs +0 -42
- package/esm2022/lib/task-list/services/task-filter.service.mjs +0 -249
- package/esm2022/lib/task-list/services/task-upload.service.mjs +0 -42
- package/esm2022/lib/task-list/services/tasklist.service.mjs +0 -251
- package/esm2022/lib/task-list/validators/task-description.validator.mjs +0 -26
- package/esm2022/public-api.mjs +0 -30
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { ADF_COMMENTS_SERVICE, CardViewUpdateService, InfoDrawerComponent, InfoDrawerTabComponent } from '@alfresco/adf-core';
|
|
18
|
-
import { Component, DestroyRef, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
19
|
-
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
|
|
20
|
-
import { Observable, of } from 'rxjs';
|
|
21
|
-
import { TaskListService } from '../../services/tasklist.service';
|
|
22
|
-
import { catchError, share } from 'rxjs/operators';
|
|
23
|
-
import { TaskFormComponent } from '../task-form/task-form.component';
|
|
24
|
-
import { PeopleProcessService } from '../../../services/people-process.service';
|
|
25
|
-
import { TaskQueryRepresentation, TaskRepresentation } from '@alfresco/js-api';
|
|
26
|
-
import { CommonModule } from '@angular/common';
|
|
27
|
-
import { TranslatePipe } from '@ngx-translate/core';
|
|
28
|
-
import { AttachFormComponent } from '../attach-form/attach-form.component';
|
|
29
|
-
import { PeopleComponent, PeopleSearchComponent } from '../../../people';
|
|
30
|
-
import { TaskHeaderComponent } from '../task-header/task-header.component';
|
|
31
|
-
import { TaskCommentsComponent, TaskCommentsService } from '../../../task-comments';
|
|
32
|
-
import { ChecklistComponent } from '../checklist/checklist.component';
|
|
33
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
34
|
-
import { MatCardModule } from '@angular/material/card';
|
|
35
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
36
|
-
import * as i0 from "@angular/core";
|
|
37
|
-
import * as i1 from "../../services/tasklist.service";
|
|
38
|
-
import * as i2 from "../../../services/people-process.service";
|
|
39
|
-
import * as i3 from "@alfresco/adf-core";
|
|
40
|
-
import * as i4 from "@angular/material/dialog";
|
|
41
|
-
import * as i5 from "@angular/common";
|
|
42
|
-
import * as i6 from "@angular/material/button";
|
|
43
|
-
import * as i7 from "@angular/material/card";
|
|
44
|
-
/** @deprecated no longer used anywhere, and can be safely removed */
|
|
45
|
-
export class TaskDetailsComponent {
|
|
46
|
-
constructor(taskListService, peopleProcessService, cardViewUpdateService, dialog, destroyRef) {
|
|
47
|
-
this.taskListService = taskListService;
|
|
48
|
-
this.peopleProcessService = peopleProcessService;
|
|
49
|
-
this.cardViewUpdateService = cardViewUpdateService;
|
|
50
|
-
this.dialog = dialog;
|
|
51
|
-
this.destroyRef = destroyRef;
|
|
52
|
-
/** Automatically renders the next task when the current one is completed. */
|
|
53
|
-
this.showNextTask = true;
|
|
54
|
-
/** Toggles task details Header component. */
|
|
55
|
-
this.showHeader = true;
|
|
56
|
-
/** Toggles collapsed/expanded state of the Header component. */
|
|
57
|
-
this.showHeaderContent = true;
|
|
58
|
-
/** Toggles `Involve People` feature for the Header component. */
|
|
59
|
-
this.showInvolvePeople = true;
|
|
60
|
-
/** Toggles `Comments` feature for the Header component. */
|
|
61
|
-
this.showComments = true;
|
|
62
|
-
/** Toggles `Checklist` feature for the Header component. */
|
|
63
|
-
this.showChecklist = true;
|
|
64
|
-
/** Toggles rendering of the form title. */
|
|
65
|
-
this.showFormTitle = false;
|
|
66
|
-
/** Toggles rendering of the `Complete` outcome button. */
|
|
67
|
-
this.showFormCompleteButton = true;
|
|
68
|
-
/** Toggles rendering of the `Save` outcome button. */
|
|
69
|
-
this.showFormSaveButton = true;
|
|
70
|
-
/**
|
|
71
|
-
* Toggles read-only state of the form. All form widgets render as read-only
|
|
72
|
-
* if enabled.
|
|
73
|
-
*/
|
|
74
|
-
this.readOnlyForm = false;
|
|
75
|
-
/** Toggles rendering of the `Refresh` button. */
|
|
76
|
-
this.showFormRefreshButton = true;
|
|
77
|
-
/** Field validators for use with the form. */
|
|
78
|
-
this.fieldValidators = [];
|
|
79
|
-
/** Emitted when the form is submitted with the `Save` or custom outcomes. */
|
|
80
|
-
this.formSaved = new EventEmitter();
|
|
81
|
-
/** Emitted when the form is submitted with the `Complete` outcome. */
|
|
82
|
-
this.formCompleted = new EventEmitter();
|
|
83
|
-
/** Emitted when the form field content is clicked. */
|
|
84
|
-
this.formContentClicked = new EventEmitter();
|
|
85
|
-
/** Emitted when the form is loaded or reloaded. */
|
|
86
|
-
this.formLoaded = new EventEmitter();
|
|
87
|
-
/** Emitted when a checklist task is created. */
|
|
88
|
-
this.taskCreated = new EventEmitter();
|
|
89
|
-
/** Emitted when a checklist task is deleted. */
|
|
90
|
-
this.taskDeleted = new EventEmitter();
|
|
91
|
-
/** Emitted when an error occurs. */
|
|
92
|
-
this.error = new EventEmitter();
|
|
93
|
-
/**
|
|
94
|
-
* Emitted when any outcome is executed. Default behaviour can be prevented
|
|
95
|
-
* via `event.preventDefault()`.
|
|
96
|
-
*/
|
|
97
|
-
this.executeOutcome = new EventEmitter();
|
|
98
|
-
/** Emitted when a task is assigned. */
|
|
99
|
-
this.assignTask = new EventEmitter();
|
|
100
|
-
/** Emitted when a task is claimed. */
|
|
101
|
-
this.claimedTask = new EventEmitter();
|
|
102
|
-
/** Emitted when a task is unclaimed. */
|
|
103
|
-
this.unClaimedTask = new EventEmitter();
|
|
104
|
-
this.taskFormName = null;
|
|
105
|
-
this.taskPeople = [];
|
|
106
|
-
this.showAssignee = false;
|
|
107
|
-
this.showAttachForm = false;
|
|
108
|
-
this.internalReadOnlyForm = false;
|
|
109
|
-
}
|
|
110
|
-
ngOnInit() {
|
|
111
|
-
this.peopleSearch = new Observable((observer) => (this.peopleSearchObserver = observer)).pipe(share());
|
|
112
|
-
if (this.taskId) {
|
|
113
|
-
this.loadDetails(this.taskId);
|
|
114
|
-
}
|
|
115
|
-
this.cardViewUpdateService.itemUpdated$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.updateTaskDetails.bind(this));
|
|
116
|
-
this.cardViewUpdateService.itemClicked$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(this.clickTaskDetails.bind(this));
|
|
117
|
-
}
|
|
118
|
-
ngOnChanges(changes) {
|
|
119
|
-
const taskId = changes.taskId;
|
|
120
|
-
this.showAssignee = false;
|
|
121
|
-
if (taskId && !taskId.currentValue) {
|
|
122
|
-
this.reset();
|
|
123
|
-
}
|
|
124
|
-
else if (taskId?.currentValue) {
|
|
125
|
-
this.loadDetails(taskId.currentValue);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
isAssigned() {
|
|
129
|
-
return !!this.taskDetails.assignee;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Complete button clicked
|
|
133
|
-
*/
|
|
134
|
-
onComplete() {
|
|
135
|
-
this.onFormCompleted(null);
|
|
136
|
-
}
|
|
137
|
-
onShowAttachForm() {
|
|
138
|
-
this.showAttachForm = true;
|
|
139
|
-
}
|
|
140
|
-
onCancelAttachForm() {
|
|
141
|
-
this.showAttachForm = false;
|
|
142
|
-
}
|
|
143
|
-
onCompleteAttachForm() {
|
|
144
|
-
this.taskFormName = null;
|
|
145
|
-
this.showAttachForm = false;
|
|
146
|
-
this.taskFormComponent.loadTask(this.taskId);
|
|
147
|
-
this.loadDetails(this.taskId);
|
|
148
|
-
}
|
|
149
|
-
onFormContentClick(content) {
|
|
150
|
-
this.formContentClicked.emit(content);
|
|
151
|
-
}
|
|
152
|
-
onFormSaved(form) {
|
|
153
|
-
this.formSaved.emit(form);
|
|
154
|
-
}
|
|
155
|
-
onFormCompleted(form) {
|
|
156
|
-
this.formCompleted.emit(form);
|
|
157
|
-
if (this.showNextTask && (this.taskDetails.processInstanceId || this.taskDetails.processDefinitionId)) {
|
|
158
|
-
this.loadNextTask(this.taskDetails.processInstanceId, this.taskDetails.processDefinitionId);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
onFormLoaded(form) {
|
|
162
|
-
this.taskFormName = form?.name;
|
|
163
|
-
this.formLoaded.emit(form);
|
|
164
|
-
}
|
|
165
|
-
onChecklistTaskCreated(task) {
|
|
166
|
-
this.taskCreated.emit(task);
|
|
167
|
-
}
|
|
168
|
-
onChecklistTaskDeleted(taskId) {
|
|
169
|
-
this.taskDeleted.emit(taskId);
|
|
170
|
-
}
|
|
171
|
-
onFormError(error) {
|
|
172
|
-
this.errorDialogRef = this.dialog.open(this.errorDialog, { width: '500px' });
|
|
173
|
-
this.error.emit(error);
|
|
174
|
-
}
|
|
175
|
-
onFormExecuteOutcome(event) {
|
|
176
|
-
this.executeOutcome.emit(event);
|
|
177
|
-
}
|
|
178
|
-
closeErrorDialog() {
|
|
179
|
-
this.dialog.closeAll();
|
|
180
|
-
}
|
|
181
|
-
onClaimAction(taskId) {
|
|
182
|
-
this.claimedTask.emit(taskId);
|
|
183
|
-
this.loadDetails(taskId);
|
|
184
|
-
}
|
|
185
|
-
onUnclaimAction(taskId) {
|
|
186
|
-
this.unClaimedTask.emit(taskId);
|
|
187
|
-
this.loadDetails(taskId);
|
|
188
|
-
}
|
|
189
|
-
searchUser(searchedWord) {
|
|
190
|
-
this.peopleProcessService.getWorkflowUsers(null, searchedWord).subscribe((users) => {
|
|
191
|
-
users = users.filter((user) => user.id !== this.taskDetails.assignee.id);
|
|
192
|
-
this.peopleSearchObserver.next(users);
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
onCloseSearch() {
|
|
196
|
-
this.showAssignee = false;
|
|
197
|
-
}
|
|
198
|
-
assignTaskToUser(selectedUser) {
|
|
199
|
-
this.taskListService.assignTask(this.taskDetails.id, selectedUser).subscribe(() => {
|
|
200
|
-
this.assignTask.emit();
|
|
201
|
-
});
|
|
202
|
-
this.showAssignee = false;
|
|
203
|
-
}
|
|
204
|
-
getTaskHeaderViewClass() {
|
|
205
|
-
if (this.showAssignee) {
|
|
206
|
-
return 'assign-edit-view';
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
return 'default-view';
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
isReadOnlyComment() {
|
|
213
|
-
return this.taskDetails?.isCompleted() && this.taskPeople?.length === 0;
|
|
214
|
-
}
|
|
215
|
-
reset() {
|
|
216
|
-
this.taskDetails = null;
|
|
217
|
-
}
|
|
218
|
-
updateTaskDetails(updateNotification) {
|
|
219
|
-
this.taskListService
|
|
220
|
-
.updateTask(this.taskId, updateNotification.changed)
|
|
221
|
-
.pipe(catchError(() => {
|
|
222
|
-
this.cardViewUpdateService.updateElement(updateNotification.target);
|
|
223
|
-
return of(null);
|
|
224
|
-
}))
|
|
225
|
-
.subscribe(() => this.loadDetails(this.taskId));
|
|
226
|
-
}
|
|
227
|
-
clickTaskDetails(clickNotification) {
|
|
228
|
-
if (clickNotification.target.key === 'assignee') {
|
|
229
|
-
this.showAssignee = true;
|
|
230
|
-
}
|
|
231
|
-
if (clickNotification.target.key === 'formName') {
|
|
232
|
-
this.showAttachForm = true;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
loadDetails(taskId) {
|
|
236
|
-
this.taskPeople = [];
|
|
237
|
-
if (taskId) {
|
|
238
|
-
this.taskListService.getTaskDetails(taskId).subscribe((res) => {
|
|
239
|
-
this.showAttachForm = false;
|
|
240
|
-
this.taskDetails = res;
|
|
241
|
-
if (this.taskDetails.name === 'null') {
|
|
242
|
-
this.taskDetails.name = 'No name';
|
|
243
|
-
}
|
|
244
|
-
const endDate = res.endDate;
|
|
245
|
-
if (endDate && !isNaN(endDate.getTime())) {
|
|
246
|
-
this.internalReadOnlyForm = true;
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
this.internalReadOnlyForm = this.readOnlyForm;
|
|
250
|
-
}
|
|
251
|
-
if (this.taskDetails?.involvedPeople) {
|
|
252
|
-
this.taskPeople.push(...this.taskDetails.involvedPeople);
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
loadNextTask(processInstanceId, processDefinitionId) {
|
|
258
|
-
const requestNode = new TaskQueryRepresentation({
|
|
259
|
-
processInstanceId,
|
|
260
|
-
processDefinitionId
|
|
261
|
-
});
|
|
262
|
-
this.taskListService.getTasks(requestNode).subscribe((response) => {
|
|
263
|
-
if (response && response.length > 0) {
|
|
264
|
-
this.taskDetails = new TaskRepresentation(response[0]);
|
|
265
|
-
}
|
|
266
|
-
else {
|
|
267
|
-
this.reset();
|
|
268
|
-
}
|
|
269
|
-
}, (error) => {
|
|
270
|
-
this.error.emit(error);
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskDetailsComponent, deps: [{ token: i1.TaskListService }, { token: i2.PeopleProcessService }, { token: i3.CardViewUpdateService }, { token: i4.MatDialog }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
274
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TaskDetailsComponent, isStandalone: true, selector: "adf-task-details", inputs: { taskId: "taskId", showNextTask: "showNextTask", showHeader: "showHeader", showHeaderContent: "showHeaderContent", showInvolvePeople: "showInvolvePeople", showComments: "showComments", showChecklist: "showChecklist", showFormTitle: "showFormTitle", showFormCompleteButton: "showFormCompleteButton", showFormSaveButton: "showFormSaveButton", readOnlyForm: "readOnlyForm", showFormRefreshButton: "showFormRefreshButton", fieldValidators: "fieldValidators" }, outputs: { formSaved: "formSaved", formCompleted: "formCompleted", formContentClicked: "formContentClicked", formLoaded: "formLoaded", taskCreated: "taskCreated", taskDeleted: "taskDeleted", error: "error", executeOutcome: "executeOutcome", assignTask: "assignTask", claimedTask: "claimedTask", unClaimedTask: "unClaimedTask" }, providers: [
|
|
275
|
-
{
|
|
276
|
-
provide: ADF_COMMENTS_SERVICE,
|
|
277
|
-
useClass: TaskCommentsService
|
|
278
|
-
}
|
|
279
|
-
], viewQueries: [{ propertyName: "errorDialog", first: true, predicate: ["errorDialog"], descendants: true }, { propertyName: "taskFormComponent", first: true, predicate: ["taskForm"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!taskDetails\" data-automation-id=\"adf-tasks-details--empty\">\n <ng-template *ngIf=\"noTaskDetailsTemplateComponent\" ngFor [ngForOf]=\"[data]\"\n [ngForTemplate]=\"noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </ng-template>\n <div *ngIf=\"!noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </div>\n</div>\n<div *ngIf=\"taskDetails\" class=\"adf-task-details\">\n\n <div *ngIf=\"showHeader\" class=\"adf-task-details-header\">\n <h2 class=\"adf-activiti-task-details__header\">\n <span>{{taskDetails.name || 'No name'}}</span>\n </h2>\n </div>\n\n <div class=\"adf-task-details-core\">\n <div class=\"adf-task-details-core-form\">\n <div *ngIf=\"isAssigned()\">\n <adf-task-form #taskForm\n [taskId]=\"taskDetails.id\"\n [showFormTitle]=\"showFormTitle\"\n [showFormRefreshButton]=\"showFormRefreshButton\"\n [showCancelButton]=\"true\"\n [fieldValidators]=\"fieldValidators\"\n (formSaved)='onFormSaved($event)'\n (formCompleted)='onFormCompleted($event)'\n (formContentClicked)='onFormContentClick($event)'\n (formLoaded)='onFormLoaded($event)'\n (completed)=\"onComplete()\"\n (showAttachForm)=\"onShowAttachForm()\"\n (executeOutcome)='onFormExecuteOutcome($event)'\n (taskClaimed)=\"onClaimAction($event)\"\n (taskUnclaimed)=\"onUnclaimAction($event)\"\n (error)=\"onFormError($event)\" />\n <adf-attach-form *ngIf=\"showAttachForm\"\n [taskId]=\"taskDetails.id\"\n [formKey]=\"taskDetails.formKey\"\n (cancelAttachForm)=\"onCancelAttachForm()\"\n (success)=\"onCompleteAttachForm()\" />\n </div>\n <div *ngIf=\"!isAssigned()\" id=\"claim-message-id\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.CLAIM' | translate }}\n </div>\n </div>\n <div class=\"adf-task-details-core-sidebar\">\n <adf-info-drawer *ngIf=\"showHeaderContent\" title=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TITLE\" id=\"adf-task-details-core-sidebar-drawer\" class=\"adf-task-details-core-sidebar-drawer\">\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_DETAILS_TITLE\">\n <div class=\"adf-assignment-container\" *ngIf=\"showAssignee\">\n <adf-people-search\n [headerTitle]=\"'ADF_TASK_LIST.DETAILS.LABELS.ADD_ASSIGNEE'\"\n [actionLabel]=\"'ADF_TASK_LIST.PEOPLE.ADD_ASSIGNEE'\"\n (searchPeople)=\"searchUser($event)\"\n (success)=\"assignTaskToUser($event)\"\n (closeSearch)=\"onCloseSearch()\"\n [results]=\"peopleSearch\" />\n </div>\n <adf-task-header\n [class]=\"getTaskHeaderViewClass()\"\n [taskDetails]=\"taskDetails\"\n [formName]=\"taskFormName\"\n (claim)=\"onClaimAction($event)\"\n (unclaim)=\"onUnclaimAction($event)\" />\n <adf-people *ngIf=\"showInvolvePeople\"\n [people]=\"taskPeople\"\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\" />\n </adf-info-drawer-tab>\n\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_ACTIVITY_TITLE\">\n <mat-card appearance=\"outlined\" *ngIf=\"showComments\">\n <mat-card-content>\n <adf-task-comments\n [readOnly]=\"isReadOnlyComment()\"\n [taskId]=\"taskDetails.id\"\n />\n </mat-card-content>\n </mat-card>\n </adf-info-drawer-tab>\n\n </adf-info-drawer>\n\n <div *ngIf=\"showHeaderContent\" class=\"adf-task-details-core-sidebar-checklist\">\n <div *ngIf=\"showChecklist\">\n <adf-checklist\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\"\n [assignee]=\"taskDetails.assignee?.id\"\n (checklistTaskCreated)=\"onChecklistTaskCreated($event)\"\n (checklistTaskDeleted)=\"onChecklistTaskDeleted($event)\" />\n </div>\n </div>\n </div>\n </div>\n\n <ng-template #errorDialog>\n <h3 matDialogTitle>{{'ADF_TASK_LIST.DETAILS.ERROR.TITLE'|translate}}</h3>\n <mat-dialog-content>\n <p>{{'ADF_TASK_LIST.DETAILS.ERROR.DESCRIPTION'|translate}}</p>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"button\" (click)=\"closeErrorDialog()\">{{'ADF_TASK_LIST.DETAILS.ERROR.CLOSE'|translate}}\n </button>\n </mat-dialog-actions>\n </ng-template>\n\n</div>\n", styles: ["adf-task-details{width:100%}adf-task-details .adf-activiti-task-details__header{align-self:flex-end;display:flex;font-size:var(--theme-headline-font-size);font-weight:300;line-height:normal;overflow:hidden;margin:8px 0 16px;cursor:pointer;-webkit-user-select:none;user-select:none}adf-task-details .adf-activiti-task-details__action-button{text-transform:uppercase}adf-task-details .adf-assignment-container{padding:10px 20px;width:auto}adf-task-details adf-task-header.adf-assign-edit-view adf-card-view .adf-property[data-automation-id=header-assignee]{display:none}adf-task-details .adf-task-details-header{display:flex;justify-content:space-between}adf-task-details .adf-task-details-header-toggle{position:relative;top:10px;margin-right:2px;height:23px;cursor:pointer;-webkit-user-select:none;user-select:none}adf-task-details .adf-task-details-toggle{position:relative}adf-task-details .adf-task-details-core{display:flex;flex-direction:column;justify-content:space-between}@media (max-width: 1279.9px){adf-task-details .adf-task-details-core-sidebar-drawer{margin-left:0}}adf-task-details .adf-task-details-core-sidebar-checklist{margin-top:30px;padding-left:20px;padding-right:20px}adf-task-details .adf-task-details-core-form{flex-grow:1;margin-bottom:8px}adf-task-details .adf-task-details-core-form .adf-form-debug-container{display:flex;flex-direction:column;padding:20px 0}adf-task-details .adf-task-details-core-form .adf-form-debug-container .mat-mdc-slide-toggle{margin-left:auto}adf-task-details .adf-task-details-core-form .adf-form-debug-container .mat-mdc-slide-toggle+div{background-color:#000;padding:20px;clear:both;margin-top:30px;color:#fff}adf-task-details .adf-task-details-core-form .mdc-tab__text-label{flex-grow:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: TaskFormComponent, selector: "adf-task-form", inputs: ["taskId", "showFormTitle", "showFormCompleteButton", "showFormSaveButton", "showCancelButton", "readOnlyForm", "showFormRefreshButton", "showFormValidationIcon", "fieldValidators"], outputs: ["formSaved", "formCompleted", "formContentClicked", "formLoaded", "showAttachForm", "executeOutcome", "completed", "formError", "error", "cancel", "taskClaimed", "taskUnclaimed"] }, { kind: "component", type: AttachFormComponent, selector: "adf-attach-form", inputs: ["taskId", "formKey"], outputs: ["cancelAttachForm", "success", "error"] }, { kind: "component", type: PeopleSearchComponent, selector: "adf-people-search", inputs: ["headerTitle", "actionLabel", "results"], outputs: ["searchPeople", "success", "closeSearch"] }, { kind: "component", type: TaskHeaderComponent, selector: "adf-task-header", inputs: ["formName", "taskDetails", "showClaimRelease", "readOnly", "resetChanges"], outputs: ["claim", "unclaim"] }, { kind: "component", type: PeopleComponent, selector: "adf-people", inputs: ["people", "taskId", "readOnly"], outputs: ["error"] }, { kind: "component", type: TaskCommentsComponent, selector: "adf-task-comments", inputs: ["taskId", "readOnly"] }, { kind: "component", type: ChecklistComponent, selector: "adf-checklist", inputs: ["taskId", "readOnly", "assignee"], outputs: ["checklistTaskCreated", "checklistTaskDeleted", "error"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i4.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i4.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i4.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: InfoDrawerTabComponent, selector: "adf-info-drawer-tab", inputs: ["label", "icon"] }, { kind: "component", type: InfoDrawerComponent, selector: "adf-info-drawer", inputs: ["title", "icon", "selectedIndex", "showHeader"], outputs: ["currentTab"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
280
|
-
}
|
|
281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TaskDetailsComponent, decorators: [{
|
|
282
|
-
type: Component,
|
|
283
|
-
args: [{ selector: 'adf-task-details', standalone: true, imports: [
|
|
284
|
-
CommonModule,
|
|
285
|
-
TranslatePipe,
|
|
286
|
-
TaskFormComponent,
|
|
287
|
-
AttachFormComponent,
|
|
288
|
-
PeopleSearchComponent,
|
|
289
|
-
TaskHeaderComponent,
|
|
290
|
-
PeopleComponent,
|
|
291
|
-
TaskCommentsComponent,
|
|
292
|
-
ChecklistComponent,
|
|
293
|
-
MatDialogModule,
|
|
294
|
-
MatButtonModule,
|
|
295
|
-
InfoDrawerTabComponent,
|
|
296
|
-
InfoDrawerComponent,
|
|
297
|
-
MatCardModule
|
|
298
|
-
], providers: [
|
|
299
|
-
{
|
|
300
|
-
provide: ADF_COMMENTS_SERVICE,
|
|
301
|
-
useClass: TaskCommentsService
|
|
302
|
-
}
|
|
303
|
-
], encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"!taskDetails\" data-automation-id=\"adf-tasks-details--empty\">\n <ng-template *ngIf=\"noTaskDetailsTemplateComponent\" ngFor [ngForOf]=\"[data]\"\n [ngForTemplate]=\"noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </ng-template>\n <div *ngIf=\"!noTaskDetailsTemplateComponent\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}\n </div>\n</div>\n<div *ngIf=\"taskDetails\" class=\"adf-task-details\">\n\n <div *ngIf=\"showHeader\" class=\"adf-task-details-header\">\n <h2 class=\"adf-activiti-task-details__header\">\n <span>{{taskDetails.name || 'No name'}}</span>\n </h2>\n </div>\n\n <div class=\"adf-task-details-core\">\n <div class=\"adf-task-details-core-form\">\n <div *ngIf=\"isAssigned()\">\n <adf-task-form #taskForm\n [taskId]=\"taskDetails.id\"\n [showFormTitle]=\"showFormTitle\"\n [showFormRefreshButton]=\"showFormRefreshButton\"\n [showCancelButton]=\"true\"\n [fieldValidators]=\"fieldValidators\"\n (formSaved)='onFormSaved($event)'\n (formCompleted)='onFormCompleted($event)'\n (formContentClicked)='onFormContentClick($event)'\n (formLoaded)='onFormLoaded($event)'\n (completed)=\"onComplete()\"\n (showAttachForm)=\"onShowAttachForm()\"\n (executeOutcome)='onFormExecuteOutcome($event)'\n (taskClaimed)=\"onClaimAction($event)\"\n (taskUnclaimed)=\"onUnclaimAction($event)\"\n (error)=\"onFormError($event)\" />\n <adf-attach-form *ngIf=\"showAttachForm\"\n [taskId]=\"taskDetails.id\"\n [formKey]=\"taskDetails.formKey\"\n (cancelAttachForm)=\"onCancelAttachForm()\"\n (success)=\"onCompleteAttachForm()\" />\n </div>\n <div *ngIf=\"!isAssigned()\" id=\"claim-message-id\">\n {{ 'ADF_TASK_LIST.DETAILS.MESSAGES.CLAIM' | translate }}\n </div>\n </div>\n <div class=\"adf-task-details-core-sidebar\">\n <adf-info-drawer *ngIf=\"showHeaderContent\" title=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TITLE\" id=\"adf-task-details-core-sidebar-drawer\" class=\"adf-task-details-core-sidebar-drawer\">\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_DETAILS_TITLE\">\n <div class=\"adf-assignment-container\" *ngIf=\"showAssignee\">\n <adf-people-search\n [headerTitle]=\"'ADF_TASK_LIST.DETAILS.LABELS.ADD_ASSIGNEE'\"\n [actionLabel]=\"'ADF_TASK_LIST.PEOPLE.ADD_ASSIGNEE'\"\n (searchPeople)=\"searchUser($event)\"\n (success)=\"assignTaskToUser($event)\"\n (closeSearch)=\"onCloseSearch()\"\n [results]=\"peopleSearch\" />\n </div>\n <adf-task-header\n [class]=\"getTaskHeaderViewClass()\"\n [taskDetails]=\"taskDetails\"\n [formName]=\"taskFormName\"\n (claim)=\"onClaimAction($event)\"\n (unclaim)=\"onUnclaimAction($event)\" />\n <adf-people *ngIf=\"showInvolvePeople\"\n [people]=\"taskPeople\"\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\" />\n </adf-info-drawer-tab>\n\n <adf-info-drawer-tab label=\"ADF_TASK_LIST.DETAILS.LABELS.INFO_DRAWER_TAB_ACTIVITY_TITLE\">\n <mat-card appearance=\"outlined\" *ngIf=\"showComments\">\n <mat-card-content>\n <adf-task-comments\n [readOnly]=\"isReadOnlyComment()\"\n [taskId]=\"taskDetails.id\"\n />\n </mat-card-content>\n </mat-card>\n </adf-info-drawer-tab>\n\n </adf-info-drawer>\n\n <div *ngIf=\"showHeaderContent\" class=\"adf-task-details-core-sidebar-checklist\">\n <div *ngIf=\"showChecklist\">\n <adf-checklist\n [readOnly]=\"internalReadOnlyForm\"\n [taskId]=\"taskDetails.id\"\n [assignee]=\"taskDetails.assignee?.id\"\n (checklistTaskCreated)=\"onChecklistTaskCreated($event)\"\n (checklistTaskDeleted)=\"onChecklistTaskDeleted($event)\" />\n </div>\n </div>\n </div>\n </div>\n\n <ng-template #errorDialog>\n <h3 matDialogTitle>{{'ADF_TASK_LIST.DETAILS.ERROR.TITLE'|translate}}</h3>\n <mat-dialog-content>\n <p>{{'ADF_TASK_LIST.DETAILS.ERROR.DESCRIPTION'|translate}}</p>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button type=\"button\" (click)=\"closeErrorDialog()\">{{'ADF_TASK_LIST.DETAILS.ERROR.CLOSE'|translate}}\n </button>\n </mat-dialog-actions>\n </ng-template>\n\n</div>\n", styles: ["adf-task-details{width:100%}adf-task-details .adf-activiti-task-details__header{align-self:flex-end;display:flex;font-size:var(--theme-headline-font-size);font-weight:300;line-height:normal;overflow:hidden;margin:8px 0 16px;cursor:pointer;-webkit-user-select:none;user-select:none}adf-task-details .adf-activiti-task-details__action-button{text-transform:uppercase}adf-task-details .adf-assignment-container{padding:10px 20px;width:auto}adf-task-details adf-task-header.adf-assign-edit-view adf-card-view .adf-property[data-automation-id=header-assignee]{display:none}adf-task-details .adf-task-details-header{display:flex;justify-content:space-between}adf-task-details .adf-task-details-header-toggle{position:relative;top:10px;margin-right:2px;height:23px;cursor:pointer;-webkit-user-select:none;user-select:none}adf-task-details .adf-task-details-toggle{position:relative}adf-task-details .adf-task-details-core{display:flex;flex-direction:column;justify-content:space-between}@media (max-width: 1279.9px){adf-task-details .adf-task-details-core-sidebar-drawer{margin-left:0}}adf-task-details .adf-task-details-core-sidebar-checklist{margin-top:30px;padding-left:20px;padding-right:20px}adf-task-details .adf-task-details-core-form{flex-grow:1;margin-bottom:8px}adf-task-details .adf-task-details-core-form .adf-form-debug-container{display:flex;flex-direction:column;padding:20px 0}adf-task-details .adf-task-details-core-form .adf-form-debug-container .mat-mdc-slide-toggle{margin-left:auto}adf-task-details .adf-task-details-core-form .adf-form-debug-container .mat-mdc-slide-toggle+div{background-color:#000;padding:20px;clear:both;margin-top:30px;color:#fff}adf-task-details .adf-task-details-core-form .mdc-tab__text-label{flex-grow:1}\n"] }]
|
|
304
|
-
}], ctorParameters: () => [{ type: i1.TaskListService }, { type: i2.PeopleProcessService }, { type: i3.CardViewUpdateService }, { type: i4.MatDialog }, { type: i0.DestroyRef }], propDecorators: { errorDialog: [{
|
|
305
|
-
type: ViewChild,
|
|
306
|
-
args: ['errorDialog']
|
|
307
|
-
}], taskFormComponent: [{
|
|
308
|
-
type: ViewChild,
|
|
309
|
-
args: ['taskForm']
|
|
310
|
-
}], taskId: [{
|
|
311
|
-
type: Input,
|
|
312
|
-
args: [{ required: true }]
|
|
313
|
-
}], showNextTask: [{
|
|
314
|
-
type: Input
|
|
315
|
-
}], showHeader: [{
|
|
316
|
-
type: Input
|
|
317
|
-
}], showHeaderContent: [{
|
|
318
|
-
type: Input
|
|
319
|
-
}], showInvolvePeople: [{
|
|
320
|
-
type: Input
|
|
321
|
-
}], showComments: [{
|
|
322
|
-
type: Input
|
|
323
|
-
}], showChecklist: [{
|
|
324
|
-
type: Input
|
|
325
|
-
}], showFormTitle: [{
|
|
326
|
-
type: Input
|
|
327
|
-
}], showFormCompleteButton: [{
|
|
328
|
-
type: Input
|
|
329
|
-
}], showFormSaveButton: [{
|
|
330
|
-
type: Input
|
|
331
|
-
}], readOnlyForm: [{
|
|
332
|
-
type: Input
|
|
333
|
-
}], showFormRefreshButton: [{
|
|
334
|
-
type: Input
|
|
335
|
-
}], fieldValidators: [{
|
|
336
|
-
type: Input
|
|
337
|
-
}], formSaved: [{
|
|
338
|
-
type: Output
|
|
339
|
-
}], formCompleted: [{
|
|
340
|
-
type: Output
|
|
341
|
-
}], formContentClicked: [{
|
|
342
|
-
type: Output
|
|
343
|
-
}], formLoaded: [{
|
|
344
|
-
type: Output
|
|
345
|
-
}], taskCreated: [{
|
|
346
|
-
type: Output
|
|
347
|
-
}], taskDeleted: [{
|
|
348
|
-
type: Output
|
|
349
|
-
}], error: [{
|
|
350
|
-
type: Output
|
|
351
|
-
}], executeOutcome: [{
|
|
352
|
-
type: Output
|
|
353
|
-
}], assignTask: [{
|
|
354
|
-
type: Output
|
|
355
|
-
}], claimedTask: [{
|
|
356
|
-
type: Output
|
|
357
|
-
}], unClaimedTask: [{
|
|
358
|
-
type: Output
|
|
359
|
-
}] } });
|
|
360
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzL3NyYy9saWIvdGFzay1saXN0L2NvbXBvbmVudHMvdGFzay1kZXRhaWxzL3Rhc2stZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy9zcmMvbGliL3Rhc2stbGlzdC9jb21wb25lbnRzL3Rhc2stZGV0YWlscy90YXNrLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILG9CQUFvQixFQUNwQixxQkFBcUIsRUFNckIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUV6QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDSCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxVQUFVLEVBQVksRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBMkIsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FB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QUFJLEVBQUU7Z0JBS3pCLFlBQVk7c0JBRFgsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFLTixzQkFBc0I7c0JBRHJCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQVFOLFlBQVk7c0JBRFgsS0FBSztnQkFLTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBS04sZUFBZTtzQkFEZCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxXQUFXO3NCQURWLE1BQU07Z0JBS1AsV0FBVztzQkFEVixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFRUCxjQUFjO3NCQURiLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLFdBQVc7c0JBRFYsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQURGX0NPTU1FTlRTX1NFUlZJQ0UsXG4gICAgQ2FyZFZpZXdVcGRhdGVTZXJ2aWNlLFxuICAgIENsaWNrTm90aWZpY2F0aW9uLFxuICAgIENvbnRlbnRMaW5rTW9kZWwsXG4gICAgRm9ybUZpZWxkVmFsaWRhdG9yLFxuICAgIEZvcm1Nb2RlbCxcbiAgICBGb3JtT3V0Y29tZUV2ZW50LFxuICAgIEluZm9EcmF3ZXJDb21wb25lbnQsXG4gICAgSW5mb0RyYXdlclRhYkNvbXBvbmVudCxcbiAgICBVcGRhdGVOb3RpZmljYXRpb25cbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRhc2tMaXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2tsaXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUYXNrRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3Rhc2stZm9ybS90YXNrLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7IFBlb3BsZVByb2Nlc3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGVvcGxlLXByb2Nlc3Muc2VydmljZSc7XG5pbXBvcnQgeyBMaWdodFVzZXJSZXByZXNlbnRhdGlvbiwgVGFza1F1ZXJ5UmVwcmVzZW50YXRpb24sIFRhc2tSZXByZXNlbnRhdGlvbiB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF0dGFjaEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9hdHRhY2gtZm9ybS9hdHRhY2gtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVvcGxlQ29tcG9uZW50LCBQZW9wbGVTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9wZW9wbGUnO1xuaW1wb3J0IHsgVGFza0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL3Rhc2staGVhZGVyL3Rhc2staGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYXNrQ29tbWVudHNDb21wb25lbnQsIFRhc2tDb21tZW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi90YXNrLWNvbW1lbnRzJztcbmltcG9ydCB7IENoZWNrbGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NoZWNrbGlzdC9jaGVja2xpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbi8qKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgdXNlZCBhbnl3aGVyZSwgYW5kIGNhbiBiZSBzYWZlbHkgcmVtb3ZlZCAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtdGFzay1kZXRhaWxzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVQaXBlLFxuICAgICAgICBUYXNrRm9ybUNvbXBvbmVudCxcbiAgICAgICAgQXR0YWNoRm9ybUNvbXBvbmVudCxcbiAgICAgICAgUGVvcGxlU2VhcmNoQ29tcG9uZW50LFxuICAgICAgICBUYXNrSGVhZGVyQ29tcG9uZW50LFxuICAgICAgICBQZW9wbGVDb21wb25lbnQsXG4gICAgICAgIFRhc2tDb21tZW50c0NvbXBvbmVudCxcbiAgICAgICAgQ2hlY2tsaXN0Q29tcG9uZW50LFxuICAgICAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgSW5mb0RyYXdlclRhYkNvbXBvbmVudCxcbiAgICAgICAgSW5mb0RyYXdlckNvbXBvbmVudCxcbiAgICAgICAgTWF0Q2FyZE1vZHVsZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEFERl9DT01NRU5UU19TRVJWSUNFLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IFRhc2tDb21tZW50c1NlcnZpY2VcbiAgICAgICAgfVxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rhc2stZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFzay1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBUYXNrRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKCdlcnJvckRpYWxvZycpXG4gICAgZXJyb3JEaWFsb2c6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0YXNrRm9ybScpXG4gICAgdGFza0Zvcm1Db21wb25lbnQ6IFRhc2tGb3JtQ29tcG9uZW50O1xuXG4gICAgLyoqICgqKnJlcXVpcmVkKiopIFRoZSBpZCBvZiB0aGUgdGFzayB3aG9zZSBkZXRhaWxzIHdlIGFyZSBhc2tpbmcgZm9yLiAqL1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gICAgdGFza0lkOiBzdHJpbmc7XG5cbiAgICAvKiogQXV0b21hdGljYWxseSByZW5kZXJzIHRoZSBuZXh0IHRhc2sgd2hlbiB0aGUgY3VycmVudCBvbmUgaXMgY29tcGxldGVkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd05leHRUYXNrOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBUb2dnbGVzIHRhc2sgZGV0YWlscyBIZWFkZXIgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyBjb2xsYXBzZWQvZXhwYW5kZWQgc3RhdGUgb2YgdGhlIEhlYWRlciBjb21wb25lbnQuICovXG4gICAgQElucHV0KClcbiAgICBzaG93SGVhZGVyQ29udGVudDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyBgSW52b2x2ZSBQZW9wbGVgIGZlYXR1cmUgZm9yIHRoZSBIZWFkZXIgY29tcG9uZW50LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0ludm9sdmVQZW9wbGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgYENvbW1lbnRzYCBmZWF0dXJlIGZvciB0aGUgSGVhZGVyIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dDb21tZW50czogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyBgQ2hlY2tsaXN0YCBmZWF0dXJlIGZvciB0aGUgSGVhZGVyIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dDaGVja2xpc3Q6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqIFRvZ2dsZXMgcmVuZGVyaW5nIG9mIHRoZSBmb3JtIHRpdGxlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0Zvcm1UaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgcmVuZGVyaW5nIG9mIHRoZSBgQ29tcGxldGVgIG91dGNvbWUgYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0Zvcm1Db21wbGV0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKiogVG9nZ2xlcyByZW5kZXJpbmcgb2YgdGhlIGBTYXZlYCBvdXRjb21lIGJ1dHRvbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dGb3JtU2F2ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGVzIHJlYWQtb25seSBzdGF0ZSBvZiB0aGUgZm9ybS4gQWxsIGZvcm0gd2lkZ2V0cyByZW5kZXIgYXMgcmVhZC1vbmx5XG4gICAgICogaWYgZW5hYmxlZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlYWRPbmx5Rm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZXMgcmVuZGVyaW5nIG9mIHRoZSBgUmVmcmVzaGAgYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0Zvcm1SZWZyZXNoQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKiBGaWVsZCB2YWxpZGF0b3JzIGZvciB1c2Ugd2l0aCB0aGUgZm9ybS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10gPSBbXTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHdpdGggdGhlIGBTYXZlYCBvciBjdXN0b20gb3V0Y29tZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBgQ29tcGxldGVgIG91dGNvbWUuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBmaWVsZCBjb250ZW50IGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbnRlbnRDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxDb250ZW50TGlua01vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBsb2FkZWQgb3IgcmVsb2FkZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGNoZWNrbGlzdCB0YXNrIGlzIGNyZWF0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdGFza0NyZWF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhc2tSZXByZXNlbnRhdGlvbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBjaGVja2xpc3QgdGFzayBpcyBkZWxldGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHRhc2tEZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGFuIGVycm9yIG9jY3Vycy4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGFueSBvdXRjb21lIGlzIGV4ZWN1dGVkLiBEZWZhdWx0IGJlaGF2aW91ciBjYW4gYmUgcHJldmVudGVkXG4gICAgICogdmlhIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBleGVjdXRlT3V0Y29tZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU91dGNvbWVFdmVudD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSB0YXNrIGlzIGFzc2lnbmVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGFzc2lnblRhc2sgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdGFzayBpcyBjbGFpbWVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGNsYWltZWRUYXNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgdGFzayBpcyB1bmNsYWltZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdW5DbGFpbWVkVGFzayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgdGFza0RldGFpbHM6IFRhc2tSZXByZXNlbnRhdGlvbjtcbiAgICB0YXNrRm9ybU5hbWU6IHN0cmluZyA9IG51bGw7XG4gICAgdGFza1Blb3BsZTogTGlnaHRVc2VyUmVwcmVzZW50YXRpb25bXSA9IFtdO1xuICAgIG5vVGFza0RldGFpbHNUZW1wbGF0ZUNvbXBvbmVudDogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBzaG93QXNzaWduZWUgPSBmYWxzZTtcbiAgICBzaG93QXR0YWNoRm9ybSA9IGZhbHNlO1xuICAgIGludGVybmFsUmVhZE9ubHlGb3JtID0gZmFsc2U7XG4gICAgZXJyb3JEaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcbiAgICBwZW9wbGVTZWFyY2g6IE9ic2VydmFibGU8TGlnaHRVc2VyUmVwcmVzZW50YXRpb25bXT47XG4gICAgZGF0YTogYW55O1xuXG4gICAgcHJpdmF0ZSBwZW9wbGVTZWFyY2hPYnNlcnZlcjogT2JzZXJ2ZXI8TGlnaHRVc2VyUmVwcmVzZW50YXRpb25bXT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNlcnZpY2U6IFRhc2tMaXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwZW9wbGVQcm9jZXNzU2VydmljZTogUGVvcGxlUHJvY2Vzc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY2FyZFZpZXdVcGRhdGVTZXJ2aWNlOiBDYXJkVmlld1VwZGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZjogRGVzdHJveVJlZlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBlb3BsZVNlYXJjaCA9IG5ldyBPYnNlcnZhYmxlPExpZ2h0VXNlclJlcHJlc2VudGF0aW9uW10+KChvYnNlcnZlcikgPT4gKHRoaXMucGVvcGxlU2VhcmNoT2JzZXJ2ZXIgPSBvYnNlcnZlcikpLnBpcGUoc2hhcmUoKSk7XG5cbiAgICAgICAgaWYgKHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWREZXRhaWxzKHRoaXMudGFza0lkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2FyZFZpZXdVcGRhdGVTZXJ2aWNlLml0ZW1VcGRhdGVkJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVUYXNrRGV0YWlscy5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLmNhcmRWaWV3VXBkYXRlU2VydmljZS5pdGVtQ2xpY2tlZCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHRoaXMuY2xpY2tUYXNrRGV0YWlscy5iaW5kKHRoaXMpKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRhc2tJZCA9IGNoYW5nZXMudGFza0lkO1xuICAgICAgICB0aGlzLnNob3dBc3NpZ25lZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0YXNrSWQgJiYgIXRhc2tJZC5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgfSBlbHNlIGlmICh0YXNrSWQ/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkRGV0YWlscyh0YXNrSWQuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzQXNzaWduZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMudGFza0RldGFpbHMuYXNzaWduZWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGxldGUgYnV0dG9uIGNsaWNrZWRcbiAgICAgKi9cbiAgICBvbkNvbXBsZXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRm9ybUNvbXBsZXRlZChudWxsKTtcbiAgICB9XG5cbiAgICBvblNob3dBdHRhY2hGb3JtKCkge1xuICAgICAgICB0aGlzLnNob3dBdHRhY2hGb3JtID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbEF0dGFjaEZvcm0oKSB7XG4gICAgICAgIHRoaXMuc2hvd0F0dGFjaEZvcm0gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkNvbXBsZXRlQXR0YWNoRm9ybSgpIHtcbiAgICAgICAgdGhpcy50YXNrRm9ybU5hbWUgPSBudWxsO1xuICAgICAgICB0aGlzLnNob3dBdHRhY2hGb3JtID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFza0Zvcm1Db21wb25lbnQubG9hZFRhc2sodGhpcy50YXNrSWQpO1xuICAgICAgICB0aGlzLmxvYWREZXRhaWxzKHRoaXMudGFza0lkKTtcbiAgICB9XG5cbiAgICBvbkZvcm1Db250ZW50Q2xpY2soY29udGVudDogQ29udGVudExpbmtNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1Db250ZW50Q2xpY2tlZC5lbWl0KGNvbnRlbnQpO1xuICAgIH1cblxuICAgIG9uRm9ybVNhdmVkKGZvcm06IEZvcm1Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm1TYXZlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIG9uRm9ybUNvbXBsZXRlZChmb3JtOiBGb3JtTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkLmVtaXQoZm9ybSk7XG4gICAgICAgIGlmICh0aGlzLnNob3dOZXh0VGFzayAmJiAodGhpcy50YXNrRGV0YWlscy5wcm9jZXNzSW5zdGFuY2VJZCB8fCB0aGlzLnRhc2tEZXRhaWxzLnByb2Nlc3NEZWZpbml0aW9uSWQpKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWROZXh0VGFzayh0aGlzLnRhc2tEZXRhaWxzLnByb2Nlc3NJbnN0YW5jZUlkLCB0aGlzLnRhc2tEZXRhaWxzLnByb2Nlc3NEZWZpbml0aW9uSWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb3JtTG9hZGVkKGZvcm06IEZvcm1Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhc2tGb3JtTmFtZSA9IGZvcm0/Lm5hbWU7XG4gICAgICAgIHRoaXMuZm9ybUxvYWRlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIG9uQ2hlY2tsaXN0VGFza0NyZWF0ZWQodGFzazogVGFza1JlcHJlc2VudGF0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFza0NyZWF0ZWQuZW1pdCh0YXNrKTtcbiAgICB9XG5cbiAgICBvbkNoZWNrbGlzdFRhc2tEZWxldGVkKHRhc2tJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGFza0RlbGV0ZWQuZW1pdCh0YXNrSWQpO1xuICAgIH1cblxuICAgIG9uRm9ybUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lcnJvckRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5lcnJvckRpYWxvZywgeyB3aWR0aDogJzUwMHB4JyB9KTtcbiAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycm9yKTtcbiAgICB9XG5cbiAgICBvbkZvcm1FeGVjdXRlT3V0Y29tZShldmVudDogRm9ybU91dGNvbWVFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmV4ZWN1dGVPdXRjb21lLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGNsb3NlRXJyb3JEaWFsb2coKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgfVxuXG4gICAgb25DbGFpbUFjdGlvbih0YXNrSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsYWltZWRUYXNrLmVtaXQodGFza0lkKTtcbiAgICAgICAgdGhpcy5sb2FkRGV0YWlscyh0YXNrSWQpO1xuICAgIH1cblxuICAgIG9uVW5jbGFpbUFjdGlvbih0YXNrSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnVuQ2xhaW1lZFRhc2suZW1pdCh0YXNrSWQpO1xuICAgICAgICB0aGlzLmxvYWREZXRhaWxzKHRhc2tJZCk7XG4gICAgfVxuXG4gICAgc2VhcmNoVXNlcihzZWFyY2hlZFdvcmQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnBlb3BsZVByb2Nlc3NTZXJ2aWNlLmdldFdvcmtmbG93VXNlcnMobnVsbCwgc2VhcmNoZWRXb3JkKS5zdWJzY3JpYmUoKHVzZXJzKSA9PiB7XG4gICAgICAgICAgICB1c2VycyA9IHVzZXJzLmZpbHRlcigodXNlcikgPT4gdXNlci5pZCAhPT0gdGhpcy50YXNrRGV0YWlscy5hc3NpZ25lZS5pZCk7XG4gICAgICAgICAgICB0aGlzLnBlb3BsZVNlYXJjaE9ic2VydmVyLm5leHQodXNlcnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsb3NlU2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNob3dBc3NpZ25lZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGFzc2lnblRhc2tUb1VzZXIoc2VsZWN0ZWRVc2VyOiBMaWdodFVzZXJSZXByZXNlbnRhdGlvbikge1xuICAgICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5hc3NpZ25UYXNrKHRoaXMudGFza0RldGFpbHMuaWQsIHNlbGVjdGVkVXNlcikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXNzaWduVGFzay5lbWl0KCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNob3dBc3NpZ25lZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldFRhc2tIZWFkZXJWaWV3Q2xhc3MoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvd0Fzc2lnbmVlKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2Fzc2lnbi1lZGl0LXZpZXcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdkZWZhdWx0LXZpZXcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNSZWFkT25seUNvbW1lbnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhc2tEZXRhaWxzPy5pc0NvbXBsZXRlZCgpICYmIHRoaXMudGFza1Blb3BsZT8ubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMudGFza0RldGFpbHMgPSBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlVGFza0RldGFpbHModXBkYXRlTm90aWZpY2F0aW9uOiBVcGRhdGVOb3RpZmljYXRpb24pIHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2VcbiAgICAgICAgICAgIC51cGRhdGVUYXNrKHRoaXMudGFza0lkLCB1cGRhdGVOb3RpZmljYXRpb24uY2hhbmdlZClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcmRWaWV3VXBkYXRlU2VydmljZS51cGRhdGVFbGVtZW50KHVwZGF0ZU5vdGlmaWNhdGlvbi50YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkRGV0YWlscyh0aGlzLnRhc2tJZCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xpY2tUYXNrRGV0YWlscyhjbGlja05vdGlmaWNhdGlvbjogQ2xpY2tOb3RpZmljYXRpb24pIHtcbiAgICAgICAgaWYgKGNsaWNrTm90aWZpY2F0aW9uLnRhcmdldC5rZXkgPT09ICdhc3NpZ25lZScpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd0Fzc2lnbmVlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xpY2tOb3RpZmljYXRpb24udGFyZ2V0LmtleSA9PT0gJ2Zvcm1OYW1lJykge1xuICAgICAgICAgICAgdGhpcy5zaG93QXR0YWNoRm9ybSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWREZXRhaWxzKHRhc2tJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMudGFza1Blb3BsZSA9IFtdO1xuXG4gICAgICAgIGlmICh0YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLmdldFRhc2tEZXRhaWxzKHRhc2tJZCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dBdHRhY2hGb3JtID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy50YXNrRGV0YWlscyA9IHJlcztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnRhc2tEZXRhaWxzLm5hbWUgPT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhc2tEZXRhaWxzLm5hbWUgPSAnTm8gbmFtZSc7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZTogYW55ID0gcmVzLmVuZERhdGU7XG4gICAgICAgICAgICAgICAgaWYgKGVuZERhdGUgJiYgIWlzTmFOKGVuZERhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsUmVhZE9ubHlGb3JtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsUmVhZE9ubHlGb3JtID0gdGhpcy5yZWFkT25seUZvcm07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFza0RldGFpbHM/Lmludm9sdmVkUGVvcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFza1Blb3BsZS5wdXNoKC4uLnRoaXMudGFza0RldGFpbHMuaW52b2x2ZWRQZW9wbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkTmV4dFRhc2socHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZywgcHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3ROb2RlID0gbmV3IFRhc2tRdWVyeVJlcHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgIHByb2Nlc3NJbnN0YW5jZUlkLFxuICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25JZFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2UuZ2V0VGFza3MocmVxdWVzdE5vZGUpLnN1YnNjcmliZShcbiAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFza0RldGFpbHMgPSBuZXcgVGFza1JlcHJlc2VudGF0aW9uKHJlc3BvbnNlWzBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChlcnJvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiF0YXNrRGV0YWlsc1wiIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi10YXNrcy1kZXRhaWxzLS1lbXB0eVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cIm5vVGFza0RldGFpbHNUZW1wbGF0ZUNvbXBvbmVudFwiIG5nRm9yIFtuZ0Zvck9mXT1cIltkYXRhXVwiXG4gICAgICAgICAgICAgICAgIFtuZ0ZvclRlbXBsYXRlXT1cIm5vVGFza0RldGFpbHNUZW1wbGF0ZUNvbXBvbmVudFwiPlxuICAgICAgICB7eyAnQURGX1RBU0tfTElTVC5ERVRBSUxTLk1FU1NBR0VTLk5PTkUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8ZGl2ICpuZ0lmPVwiIW5vVGFza0RldGFpbHNUZW1wbGF0ZUNvbXBvbmVudFwiPlxuICAgICAgICB7eyAnQURGX1RBU0tfTElTVC5ERVRBSUxTLk1FU1NBR0VTLk5PTkUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJ0YXNrRGV0YWlsc1wiIGNsYXNzPVwiYWRmLXRhc2stZGV0YWlsc1wiPlxuXG4gICAgPGRpdiAqbmdJZj1cInNob3dIZWFkZXJcIiBjbGFzcz1cImFkZi10YXNrLWRldGFpbHMtaGVhZGVyXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImFkZi1hY3Rpdml0aS10YXNrLWRldGFpbHNfX2hlYWRlclwiPlxuICAgICAgICAgICAgPHNwYW4+e3t0YXNrRGV0YWlscy5uYW1lIHx8ICdObyBuYW1lJ319PC9zcGFuPlxuICAgICAgICA8L2gyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFkZi10YXNrLWRldGFpbHMtY29yZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLXRhc2stZGV0YWlscy1jb3JlLWZvcm1cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc0Fzc2lnbmVkKClcIj5cbiAgICAgICAgICAgICAgICA8YWRmLXRhc2stZm9ybSAjdGFza0Zvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rhc2tJZF09XCJ0YXNrRGV0YWlscy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Rm9ybVRpdGxlXT1cInNob3dGb3JtVGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0Zvcm1SZWZyZXNoQnV0dG9uXT1cInNob3dGb3JtUmVmcmVzaEJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRWYWxpZGF0b3JzXT1cImZpZWxkVmFsaWRhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtU2F2ZWQpPSdvbkZvcm1TYXZlZCgkZXZlbnQpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybUNvbXBsZXRlZCk9J29uRm9ybUNvbXBsZXRlZCgkZXZlbnQpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybUNvbnRlbnRDbGlja2VkKT0nb25Gb3JtQ29udGVudENsaWNrKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtTG9hZGVkKT0nb25Gb3JtTG9hZGVkKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wbGV0ZWQpPVwib25Db21wbGV0ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNob3dBdHRhY2hGb3JtKT1cIm9uU2hvd0F0dGFjaEZvcm0oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChleGVjdXRlT3V0Y29tZSk9J29uRm9ybUV4ZWN1dGVPdXRjb21lKCRldmVudCknXG4gICAgICAgICAgICAgICAgICAgICAgICAgICh0YXNrQ2xhaW1lZCk9XCJvbkNsYWltQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAodGFza1VuY2xhaW1lZCk9XCJvblVuY2xhaW1BY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvcik9XCJvbkZvcm1FcnJvcigkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8YWRmLWF0dGFjaC1mb3JtICpuZ0lmPVwic2hvd0F0dGFjaEZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rhc2tJZF09XCJ0YXNrRGV0YWlscy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUtleV09XCJ0YXNrRGV0YWlscy5mb3JtS2V5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxBdHRhY2hGb3JtKT1cIm9uQ2FuY2VsQXR0YWNoRm9ybSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdWNjZXNzKT1cIm9uQ29tcGxldGVBdHRhY2hGb3JtKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzQXNzaWduZWQoKVwiIGlkPVwiY2xhaW0tbWVzc2FnZS1pZFwiPlxuICAgICAgICAgICAgICAgIHt7ICdBREZfVEFTS19MSVNULkRFVEFJTFMuTUVTU0FHRVMuQ0xBSU0nIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtdGFzay1kZXRhaWxzLWNvcmUtc2lkZWJhclwiPlxuICAgICAgICAgICAgPGFkZi1pbmZvLWRyYXdlciAqbmdJZj1cInNob3dIZWFkZXJDb250ZW50XCIgdGl0bGU9XCJBREZfVEFTS19MSVNULkRFVEFJTFMuTEFCRUxTLklORk9fRFJBV0VSX1RJVExFXCIgaWQ9XCJhZGYtdGFzay1kZXRhaWxzLWNvcmUtc2lkZWJhci1kcmF3ZXJcIiBjbGFzcz1cImFkZi10YXNrLWRldGFpbHMtY29yZS1zaWRlYmFyLWRyYXdlclwiPlxuICAgICAgICAgICAgICAgIDxhZGYtaW5mby1kcmF3ZXItdGFiIGxhYmVsPVwiQURGX1RBU0tfTElTVC5ERVRBSUxTLkxBQkVMUy5JTkZPX0RSQVdFUl9UQUJfREVUQUlMU19USVRMRVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWFzc2lnbm1lbnQtY29udGFpbmVyXCIgKm5nSWY9XCJzaG93QXNzaWduZWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtcGVvcGxlLXNlYXJjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJUaXRsZV09XCInQURGX1RBU0tfTElTVC5ERVRBSUxTLkxBQkVMUy5BRERfQVNTSUdORUUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uTGFiZWxdPVwiJ0FERl9UQVNLX0xJU1QuUEVPUExFLkFERF9BU1NJR05FRSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWFyY2hQZW9wbGUpPVwic2VhcmNoVXNlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3VjY2Vzcyk9XCJhc3NpZ25UYXNrVG9Vc2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZVNlYXJjaCk9XCJvbkNsb3NlU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXN1bHRzXT1cInBlb3BsZVNlYXJjaFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXRhc2staGVhZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZ2V0VGFza0hlYWRlclZpZXdDbGFzcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0YXNrRGV0YWlsc109XCJ0YXNrRGV0YWlsc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybU5hbWVdPVwidGFza0Zvcm1OYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGFpbSk9XCJvbkNsYWltQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHVuY2xhaW0pPVwib25VbmNsYWltQWN0aW9uKCRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLXBlb3BsZSAqbmdJZj1cInNob3dJbnZvbHZlUGVvcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Blb3BsZV09XCJ0YXNrUGVvcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cImludGVybmFsUmVhZE9ubHlGb3JtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rhc2tJZF09XCJ0YXNrRGV0YWlscy5pZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9hZGYtaW5mby1kcmF3ZXItdGFiPlxuXG4gICAgICAgICAgICAgICAgPGFkZi1pbmZvLWRyYXdlci10YWIgbGFiZWw9XCJBREZfVEFTS19MSVNULkRFVEFJTFMuTEFCRUxTLklORk9fRFJBV0VSX1RBQl9BQ1RJVklUWV9USVRMRVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgKm5nSWY9XCJzaG93Q29tbWVudHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhZGYtdGFzay1jb21tZW50c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaXNSZWFkT25seUNvbW1lbnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXNrSWRdPVwidGFza0RldGFpbHMuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgPC9hZGYtaW5mby1kcmF3ZXItdGFiPlxuXG4gICAgICAgICAgICA8L2FkZi1pbmZvLWRyYXdlcj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dIZWFkZXJDb250ZW50XCIgY2xhc3M9XCJhZGYtdGFzay1kZXRhaWxzLWNvcmUtc2lkZWJhci1jaGVja2xpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0NoZWNrbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWRmLWNoZWNrbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwiaW50ZXJuYWxSZWFkT25seUZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICBbdGFza0lkXT1cInRhc2tEZXRhaWxzLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Fzc2lnbmVlXT1cInRhc2tEZXRhaWxzLmFzc2lnbmVlPy5pZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChjaGVja2xpc3RUYXNrQ3JlYXRlZCk9XCJvbkNoZWNrbGlzdFRhc2tDcmVhdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tsaXN0VGFza0RlbGV0ZWQpPVwib25DaGVja2xpc3RUYXNrRGVsZXRlZCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjZXJyb3JEaWFsb2c+XG4gICAgICAgIDxoMyBtYXREaWFsb2dUaXRsZT57eydBREZfVEFTS19MSVNULkRFVEFJTFMuRVJST1IuVElUTEUnfHRyYW5zbGF0ZX19PC9oMz5cbiAgICAgICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgICAgICAgIDxwPnt7J0FERl9UQVNLX0xJU1QuREVUQUlMUy5FUlJPUi5ERVNDUklQVElPTid8dHJhbnNsYXRlfX08L3A+XG4gICAgICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xvc2VFcnJvckRpYWxvZygpXCI+e3snQURGX1RBU0tfTElTVC5ERVRBSUxTLkVSUk9SLkNMT1NFJ3x0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbjwvZGl2PlxuIl19
|