@colijnit/sharedcomponents 259.1.10 → 259.1.12
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/bundles/colijnit-sharedcomponents.umd.js +125 -51
- package/bundles/colijnit-sharedcomponents.umd.js.map +1 -1
- package/colijnit-sharedcomponents.metadata.json +1 -1
- package/esm2015/lib/components/form-builder/form-builder-user-form/form-builder-user-form.component.js +66 -46
- package/esm2015/lib/components/send-method-dialog/components/pdf-preview/pdf-preview.component.js +19 -10
- package/esm2015/lib/components/send-method-dialog/send-method-dialog.component.js +8 -11
- package/esm2015/lib/components/send-method-dialog/service/send-method.service.js +4 -2
- package/esm2015/lib/enum/user-form-mode.enum.js +7 -0
- package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
- package/esm2015/lib/service/shared-connector.service.js +33 -1
- package/esm2015/public-api.js +2 -1
- package/fesm2015/colijnit-sharedcomponents.js +132 -66
- package/fesm2015/colijnit-sharedcomponents.js.map +1 -1
- package/lib/components/form-builder/form-builder-user-form/form-builder-user-form.component.d.ts +14 -7
- package/lib/components/form-builder/form-builder-user-form/style/_layout.scss +4 -0
- package/lib/components/send-method-dialog/components/pdf-preview/pdf-preview.component.d.ts +2 -0
- package/lib/enum/user-form-mode.enum.d.ts +4 -0
- package/lib/res/dictionary/dictionaries.d.ts +6 -0
- package/lib/service/shared-connector.service.d.ts +2 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { FormQuestionType } from '@colijnit/mainapi/build/enum/form-question.type';
|
|
4
4
|
import { TableName } from '@colijnit/mainapi/build/enum/table-name.enum';
|
|
5
5
|
import { Form } from '@colijnit/mainapi/build/model/form.bo';
|
|
6
6
|
import { FormResponse } from '@colijnit/mainapi/build/model/form-response.bo';
|
|
7
7
|
import { InputBoolean } from '../../../decorator/input-boolean.decorator';
|
|
8
8
|
import { NULL_FORM_FULL_OBJECT } from '../../../model/util/forms-null-object';
|
|
9
|
-
import { PromptService } from '@colijnit/corecomponents_v12';
|
|
10
9
|
import { ArrayUtils } from '../../../utils/array-utils';
|
|
11
10
|
import { BusinessObjectFactory } from '@colijnit/ioneconnector/build/service/business-object-factory';
|
|
12
11
|
import { FormUtils } from '../../../utils/form-utils';
|
|
13
12
|
import { Icon } from '../../../enum/icon.enum';
|
|
14
13
|
import { IconCacheService } from '../../../service/icon-cache.service';
|
|
14
|
+
import { UserFormMode } from '../../../enum/user-form-mode.enum';
|
|
15
15
|
import { SharedConnectorService } from '../../../service/shared-connector.service';
|
|
16
|
+
import { PromptService } from '@colijnit/corecomponents_v12';
|
|
16
17
|
export class FormBuilderUserFormComponent {
|
|
17
|
-
constructor(_detectorRef,
|
|
18
|
+
constructor(_detectorRef, _boFactory, _changeDetectorRef, _sharedConnectorService, _promptService, iconCacheService) {
|
|
18
19
|
this._detectorRef = _detectorRef;
|
|
19
|
-
this._promptService = _promptService;
|
|
20
20
|
this._boFactory = _boFactory;
|
|
21
21
|
this._changeDetectorRef = _changeDetectorRef;
|
|
22
22
|
this._sharedConnectorService = _sharedConnectorService;
|
|
23
|
+
this._promptService = _promptService;
|
|
23
24
|
this.iconCacheService = iconCacheService;
|
|
24
25
|
this.formQuestionType = FormQuestionType;
|
|
25
26
|
this.TableName = TableName;
|
|
26
27
|
this.icons = Icon;
|
|
27
|
-
this.
|
|
28
|
+
this.mode = UserFormMode.Create;
|
|
28
29
|
this.documents = [];
|
|
30
|
+
this.showPopup = false;
|
|
29
31
|
this.readonly = false;
|
|
30
32
|
this.enableQuestions = true;
|
|
31
33
|
this.cancelForm = new EventEmitter();
|
|
32
34
|
this.saveForm = new EventEmitter();
|
|
35
|
+
this.createNewFormResponse = new EventEmitter();
|
|
33
36
|
this.cloneForm = NULL_FORM_FULL_OBJECT;
|
|
34
37
|
}
|
|
35
38
|
set form(form) {
|
|
@@ -65,19 +68,6 @@ export class FormBuilderUserFormComponent {
|
|
|
65
68
|
this.gotoQuestion = undefined;
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
|
-
// public async openFormWriteable(formId: number, formResponseId: number): Promise<void> {
|
|
69
|
-
//
|
|
70
|
-
// const isLockedSuccesfully: boolean = await this._formRepo.lockFormResponse(formResponseId);
|
|
71
|
-
//
|
|
72
|
-
// if (!isLockedSuccesfully) {
|
|
73
|
-
// this._promptService.showNotification("MESSAGE_RESOURCE_BUSY");
|
|
74
|
-
// } else {
|
|
75
|
-
// this.form = await this._formRepo.getForm(formId);
|
|
76
|
-
// this.userForm = await this._formRepo.getFormResponse(formResponseId);
|
|
77
|
-
// this._prepareExistingForm();
|
|
78
|
-
// this.show();
|
|
79
|
-
// }
|
|
80
|
-
// }
|
|
81
71
|
onValid() {
|
|
82
72
|
this.saveForm.next(this.formResponse);
|
|
83
73
|
}
|
|
@@ -106,14 +96,6 @@ export class FormBuilderUserFormComponent {
|
|
|
106
96
|
changeTime(formResponse, time) {
|
|
107
97
|
formResponse.timeResponse = time;
|
|
108
98
|
}
|
|
109
|
-
close() {
|
|
110
|
-
this.showPopup = false;
|
|
111
|
-
this._detectorRef.detectChanges();
|
|
112
|
-
}
|
|
113
|
-
show() {
|
|
114
|
-
this.showPopup = true;
|
|
115
|
-
this._detectorRef.detectChanges();
|
|
116
|
-
}
|
|
117
99
|
handleDocumentDeleted(doc) {
|
|
118
100
|
ArrayUtils.RemoveElement(doc, this.formResponse.documents);
|
|
119
101
|
}
|
|
@@ -135,6 +117,12 @@ export class FormBuilderUserFormComponent {
|
|
|
135
117
|
this.formResponse.table = this.table;
|
|
136
118
|
this.formResponse.key = this.key;
|
|
137
119
|
}
|
|
120
|
+
else {
|
|
121
|
+
this.mode = UserFormMode.Edit;
|
|
122
|
+
// const isLockedSuccesfully: boolean = await this._formRepo.lockFormResponse(formResponseId);
|
|
123
|
+
this._loadDocs();
|
|
124
|
+
this._prepareExistingForm();
|
|
125
|
+
}
|
|
138
126
|
FormUtils.MergeResponseWithForm(this.cloneForm, this.formResponse);
|
|
139
127
|
if (this.enableQuestions) {
|
|
140
128
|
this._enableQuestions();
|
|
@@ -148,7 +136,6 @@ export class FormBuilderUserFormComponent {
|
|
|
148
136
|
if (this.enableQuestions) {
|
|
149
137
|
this._enableQuestions();
|
|
150
138
|
}
|
|
151
|
-
// this._loadDocs();
|
|
152
139
|
}
|
|
153
140
|
_enableQuestions() {
|
|
154
141
|
for (const currentIndex in this.cloneForm.questions) {
|
|
@@ -164,25 +151,54 @@ export class FormBuilderUserFormComponent {
|
|
|
164
151
|
}
|
|
165
152
|
}
|
|
166
153
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
154
|
+
_loadDocs() {
|
|
155
|
+
this.formResponse.documents.forEach((doc) => {
|
|
156
|
+
if (doc.documentId && !doc.documentBody) {
|
|
157
|
+
this._sharedConnectorService.getDocumentContent(doc.documentId).then((content) => {
|
|
158
|
+
doc.documentBody = content;
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
this._changeDetectorRef.detectChanges();
|
|
163
|
+
}
|
|
164
|
+
handleDefinitiveChange(definitive) {
|
|
165
|
+
this.formResponse.isFinal = definitive;
|
|
166
|
+
}
|
|
167
|
+
commitUserForm() {
|
|
177
168
|
FormUtils.MergeResponseWithForm(this.cloneForm, this.formResponse);
|
|
169
|
+
switch (this.mode) {
|
|
170
|
+
case UserFormMode.Create:
|
|
171
|
+
this._sharedConnectorService.insertFormResponse(this.formResponse).then((response) => {
|
|
172
|
+
if (response && response.responseId) {
|
|
173
|
+
this.saveForm.next(response);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this._promptService.showError('ERROR_SAVING_FORM_RESPONSE', 'ERROR_SAVING_FORM_RESPONSE_TITLE');
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
this.createNewFormResponse.next(this.formResponse);
|
|
180
|
+
break;
|
|
181
|
+
case UserFormMode.Edit:
|
|
182
|
+
this._sharedConnectorService.updateFormResponse(this.formResponse).then((response) => {
|
|
183
|
+
if (response && response.responseId) {
|
|
184
|
+
this.saveForm.next(response);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
this._promptService.showError('ERROR_SAVING_FORM_RESPONSE', 'ERROR_SAVING_FORM_RESPONSE_TITLE');
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
handleOpenFilesUpload() {
|
|
194
|
+
this.filesUploadComponent.openFileBrowser();
|
|
178
195
|
}
|
|
179
196
|
}
|
|
180
197
|
FormBuilderUserFormComponent.decorators = [
|
|
181
198
|
{ type: Component, args: [{
|
|
182
199
|
selector: 'co-form-builder-user-form',
|
|
183
200
|
template: `
|
|
184
|
-
<co-dialog [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate" (
|
|
185
|
-
|
|
201
|
+
<co-dialog [headerTemplate]="headerTemplate" [footerTemplate]="footerTemplate" (closeClick)="handleCancelForm()" >
|
|
186
202
|
<div class="main-content-wrapper">
|
|
187
203
|
<div class="section-wrapper mini-scrollbar" #sectionWrapper>
|
|
188
204
|
<co-form #coForm (validSubmit)="onValid()" [keepInView]="sectionWrapper">
|
|
@@ -270,7 +286,7 @@ FormBuilderUserFormComponent.decorators = [
|
|
|
270
286
|
</co-form>
|
|
271
287
|
</div>
|
|
272
288
|
<div class="section-wrapper mini-scrollbar" #sectionWrapper>
|
|
273
|
-
<co-input-checkbox [
|
|
289
|
+
<co-input-checkbox [model]="formResponse?.isFinal" (modelChange)="handleDefinitiveChange($event)" [label]="'DEFINITIVE' | sharedLocalize"></co-input-checkbox>
|
|
274
290
|
</div>
|
|
275
291
|
|
|
276
292
|
|
|
@@ -279,20 +295,21 @@ FormBuilderUserFormComponent.decorators = [
|
|
|
279
295
|
</co-dialog>
|
|
280
296
|
<ng-template #headerTemplate>
|
|
281
297
|
<div class="header-wrapper">
|
|
282
|
-
<span class="form-title" [textContent]="form
|
|
298
|
+
<span class="form-title" [textContent]="form?.formName"></span>
|
|
283
299
|
</div>
|
|
284
300
|
</ng-template>
|
|
285
301
|
<ng-template #footerTemplate>
|
|
286
302
|
<div class="footer-wrapper">
|
|
287
303
|
<div class="attachments-wrapper">
|
|
288
304
|
<div class="row">
|
|
289
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.PaperclipRegular)"></co-icon>
|
|
305
|
+
<co-icon [iconData]="iconCacheService.getIcon(icons.PaperclipRegular)" (click)="handleOpenFilesUpload()"></co-icon>
|
|
290
306
|
<input type="file" accept="image/*" capture="environment">
|
|
307
|
+
<co-files-upload #filesUploadComponent [documents]="formResponse.documents" class="co-files-upload"></co-files-upload>
|
|
291
308
|
</div>
|
|
292
309
|
</div>
|
|
293
310
|
<div class="row">
|
|
294
|
-
<co-button class="save-button" (click)="
|
|
295
|
-
<co-button class="close-button" [iconData]="iconCacheService.getIcon(icons.CrossSkinny)"></co-button>
|
|
311
|
+
<co-button class="save-button" (click)="commitUserForm()" [iconData]="iconCacheService.getIcon(icons.CheckDuotone)"></co-button>
|
|
312
|
+
<co-button class="close-button" [iconData]="iconCacheService.getIcon(icons.CrossSkinny)" (click)="handleCancelForm()"></co-button>
|
|
296
313
|
</div>
|
|
297
314
|
</div>
|
|
298
315
|
|
|
@@ -304,13 +321,14 @@ FormBuilderUserFormComponent.decorators = [
|
|
|
304
321
|
];
|
|
305
322
|
FormBuilderUserFormComponent.ctorParameters = () => [
|
|
306
323
|
{ type: ChangeDetectorRef },
|
|
307
|
-
{ type: PromptService },
|
|
308
324
|
{ type: BusinessObjectFactory },
|
|
309
325
|
{ type: ChangeDetectorRef },
|
|
310
326
|
{ type: SharedConnectorService },
|
|
327
|
+
{ type: PromptService },
|
|
311
328
|
{ type: IconCacheService }
|
|
312
329
|
];
|
|
313
330
|
FormBuilderUserFormComponent.propDecorators = {
|
|
331
|
+
filesUploadComponent: [{ type: ViewChild, args: ['filesUploadComponent',] }],
|
|
314
332
|
showPopup: [{ type: Input }],
|
|
315
333
|
form: [{ type: Input }],
|
|
316
334
|
userForm: [{ type: Input }],
|
|
@@ -320,9 +338,11 @@ FormBuilderUserFormComponent.propDecorators = {
|
|
|
320
338
|
enableQuestions: [{ type: Input }],
|
|
321
339
|
cancelForm: [{ type: Output }],
|
|
322
340
|
saveForm: [{ type: Output }],
|
|
341
|
+
createNewFormResponse: [{ type: Output }],
|
|
342
|
+
loadDocuments: [{ type: Output }],
|
|
323
343
|
showClass: [{ type: HostBinding, args: ['class.co-form-builder-user-form',] }]
|
|
324
344
|
};
|
|
325
345
|
__decorate([
|
|
326
346
|
InputBoolean()
|
|
327
347
|
], FormBuilderUserFormComponent.prototype, "readonly", void 0);
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLXVzZXItZm9ybS9mb3JtLWJ1aWxkZXItdXNlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RSxPQUFPLEVBQUMscUJBQXFCLEVBQTRCLE1BQU0sdUNBQXVDLENBQUM7QUFDdkcsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBSTNELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxzQkFB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O29CQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO2lCQUMvQjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLCtEQUErRDtJQUMvRCxpREFBaUQ7SUFDakQsaUZBQWlGO0lBQ2pGLHlDQUF5QztJQUN6QyxlQUFlO0lBQ2YsUUFBUTtJQUNSLFFBQVE7SUFDUixJQUFJO0lBRUcsS0FBSztRQUNWLFNBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRSxDQUFDOzs7WUEvVUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNIVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBN0lPLGlCQUFpQjtZQVFqQixhQUFhO1lBS2IscUJBQXFCO1lBYnJCLGlCQUFpQjtZQWlCakIsc0JBQXNCO1lBRHRCLGdCQUFnQjs7O3dCQW9JckIsS0FBSzttQkFPTCxLQUFLO3VCQVdMLEtBQUs7b0JBR0wsS0FBSztrQkFHTCxLQUFLO3VCQUdMLEtBQUs7OEJBSUwsS0FBSzt5QkFHTCxNQUFNO3VCQUdOLE1BQU07d0JBU04sV0FBVyxTQUFDLGlDQUFpQzs7QUFqQjlDO0lBREMsWUFBWSxFQUFFOzhEQUNrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtGb3JtUXVlc3Rpb25UeXBlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL2Zvcm0tcXVlc3Rpb24udHlwZSc7XHJcbmltcG9ydCB7VGFibGVOYW1lfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL3RhYmxlLW5hbWUuZW51bSc7XHJcbmltcG9ydCB7Rm9ybX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS5ibyc7XHJcbmltcG9ydCB7Rm9ybVJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9mb3JtLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtJbnB1dEJvb2xlYW59IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvci9pbnB1dC1ib29sZWFuLmRlY29yYXRvcic7XHJcbmltcG9ydCB7Rm9ybVF1ZXN0aW9ufSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9mb3JtLXF1ZXN0aW9uLmJvJztcclxuaW1wb3J0IHtOVUxMX0ZPUk1fRlVMTF9PQkpFQ1QsIE5VTExfRk9STV9SRVNQT05TRV9PQkpFQ1R9IGZyb20gJy4uLy4uLy4uL21vZGVsL3V0aWwvZm9ybXMtbnVsbC1vYmplY3QnO1xyXG5pbXBvcnQge1Byb21wdFNlcnZpY2V9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge0Zvcm1RdWVzdGlvbkFuc3dlcn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1xdWVzdGlvbi1hbnN3ZXIuYm8nO1xyXG5pbXBvcnQge0Zvcm1RdWVzdGlvblJlc3BvbnNlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9mb3JtLXF1ZXN0aW9uLXJlc3BvbnNlLmJvJztcclxuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudC5ibyc7XHJcbmltcG9ydCB7QXJyYXlVdGlsc30gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYXJyYXktdXRpbHMnO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvc2VydmljZS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeSc7XHJcbmltcG9ydCB7Rm9ybVV0aWxzfSBmcm9tICcuLi8uLi8uLi91dGlscy9mb3JtLXV0aWxzJztcclxuaW1wb3J0IHtJY29ufSBmcm9tICcuLi8uLi8uLi9lbnVtL2ljb24uZW51bSc7XHJcbmltcG9ydCB7SWNvbkNhY2hlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9pY29uLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1NoYXJlZENvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2Uvc2hhcmVkLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tZm9ybS1idWlsZGVyLXVzZXItZm9ybScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgICAgPGNvLWRpYWxvZyBbaGVhZGVyVGVtcGxhdGVdPVwiaGVhZGVyVGVtcGxhdGVcIiBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiAoY2FuY2VsKT1cImhhbmRsZUNhbmNlbEZvcm0oKVwiPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXdyYXBwZXIgbWluaS1zY3JvbGxiYXJcIiAjc2VjdGlvbldyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1mb3JtICNjb0Zvcm0gKHZhbGlkU3VibWl0KT1cIm9uVmFsaWQoKVwiIFtrZWVwSW5WaWV3XT1cInNlY3Rpb25XcmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBjbG9uZUZvcm0ucXVlc3Rpb25zOyBsZXQgaW5kZXggPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmFjdGl2ZV09XCJmb3JtLnF1ZXN0aW9ucy5pbmRleE9mKHF1ZXN0aW9uKSA9PT0gZm9ybS5xdWVzdGlvbnMuaW5kZXhPZihhY3RpdmVRdWVzdGlvbilcIiBjbGFzcz1cImhlYWRlcnMtcm93XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLXJ1YnJpYy1oZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJxdWVzdGlvbi5zZXF1ZW5jZSsgJy4gJyArIChxdWVzdGlvbi5xdWVzdGlvbilcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbnN3ZXItd3JhcHBlclwiIFtuZ1N3aXRjaF09XCJxdWVzdGlvbi5xdWVzdGlvblR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0ICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLlNob3J0QW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGV4dGFyZWEgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTG9uZ0Fuc3dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLk11bHRpcGxlQ2hvaWNlU2luZ2xlT3B0aW9uXCJcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1yYWRpby1idXR0b24gKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiYW5zd2VyLmFuc3dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cImFuc3dlci5hbnN3ZXJJZCA9PSBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlID0gYW5zd2VyLmFuc3dlcklkICsgJyc7IGVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb24sIGFuc3dlcilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jby1mb3JtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLk11bHRpcGxlQ2hvaWNlTXVsdGlwbGVPcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94ICpuZ0Zvcj1cImxldCBhbnN3ZXIgb2YgcXVlc3Rpb24uZm9ybVF1ZXN0aW9uQW5zd2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJhbnN3ZXIuYW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2UgPyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZS5pbmRleE9mKGFuc3dlci5hbnN3ZXJJZCkgPiAtMSA6IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZU11bHRpcGxlT3B0aW9uKGFuc3dlci5hbnN3ZXJJZCwgcXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbiwgJGV2ZW50KTsgZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbiwgYW5zd2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1saXN0LW9mLXZhbHVlcyAqbmdTd2l0Y2hDYXNlPVwiZm9ybVF1ZXN0aW9uVHlwZS5Ecm9wRG93bkxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZpZWxkXT1cIidhbnN3ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImNoYW5nZUxvdk9wdGlvbihxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLCAkZXZlbnQucmVzcG9uc2VJZCk7IGVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb24sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tbGlzdC1vZi12YWx1ZXM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tdXNlci1mb3JtLWlucHV0LXNjYWxlICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLkxpbmVhclNjYWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInF1ZXN0aW9uLnF1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkRmllbGRdPVwiJ2Fuc3dlcklkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NjYWxlTW9kZWxdPVwicXVlc3Rpb24uZm9ybVF1ZXN0aW9uQW5zd2Vyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbkZpZWxkXT1cIidhbnN3ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZSA9ICRldmVudC5hbnN3ZXJJZCArICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLXVzZXItZm9ybS1pbnB1dC1zY2FsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1kYXRlICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLkRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5kYXRlUmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LWRhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtdGltZSAqbmdTd2l0Y2hDYXNlPVwiZm9ybVF1ZXN0aW9uVHlwZS5UaW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uPy50aW1lUmVzcG9uc2UgPz8gMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlVGltZShxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5tYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10aW1lPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ290by1xdWVzdGlvblwiICpuZ0lmPVwicXVlc3Rpb24gPT09IGFjdGl2ZVF1ZXN0aW9uICYmIGdvdG9RdWVzdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwiKCdHT1RPX05FWFRfUVVFU1RJT04nIHwgc2hhcmVkTG9jYWxpemUpICsgJyAnICsgZ290b1F1ZXN0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPC9jby1mb3JtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLXdyYXBwZXIgbWluaS1zY3JvbGxiYXJcIiAjc2VjdGlvbldyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveCBbKG1vZGVsKV09XCJmb3JtUmVzcG9uc2UuaXNGaW5hbFwiIFtsYWJlbF09XCInREVGSU5JVElWRScgfCBzaGFyZWRMb2NhbGl6ZVwiPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9jby1kaWFsb2c+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyVGVtcGxhdGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwiZm9ybS5mb3JtTmFtZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QYXBlcmNsaXBSZWd1bGFyKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiAoY2xpY2spPVwibWVyZ2UoKVwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ2hlY2tEdW90b25lKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8Y28tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5Dcm9zc1NraW5ueSlcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclVzZXJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1RdWVzdGlvblR5cGU6IHR5cGVvZiBGb3JtUXVlc3Rpb25UeXBlID0gRm9ybVF1ZXN0aW9uVHlwZTtcclxuICBwdWJsaWMgcmVhZG9ubHkgVGFibGVOYW1lOiB0eXBlb2YgVGFibGVOYW1lID0gVGFibGVOYW1lO1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIEljb24gPSBJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93UG9wdXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGRvY3VtZW50czogQ29Eb2N1bWVudFtdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2Zvcm06IEZvcm07XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JtKGZvcm06IEZvcm0pIHtcclxuICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xyXG4gICAgdGhpcy5fcHJlcGFyZU5ld0Zvcm0oKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICB1c2VyRm9ybTogRm9ybVJlc3BvbnNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyB0YWJsZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBrZXk6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW5hYmxlUXVlc3Rpb25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNhbmNlbEZvcm06IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHNhdmVGb3JtOiBFdmVudEVtaXR0ZXI8Rm9ybVJlc3BvbnNlPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybVJlc3BvbnNlPigpO1xyXG5cclxuICBwdWJsaWMgY2xvbmVGb3JtOiBGb3JtID0gTlVMTF9GT1JNX0ZVTExfT0JKRUNUO1xyXG4gIHB1YmxpYyBmb3JtUmVzcG9uc2U6IEZvcm1SZXNwb25zZTtcclxuXHJcbiAgcHVibGljIGFjdGl2ZVF1ZXN0aW9uOiBGb3JtUXVlc3Rpb247XHJcbiAgcHVibGljIGdvdG9RdWVzdGlvbjogbnVtYmVyO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLWZvcm0tYnVpbGRlci11c2VyLWZvcm0nKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfcHJvbXB0U2VydmljZTogUHJvbXB0U2VydmljZSxcclxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkQ29ubmVjdG9yU2VydmljZTogU2hhcmVkQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHB1YmxpYyBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2RldGVjdG9yUmVmID0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGVuYWJsZWROZXh0UXVlc3Rpb24ocXVlc3Rpb246IEZvcm1RdWVzdGlvbiwgYW5zd2VyPzogRm9ybVF1ZXN0aW9uQW5zd2VyIHwgbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVF1ZXN0aW9uID0gcXVlc3Rpb247XHJcbiAgICBpZiAodHlwZW9mIGFuc3dlciA9PT0gJ251bWJlcicpIHtcclxuICAgICAgYW5zd2VyID0gcXVlc3Rpb24uZm9ybVF1ZXN0aW9uQW5zd2Vycy5maW5kKGEgPT4gYS5hbnN3ZXJJZCA9PT0gYW5zd2VyKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGdvdG9RdWVzdGlvbjogbnVtYmVyID0gYW5zd2VyID8gYW5zd2VyLmdvdG9RdWVzdGlvbklkIDogcXVlc3Rpb24uZ290b1F1ZXN0aW9uSWQ7XHJcbiAgICBjb25zdCBjdXJyZW50SW5kZXg6IG51bWJlciA9IHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9ucy5maW5kSW5kZXgocSA9PiBxLnF1ZXN0aW9uSWQgPT09IHF1ZXN0aW9uLnF1ZXN0aW9uSWQpO1xyXG4gICAgbGV0IG5leHRRdWVzdGlvbjogRm9ybVF1ZXN0aW9uID0gdGhpcy5jbG9uZUZvcm0ucXVlc3Rpb25zW2N1cnJlbnRJbmRleCArIDFdO1xyXG4gICAgaWYgKGdvdG9RdWVzdGlvbikge1xyXG4gICAgICBuZXh0UXVlc3Rpb24gPSB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnMuZmluZChxID0+IHEucXVlc3Rpb25JZCA9PT0gZ290b1F1ZXN0aW9uKTtcclxuICAgIH1cclxuICAgIGlmIChuZXh0UXVlc3Rpb24pIHtcclxuICAgICAgbmV4dFF1ZXN0aW9uLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IG5leHRRdWVzdGlvbi5zZXF1ZW5jZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZ290b1F1ZXN0aW9uID0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGFzeW5jIG9wZW5Gb3JtV3JpdGVhYmxlKGZvcm1JZDogbnVtYmVyLCBmb3JtUmVzcG9uc2VJZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgLy9cclxuICAvLyAgIGNvbnN0IGlzTG9ja2VkU3VjY2VzZnVsbHk6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLl9mb3JtUmVwby5sb2NrRm9ybVJlc3BvbnNlKGZvcm1SZXNwb25zZUlkKTtcclxuICAvL1xyXG4gIC8vICAgaWYgKCFpc0xvY2tlZFN1Y2Nlc2Z1bGx5KSB7XHJcbiAgLy8gICAgIHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbihcIk1FU1NBR0VfUkVTT1VSQ0VfQlVTWVwiKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuZm9ybSA9IGF3YWl0IHRoaXMuX2Zvcm1SZXBvLmdldEZvcm0oZm9ybUlkKTtcclxuICAvLyAgICAgdGhpcy51c2VyRm9ybSA9IGF3YWl0IHRoaXMuX2Zvcm1SZXBvLmdldEZvcm1SZXNwb25zZShmb3JtUmVzcG9uc2VJZCk7XHJcbiAgLy8gICAgIHRoaXMuX3ByZXBhcmVFeGlzdGluZ0Zvcm0oKTtcclxuICAvLyAgICAgdGhpcy5zaG93KCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBwdWJsaWMgb25WYWxpZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2F2ZUZvcm0ubmV4dCh0aGlzLmZvcm1SZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2FuY2VsRm9ybSgpOiB2b2lkIHtcclxuICAgIC8vIGlmICh0aGlzLnVzZXJGb3JtICYmIHRoaXMudXNlckZvcm0ucmVzcG9uc2VJZCkge1xyXG4gICAgLy8gICB0aGlzLl9mb3JtUmVwby51bmxvY2tGb3JtUmVzcG9uc2UodGhpcy51c2VyRm9ybS5yZXNwb25zZUlkKTtcclxuICAgIC8vIH1cclxuICAgIHRoaXMuZm9ybSA9IE5VTExfRk9STV9GVUxMX09CSkVDVDtcclxuICAgIHRoaXMuY2FuY2VsRm9ybS5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlTXVsdGlwbGVPcHRpb24oaWQ6IHN0cmluZywgZm9ybVJlc3BvbnNlOiBGb3JtUXVlc3Rpb25SZXNwb25zZSwgYWRkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXNwb25zZUxpc3Q6IHN0cmluZ1tdID0gZm9ybVJlc3BvbnNlLnJlc3BvbnNlID8gZm9ybVJlc3BvbnNlLnJlc3BvbnNlLnNwbGl0KCcsJykgOiBbXTtcclxuICAgIGlmIChhZGQpIHtcclxuICAgICAgcmVzcG9uc2VMaXN0LnB1c2goaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzcG9uc2VMaXN0LnNwbGljZShyZXNwb25zZUxpc3QuaW5kZXhPZihpZCksIDEpO1xyXG4gICAgfVxyXG4gICAgZm9ybVJlc3BvbnNlLnJlc3BvbnNlID0gcmVzcG9uc2VMaXN0LnRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlTG92T3B0aW9uKGZvcm1SZXNwb25zZTogRm9ybVF1ZXN0aW9uUmVzcG9uc2UsIHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICghdmFsdWUpIHtcclxuICAgICAgZm9ybVJlc3BvbnNlLnJlc3BvbnNlID0gdmFsdWUudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VUaW1lKGZvcm1SZXNwb25zZTogRm9ybVF1ZXN0aW9uUmVzcG9uc2UsIHRpbWU6IERhdGUpOiB2b2lkIHtcclxuICAgIGZvcm1SZXNwb25zZS50aW1lUmVzcG9uc2UgPSB0aW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93UG9wdXAgPSBmYWxzZTtcclxuICAgIHRoaXMuX2RldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93UG9wdXAgPSB0cnVlO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50RGVsZXRlZChkb2M6IENvRG9jdW1lbnQpOiB2b2lkIHtcclxuICAgIEFycmF5VXRpbHMuUmVtb3ZlRWxlbWVudChkb2MsIHRoaXMuZm9ybVJlc3BvbnNlLmRvY3VtZW50cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnRDaGFuZ2VkKGRvYzogQ29Eb2N1bWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzLnB1c2goZG9jKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudHNBZGRlZChkb2NzOiBDb0RvY3VtZW50W10pOiB2b2lkIHtcclxuICAgIGRvY3MuZm9yRWFjaCgoZG9jdW1lbnQ6IENvRG9jdW1lbnQpID0+IHtcclxuICAgICAgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzLnB1c2goZG9jdW1lbnQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9wcmVwYXJlTmV3Rm9ybSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuY2xvbmVGb3JtID0gPEZvcm0+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRm9ybSwgdGhpcy5mb3JtKTtcclxuICAgIGlmICghdGhpcy5mb3JtUmVzcG9uc2U/LmZvcm1JZCkge1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZSA9IDxGb3JtUmVzcG9uc2U+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRm9ybVJlc3BvbnNlLCB0aGlzLnVzZXJGb3JtKTtcclxuICAgICAgdGhpcy5mb3JtUmVzcG9uc2UuZm9ybUlkID0gdGhpcy5mb3JtLmZvcm1JZDtcclxuICAgICAgdGhpcy5mb3JtUmVzcG9uc2UudGFibGUgPSB0aGlzLnRhYmxlO1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS5rZXkgPSB0aGlzLmtleTtcclxuICAgIH1cclxuXHJcbiAgICBGb3JtVXRpbHMuTWVyZ2VSZXNwb25zZVdpdGhGb3JtKHRoaXMuY2xvbmVGb3JtLCB0aGlzLmZvcm1SZXNwb25zZSk7XHJcbiAgICBpZiAodGhpcy5lbmFibGVRdWVzdGlvbnMpIHtcclxuICAgICAgdGhpcy5fZW5hYmxlUXVlc3Rpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRXhpc3RpbmdGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbG9uZUZvcm0gPSA8Rm9ybT50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShGb3JtLCB0aGlzLmZvcm0pO1xyXG4gICAgdGhpcy5mb3JtUmVzcG9uc2UgPSA8Rm9ybVJlc3BvbnNlPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEZvcm1SZXNwb25zZSwgdGhpcy51c2VyRm9ybSk7XHJcbiAgICBGb3JtVXRpbHMuTWVyZ2VSZXNwb25zZVdpdGhGb3JtKHRoaXMuY2xvbmVGb3JtLCB0aGlzLmZvcm1SZXNwb25zZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZW5hYmxlUXVlc3Rpb25zKSB7XHJcbiAgICAgIHRoaXMuX2VuYWJsZVF1ZXN0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5fbG9hZERvY3MoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2VuYWJsZVF1ZXN0aW9ucygpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY3VycmVudEluZGV4IGluIHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9ucykge1xyXG4gICAgICBpZiAodGhpcy5jbG9uZUZvcm0ucXVlc3Rpb25zW2N1cnJlbnRJbmRleF0pIHtcclxuICAgICAgICBjb25zdCBuZXh0UXVlc3Rpb246IEZvcm1RdWVzdGlvbiA9IHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9uc1tjdXJyZW50SW5kZXhdO1xyXG4gICAgICAgIGlmIChuZXh0UXVlc3Rpb24pIHtcclxuICAgICAgICAgIG5leHRRdWVzdGlvbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuZ290b1F1ZXN0aW9uID0gbmV4dFF1ZXN0aW9uLnNlcXVlbmNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIHByaXZhdGUgX2xvYWREb2NzKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzLmZvckVhY2goKGRvYzogQ29Eb2N1bWVudCkgPT4ge1xyXG4gIC8vICAgICBpZiAoZG9jLmRvY3VtZW50SWQgJiYgIWRvYy5kb2N1bWVudEJvZHkpIHtcclxuICAvLyAgICAgICAvLyB0aGlzLl9nZW5lcmFsUmVwby5nZXREb2N1bWVudENvbnRlbnQoZG9jKS50aGVuKChjb250ZW50OiBzdHJpbmcpID0+IHtcclxuICAvLyAgICAgICAvLyAgIGRvYy5kb2N1bWVudEJvZHkgPSBjb250ZW50O1xyXG4gIC8vICAgICAgIC8vIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBtZXJnZSgpIHtcclxuICAgIEZvcm1VdGlscy5NZXJnZVJlc3BvbnNlV2l0aEZvcm0odGhpcy5jbG9uZUZvcm0sIHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
348
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLXVzZXItZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWRjb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWJ1aWxkZXIvZm9ybS1idWlsZGVyLXVzZXItZm9ybS9mb3JtLWJ1aWxkZXItdXNlci1mb3JtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQzVFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUV4RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUk1RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sK0RBQStELENBQUM7QUFDcEcsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxF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QyxpQ0FBaUM7O0FBdkI5QztJQURDLFlBQVksRUFBRTs4REFDa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybVF1ZXN0aW9uVHlwZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS9mb3JtLXF1ZXN0aW9uLnR5cGUnO1xyXG5pbXBvcnQge1RhYmxlTmFtZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvZW51bS90YWJsZS1uYW1lLmVudW0nO1xyXG5pbXBvcnQge0Zvcm19IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2Zvcm0uYm8nO1xyXG5pbXBvcnQge0Zvcm1SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7SW5wdXRCb29sZWFufSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3InO1xyXG5pbXBvcnQge0Zvcm1RdWVzdGlvbn0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1xdWVzdGlvbi5ibyc7XHJcbmltcG9ydCB7TlVMTF9GT1JNX0ZVTExfT0JKRUNUfSBmcm9tICcuLi8uLi8uLi9tb2RlbC91dGlsL2Zvcm1zLW51bGwtb2JqZWN0JztcclxuaW1wb3J0IHtGb3JtUXVlc3Rpb25BbnN3ZXJ9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2Zvcm0tcXVlc3Rpb24tYW5zd2VyLmJvJztcclxuaW1wb3J0IHtGb3JtUXVlc3Rpb25SZXNwb25zZX0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvZm9ybS1xdWVzdGlvbi1yZXNwb25zZS5ibyc7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQuYm8nO1xyXG5pbXBvcnQge0FycmF5VXRpbHN9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FycmF5LXV0aWxzJztcclxuaW1wb3J0IHtCdXNpbmVzc09iamVjdEZhY3Rvcnl9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL3NlcnZpY2UvYnVzaW5lc3Mtb2JqZWN0LWZhY3RvcnknO1xyXG5pbXBvcnQge0Zvcm1VdGlsc30gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZm9ybS11dGlscyc7XHJcbmltcG9ydCB7SWNvbn0gZnJvbSAnLi4vLi4vLi4vZW51bS9pY29uLmVudW0nO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtVc2VyRm9ybU1vZGV9IGZyb20gJy4uLy4uLy4uL2VudW0vdXNlci1mb3JtLW1vZGUuZW51bSc7XHJcbmltcG9ydCB7U2hhcmVkQ29ubmVjdG9yU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zaGFyZWQtY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge0ZpbGVzVXBsb2FkQ29tcG9uZW50fSBmcm9tICcuLi8uLi9maWxlcy11cGxvYWQvZmlsZXMtdXBsb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UHJvbXB0U2VydmljZX0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2NvLWZvcm0tYnVpbGRlci11c2VyLWZvcm0nLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxjby1kaWFsb2cgW2hlYWRlclRlbXBsYXRlXT1cImhlYWRlclRlbXBsYXRlXCIgW2Zvb3RlclRlbXBsYXRlXT1cImZvb3RlclRlbXBsYXRlXCIgKGNsb3NlQ2xpY2spPVwiaGFuZGxlQ2FuY2VsRm9ybSgpXCIgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24td3JhcHBlciBtaW5pLXNjcm9sbGJhclwiICNzZWN0aW9uV3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWZvcm0gI2NvRm9ybSAodmFsaWRTdWJtaXQpPVwib25WYWxpZCgpXCIgW2tlZXBJblZpZXddPVwic2VjdGlvbldyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGNsb25lRm9ybS5xdWVzdGlvbnM7IGxldCBpbmRleCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuYWN0aXZlXT1cImZvcm0ucXVlc3Rpb25zLmluZGV4T2YocXVlc3Rpb24pID09PSBmb3JtLnF1ZXN0aW9ucy5pbmRleE9mKGFjdGl2ZVF1ZXN0aW9uKVwiIGNsYXNzPVwiaGVhZGVycy1yb3dcIiBmeExheW91dD1cImNvbHVtblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0tcnVicmljLWhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRDb250ZW50XT1cInF1ZXN0aW9uLnNlcXVlbmNlKyAnLiAnICsgKHF1ZXN0aW9uLnF1ZXN0aW9uKVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFuc3dlci13cmFwcGVyXCIgW25nU3dpdGNoXT1cInF1ZXN0aW9uLnF1ZXN0aW9uVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXRleHQgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuU2hvcnRBbnN3ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10ZXh0YXJlYSAqbmdTd2l0Y2hDYXNlPVwiZm9ybVF1ZXN0aW9uVHlwZS5Mb25nQW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC10ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTXVsdGlwbGVDaG9pY2VTaW5nbGVPcHRpb25cIlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28tZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIHF1ZXN0aW9uLmZvcm1RdWVzdGlvbkFuc3dlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJhbnN3ZXIuYW5zd2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwiYW5zd2VyLmFuc3dlcklkID09IHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJxdWVzdGlvbi5kaXNhYmxlZCAmJiBpbmRleCAhPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2UgPSBhbnN3ZXIuYW5zd2VySWQgKyAnJzsgZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbiwgYW5zd2VyKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NvLWZvcm0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTXVsdGlwbGVDaG9pY2VNdWx0aXBsZU9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y28taW5wdXQtY2hlY2tib3ggKm5nRm9yPVwibGV0IGFuc3dlciBvZiBxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImFuc3dlci5hbnN3ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZWxdPVwicXVlc3Rpb24ucmVzcG9uc2VRdWVzdGlvbi5yZXNwb25zZSA/IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlLmluZGV4T2YoYW5zd2VyLmFuc3dlcklkKSA+IC0xIDogXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlTXVsdGlwbGVPcHRpb24oYW5zd2VyLmFuc3dlcklkLCBxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLCAkZXZlbnQpOyBlbmFibGVkTmV4dFF1ZXN0aW9uKHF1ZXN0aW9uLCBhbnN3ZXIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWxpc3Qtb2YtdmFsdWVzICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLkRyb3BEb3duTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInF1ZXN0aW9uLmZvcm1RdWVzdGlvbkFuc3dlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5RmllbGRdPVwiJ2Fuc3dlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJxdWVzdGlvbi5tYW5kYXRvcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiY2hhbmdlTG92T3B0aW9uKHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24sICRldmVudC5yZXNwb25zZUlkKTsgZW5hYmxlZE5leHRRdWVzdGlvbihxdWVzdGlvbiwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jby1saXN0LW9mLXZhbHVlcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby11c2VyLWZvcm0taW5wdXQtc2NhbGUgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuTGluZWFyU2NhbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwicXVlc3Rpb24ucXVlc3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCInYW5zd2VySWQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24ucmVzcG9uc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2NhbGVNb2RlbF09XCJxdWVzdGlvbi5mb3JtUXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uRmllbGRdPVwiJ2Fuc3dlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLnJlc3BvbnNlID0gJGV2ZW50LmFuc3dlcklkICsgJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28tdXNlci1mb3JtLWlucHV0LXNjYWxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWRhdGUgKm5nU3dpdGNoQ2FzZT1cImZvcm1RdWVzdGlvblR5cGUuRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJxdWVzdGlvbi5yZXNwb25zZVF1ZXN0aW9uLmRhdGVSZXNwb25zZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicXVlc3Rpb24ubWFuZGF0b3J5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uZGlzYWJsZWQgJiYgaW5kZXggIT09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY28taW5wdXQtZGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjby1pbnB1dC10aW1lICpuZ1N3aXRjaENhc2U9XCJmb3JtUXVlc3Rpb25UeXBlLlRpbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVsXT1cInF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24/LnRpbWVSZXNwb25zZSA/PyAxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJjaGFuZ2VUaW1lKHF1ZXN0aW9uLnJlc3BvbnNlUXVlc3Rpb24sICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInF1ZXN0aW9uLm1hbmRhdG9yeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmRpc2FibGVkICYmIGluZGV4ICE9PSAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2NvLWlucHV0LXRpbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3RvLXF1ZXN0aW9uXCIgKm5nSWY9XCJxdWVzdGlvbiA9PT0gYWN0aXZlUXVlc3Rpb24gJiYgZ290b1F1ZXN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCIoJ0dPVE9fTkVYVF9RVUVTVElPTicgfCBzaGFyZWRMb2NhbGl6ZSkgKyAnICcgKyBnb3RvUXVlc3Rpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8L2NvLWZvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24td3JhcHBlciBtaW5pLXNjcm9sbGJhclwiICNzZWN0aW9uV3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94IFttb2RlbF09XCJmb3JtUmVzcG9uc2U/LmlzRmluYWxcIiAobW9kZWxDaGFuZ2UpPVwiaGFuZGxlRGVmaW5pdGl2ZUNoYW5nZSgkZXZlbnQpXCIgW2xhYmVsXT1cIidERUZJTklUSVZFJyB8IHNoYXJlZExvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2NvLWRpYWxvZz5cclxuICAgICAgPG5nLXRlbXBsYXRlICNoZWFkZXJUZW1wbGF0ZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJmb3JtPy5mb3JtTmFtZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Zvb3RlclRlbXBsYXRlPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFjaG1lbnRzLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGNvLWljb24gW2ljb25EYXRhXT1cImljb25DYWNoZVNlcnZpY2UuZ2V0SWNvbihpY29ucy5QYXBlcmNsaXBSZWd1bGFyKVwiIChjbGljayk9XCJoYW5kbGVPcGVuRmlsZXNVcGxvYWQoKVwiPjwvY28taWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlLypcIiBjYXB0dXJlPVwiZW52aXJvbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxjby1maWxlcy11cGxvYWQgI2ZpbGVzVXBsb2FkQ29tcG9uZW50IFtkb2N1bWVudHNdPVwiZm9ybVJlc3BvbnNlLmRvY3VtZW50c1wiIGNsYXNzPVwiY28tZmlsZXMtdXBsb2FkXCI+PC9jby1maWxlcy11cGxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgKGNsaWNrKT1cImNvbW1pdFVzZXJGb3JtKClcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkNoZWNrRHVvdG9uZSlcIj48L2NvLWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGNvLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuQ3Jvc3NTa2lubnkpXCIgKGNsaWNrKT1cImhhbmRsZUNhbmNlbEZvcm0oKVwiPjwvY28tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyVXNlckZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybVF1ZXN0aW9uVHlwZTogdHlwZW9mIEZvcm1RdWVzdGlvblR5cGUgPSBGb3JtUXVlc3Rpb25UeXBlO1xyXG4gIHB1YmxpYyByZWFkb25seSBUYWJsZU5hbWU6IHR5cGVvZiBUYWJsZU5hbWUgPSBUYWJsZU5hbWU7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XHJcblxyXG4gIHB1YmxpYyBtb2RlOiBVc2VyRm9ybU1vZGUgPSBVc2VyRm9ybU1vZGUuQ3JlYXRlO1xyXG4gIHB1YmxpYyBkb2N1bWVudHM6IENvRG9jdW1lbnRbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9mb3JtOiBGb3JtO1xyXG5cclxuICBAVmlld0NoaWxkKCdmaWxlc1VwbG9hZENvbXBvbmVudCcpXHJcbiAgcHVibGljIGZpbGVzVXBsb2FkQ29tcG9uZW50OiBGaWxlc1VwbG9hZENvbXBvbmVudDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1BvcHVwOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmb3JtKGZvcm06IEZvcm0pIHtcclxuICAgIHRoaXMuX2Zvcm0gPSBmb3JtO1xyXG4gICAgdGhpcy5fcHJlcGFyZU5ld0Zvcm0oKTtcclxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZm9ybSgpOiBGb3JtIHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JtO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdXNlckZvcm06IEZvcm1SZXNwb25zZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgdGFibGU6IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMga2V5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGVuYWJsZVF1ZXN0aW9uczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBjYW5jZWxGb3JtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBzYXZlRm9ybTogRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0ZU5ld0Zvcm1SZXNwb25zZTogRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1SZXNwb25zZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGxvYWREb2N1bWVudHNcclxuXHJcbiAgcHVibGljIGNsb25lRm9ybTogRm9ybSA9IE5VTExfRk9STV9GVUxMX09CSkVDVDtcclxuICBwdWJsaWMgZm9ybVJlc3BvbnNlOiBGb3JtUmVzcG9uc2U7XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVRdWVzdGlvbjogRm9ybVF1ZXN0aW9uO1xyXG4gIHB1YmxpYyBnb3RvUXVlc3Rpb246IG51bWJlcjtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby1mb3JtLWJ1aWxkZXItdXNlci1mb3JtJylcclxuICBwdWJsaWMgc2hvd0NsYXNzKCkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2RldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgX2JvRmFjdG9yeTogQnVzaW5lc3NPYmplY3RGYWN0b3J5LFxyXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfc2hhcmVkQ29ubmVjdG9yU2VydmljZTogU2hhcmVkQ29ubmVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgX3Byb21wdFNlcnZpY2U6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgaWNvbkNhY2hlU2VydmljZTogSWNvbkNhY2hlU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXRlY3RvclJlZiA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbmFibGVkTmV4dFF1ZXN0aW9uKHF1ZXN0aW9uOiBGb3JtUXVlc3Rpb24sIGFuc3dlcj86IEZvcm1RdWVzdGlvbkFuc3dlciB8IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5hY3RpdmVRdWVzdGlvbiA9IHF1ZXN0aW9uO1xyXG4gICAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09ICdudW1iZXInKSB7XHJcbiAgICAgIGFuc3dlciA9IHF1ZXN0aW9uLmZvcm1RdWVzdGlvbkFuc3dlcnMuZmluZChhID0+IGEuYW5zd2VySWQgPT09IGFuc3dlcik7XHJcbiAgICB9XHJcbiAgICBjb25zdCBnb3RvUXVlc3Rpb246IG51bWJlciA9IGFuc3dlciA/IGFuc3dlci5nb3RvUXVlc3Rpb25JZCA6IHF1ZXN0aW9uLmdvdG9RdWVzdGlvbklkO1xyXG4gICAgY29uc3QgY3VycmVudEluZGV4OiBudW1iZXIgPSB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnMuZmluZEluZGV4KHEgPT4gcS5xdWVzdGlvbklkID09PSBxdWVzdGlvbi5xdWVzdGlvbklkKTtcclxuICAgIGxldCBuZXh0UXVlc3Rpb246IEZvcm1RdWVzdGlvbiA9IHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9uc1tjdXJyZW50SW5kZXggKyAxXTtcclxuICAgIGlmIChnb3RvUXVlc3Rpb24pIHtcclxuICAgICAgbmV4dFF1ZXN0aW9uID0gdGhpcy5jbG9uZUZvcm0ucXVlc3Rpb25zLmZpbmQocSA9PiBxLnF1ZXN0aW9uSWQgPT09IGdvdG9RdWVzdGlvbik7XHJcbiAgICB9XHJcbiAgICBpZiAobmV4dFF1ZXN0aW9uKSB7XHJcbiAgICAgIG5leHRRdWVzdGlvbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5nb3RvUXVlc3Rpb24gPSBuZXh0UXVlc3Rpb24uc2VxdWVuY2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblZhbGlkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zYXZlRm9ybS5uZXh0KHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYW5jZWxGb3JtKCk6IHZvaWQge1xyXG4gICAgLy8gaWYgKHRoaXMudXNlckZvcm0gJiYgdGhpcy51c2VyRm9ybS5yZXNwb25zZUlkKSB7XHJcbiAgICAvLyAgIHRoaXMuX2Zvcm1SZXBvLnVubG9ja0Zvcm1SZXNwb25zZSh0aGlzLnVzZXJGb3JtLnJlc3BvbnNlSWQpO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5mb3JtID0gTlVMTF9GT1JNX0ZVTExfT0JKRUNUO1xyXG4gICAgdGhpcy5jYW5jZWxGb3JtLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VNdWx0aXBsZU9wdGlvbihpZDogc3RyaW5nLCBmb3JtUmVzcG9uc2U6IEZvcm1RdWVzdGlvblJlc3BvbnNlLCBhZGQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHJlc3BvbnNlTGlzdDogc3RyaW5nW10gPSBmb3JtUmVzcG9uc2UucmVzcG9uc2UgPyBmb3JtUmVzcG9uc2UucmVzcG9uc2Uuc3BsaXQoJywnKSA6IFtdO1xyXG4gICAgaWYgKGFkZCkge1xyXG4gICAgICByZXNwb25zZUxpc3QucHVzaChpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNwb25zZUxpc3Quc3BsaWNlKHJlc3BvbnNlTGlzdC5pbmRleE9mKGlkKSwgMSk7XHJcbiAgICB9XHJcbiAgICBmb3JtUmVzcG9uc2UucmVzcG9uc2UgPSByZXNwb25zZUxpc3QudG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VMb3ZPcHRpb24oZm9ybVJlc3BvbnNlOiBGb3JtUXVlc3Rpb25SZXNwb25zZSwgdmFsdWU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICBmb3JtUmVzcG9uc2UucmVzcG9uc2UgPSB2YWx1ZS50b1N0cmluZygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNoYW5nZVRpbWUoZm9ybVJlc3BvbnNlOiBGb3JtUXVlc3Rpb25SZXNwb25zZSwgdGltZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgZm9ybVJlc3BvbnNlLnRpbWVSZXNwb25zZSA9IHRpbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRG9jdW1lbnREZWxldGVkKGRvYzogQ29Eb2N1bWVudCk6IHZvaWQge1xyXG4gICAgQXJyYXlVdGlscy5SZW1vdmVFbGVtZW50KGRvYywgdGhpcy5mb3JtUmVzcG9uc2UuZG9jdW1lbnRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVEb2N1bWVudENoYW5nZWQoZG9jOiBDb0RvY3VtZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1SZXNwb25zZS5kb2N1bWVudHMucHVzaChkb2MpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURvY3VtZW50c0FkZGVkKGRvY3M6IENvRG9jdW1lbnRbXSk6IHZvaWQge1xyXG4gICAgZG9jcy5mb3JFYWNoKChkb2N1bWVudDogQ29Eb2N1bWVudCkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS5kb2N1bWVudHMucHVzaChkb2N1bWVudCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX3ByZXBhcmVOZXdGb3JtKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5jbG9uZUZvcm0gPSA8Rm9ybT50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShGb3JtLCB0aGlzLmZvcm0pO1xyXG4gICAgaWYgKCF0aGlzLmZvcm1SZXNwb25zZT8uZm9ybUlkKSB7XHJcbiAgICAgIHRoaXMuZm9ybVJlc3BvbnNlID0gPEZvcm1SZXNwb25zZT50aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShGb3JtUmVzcG9uc2UsIHRoaXMudXNlckZvcm0pO1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS5mb3JtSWQgPSB0aGlzLmZvcm0uZm9ybUlkO1xyXG4gICAgICB0aGlzLmZvcm1SZXNwb25zZS50YWJsZSA9IHRoaXMudGFibGU7XHJcbiAgICAgIHRoaXMuZm9ybVJlc3BvbnNlLmtleSA9IHRoaXMua2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5tb2RlID0gVXNlckZvcm1Nb2RlLkVkaXQ7XHJcbiAgICAgIC8vIGNvbnN0IGlzTG9ja2VkU3VjY2VzZnVsbHk6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLl9mb3JtUmVwby5sb2NrRm9ybVJlc3BvbnNlKGZvcm1SZXNwb25zZUlkKTtcclxuICAgICAgdGhpcy5fbG9hZERvY3MoKTtcclxuICAgICAgdGhpcy5fcHJlcGFyZUV4aXN0aW5nRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIEZvcm1VdGlscy5NZXJnZVJlc3BvbnNlV2l0aEZvcm0odGhpcy5jbG9uZUZvcm0sIHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuICAgIGlmICh0aGlzLmVuYWJsZVF1ZXN0aW9ucykge1xyXG4gICAgICB0aGlzLl9lbmFibGVRdWVzdGlvbnMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3ByZXBhcmVFeGlzdGluZ0Zvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb25lRm9ybSA9IDxGb3JtPnRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEZvcm0sIHRoaXMuZm9ybSk7XHJcbiAgICB0aGlzLmZvcm1SZXNwb25zZSA9IDxGb3JtUmVzcG9uc2U+dGhpcy5fYm9GYWN0b3J5Lm1ha2VXaXRoUmF3QmFja2VuZERhdGEoRm9ybVJlc3BvbnNlLCB0aGlzLnVzZXJGb3JtKTtcclxuICAgIEZvcm1VdGlscy5NZXJnZVJlc3BvbnNlV2l0aEZvcm0odGhpcy5jbG9uZUZvcm0sIHRoaXMuZm9ybVJlc3BvbnNlKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbmFibGVRdWVzdGlvbnMpIHtcclxuICAgICAgdGhpcy5fZW5hYmxlUXVlc3Rpb25zKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbmFibGVRdWVzdGlvbnMoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRJbmRleCBpbiB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnMpIHtcclxuICAgICAgaWYgKHRoaXMuY2xvbmVGb3JtLnF1ZXN0aW9uc1tjdXJyZW50SW5kZXhdKSB7XHJcbiAgICAgICAgY29uc3QgbmV4dFF1ZXN0aW9uOiBGb3JtUXVlc3Rpb24gPSB0aGlzLmNsb25lRm9ybS5xdWVzdGlvbnNbY3VycmVudEluZGV4XTtcclxuICAgICAgICBpZiAobmV4dFF1ZXN0aW9uKSB7XHJcbiAgICAgICAgICBuZXh0UXVlc3Rpb24uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmdvdG9RdWVzdGlvbiA9IG5leHRRdWVzdGlvbi5zZXF1ZW5jZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5nb3RvUXVlc3Rpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkRG9jcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZm9ybVJlc3BvbnNlLmRvY3VtZW50cy5mb3JFYWNoKChkb2M6IENvRG9jdW1lbnQpID0+IHtcclxuICAgICAgaWYgKGRvYy5kb2N1bWVudElkICYmICFkb2MuZG9jdW1lbnRCb2R5KSB7XHJcbiAgICAgICAgdGhpcy5fc2hhcmVkQ29ubmVjdG9yU2VydmljZS5nZXREb2N1bWVudENvbnRlbnQoZG9jLmRvY3VtZW50SWQpLnRoZW4oKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgZG9jLmRvY3VtZW50Qm9keSA9IGNvbnRlbnQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURlZmluaXRpdmVDaGFuZ2UoZGVmaW5pdGl2ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5mb3JtUmVzcG9uc2UuaXNGaW5hbCA9IGRlZmluaXRpdmU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29tbWl0VXNlckZvcm0oKSB7XHJcbiAgICBGb3JtVXRpbHMuTWVyZ2VSZXNwb25zZVdpdGhGb3JtKHRoaXMuY2xvbmVGb3JtLCB0aGlzLmZvcm1SZXNwb25zZSk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcclxuICAgICAgY2FzZSBVc2VyRm9ybU1vZGUuQ3JlYXRlOlxyXG4gICAgICAgIHRoaXMuX3NoYXJlZENvbm5lY3RvclNlcnZpY2UuaW5zZXJ0Rm9ybVJlc3BvbnNlKHRoaXMuZm9ybVJlc3BvbnNlKS50aGVuKChyZXNwb25zZTogRm9ybVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZihyZXNwb25zZSAmJiByZXNwb25zZS5yZXNwb25zZUlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUZvcm0ubmV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9wcm9tcHRTZXJ2aWNlLnNob3dFcnJvcignRVJST1JfU0FWSU5HX0ZPUk1fUkVTUE9OU0UnLCAnRVJST1JfU0FWSU5HX0ZPUk1fUkVTUE9OU0VfVElUTEUnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMuY3JlYXRlTmV3Rm9ybVJlc3BvbnNlLm5leHQodGhpcy5mb3JtUmVzcG9uc2UpO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIGNhc2UgVXNlckZvcm1Nb2RlLkVkaXQ6XHJcbiAgICAgICAgdGhpcy5fc2hhcmVkQ29ubmVjdG9yU2VydmljZS51cGRhdGVGb3JtUmVzcG9uc2UodGhpcy5mb3JtUmVzcG9uc2UpLnRoZW4oKHJlc3BvbnNlOiBGb3JtUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmKHJlc3BvbnNlICYmIHJlc3BvbnNlLnJlc3BvbnNlSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlRm9ybS5uZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Byb21wdFNlcnZpY2Uuc2hvd0Vycm9yKCdFUlJPUl9TQVZJTkdfRk9STV9SRVNQT05TRScsICdFUlJPUl9TQVZJTkdfRk9STV9SRVNQT05TRV9USVRMRScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlT3BlbkZpbGVzVXBsb2FkKCkge1xyXG4gICAgdGhpcy5maWxlc1VwbG9hZENvbXBvbmVudC5vcGVuRmlsZUJyb3dzZXIoKTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
package/esm2015/lib/components/send-method-dialog/components/pdf-preview/pdf-preview.component.js
CHANGED
|
@@ -4,6 +4,7 @@ import { IconCacheService } from "../../../../service/icon-cache.service";
|
|
|
4
4
|
export class PdfPreviewComponent {
|
|
5
5
|
constructor(iconCacheService) {
|
|
6
6
|
this.iconCacheService = iconCacheService;
|
|
7
|
+
this._waitingToShowDialog = false;
|
|
7
8
|
this.disablePdfPreview = false;
|
|
8
9
|
this.showFilePreview = new EventEmitter();
|
|
9
10
|
this.icons = Icon;
|
|
@@ -15,27 +16,35 @@ export class PdfPreviewComponent {
|
|
|
15
16
|
set pdfDoc(value) {
|
|
16
17
|
if (value !== this._pdfDoc) {
|
|
17
18
|
this._pdfDoc = value;
|
|
19
|
+
if (this._waitingToShowDialog) {
|
|
20
|
+
this._waitingToShowDialog = false;
|
|
21
|
+
this.showDialog = true;
|
|
22
|
+
}
|
|
18
23
|
}
|
|
19
24
|
}
|
|
20
25
|
get pdfDoc() {
|
|
21
26
|
return this._pdfDoc;
|
|
22
27
|
}
|
|
23
28
|
ngOnInit() {
|
|
29
|
+
//this.showFilePreview.emit(0);
|
|
30
|
+
}
|
|
31
|
+
dialogRequested() {
|
|
24
32
|
this.showFilePreview.emit(0);
|
|
33
|
+
this._waitingToShowDialog = true;
|
|
25
34
|
}
|
|
26
35
|
}
|
|
27
36
|
PdfPreviewComponent.decorators = [
|
|
28
37
|
{ type: Component, args: [{
|
|
29
38
|
selector: "co-pdf-preview",
|
|
30
|
-
template: `
|
|
31
|
-
<div class="pdf-preview-button" [class.disabled]="disablePdfPreview" (click)="
|
|
32
|
-
<co-icon [iconData]="iconCacheService.getIcon(icons.FileMagnifyingGlass)"></co-icon>
|
|
33
|
-
</div>
|
|
34
|
-
<co-preview-pdf-dialog
|
|
35
|
-
*ngIf="showDialog"
|
|
36
|
-
[pdfDoc]="pdfDoc"
|
|
37
|
-
(closePDFDialog)="showDialog = false">
|
|
38
|
-
</co-preview-pdf-dialog>
|
|
39
|
+
template: `
|
|
40
|
+
<div class="pdf-preview-button" [class.disabled]="disablePdfPreview" (click)="dialogRequested()">
|
|
41
|
+
<co-icon [iconData]="iconCacheService.getIcon(icons.FileMagnifyingGlass)"></co-icon>
|
|
42
|
+
</div>
|
|
43
|
+
<co-preview-pdf-dialog
|
|
44
|
+
*ngIf="showDialog"
|
|
45
|
+
[pdfDoc]="pdfDoc"
|
|
46
|
+
(closePDFDialog)="showDialog = false">
|
|
47
|
+
</co-preview-pdf-dialog>
|
|
39
48
|
`,
|
|
40
49
|
encapsulation: ViewEncapsulation.None
|
|
41
50
|
},] }
|
|
@@ -49,4 +58,4 @@ PdfPreviewComponent.propDecorators = {
|
|
|
49
58
|
disablePdfPreview: [{ type: Input }],
|
|
50
59
|
showFilePreview: [{ type: Output }]
|
|
51
60
|
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmLXByZXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2hhcmVkY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VuZC1tZXRob2QtZGlhbG9nL2NvbXBvbmVudHMvcGRmLXByZXZpZXcvcGRmLXByZXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQWdCeEUsTUFBTSxPQUFPLG1CQUFtQjtJQWlDOUIsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUExQjdDLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQWtCdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBR25DLG9CQUFlLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFFMUQsVUFBSyxHQUFnQixJQUFJLENBQUM7UUFDbkMsZUFBVSxHQUFZLEtBQUssQ0FBQztJQUVzQixDQUFDO0lBL0JuRCxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsSUFDSSxNQUFNLENBQUMsS0FBVTtRQUNuQixJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO2dCQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzthQUN4QjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBYUQsUUFBUTtRQUNOLCtCQUErQjtJQUNqQyxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0lBQ25DLENBQUM7OztZQXhERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtnQkFDMUIsUUFBUSxFQUFFOzs7Ozs7Ozs7R0FTVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBZk8sZ0JBQWdCOzs7d0JBaUJyQixXQUFXLFNBQUMsc0JBQXNCO3FCQVFsQyxLQUFLO2dDQWVMLEtBQUs7OEJBR0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SWNvbn0gZnJvbSBcIi4uLy4uLy4uLy4uL2VudW0vaWNvbi5lbnVtXCI7XG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gXCIuLi8uLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY28tcGRmLXByZXZpZXdcIixcbiAgdGVtcGxhdGU6IGBcbiAgICAgIDxkaXYgY2xhc3M9XCJwZGYtcHJldmlldy1idXR0b25cIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZVBkZlByZXZpZXdcIiAoY2xpY2spPVwiZGlhbG9nUmVxdWVzdGVkKClcIj5cbiAgICAgICAgICA8Y28taWNvbiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLkZpbGVNYWduaWZ5aW5nR2xhc3MpXCI+PC9jby1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgICA8Y28tcHJldmlldy1wZGYtZGlhbG9nXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd0RpYWxvZ1wiXG4gICAgICAgICAgICAgIFtwZGZEb2NdPVwicGRmRG9jXCJcbiAgICAgICAgICAgICAgKGNsb3NlUERGRGlhbG9nKT1cInNob3dEaWFsb2cgPSBmYWxzZVwiPlxuICAgICAgPC9jby1wcmV2aWV3LXBkZi1kaWFsb2c+XG4gIGAsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUGRmUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXBkZi1wcmV2aWV3XCIpXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIF9wZGZEb2M6IGFueTtcbiAgcHJpdmF0ZSBfd2FpdGluZ1RvU2hvd0RpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBwZGZEb2ModmFsdWU6IGFueSkge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fcGRmRG9jKSB7XG4gICAgICB0aGlzLl9wZGZEb2MgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLl93YWl0aW5nVG9TaG93RGlhbG9nKSB7XG4gICAgICAgIHRoaXMuX3dhaXRpbmdUb1Nob3dEaWFsb2cgPSBmYWxzZVxuICAgICAgICB0aGlzLnNob3dEaWFsb2cgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBwZGZEb2MoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcGRmRG9jO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVQZGZQcmV2aWV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzaG93RmlsZVByZXZpZXc6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgSWNvbiA9IEljb247XG4gIHB1YmxpYyBzaG93RGlhbG9nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGljb25DYWNoZVNlcnZpY2U6IEljb25DYWNoZVNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vdGhpcy5zaG93RmlsZVByZXZpZXcuZW1pdCgwKTtcbiAgfVxuXG4gIHB1YmxpYyBkaWFsb2dSZXF1ZXN0ZWQoKSB7XG4gICAgdGhpcy5zaG93RmlsZVByZXZpZXcuZW1pdCgwKTtcbiAgICB0aGlzLl93YWl0aW5nVG9TaG93RGlhbG9nID0gdHJ1ZTtcbiAgfVxufVxuIl19
|