@dignite-ng/expand.cms 3.0.0-rc.49 → 3.0.0
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/config/providers/route.provider.d.ts +2 -3
- package/esm2022/config/providers/route.provider.mjs +3 -4
- package/esm2022/lib/cms-routing.module.mjs +3 -3
- package/esm2022/lib/cms.module.mjs +4 -4
- package/esm2022/lib/components/admin/entries/create-or-edit-entries.component.mjs +31 -44
- package/esm2022/lib/components/admin/entries/create-or-update-entry-input-base.mjs +10 -2
- package/esm2022/lib/components/admin/entries/create.component.mjs +19 -57
- package/esm2022/lib/components/admin/entries/edit.component.mjs +28 -14
- package/esm2022/lib/components/admin/entries/entries.component.mjs +11 -16
- package/esm2022/lib/components/admin/fields/create-field.component.mjs +54 -54
- package/esm2022/lib/components/admin/fields/create-or-edit-field.component.mjs +44 -69
- package/esm2022/lib/components/admin/fields/edit-field.component.mjs +130 -73
- package/esm2022/lib/components/admin/fields/fields-form-config.mjs +50 -0
- package/esm2022/lib/components/admin/fields/fields-group.component.mjs +128 -0
- package/esm2022/lib/components/admin/fields/fields.component.mjs +61 -57
- package/esm2022/lib/components/admin/fields/index.mjs +3 -3
- package/esm2022/lib/components/admin/sections/create-or-edit-sections-modal.component.mjs +17 -15
- package/esm2022/lib/components/admin/sections/entry-types/create-or-edit.component.mjs +59 -86
- package/esm2022/lib/components/admin/sections/sections.component.mjs +11 -14
- package/esm2022/lib/components/dynamic-form/entry/entry-control.component.mjs +4 -4
- package/esm2022/lib/components/dynamic-form/entry/entry-search.component.mjs +8 -7
- package/esm2022/lib/components/dynamic-form/matrix/matrix-config.component.mjs +32 -23
- package/esm2022/lib/components/dynamic-form/matrix/matrix-control.component.mjs +26 -11
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +50 -26
- package/esm2022/lib/components/dynamic-form/table/table-control.component.mjs +10 -10
- package/esm2022/lib/components/dynamic-form/table/table-view.component.mjs +3 -2
- package/esm2022/lib/proxy/dignite/cms/admin/entries/entry-admin.service.mjs +2 -2
- package/esm2022/lib/proxy/dignite/cms/admin/entries/models.mjs +1 -1
- package/esm2022/lib/proxy/dignite/cms/admin/fields/models.mjs +1 -1
- package/esm2022/lib/proxy/dignite/cms/fields/models.mjs +1 -1
- package/esm2022/lib/proxy/dignite/cms/sections/models.mjs +1 -1
- package/esm2022/lib/resolvers/page-default-toolbar-actions.mjs +42 -37
- package/esm2022/lib/resolvers/table-default-entity-props.mjs +4 -4
- package/esm2022/lib/services/fields-data.service.mjs +100 -0
- package/esm2022/lib/services/form-controls.service.mjs +12 -10
- package/esm2022/lib/services/index.mjs +3 -4
- package/esm2022/lib/services/keys-convert-to-lowercase.service.mjs +40 -0
- package/fesm2022/dignite-ng-expand.cms-config.mjs +2 -3
- package/fesm2022/dignite-ng-expand.cms-config.mjs.map +1 -1
- package/fesm2022/dignite-ng-expand.cms.mjs +827 -814
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
- package/lib/cms.module.d.ts +2 -2
- package/lib/components/admin/entries/create-or-edit-entries.component.d.ts +5 -3
- package/lib/components/admin/entries/create-or-update-entry-input-base.d.ts +8 -1
- package/lib/components/admin/entries/create.component.d.ts +1 -2
- package/lib/components/admin/entries/edit.component.d.ts +1 -2
- package/lib/components/admin/entries/entries.component.d.ts +2 -1
- package/lib/components/admin/fields/create-field.component.d.ts +19 -22
- package/lib/components/admin/fields/create-or-edit-field.component.d.ts +20 -26
- package/lib/components/admin/fields/edit-field.component.d.ts +24 -30
- package/lib/components/admin/fields/fields-form-config.d.ts +19 -0
- package/lib/components/admin/fields/fields-group.component.d.ts +48 -0
- package/lib/components/admin/fields/fields.component.d.ts +18 -16
- package/lib/components/admin/fields/index.d.ts +1 -2
- package/lib/components/admin/sections/create-or-edit-sections-modal.component.d.ts +4 -1
- package/lib/components/admin/sections/entry-types/create-or-edit.component.d.ts +14 -9
- package/lib/components/admin/sections/sections.component.d.ts +1 -3
- package/lib/components/dynamic-form/matrix/matrix-config.component.d.ts +10 -4
- package/lib/components/dynamic-form/matrix/matrix-control.component.d.ts +7 -3
- package/lib/components/dynamic-form/table/table-config.component.d.ts +15 -5
- package/lib/components/dynamic-form/table/table-control.component.d.ts +3 -3
- package/lib/components/dynamic-form/table/table-view.component.d.ts +2 -1
- package/lib/proxy/dignite/cms/admin/entries/models.d.ts +0 -3
- package/lib/proxy/dignite/cms/admin/fields/models.d.ts +1 -1
- package/lib/proxy/dignite/cms/fields/models.d.ts +1 -1
- package/lib/proxy/dignite/cms/sections/models.d.ts +2 -2
- package/lib/resolvers/page-default-toolbar-actions.d.ts +9 -6
- package/lib/services/fields-data.service.d.ts +45 -0
- package/lib/services/form-controls.service.d.ts +3 -1
- package/lib/services/index.d.ts +2 -3
- package/lib/services/keys-convert-to-lowercase.service.d.ts +16 -0
- package/package.json +1 -1
- package/esm2022/lib/components/admin/fields/create-or-update-field-input-base.mjs +0 -18
- package/esm2022/lib/components/admin/fields/field-group.component.mjs +0 -144
- package/esm2022/lib/constants/styles.mjs +0 -19
- package/esm2022/lib/services/appent-content.mjs +0 -15
- package/esm2022/lib/services/cms-api.service.mjs +0 -94
- package/esm2022/lib/services/cms.service.mjs +0 -22
- package/esm2022/lib/services/field-abstracts.service.mjs +0 -48
- package/lib/components/admin/fields/create-or-update-field-input-base.d.ts +0 -15
- package/lib/components/admin/fields/field-group.component.d.ts +0 -58
- package/lib/constants/styles.d.ts +0 -2
- package/lib/services/appent-content.d.ts +0 -1
- package/lib/services/cms-api.service.d.ts +0 -23
- package/lib/services/cms.service.d.ts +0 -10
- package/lib/services/field-abstracts.service.d.ts +0 -20
|
@@ -8,8 +8,8 @@ import { FormBuilder } from '@angular/forms';
|
|
|
8
8
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
9
9
|
// import { EntryAdminService } from '../../../proxy/admin/entries';
|
|
10
10
|
import { ECmsComponent } from '../../../enums';
|
|
11
|
-
import { CreateOrUpdateEntryInputBase } from './create-or-update-entry-input-base';
|
|
12
|
-
import { ValidatorsService, UpdateListService, LocationBackService } from '@dignite-ng/expand.core';
|
|
11
|
+
import { CreateOrUpdateEntryInputBase, EntriesToFormLabelMap, } from './create-or-update-entry-input-base';
|
|
12
|
+
import { ValidatorsService, UpdateListService, LocationBackService, DigniteValidatorsService, } from '@dignite-ng/expand.core';
|
|
13
13
|
import { finalize } from 'rxjs';
|
|
14
14
|
import { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';
|
|
15
15
|
import * as i0 from "@angular/core";
|
|
@@ -51,6 +51,7 @@ export class CreateComponent {
|
|
|
51
51
|
/**显示条目类型信息 */
|
|
52
52
|
this.showEntryTypeInfo = '';
|
|
53
53
|
this._LocationBackService = inject(LocationBackService);
|
|
54
|
+
this._DigniteValidatorsService = inject(DigniteValidatorsService);
|
|
54
55
|
this.isSubmit = false;
|
|
55
56
|
}
|
|
56
57
|
/**是否草稿控件*/
|
|
@@ -89,69 +90,30 @@ export class CreateComponent {
|
|
|
89
90
|
_feedbackChildInfo(event) {
|
|
90
91
|
this.showEntryTypeInfo = event?.showEntryType || '';
|
|
91
92
|
}
|
|
92
|
-
/**当返回结果为true时表示未通过验证 */
|
|
93
|
-
isCheckFormCms(input, module) {
|
|
94
|
-
for (const key in input) {
|
|
95
|
-
if (input[key] === false) {
|
|
96
|
-
let info = ``;
|
|
97
|
-
//检查key中是否含有ExtraProperties.
|
|
98
|
-
if (key.includes('extraProperties.')) {
|
|
99
|
-
const arr = key.split('.');
|
|
100
|
-
const keyName = arr[1];
|
|
101
|
-
// if (keyName.includes('[')) {
|
|
102
|
-
// //使用正则提取keyName中[]中的数字下标,并且转化为数字类型,并且去掉keyName中的[*]
|
|
103
|
-
// const keyNameArr = keyName.match(/\d+/g);
|
|
104
|
-
// const keyNameArrNum = keyNameArr.map(item => Number(item));
|
|
105
|
-
// const keyNameArrNumStr = keyNameArrNum.join('.');
|
|
106
|
-
// } else {
|
|
107
|
-
//将keyName的首字母转为小写
|
|
108
|
-
const keyNameLower = keyName;
|
|
109
|
-
// const keyNameLower = keyName.charAt(0).toLowerCase() + keyName.slice(1);
|
|
110
|
-
if (this.showEntryTypeInfo && this.showEntryTypeInfo.fieldTabs.length > 0) {
|
|
111
|
-
for (const item of this.showEntryTypeInfo.fieldTabs) {
|
|
112
|
-
for (const el of item.fields) {
|
|
113
|
-
if (el.field.name == keyNameLower) {
|
|
114
|
-
// info = `"${this._LocalizationService.instant(`${module}::${item.name}下的${el.field.displayName}字段`)}"`;
|
|
115
|
-
info = `${this._LocalizationService.instant(`${module}::The{1}FieldUnderThe{0}TAB`, item.name, el.field.displayName)}`;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// }
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const displayName = key.charAt(0).toUpperCase() + key.slice(1);
|
|
124
|
-
info = `"${this._LocalizationService.instant(`${module}::${displayName}`)}" `;
|
|
125
|
-
}
|
|
126
|
-
info = info + this._LocalizationService.instant(`AbpValidation::ThisFieldIsNotValid.`);
|
|
127
|
-
//使用abp多语言提示
|
|
128
|
-
this.toaster.warn(info);
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
93
|
/**提交 */
|
|
135
94
|
save() {
|
|
136
95
|
const input = this.formEntity?.value;
|
|
96
|
+
input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
|
|
137
97
|
this.formEntity.markAllAsTouched();
|
|
138
|
-
this.formValidation =
|
|
139
|
-
if (this.
|
|
98
|
+
this.formValidation = true;
|
|
99
|
+
if (!this.formEntity.valid) {
|
|
100
|
+
for (const item of this.showEntryTypeInfo.fieldTabs) {
|
|
101
|
+
for (const el of item.fields) {
|
|
102
|
+
const info = `${this._LocalizationService.instant(`Cms::The{1}FieldUnderThe{0}TAB`, item.name, el.field.displayName)}`;
|
|
103
|
+
EntriesToFormLabelMap[el.field.name] = info;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
this._DigniteValidatorsService.getErrorMessage({
|
|
107
|
+
form: this.formEntity,
|
|
108
|
+
map: EntriesToFormLabelMap,
|
|
109
|
+
});
|
|
140
110
|
this.isSubmit = false;
|
|
141
111
|
if (this.isOther == 1) {
|
|
142
112
|
this.slugInput.disable();
|
|
143
113
|
}
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
// if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')) {
|
|
147
|
-
// // this.isSubmit = false;
|
|
148
|
-
// // return this.cultureInput.disable();
|
|
149
|
-
// }
|
|
150
|
-
// return;
|
|
151
|
-
// input.culture = this.cultureName;
|
|
152
|
-
input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
|
|
153
|
-
if (!this.formEntity.valid)
|
|
114
|
+
this.cultureInput.disable();
|
|
154
115
|
return;
|
|
116
|
+
}
|
|
155
117
|
this._EntryAdminService
|
|
156
118
|
.create(input)
|
|
157
119
|
.pipe(finalize(() => {
|
|
@@ -208,4 +170,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
208
170
|
type: ViewChild,
|
|
209
171
|
args: ['submitclick', { static: true }]
|
|
210
172
|
}] } });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQVksUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7OztBQWE3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QkFDRjs4QkFjMkMsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4vLyBpbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgRUNtc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UgfSBmcm9tICcuL2NyZWF0ZS1vci11cGRhdGUtZW50cnktaW5wdXQtYmFzZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzU2VydmljZSwgVXBkYXRlTGlzdFNlcnZpY2UsIExvY2F0aW9uQmFja1NlcnZpY2UgfSBmcm9tICdAZGlnbml0ZS1uZy9leHBhbmQuY29yZSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRW50cnlBZG1pblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9kaWduaXRlL2Ntcy9hZG1pbi9lbnRyaWVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY21zLWNyZWF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRVhURU5TSU9OU19JREVOVElGSUVSLFxuICAgICAgdXNlVmFsdWU6IEVDbXNDb21wb25lbnQuRW50cmllc19DcmVhdGUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX3VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9sb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZSA9IGluamVjdChFbnRyeUFkbWluU2VydmljZSk7XG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcblxuICAvKirojrflj5bmj5DkuqTmjInpkq7mm7/ouqvvvIznlKjkuo7nnJ/lrp7op6blj5HooajljZXmj5DkuqQgKi9cbiAgQFZpZXdDaGlsZCgnc3VibWl0Y2xpY2snLCB7IHN0YXRpYzogdHJ1ZSB9KSBzdWJtaXRjbGljazogRWxlbWVudFJlZjtcblxuICAvKirooajljZXpqozor4HnirbmgIFcbiAgICoge1xuICAgKiAgdGl0bGU6dHJ1ZSxcbiAgICogfVxuICAgKi9cbiAgZm9ybVZhbGlkYXRpb246IGFueSA9ICcnO1xuICAvKirooajljZXlrp7kvZMgKi9cbiAgZm9ybUVudGl0eTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuICAvKiror63oqIAgKi9cbiAgY3VsdHVyZU5hbWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67nsbvlnotpZCAqL1xuICBlbnRyeVR5cGVJZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKueJiOWdl2lkICovXG4gIHNlY3Rpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrueJiOacrGlkICovXG4gIGVudHJ5VmVyc2lvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu5L+h5oGvICovXG4gIGVudHJ5SW5mbzogYW55ID0gJyc7XG4gIC8qKuaYr+WQpuWIm+W7uuWFtuS7luivreiogOeJiOacrCAqL1xuICBpc090aGVyOiBzdHJpbmcgfCBhbnkgPSAwO1xuXG4gIC8qKuaYr+WQpuiNieeov+aOp+S7tiovXG4gIGdldCBkcmFmdElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1FbnRpdHk/LmdldCgnZHJhZnQnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuICAvKiror63oqIDmjqfku7YgKi9cbiAgZ2V0IGN1bHR1cmVJbnB1dCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdjdWx0dXJlJykgYXMgRm9ybUNvbnRyb2w7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG5cbiAgICB0aGlzLmN1bHR1cmVOYW1lID0gcXVlcnlQYXJhbXMuY3VsdHVyZU5hbWU7XG4gICAgdGhpcy5lbnRyeVR5cGVJZCA9IHF1ZXJ5UGFyYW1zLmVudHJ5VHlwZUlkO1xuICAgIHRoaXMuc2VjdGlvbklkID0gcXVlcnlQYXJhbXMuc2VjdGlvbklkO1xuICAgIHRoaXMuZW50cnlWZXJzaW9uSWQgPSBxdWVyeVBhcmFtcy5lbnRyeVZlcnNpb25JZDtcbiAgICB0aGlzLmlzT3RoZXIgPSBxdWVyeVBhcmFtcy5pc090aGVyIHx8IDA7XG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSgpKTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5wYXRjaFZhbHVlKHRoaXMuY3VsdHVyZU5hbWUpO1xuICAgIGlmICh0aGlzLmVudHJ5VmVyc2lvbklkKSBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICB9XG4gIC8qKuiOt+WPluadoeebruS/oeaBryAqL1xuICBnZXRFbnRyeUluZm8oKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZS5nZXQodGhpcy5lbnRyeVZlcnNpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY3VsdHVyZU5hbWUgPSByZXMuY3VsdHVyZTtcbiAgICAgICAgdGhpcy5lbnRyeVR5cGVJZCA9IHJlcy5lbnRyeVR5cGVJZDtcbiAgICAgICAgdGhpcy5zZWN0aW9uSWQgPSByZXMuc2VjdGlvbklkO1xuICAgICAgICB0aGlzLmVudHJ5SW5mbyA9IHJlcztcblxuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICAvKirmmL7npLrmnaHnm67nsbvlnovkv6Hmga8gKi9cbiAgc2hvd0VudHJ5VHlwZUluZm86IGFueSA9ICcnO1xuICAvKirlj43ppojlrZDnuqfpobXpnaLkv6Hmga8gKi9cbiAgX2ZlZWRiYWNrQ2hpbGRJbmZvKGV2ZW50KSB7XG4gICAgdGhpcy5zaG93RW50cnlUeXBlSW5mbyA9IGV2ZW50Py5zaG93RW50cnlUeXBlIHx8ICcnO1xuICB9XG4gIC8qKuW9k+i/lOWbnue7k+aenOS4unRydWXml7booajnpLrmnKrpgJrov4fpqozor4EgKi9cbiAgaXNDaGVja0Zvcm1DbXMoaW5wdXQsIG1vZHVsZSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIGlucHV0KSB7XG4gICAgICBpZiAoaW5wdXRba2V5XSA9PT0gZmFsc2UpIHtcbiAgICAgICAgbGV0IGluZm8gPSBgYDtcbiAgICAgICAgLy/mo4Dmn6VrZXnkuK3mmK/lkKblkKvmnIlFeHRyYVByb3BlcnRpZXMuXG4gICAgICAgIGlmIChrZXkuaW5jbHVkZXMoJ2V4dHJhUHJvcGVydGllcy4nKSkge1xuICAgICAgICAgIGNvbnN0IGFyciA9IGtleS5zcGxpdCgnLicpO1xuICAgICAgICAgIGNvbnN0IGtleU5hbWUgPSBhcnJbMV07XG4gICAgICAgICAgLy8gaWYgKGtleU5hbWUuaW5jbHVkZXMoJ1snKSkge1xuICAgICAgICAgIC8vICAgLy/kvb/nlKjmraPliJnmj5Dlj5ZrZXlOYW1l5LitW13kuK3nmoTmlbDlrZfkuIvmoIcs5bm25LiU6L2s5YyW5Li65pWw5a2X57G75Z6L77yM5bm25LiU5Y675o6Ja2V5TmFtZeS4reeahFsqXVxuICAgICAgICAgIC8vICAgY29uc3Qga2V5TmFtZUFyciA9IGtleU5hbWUubWF0Y2goL1xcZCsvZyk7XG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyTnVtID0ga2V5TmFtZUFyci5tYXAoaXRlbSA9PiBOdW1iZXIoaXRlbSkpO1xuICAgICAgICAgIC8vICAgY29uc3Qga2V5TmFtZUFyck51bVN0ciA9IGtleU5hbWVBcnJOdW0uam9pbignLicpO1xuXG4gICAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgICAvL+WwhmtleU5hbWXnmoTpppblrZfmr43ovazkuLrlsI/lhplcbiAgICAgICAgICBjb25zdCBrZXlOYW1lTG93ZXIgPSBrZXlOYW1lO1xuICAgICAgICAgIC8vIGNvbnN0IGtleU5hbWVMb3dlciA9IGtleU5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBrZXlOYW1lLnNsaWNlKDEpO1xuICAgICAgICAgIGlmICh0aGlzLnNob3dFbnRyeVR5cGVJbmZvICYmIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicykge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGl0ZW0uZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsLmZpZWxkLm5hbWUgPT0ga2V5TmFtZUxvd2VyKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHtpdGVtLm5hbWV95LiL55qEJHtlbC5maWVsZC5kaXNwbGF5TmFtZX3lrZfmrrVgKX1cImA7XG4gICAgICAgICAgICAgICAgICBpbmZvID0gYCR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICBgJHttb2R1bGV9OjpUaGV7MX1GaWVsZFVuZGVyVGhlezB9VEFCYCxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBlbC5maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICAgICAgICl9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgIGluZm8gPSBgXCIke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgJHttb2R1bGV9Ojoke2Rpc3BsYXlOYW1lfWApfVwiIGA7XG4gICAgICAgIH1cblxuICAgICAgICBpbmZvID0gaW5mbyArIHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVmFsaWRhdGlvbjo6VGhpc0ZpZWxkSXNOb3RWYWxpZC5gKTtcbiAgICAgICAgLy/kvb/nlKhhYnDlpJror63oqIDmj5DnpLpcbiAgICAgICAgdGhpcy50b2FzdGVyLndhcm4oaW5mbyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX0xvY2F0aW9uQmFja1NlcnZpY2UgPSBpbmplY3QoTG9jYXRpb25CYWNrU2VydmljZSk7XG5cbiAgLyoq5o+Q5LqkICovXG4gIHNhdmUoKSB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmZvcm1FbnRpdHk/LnZhbHVlO1xuICAgIHRoaXMuZm9ybUVudGl0eS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKHRoaXMuZm9ybUVudGl0eSk7XG4gICAgaWYgKHRoaXMuaXNDaGVja0Zvcm1DbXModGhpcy5mb3JtVmFsaWRhdGlvbiwgJ0NtcycpKSB7XG4gICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5pc090aGVyID09IDEpIHtcbiAgICAgICAgdGhpcy5zbHVnSW5wdXQuZGlzYWJsZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuX1ZhbGlkYXRvcnNTZXJ2aWNlLmlzQ2hlY2tGb3JtKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkge1xuICAgIC8vICAgLy8gICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgLy8gICAvLyAgIHJldHVybiB0aGlzLmN1bHR1cmVJbnB1dC5kaXNhYmxlKCk7XG4gICAgLy8gfVxuICAgIC8vIHJldHVybjtcblxuICAgIC8vIGlucHV0LmN1bHR1cmUgPSB0aGlzLmN1bHR1cmVOYW1lO1xuICAgIGlucHV0LnB1Ymxpc2hUaW1lID0gbmV3IERhdGUoXG4gICAgICBuZXcgRGF0ZShpbnB1dC5wdWJsaXNoVGltZSkuZ2V0VGltZSgpICsgOCAqIDYwICogNjAgKiAxMDAwLFxuICAgICkudG9JU09TdHJpbmcoKTtcbiAgICBpZiAoIXRoaXMuZm9ybUVudGl0eS52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGlucHV0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcblxuICAgICAgICAvL+ajgOa1i+ivpemhtemdouS4iuS4gOe6p+aYr+WQpuaYr+ezu+e7n+mhtemdou+8jOWmguaenOaYr+i/lOWbnuS4iuS4gOmhte+8jOWmguaenOS4jeaYr++8jOWImeS9v+eUqOmhtemdoui3s+i9rOWIsOS4iuS4gOe6p+mhtemdouOAglxuICAgICAgICB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2tUbyh7XG4gICAgICAgICAgdXJsOiBgL2Ntcy9hZG1pbi9lbnRyaWVzYCxcbiAgICAgICAgICByZXBsZW5pc2g6ICcvY3JlYXRlJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xuICAgICAgfSk7XG4gIH1cbiAgaXNTdWJtaXQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq54K55Ye75o+Q5LqkICovXG4gIGNsaWNrU3VibWl0KHR5cGUpIHtcbiAgICAvLyBpZiAodGhpcy5pc1N1Ym1pdCkgcmV0dXJuO1xuICAgIC8vIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xuICAgIHRoaXMuZHJhZnRJbnB1dC5wYXRjaFZhbHVlKHR5cGUpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIGlmICh0aGlzLmlzT3RoZXIgPT0gMSkge1xuICAgICAgdGhpcy5zbHVnSW5wdXQuZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybUVudGl0eS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9LCAwKTtcbiAgfVxuICBnZXQgc2x1Z0lucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ3NsdWcnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIC8qKui/lOWbnuS4iuS4gOmhtSAqL1xuICBiYWNrVG8oKSB7XG4gICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICB9XG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6Ok5ldyd8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwicm93IGctMyBuZWVkcy12YWxpZGF0aW9uXCIgW2Zvcm1Hcm91cF09XCJmb3JtRW50aXR5XCIgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCJcclxuICAgICAgICAoc3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1FbnRpdHkmJnNlY3Rpb25JZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnlWZXJzaW9uSWQ7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiBbaXNFZGl0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0XT1cImVudHJ5SW5mb1wiIFtpc0NyZWF0ZVZlcnNpb25dPVwidHJ1ZVwiIFtpc090aGVyXT1cImlzT3RoZXJcIiAgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCIgW2VudGl0eV09XCJmb3JtRW50aXR5XCI+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGNtcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNFZGl0XT1cImZhbHNlXCIgW3NlbGVjdF09XCJlbnRyeUluZm9cIiBbaXNPdGhlcl09XCJpc090aGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImZvcm1FbnRpdHlcIiA+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZm9ybT5cclxuPC9hYnAtcGFnZT4iXX0=
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvYWRtaW4vZW50cmllcy9jcmVhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY21zL3NyYy9saWIvY29tcG9uZW50cy9hZG1pbi9lbnRyaWVzL2NyZWF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUcsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUEwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHFCQUFxQixHQUN0QixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQix3QkFBd0IsR0FDekIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxpQkFBaUIsRUFB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LHdCQUF3QjtRQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBM0pVLGVBQWU7a0dBQWYsZUFBZSxxQ0FQZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsY0FBYzthQUN2QztTQUNGLG9KQ2hDSCx5dENBZ0JXOzsyRkRrQkUsZUFBZTtrQkFYM0IsU0FBUzsrQkFDRSxZQUFZLGFBR1g7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxjQUFjO3lCQUN2QztxQkFDRjs4QkFjMkMsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7ICBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4vLyBpbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgRUNtc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7XG4gIENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UsXG4gIEVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbn0gZnJvbSAnLi9jcmVhdGUtb3ItdXBkYXRlLWVudHJ5LWlucHV0LWJhc2UnO1xuaW1wb3J0IHtcbiAgVmFsaWRhdG9yc1NlcnZpY2UsXG4gIFVwZGF0ZUxpc3RTZXJ2aWNlLFxuICBMb2NhdGlvbkJhY2tTZXJ2aWNlLFxuICBEaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UsXG59IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2RpZ25pdGUvY21zL2FkbWluL2VudHJpZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbXMtY3JlYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXG4gICAgICB1c2VWYWx1ZTogRUNtc0NvbXBvbmVudC5FbnRyaWVzX0NyZWF0ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSBfdXBkYXRlTGlzdFNlcnZpY2UgPSBpbmplY3QoVXBkYXRlTGlzdFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ZXIgPSBpbmplY3QoVG9hc3RlclNlcnZpY2UpO1xuICBwdWJsaWMgX2xvY2F0aW9uID0gaW5qZWN0KExvY2F0aW9uKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgX0VudHJ5QWRtaW5TZXJ2aWNlID0gaW5qZWN0KEVudHJ5QWRtaW5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfTG9jYWxpemF0aW9uU2VydmljZSA9IGluamVjdChMb2NhbGl6YXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfVmFsaWRhdG9yc1NlcnZpY2UgPSBpbmplY3QoVmFsaWRhdG9yc1NlcnZpY2UpO1xuXG4gIC8qKuiOt+WPluaPkOS6pOaMiemSruabv+i6q++8jOeUqOS6juecn+WunuinpuWPkeihqOWNleaPkOS6pCAqL1xuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIC8qKuihqOWNlemqjOivgeeKtuaAgVxuICAgKiB7XG4gICAqICB0aXRsZTp0cnVlLFxuICAgKiB9XG4gICAqL1xuICBmb3JtVmFsaWRhdGlvbjogYW55ID0gJyc7XG4gIC8qKuihqOWNleWunuS9kyAqL1xuICBmb3JtRW50aXR5OiBGb3JtR3JvdXAgfCB1bmRlZmluZWQ7XG4gIC8qKuivreiogCAqL1xuICBjdWx0dXJlTmFtZTogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebruexu+Wei2lkICovXG4gIGVudHJ5VHlwZUlkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq54mI5Z2XaWQgKi9cbiAgc2VjdGlvbklkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu54mI5pysaWQgKi9cbiAgZW50cnlWZXJzaW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67kv6Hmga8gKi9cbiAgZW50cnlJbmZvOiBhbnkgPSAnJztcbiAgLyoq5piv5ZCm5Yib5bu65YW25LuW6K+t6KiA54mI5pysICovXG4gIGlzT3RoZXI6IHN0cmluZyB8IGFueSA9IDA7XG5cbiAgLyoq5piv5ZCm6I2J56i/5o6n5Lu2Ki9cbiAgZ2V0IGRyYWZ0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdkcmFmdCcpIGFzIEZvcm1Db250cm9sO1xuICB9XG4gIC8qKuivreiogOaOp+S7tiAqL1xuICBnZXQgY3VsdHVyZUlucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2N1bHR1cmUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcztcblxuICAgIHRoaXMuY3VsdHVyZU5hbWUgPSBxdWVyeVBhcmFtcy5jdWx0dXJlTmFtZTtcbiAgICB0aGlzLmVudHJ5VHlwZUlkID0gcXVlcnlQYXJhbXMuZW50cnlUeXBlSWQ7XG4gICAgdGhpcy5zZWN0aW9uSWQgPSBxdWVyeVBhcmFtcy5zZWN0aW9uSWQ7XG4gICAgdGhpcy5lbnRyeVZlcnNpb25JZCA9IHF1ZXJ5UGFyYW1zLmVudHJ5VmVyc2lvbklkO1xuICAgIHRoaXMuaXNPdGhlciA9IHF1ZXJ5UGFyYW1zLmlzT3RoZXIgfHwgMDtcbiAgICB0aGlzLmZvcm1FbnRpdHkgPSB0aGlzLmZiLmdyb3VwKG5ldyBDcmVhdGVPclVwZGF0ZUVudHJ5SW5wdXRCYXNlKCkpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LnBhdGNoVmFsdWUodGhpcy5jdWx0dXJlTmFtZSk7XG4gICAgaWYgKHRoaXMuZW50cnlWZXJzaW9uSWQpIGF3YWl0IHRoaXMuZ2V0RW50cnlJbmZvKCk7XG4gIH1cbiAgLyoq6I635Y+W5p2h55uu5L+h5oGvICovXG4gIGdldEVudHJ5SW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldCh0aGlzLmVudHJ5VmVyc2lvbklkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jdWx0dXJlTmFtZSA9IHJlcy5jdWx0dXJlO1xuICAgICAgICB0aGlzLmVudHJ5VHlwZUlkID0gcmVzLmVudHJ5VHlwZUlkO1xuICAgICAgICB0aGlzLnNlY3Rpb25JZCA9IHJlcy5zZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuZW50cnlJbmZvID0gcmVzO1xuXG4gICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIC8qKuaYvuekuuadoeebruexu+Wei+S/oeaBryAqL1xuICBzaG93RW50cnlUeXBlSW5mbzogYW55ID0gJyc7XG4gIC8qKuWPjemmiOWtkOe6p+mhtemdouS/oeaBryAqL1xuICBfZmVlZGJhY2tDaGlsZEluZm8oZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFbnRyeVR5cGVJbmZvID0gZXZlbnQ/LnNob3dFbnRyeVR5cGUgfHwgJyc7XG4gIH1cblxuXG4gIHByaXZhdGUgX0xvY2F0aW9uQmFja1NlcnZpY2UgPSBpbmplY3QoTG9jYXRpb25CYWNrU2VydmljZSk7XG4gIHByaXZhdGUgX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZSA9IGluamVjdChEaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UpO1xuXG4gIC8qKuaPkOS6pCAqL1xuICBzYXZlKCkge1xuICAgIGNvbnN0IGlucHV0ID0gdGhpcy5mb3JtRW50aXR5Py52YWx1ZTtcbiAgICBpbnB1dC5wdWJsaXNoVGltZSA9IG5ldyBEYXRlKFxuICAgICAgbmV3IERhdGUoaW5wdXQucHVibGlzaFRpbWUpLmdldFRpbWUoKSArIDggKiA2MCAqIDYwICogMTAwMCxcbiAgICApLnRvSVNPU3RyaW5nKCk7XG4gICAgdGhpcy5mb3JtRW50aXR5Lm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uPXRydWU7XG5cbiAgICBpZiAoIXRoaXMuZm9ybUVudGl0eS52YWxpZCkge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuc2hvd0VudHJ5VHlwZUluZm8uZmllbGRUYWJzKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCBpbmZvID0gYCR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgYENtczo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICBpdGVtLm5hbWUsXG4gICAgICAgICAgICBlbC5maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICApfWA7XG4gICAgICAgICAgRW50cmllc1RvRm9ybUxhYmVsTWFwW2VsLmZpZWxkLm5hbWVdID0gaW5mbztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9EaWduaXRlVmFsaWRhdG9yc1NlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKHtcbiAgICAgICAgZm9ybTogdGhpcy5mb3JtRW50aXR5LFxuICAgICAgICBtYXA6IEVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5pc090aGVyID09IDEpIHtcbiAgICAgICAgdGhpcy5zbHVnSW5wdXQuZGlzYWJsZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAuY3JlYXRlKGlucHV0KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ZXIuc3VjY2Vzcyh0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFVpOjpTYXZlZFN1Y2Nlc3NmdWxseWApKTtcblxuICAgICAgICAvL+ajgOa1i+ivpemhtemdouS4iuS4gOe6p+aYr+WQpuaYr+ezu+e7n+mhtemdou+8jOWmguaenOaYr+i/lOWbnuS4iuS4gOmhte+8jOWmguaenOS4jeaYr++8jOWImeS9v+eUqOmhtemdoui3s+i9rOWIsOS4iuS4gOe6p+mhtemdouOAglxuICAgICAgICB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2tUbyh7XG4gICAgICAgICAgdXJsOiBgL2Ntcy9hZG1pbi9lbnRyaWVzYCxcbiAgICAgICAgICByZXBsZW5pc2g6ICcvY3JlYXRlJyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdXBkYXRlTGlzdFNlcnZpY2UudXBkYXRlTGlzdCgpO1xuICAgICAgfSk7XG4gIH1cbiAgaXNTdWJtaXQ6IGJvb2xlYW4gfCBhbnkgPSBmYWxzZTtcbiAgLyoq54K55Ye75o+Q5LqkICovXG4gIGNsaWNrU3VibWl0KHR5cGUpIHtcbiAgICAvLyBpZiAodGhpcy5pc1N1Ym1pdCkgcmV0dXJuO1xuICAgIC8vIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xuICAgIHRoaXMuZHJhZnRJbnB1dC5wYXRjaFZhbHVlKHR5cGUpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LmVuYWJsZSgpO1xuICAgIGlmICh0aGlzLmlzT3RoZXIgPT0gMSkge1xuICAgICAgdGhpcy5zbHVnSW5wdXQuZW5hYmxlKCk7XG4gICAgfVxuICAgIHRoaXMuZm9ybUVudGl0eS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9LCAwKTtcbiAgfVxuICBnZXQgc2x1Z0lucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ3NsdWcnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIC8qKui/lOWbnuS4iuS4gOmhtSAqL1xuICBiYWNrVG8oKSB7XG4gICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICB9XG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6Ok5ldyd8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cclxuICAgIDxmb3JtIGNsYXNzPVwicm93IGctMyBuZWVkcy12YWxpZGF0aW9uXCIgW2Zvcm1Hcm91cF09XCJmb3JtRW50aXR5XCIgW2NsYXNzXT1cInsnd2FzLXZhbGlkYXRlZCc6Zm9ybVZhbGlkYXRpb259XCJcclxuICAgICAgICAoc3VibWl0KT1cInNhdmUoKVwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1FbnRpdHkmJnNlY3Rpb25JZFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW50cnlWZXJzaW9uSWQ7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgW3NlY3Rpb25JZF09XCJzZWN0aW9uSWRcIiBbZW50cnlUeXBlSWRdPVwiZW50cnlUeXBlSWRcIiBbaXNFZGl0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0XT1cImVudHJ5SW5mb1wiIFtpc0NyZWF0ZVZlcnNpb25dPVwidHJ1ZVwiIFtpc090aGVyXT1cImlzT3RoZXJcIiAgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCIgW2VudGl0eV09XCJmb3JtRW50aXR5XCI+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGNtcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaXNFZGl0XT1cImZhbHNlXCIgW3NlbGVjdF09XCJlbnRyeUluZm9cIiBbaXNPdGhlcl09XCJpc090aGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbZW50aXR5XT1cImZvcm1FbnRpdHlcIiA+PC9jbXMtY3JlYXRlLW9yLWVkaXQtZW50cmllcz5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZm9ybT5cclxuPC9hYnAtcGFnZT4iXX0=
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
import { EXTENSIONS_IDENTIFIER } from '@abp/ng.components/extensible';
|
|
4
4
|
import { LocalizationService } from '@abp/ng.core';
|
|
5
5
|
import { ToasterService } from '@abp/ng.theme.shared';
|
|
6
|
-
import {
|
|
6
|
+
import { Location } from '@angular/common';
|
|
7
7
|
import { Component, inject, ViewChild, ElementRef } from '@angular/core';
|
|
8
8
|
import { FormBuilder } from '@angular/forms';
|
|
9
9
|
import { ActivatedRoute } from '@angular/router';
|
|
10
10
|
// import { EntryAdminService } from '../../../proxy/admin/entries';
|
|
11
11
|
import { ECmsComponent } from '../../../enums';
|
|
12
|
-
import { LocationBackService, UpdateListService } from '@dignite-ng/expand.core';
|
|
13
|
-
import { CreateOrUpdateEntryInputBase } from './create-or-update-entry-input-base';
|
|
14
|
-
import { ValidatorsService } from '@dignite-ng/expand.core';
|
|
12
|
+
import { DigniteValidatorsService, LocationBackService, UpdateListService } from '@dignite-ng/expand.core';
|
|
13
|
+
import { CreateOrUpdateEntryInputBase, EntriesToFormLabelMap } from './create-or-update-entry-input-base';
|
|
14
|
+
// import { ValidatorsService } from '@dignite-ng/expand.core';
|
|
15
15
|
import { finalize } from 'rxjs';
|
|
16
16
|
import { EntryAdminService } from '../../../proxy/dignite/cms/admin/entries';
|
|
17
17
|
import * as i0 from "@angular/core";
|
|
@@ -21,6 +21,7 @@ import * as i3 from "@ngx-validate/core";
|
|
|
21
21
|
import * as i4 from "@abp/ng.components/page";
|
|
22
22
|
import * as i5 from "./create-or-edit-entries.component";
|
|
23
23
|
import * as i6 from "@abp/ng.core";
|
|
24
|
+
// import { ClassicEditor, Essentials, Paragraph, Bold, Italic } from 'ckeditor5';
|
|
24
25
|
export class EditComponent {
|
|
25
26
|
constructor() {
|
|
26
27
|
this.fb = inject(FormBuilder);
|
|
@@ -30,8 +31,6 @@ export class EditComponent {
|
|
|
30
31
|
this.route = inject(ActivatedRoute);
|
|
31
32
|
this._EntryAdminService = inject(EntryAdminService);
|
|
32
33
|
this._LocalizationService = inject(LocalizationService);
|
|
33
|
-
this._ValidatorsService = inject(ValidatorsService);
|
|
34
|
-
this.datePipe = inject(DatePipe);
|
|
35
34
|
/**表单验证状态
|
|
36
35
|
* {
|
|
37
36
|
* title:true,
|
|
@@ -100,6 +99,7 @@ export class EditComponent {
|
|
|
100
99
|
// return validationStatus
|
|
101
100
|
// }
|
|
102
101
|
this._LocationBackService = inject(LocationBackService);
|
|
102
|
+
this._DigniteValidatorsService = inject(DigniteValidatorsService);
|
|
103
103
|
this.isSubmit = false;
|
|
104
104
|
this.draftValue = '';
|
|
105
105
|
}
|
|
@@ -185,20 +185,34 @@ export class EditComponent {
|
|
|
185
185
|
input.culture = this.cultureName;
|
|
186
186
|
input.publishTime = new Date(new Date(input.publishTime).getTime() + 8 * 60 * 60 * 1000).toISOString();
|
|
187
187
|
input.concurrencyStamp = this.entryInfo.concurrencyStamp;
|
|
188
|
-
this.formValidation = this._ValidatorsService.getFormValidationStatus(this.formEntity);
|
|
188
|
+
// this.formValidation = this._ValidatorsService.getFormValidationStatus(this.formEntity);
|
|
189
189
|
// if (this._ValidatorsService.isCheckForm(this.formValidation, 'Cms')){
|
|
190
190
|
// this.isSubmit = false;
|
|
191
191
|
// return this.cultureInput.disable();
|
|
192
192
|
// }
|
|
193
193
|
// this.formValidation = this.getFormValidationStatus(this.formEntity);
|
|
194
|
-
if (this.isCheckFormCms(this.formValidation, 'Cms')) {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
194
|
+
// if (this.isCheckFormCms(this.formValidation, 'Cms')) {
|
|
195
|
+
// this.isSubmit = false;
|
|
196
|
+
// return this.cultureInput.disable();
|
|
197
|
+
// }
|
|
198
198
|
// this.formValidation = this.getFormValidationStatus(this.formEntity);
|
|
199
199
|
// return this.isSubmit=false;
|
|
200
|
-
|
|
200
|
+
this.formValidation = true;
|
|
201
|
+
if (!this.formEntity.valid) {
|
|
202
|
+
for (const item of this.showEntryTypeInfo.fieldTabs) {
|
|
203
|
+
for (const el of item.fields) {
|
|
204
|
+
const info = `${this._LocalizationService.instant(`Cms::The{1}FieldUnderThe{0}TAB`, item.name, el.field.displayName)}`;
|
|
205
|
+
EntriesToFormLabelMap[el.field.name] = info;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
this._DigniteValidatorsService.getErrorMessage({
|
|
209
|
+
form: this.formEntity,
|
|
210
|
+
map: EntriesToFormLabelMap,
|
|
211
|
+
});
|
|
212
|
+
this.isSubmit = false;
|
|
213
|
+
this.cultureInput.disable();
|
|
201
214
|
return;
|
|
215
|
+
}
|
|
202
216
|
this._EntryAdminService
|
|
203
217
|
.update(this.entryInfo.id, input)
|
|
204
218
|
.pipe(finalize(() => {
|
|
@@ -208,7 +222,7 @@ export class EditComponent {
|
|
|
208
222
|
this.toaster.success(this._LocalizationService.instant(`AbpUi::SavedSuccessfully`));
|
|
209
223
|
this._LocationBackService.backTo({
|
|
210
224
|
url: `/cms/admin/entries`,
|
|
211
|
-
replenish: '/
|
|
225
|
+
replenish: '/edit'
|
|
212
226
|
});
|
|
213
227
|
this._updateListService.updateList();
|
|
214
228
|
});
|
|
@@ -246,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
246
260
|
type: ViewChild,
|
|
247
261
|
args: ['submitclick', { static: true }]
|
|
248
262
|
}] } });
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBYSxXQUFXLEVBQTBCLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUs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QUUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsV0FBVztJQUNYLE1BQU07UUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBck9VLGFBQWE7a0dBQWIsYUFBYSxtQ0FQYjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSxhQUFhLENBQUMsWUFBWTthQUNyQztTQUNGLG9KQzVCSCxpcUJBVUE7OzJGRG9CYSxhQUFhO2tCQVh6QixTQUFTOytCQUNFLFVBQVUsYUFHVDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVk7eUJBQ3JDO3FCQUNGOzhCQWMyQyxXQUFXO3NCQUF0RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cblxuaW1wb3J0IHsgRVhURU5TSU9OU19JREVOVElGSUVSIH0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL2V4dGVuc2libGUnO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBUb2FzdGVyU2VydmljZSB9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcbmltcG9ydCB7IERhdGVQaXBlLCBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG4vLyBpbXBvcnQgeyBFbnRyeUFkbWluU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L2FkbWluL2VudHJpZXMnO1xuaW1wb3J0IHsgRUNtc0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2VudW1zJztcbmltcG9ydCB7IExvY2F0aW9uQmFja1NlcnZpY2UsIFVwZGF0ZUxpc3RTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuaW1wb3J0IHsgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSB9IGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1lbnRyeS1pbnB1dC1iYXNlJztcbmltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vZW50cmllcyc7XG5pbXBvcnQgeyBDbGFzc2ljRWRpdG9yLCBFc3NlbnRpYWxzLCBQYXJhZ3JhcGgsIEJvbGQsIEl0YWxpYyB9IGZyb20gJ2NrZWRpdG9yNSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LkVudHJpZXNfRWRpdCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX3VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9sb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZSA9IGluamVjdChFbnRyeUFkbWluU2VydmljZSk7XG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XG5cbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBXG4gICAqIHtcbiAgICogIHRpdGxlOnRydWUsXG4gICAqIH1cbiAgICovXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgLyoq6K+t6KiAICovXG4gIGN1bHR1cmVOYW1lOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu57G75Z6LaWQgKi9cbiAgZW50cnlUeXBlSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirniYjlnZdpZCAqL1xuICBzZWN0aW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67niYjmnKxpZCAqL1xuICBlbnRyeVZlcnNpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrmlkICovXG4gIGVudHJpZUlkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu5L+h5oGvICovXG4gIGVudHJ5SW5mbzogYW55ID0gJyc7XG5cbiAgLyoq5piv5ZCm6I2J56i/5o6n5Lu2Ki9cbiAgZ2V0IGRyYWZ0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdkcmFmdCcpIGFzIEZvcm1Db250cm9sO1xuICB9XG4gIC8qKuivreiogOaOp+S7tiAqL1xuICBnZXQgY3VsdHVyZUlucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2N1bHR1cmUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zO1xuICAgIHRoaXMuZW50cmllSWQgPSBwYXJhbXMuZW50cmllSWQ7XG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSgpKTtcbiAgICBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LnBhdGNoVmFsdWUodGhpcy5jdWx0dXJlTmFtZSk7XG4gIH1cbiAgLyoq6I635Y+W5p2h55uu5L+h5oGvICovXG4gIGdldEVudHJ5SW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldCh0aGlzLmVudHJpZUlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jdWx0dXJlTmFtZSA9IHJlcy5jdWx0dXJlO1xuICAgICAgICB0aGlzLmVudHJ5VHlwZUlkID0gcmVzLmVudHJ5VHlwZUlkO1xuICAgICAgICB0aGlzLnNlY3Rpb25JZCA9IHJlcy5zZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuZW50cnlJbmZvID0gcmVzO1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuaYvuekuuadoeebruexu+Wei+S/oeaBryAqL1xuICBzaG93RW50cnlUeXBlSW5mbzogYW55ID0gJyc7XG4gIC8qKuWPjemmiOWtkOe6p+mhtemdouS/oeaBryAqL1xuICBfZmVlZGJhY2tDaGlsZEluZm8oZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFbnRyeVR5cGVJbmZvID0gZXZlbnQ/LnNob3dFbnRyeVR5cGUgfHwgJyc7XG4gIH1cbiAgLy8gLyoq5b2T6L+U5Zue57uT5p6c5Li6dHJ1ZeaXtuihqOekuuacqumAmui/h+mqjOivgSAqL1xuICBpc0NoZWNrRm9ybUNtcyhpbnB1dCwgbW9kdWxlKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5wdXQpIHtcbiAgICAgIGlmIChpbnB1dFtrZXldID09PSBmYWxzZSkge1xuICAgICAgICBsZXQgaW5mbyA9IGBgO1xuICAgICAgICAvL+ajgOafpWtleeS4reaYr+WQpuWQq+aciUV4dHJhUHJvcGVydGllcy5cbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZXh0cmFQcm9wZXJ0aWVzLicpKSB7XG4gICAgICAgICAgY29uc3QgYXJyID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICAgICAgY29uc3Qga2V5TmFtZSA9IGFyclsxXTtcbiAgICAgICAgICAvLyBpZiAoa2V5TmFtZS5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgLy8gICAvL+S9v+eUqOato+WImeaPkOWPlmtleU5hbWXkuK1bXeS4reeahOaVsOWtl+S4i+aghyzlubbkuJTovazljJbkuLrmlbDlrZfnsbvlnovvvIzlubbkuJTljrvmjolrZXlOYW1l5Lit55qEWypdXG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyID0ga2V5TmFtZS5tYXRjaCgvXFxkKy9nKTtcbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnJOdW0gPSBrZXlOYW1lQXJyLm1hcChpdGVtID0+IE51bWJlcihpdGVtKSk7XG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyTnVtU3RyID0ga2V5TmFtZUFyck51bS5qb2luKCcuJyk7XG5cbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgLy/lsIZrZXlOYW1l55qE6aaW5a2X5q+N6L2s5Li65bCP5YaZXG4gICAgICAgICAgICBjb25zdCBrZXlOYW1lTG93ZXIgPSBrZXlOYW1lO1xuICAgICAgICAgICAgLy8gY29uc3Qga2V5TmFtZUxvd2VyID0ga2V5TmFtZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGtleU5hbWUuc2xpY2UoMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93RW50cnlUeXBlSW5mbyAmJiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZC5uYW1lID09IGtleU5hbWVMb3dlcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHtpdGVtLm5hbWV95LiL55qEJHtlbC5maWVsZC5kaXNwbGF5TmFtZX3lrZfmrrVgKX1cImA7XG4gICAgICAgICAgICAgICAgICAgIGluZm8gPSBgJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bW9kdWxlfTo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGVsLmZpZWxkLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgIGluZm8gPSBgXCIke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgJHttb2R1bGV9Ojoke2Rpc3BsYXlOYW1lfWApfVwiIGA7XG4gICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdpbmZvJywgaW5mbyxpbnB1dFtrZXldKTtcbiAgICAgICAgaW5mbyA9IGluZm8gKyB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90VmFsaWQuYCk7XG4gICAgICAgIC8v5L2/55SoYWJw5aSa6K+t6KiA5o+Q56S6XG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuKGluZm8pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gLyoq6I635Y+W6KGo5Y2V5omA5pyJ5a2X5q615piv5ZCm6YCa6L+H6aqM6K+BICovXG4gIC8vIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAvLyAgIGNvbnN0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyAgIC8vIOmAkuW9kumBjeWOhuihqOWNlee7hOWSjOihqOWNleaOp+S7tumbhuWQiFxuICAvLyAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XG4gIC8vICAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gIC8vICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNba2V5XTtcbiAgLy8gICAgICAgICAvLyBjb25zdCBkaXNwbGF5TmFtZSA9IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcbiAgLy8gICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGtleTtcbiAgLy8gICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS4ke2Rpc3BsYXlOYW1lfWAgOiBkaXNwbGF5TmFtZTtcbiAgLy8gICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gIC8vICAgICAgICAgICB2YWxpZGF0aW9uU3RhdHVzW2Z1bGxLZXldID0gY29udHJvbC52YWxpZDtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfSBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gIC8vICAgICAgIGZvcm0uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCwgaW5kZXgpID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fVske2luZGV4fV1gIDogYFske2luZGV4fV1gO1xuICAvLyAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgLy8gICAgICAgICAgIHZhbGlkYXRpb25TdGF0dXNbZnVsbEtleV0gPSBjb250cm9sLnZhbGlkO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfSk7XG4gIC8vICAgICB9XG4gIC8vICAgfTtcblxuICAvLyAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcblxuICAvLyAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHVzO1xuICAvLyB9XG5cbiAgLyoq6I635Y+W6KGo5Y2V6aqM6K+B54q25oCBICovXG4gIC8vIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAvLyAgIGNvbnN0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XG4gIC8vICAgICAvL+ajgOafpWZvcm3mmK/lkKbkuLpGb3JtR3JvdXDov5jmmK9mb3JtQXJyYXks5aaC5p6c5pivRm9ybUdyb3Vw5YiZ57un57ut6YGN5Y6GLOWmguaenOaYr0Zvcm1BcnJheeWImemBjeWOhkZvcm1BcnJheVxuICAvLyAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgXG4gIC8vICAgICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgXG4gIC8vICAgICB9IFxuXG4gIC8vICAgfVxuICAvLyAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcbiAgLy8gICByZXR1cm4gdmFsaWRhdGlvblN0YXR1c1xuICAvLyB9XG5wcml2YXRlIF9Mb2NhdGlvbkJhY2tTZXJ2aWNlPWluamVjdChMb2NhdGlvbkJhY2tTZXJ2aWNlKTtcbiAgLyoq5o+Q5LqkICovXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQuZW5hYmxlKCk7XG4gICAgdGhpcy5kcmFmdElucHV0LnBhdGNoVmFsdWUodGhpcy5kcmFmdFZhbHVlIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUVudGl0eT8udmFsdWU7XG4gICAgaW5wdXQuY3VsdHVyZSA9IHRoaXMuY3VsdHVyZU5hbWU7XG4gICAgaW5wdXQucHVibGlzaFRpbWUgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKGlucHV0LnB1Ymxpc2hUaW1lKS5nZXRUaW1lKCkgKyA4ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgKS50b0lTT1N0cmluZygpO1xuICAgIGlucHV0LmNvbmN1cnJlbmN5U3RhbXAgPSB0aGlzLmVudHJ5SW5mby5jb25jdXJyZW5jeVN0YW1wO1xuICAgIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIC8vIGlmICh0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5pc0NoZWNrRm9ybSh0aGlzLmZvcm1WYWxpZGF0aW9uLCAnQ21zJykpe1xuICAgIC8vICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgIC8vICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICAvLyB9XG5cbiAgICAvLyB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIGlmICh0aGlzLmlzQ2hlY2tGb3JtQ21zKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkge1xuICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICB9XG4gICAgLy8gdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5mb3JtRW50aXR5KTtcbiAgICAvLyByZXR1cm4gdGhpcy5pc1N1Ym1pdD1mYWxzZTtcbiAgICBpZiAoIXRoaXMuZm9ybUVudGl0eS52YWxpZCkgcmV0dXJuO1xuICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlXG4gICAgICAudXBkYXRlKHRoaXMuZW50cnlJbmZvLmlkLCBpbnB1dClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy50b2FzdGVyLnN1Y2Nlc3ModGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KGBBYnBVaTo6U2F2ZWRTdWNjZXNzZnVsbHlgKSk7XG4gICAgICAgIHRoaXMuX0xvY2F0aW9uQmFja1NlcnZpY2UuYmFja1RvKHtcbiAgICAgICAgICB1cmw6IGAvY21zL2FkbWluL2VudHJpZXNgLFxuICAgICAgICAgIHJlcGxlbmlzaDogJy9jcmVhdGUnIFxuICAgICAgICB9KVxuICAgICAgICB0aGlzLl91cGRhdGVMaXN0U2VydmljZS51cGRhdGVMaXN0KCk7XG4gICAgICB9KTtcbiAgfVxuICBpc1N1Ym1pdDogYm9vbGVhbiB8IGFueSA9IGZhbHNlO1xuICBkcmFmdFZhbHVlOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq54K55Ye75o+Q5LqkICovXG4gIGNsaWNrU3VibWl0KHR5cGUpIHtcbiAgICBpZiAodGhpcy5pc1N1Ym1pdCkgcmV0dXJuO1xuICAgIHRoaXMuaXNTdWJtaXQgPSB0cnVlO1xuICAgIHRoaXMuZHJhZnRWYWx1ZSA9IHR5cGU7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQuZW5hYmxlKCk7XG4gICAgdGhpcy5zdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcbiAgfVxuXG4gIC8qKui/lOWbnuS4iuS4gOmhtSAqL1xuICBiYWNrVG8oKSB7XG4gICAgdGhpcy5fbG9jYXRpb24uYmFjaygpO1xuICB9XG59XG4iLCI8YWJwLXBhZ2UgW3RpdGxlXT1cIidDbXM6OkVkaXQnfCBhYnBMb2NhbGl6YXRpb25cIiBbdG9vbGJhcl09XCJ0cnVlXCI+XG4gICAgPGZvcm0gY2xhc3M9XCJyb3cgZy0zIG5lZWRzLXZhbGlkYXRpb25cIlxuICAgICAgICBbY2xhc3NdPVwieyd3YXMtdmFsaWRhdGVkJzpmb3JtVmFsaWRhdGlvbn1cIiAgW2Zvcm1Hcm91cF09XCJmb3JtRW50aXR5XCIgIChzdWJtaXQpPVwic2F2ZSgpXCIgPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUVudGl0eSYmZW50cnlJbmZvXCI+XG4gICAgICAgICAgICAgICAgPGNtcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzICBbc2VjdGlvbklkXT1cInNlY3Rpb25JZFwiIFtlbnRyeVR5cGVJZF09XCJlbnRyeVR5cGVJZFwiIFtpc0VkaXRdPVwidHJ1ZVwiIFtzZWxlY3RdPVwiZW50cnlJbmZvXCIgIChmZWVkYmFja0NoaWxkSW5mbyk9XCJfZmVlZGJhY2tDaGlsZEluZm8oJGV2ZW50KVwiICBbZW50aXR5XT1cImZvcm1FbnRpdHlcIj48L2Ntcy1jcmVhdGUtb3ItZWRpdC1lbnRyaWVzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgXG4gICAgPC9mb3JtPlxuPC9hYnAtcGFnZT5cbiJdfQ==
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2FkbWluL2VudHJpZXMvZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsNERBQTREO0FBRTVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFHLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsb0VBQW9FO0FBQ3BFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRywrREFBK0Q7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSww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WUFDcEYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztnQkFDL0IsR0FBRyxFQUFFLG9CQUFvQjtnQkFDekIsU0FBUyxFQUFFLE9BQU87YUFDbkIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELFVBQVU7SUFDVixXQUFXLENBQUMsSUFBSTtRQUNkLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFdBQVc7SUFDWCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQTNQVSxhQUFhO2tHQUFiLGFBQWEsbUNBUGI7WUFDVDtnQkFDRSxPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVk7YUFDckM7U0FDRixvSkM1QkgsaXFCQVVBOzsyRkRvQmEsYUFBYTtrQkFYekIsU0FBUzsrQkFDRSxVQUFVLGFBR1Q7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxZQUFZO3lCQUNyQztxQkFDRjs4QkFjMkMsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3VzZS1saWZlY3ljbGUtaW50ZXJmYWNlICovXG5cbmltcG9ydCB7IEVYVEVOU0lPTlNfSURFTlRJRklFUiB9IGZyb20gJ0BhYnAvbmcuY29tcG9uZW50cy9leHRlbnNpYmxlJztcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICdAYWJwL25nLmNvcmUnO1xuaW1wb3J0IHsgVG9hc3RlclNlcnZpY2UgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XG5pbXBvcnQgeyAgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbi8vIGltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvYWRtaW4vZW50cmllcyc7XG5pbXBvcnQgeyBFQ21zQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlLCBMb2NhdGlvbkJhY2tTZXJ2aWNlLCBVcGRhdGVMaXN0U2VydmljZSB9IGZyb20gJ0BkaWduaXRlLW5nL2V4cGFuZC5jb3JlJztcbmltcG9ydCB7IENyZWF0ZU9yVXBkYXRlRW50cnlJbnB1dEJhc2UsIEVudHJpZXNUb0Zvcm1MYWJlbE1hcCB9IGZyb20gJy4vY3JlYXRlLW9yLXVwZGF0ZS1lbnRyeS1pbnB1dC1iYXNlJztcbi8vIGltcG9ydCB7IFZhbGlkYXRvcnNTZXJ2aWNlIH0gZnJvbSAnQGRpZ25pdGUtbmcvZXhwYW5kLmNvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudHJ5QWRtaW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvZGlnbml0ZS9jbXMvYWRtaW4vZW50cmllcyc7XG4vLyBpbXBvcnQgeyBDbGFzc2ljRWRpdG9yLCBFc3NlbnRpYWxzLCBQYXJhZ3JhcGgsIEJvbGQsIEl0YWxpYyB9IGZyb20gJ2NrZWRpdG9yNSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Ntcy1lZGl0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVYVEVOU0lPTlNfSURFTlRJRklFUixcbiAgICAgIHVzZVZhbHVlOiBFQ21zQ29tcG9uZW50LkVudHJpZXNfRWRpdCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFZGl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gIHByaXZhdGUgX3VwZGF0ZUxpc3RTZXJ2aWNlID0gaW5qZWN0KFVwZGF0ZUxpc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdGVyID0gaW5qZWN0KFRvYXN0ZXJTZXJ2aWNlKTtcbiAgcHVibGljIF9sb2NhdGlvbiA9IGluamVjdChMb2NhdGlvbik7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcml2YXRlIF9FbnRyeUFkbWluU2VydmljZSA9IGluamVjdChFbnRyeUFkbWluU2VydmljZSk7XG4gIHByaXZhdGUgX0xvY2FsaXphdGlvblNlcnZpY2UgPSBpbmplY3QoTG9jYWxpemF0aW9uU2VydmljZSk7XG4gIC8vIHByaXZhdGUgX1ZhbGlkYXRvcnNTZXJ2aWNlID0gaW5qZWN0KFZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgLy8gcHJpdmF0ZSBkYXRlUGlwZSA9IGluamVjdChEYXRlUGlwZSk7XG5cbiAgLyoq6I635Y+W5o+Q5Lqk5oyJ6ZKu5pu/6Lqr77yM55So5LqO55yf5a6e6Kem5Y+R6KGo5Y2V5o+Q5LqkICovXG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgLyoq6KGo5Y2V6aqM6K+B54q25oCBXG4gICAqIHtcbiAgICogIHRpdGxlOnRydWUsXG4gICAqIH1cbiAgICovXG4gIGZvcm1WYWxpZGF0aW9uOiBhbnkgPSAnJztcbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbiAgLyoq6K+t6KiAICovXG4gIGN1bHR1cmVOYW1lOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu57G75Z6LaWQgKi9cbiAgZW50cnlUeXBlSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirniYjlnZdpZCAqL1xuICBzZWN0aW9uSWQ6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirmnaHnm67niYjmnKxpZCAqL1xuICBlbnRyeVZlcnNpb25JZDogc3RyaW5nIHwgYW55ID0gJyc7XG4gIC8qKuadoeebrmlkICovXG4gIGVudHJpZUlkOiBzdHJpbmcgfCBhbnkgPSAnJztcbiAgLyoq5p2h55uu5L+h5oGvICovXG4gIGVudHJ5SW5mbzogYW55ID0gJyc7XG5cbiAgLyoq5piv5ZCm6I2J56i/5o6n5Lu2Ki9cbiAgZ2V0IGRyYWZ0SW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUVudGl0eT8uZ2V0KCdkcmFmdCcpIGFzIEZvcm1Db250cm9sO1xuICB9XG4gIC8qKuivreiogOaOp+S7tiAqL1xuICBnZXQgY3VsdHVyZUlucHV0KCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtRW50aXR5Py5nZXQoJ2N1bHR1cmUnKSBhcyBGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zO1xuICAgIHRoaXMuZW50cmllSWQgPSBwYXJhbXMuZW50cmllSWQ7XG4gICAgdGhpcy5mb3JtRW50aXR5ID0gdGhpcy5mYi5ncm91cChuZXcgQ3JlYXRlT3JVcGRhdGVFbnRyeUlucHV0QmFzZSgpKTtcbiAgICBhd2FpdCB0aGlzLmdldEVudHJ5SW5mbygpO1xuICAgIHRoaXMuY3VsdHVyZUlucHV0LnBhdGNoVmFsdWUodGhpcy5jdWx0dXJlTmFtZSk7XG4gIH1cbiAgLyoq6I635Y+W5p2h55uu5L+h5oGvICovXG4gIGdldEVudHJ5SW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdHMpID0+IHtcbiAgICAgIHRoaXMuX0VudHJ5QWRtaW5TZXJ2aWNlLmdldCh0aGlzLmVudHJpZUlkKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgdGhpcy5jdWx0dXJlTmFtZSA9IHJlcy5jdWx0dXJlO1xuICAgICAgICB0aGlzLmVudHJ5VHlwZUlkID0gcmVzLmVudHJ5VHlwZUlkO1xuICAgICAgICB0aGlzLnNlY3Rpb25JZCA9IHJlcy5zZWN0aW9uSWQ7XG4gICAgICAgIHRoaXMuZW50cnlJbmZvID0gcmVzO1xuICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKuaYvuekuuadoeebruexu+Wei+S/oeaBryAqL1xuICBzaG93RW50cnlUeXBlSW5mbzogYW55ID0gJyc7XG4gIC8qKuWPjemmiOWtkOe6p+mhtemdouS/oeaBryAqL1xuICBfZmVlZGJhY2tDaGlsZEluZm8oZXZlbnQpIHtcbiAgICB0aGlzLnNob3dFbnRyeVR5cGVJbmZvID0gZXZlbnQ/LnNob3dFbnRyeVR5cGUgfHwgJyc7XG4gIH1cbiAgLy8gLyoq5b2T6L+U5Zue57uT5p6c5Li6dHJ1ZeaXtuihqOekuuacqumAmui/h+mqjOivgSAqL1xuICBpc0NoZWNrRm9ybUNtcyhpbnB1dCwgbW9kdWxlKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5wdXQpIHtcbiAgICAgIGlmIChpbnB1dFtrZXldID09PSBmYWxzZSkge1xuICAgICAgICBsZXQgaW5mbyA9IGBgO1xuICAgICAgICAvL+ajgOafpWtleeS4reaYr+WQpuWQq+aciUV4dHJhUHJvcGVydGllcy5cbiAgICAgICAgaWYgKGtleS5pbmNsdWRlcygnZXh0cmFQcm9wZXJ0aWVzLicpKSB7XG4gICAgICAgICAgY29uc3QgYXJyID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICAgICAgY29uc3Qga2V5TmFtZSA9IGFyclsxXTtcbiAgICAgICAgICAvLyBpZiAoa2V5TmFtZS5pbmNsdWRlcygnWycpKSB7XG4gICAgICAgICAgLy8gICAvL+S9v+eUqOato+WImeaPkOWPlmtleU5hbWXkuK1bXeS4reeahOaVsOWtl+S4i+aghyzlubbkuJTovazljJbkuLrmlbDlrZfnsbvlnovvvIzlubbkuJTljrvmjolrZXlOYW1l5Lit55qEWypdXG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyID0ga2V5TmFtZS5tYXRjaCgvXFxkKy9nKTtcbiAgICAgICAgICAvLyAgIGNvbnN0IGtleU5hbWVBcnJOdW0gPSBrZXlOYW1lQXJyLm1hcChpdGVtID0+IE51bWJlcihpdGVtKSk7XG4gICAgICAgICAgLy8gICBjb25zdCBrZXlOYW1lQXJyTnVtU3RyID0ga2V5TmFtZUFyck51bS5qb2luKCcuJyk7XG5cbiAgICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAgICAgLy/lsIZrZXlOYW1l55qE6aaW5a2X5q+N6L2s5Li65bCP5YaZXG4gICAgICAgICAgICBjb25zdCBrZXlOYW1lTG93ZXIgPSBrZXlOYW1lO1xuICAgICAgICAgICAgLy8gY29uc3Qga2V5TmFtZUxvd2VyID0ga2V5TmFtZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIGtleU5hbWUuc2xpY2UoMSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93RW50cnlUeXBlSW5mbyAmJiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZWwgb2YgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlbC5maWVsZC5uYW1lID09IGtleU5hbWVMb3dlcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBpbmZvID0gYFwiJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYCR7bW9kdWxlfTo6JHtpdGVtLm5hbWV95LiL55qEJHtlbC5maWVsZC5kaXNwbGF5TmFtZX3lrZfmrrVgKX1cImA7XG4gICAgICAgICAgICAgICAgICAgIGluZm8gPSBgJHt0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgYCR7bW9kdWxlfTo6VGhlezF9RmllbGRVbmRlclRoZXswfVRBQmAsXG4gICAgICAgICAgICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgIGVsLmZpZWxkLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgICAgICAgICApfWA7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgLy8gfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0ga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgICAgICAgIGluZm8gPSBgXCIke3RoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgJHttb2R1bGV9Ojoke2Rpc3BsYXlOYW1lfWApfVwiIGA7XG4gICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKCdpbmZvJywgaW5mbyxpbnB1dFtrZXldKTtcbiAgICAgICAgaW5mbyA9IGluZm8gKyB0aGlzLl9Mb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoYEFicFZhbGlkYXRpb246OlRoaXNGaWVsZElzTm90VmFsaWQuYCk7XG4gICAgICAgIC8v5L2/55SoYWJw5aSa6K+t6KiA5o+Q56S6XG4gICAgICAgIHRoaXMudG9hc3Rlci53YXJuKGluZm8pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gLyoq6I635Y+W6KGo5Y2V5omA5pyJ5a2X5q615piv5ZCm6YCa6L+H6aqM6K+BICovXG4gIC8vIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAvLyAgIGNvbnN0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyAgIC8vIOmAkuW9kumBjeWOhuihqOWNlee7hOWSjOihqOWNleaOp+S7tumbhuWQiFxuICAvLyAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XG4gIC8vICAgICBpZiAoZm9ybSBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICBPYmplY3Qua2V5cyhmb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gIC8vICAgICAgICAgY29uc3QgY29udHJvbCA9IGZvcm0uY29udHJvbHNba2V5XTtcbiAgLy8gICAgICAgICAvLyBjb25zdCBkaXNwbGF5TmFtZSA9IGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcbiAgLy8gICAgICAgICBjb25zdCBkaXNwbGF5TmFtZSA9IGtleTtcbiAgLy8gICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fS4ke2Rpc3BsYXlOYW1lfWAgOiBkaXNwbGF5TmFtZTtcbiAgLy8gICAgICAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gIC8vICAgICAgICAgICB2YWxpZGF0aW9uU3RhdHVzW2Z1bGxLZXldID0gY29udHJvbC52YWxpZDtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgLy8gICAgICAgICAgIHRyYXZlcnNlRm9ybShjb250cm9sLCBmdWxsS2V5KTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfSBlbHNlIGlmIChmb3JtIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG4gIC8vICAgICAgIGZvcm0uY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCwgaW5kZXgpID0+IHtcbiAgLy8gICAgICAgICBjb25zdCBmdWxsS2V5ID0gcHJlZml4ID8gYCR7cHJlZml4fVske2luZGV4fV1gIDogYFske2luZGV4fV1gO1xuICAvLyAgICAgICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wpIHtcbiAgLy8gICAgICAgICAgIHZhbGlkYXRpb25TdGF0dXNbZnVsbEtleV0gPSBjb250cm9sLnZhbGlkO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuICAvLyAgICAgICAgICAgdHJhdmVyc2VGb3JtKGNvbnRyb2wsIGZ1bGxLZXkpO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfSk7XG4gIC8vICAgICB9XG4gIC8vICAgfTtcblxuICAvLyAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcblxuICAvLyAgIHJldHVybiB2YWxpZGF0aW9uU3RhdHVzO1xuICAvLyB9XG5cbiAgLyoq6I635Y+W6KGo5Y2V6aqM6K+B54q25oCBICovXG4gIC8vIGdldEZvcm1WYWxpZGF0aW9uU3RhdHVzKGZvcm1FbnRpdHk6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAvLyAgIGNvbnN0IHZhbGlkYXRpb25TdGF0dXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICAvLyAgIGNvbnN0IHRyYXZlcnNlRm9ybSA9IChmb3JtOiBGb3JtR3JvdXAgfCBGb3JtQXJyYXksIHByZWZpeCA9ICcnKSA9PiB7XG4gIC8vICAgICAvL+ajgOafpWZvcm3mmK/lkKbkuLpGb3JtR3JvdXDov5jmmK9mb3JtQXJyYXks5aaC5p6c5pivRm9ybUdyb3Vw5YiZ57un57ut6YGN5Y6GLOWmguaenOaYr0Zvcm1BcnJheeWImemBjeWOhkZvcm1BcnJheVxuICAvLyAgICAgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgXG4gIC8vICAgICB9IGVsc2UgaWYgKGZvcm0gaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgXG4gIC8vICAgICB9IFxuXG4gIC8vICAgfVxuICAvLyAgIHRyYXZlcnNlRm9ybShmb3JtRW50aXR5KTtcbiAgLy8gICByZXR1cm4gdmFsaWRhdGlvblN0YXR1c1xuICAvLyB9XG5wcml2YXRlIF9Mb2NhdGlvbkJhY2tTZXJ2aWNlPWluamVjdChMb2NhdGlvbkJhY2tTZXJ2aWNlKTtcbnByaXZhdGUgX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZT1pbmplY3QoRGlnbml0ZVZhbGlkYXRvcnNTZXJ2aWNlKTtcbiAgLyoq5o+Q5LqkICovXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5jdWx0dXJlSW5wdXQuZW5hYmxlKCk7XG4gICAgdGhpcy5kcmFmdElucHV0LnBhdGNoVmFsdWUodGhpcy5kcmFmdFZhbHVlIHx8IGZhbHNlKTtcbiAgICBjb25zdCBpbnB1dCA9IHRoaXMuZm9ybUVudGl0eT8udmFsdWU7XG4gICAgaW5wdXQuY3VsdHVyZSA9IHRoaXMuY3VsdHVyZU5hbWU7XG4gICAgaW5wdXQucHVibGlzaFRpbWUgPSBuZXcgRGF0ZShcbiAgICAgIG5ldyBEYXRlKGlucHV0LnB1Ymxpc2hUaW1lKS5nZXRUaW1lKCkgKyA4ICogNjAgKiA2MCAqIDEwMDAsXG4gICAgKS50b0lTT1N0cmluZygpO1xuICAgIGlucHV0LmNvbmN1cnJlbmN5U3RhbXAgPSB0aGlzLmVudHJ5SW5mby5jb25jdXJyZW5jeVN0YW1wO1xuICAgIC8vIHRoaXMuZm9ybVZhbGlkYXRpb24gPSB0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIC8vIGlmICh0aGlzLl9WYWxpZGF0b3JzU2VydmljZS5pc0NoZWNrRm9ybSh0aGlzLmZvcm1WYWxpZGF0aW9uLCAnQ21zJykpe1xuICAgIC8vICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgIC8vICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICAvLyB9XG5cbiAgICAvLyB0aGlzLmZvcm1WYWxpZGF0aW9uID0gdGhpcy5nZXRGb3JtVmFsaWRhdGlvblN0YXR1cyh0aGlzLmZvcm1FbnRpdHkpO1xuICAgIC8vIGlmICh0aGlzLmlzQ2hlY2tGb3JtQ21zKHRoaXMuZm9ybVZhbGlkYXRpb24sICdDbXMnKSkge1xuICAgIC8vICAgdGhpcy5pc1N1Ym1pdCA9IGZhbHNlO1xuICAgIC8vICAgcmV0dXJuIHRoaXMuY3VsdHVyZUlucHV0LmRpc2FibGUoKTtcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5mb3JtVmFsaWRhdGlvbiA9IHRoaXMuZ2V0Rm9ybVZhbGlkYXRpb25TdGF0dXModGhpcy5mb3JtRW50aXR5KTtcbiAgICAvLyByZXR1cm4gdGhpcy5pc1N1Ym1pdD1mYWxzZTtcbiAgICB0aGlzLmZvcm1WYWxpZGF0aW9uPXRydWU7XG4gICAgaWYgKCF0aGlzLmZvcm1FbnRpdHkudmFsaWQpIHtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLnNob3dFbnRyeVR5cGVJbmZvLmZpZWxkVGFicykge1xuICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIGl0ZW0uZmllbGRzKSB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gYCR7dGhpcy5fTG9jYWxpemF0aW9uU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICBgQ21zOjpUaGV7MX1GaWVsZFVuZGVyVGhlezB9VEFCYCxcbiAgICAgICAgICAgICAgaXRlbS5uYW1lLFxuICAgICAgICAgICAgICBlbC5maWVsZC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICl9YDtcbiAgICAgICAgICBFbnRyaWVzVG9Gb3JtTGFiZWxNYXBbZWwuZmllbGQubmFtZV09aW5mb1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX0RpZ25pdGVWYWxpZGF0b3JzU2VydmljZS5nZXRFcnJvck1lc3NhZ2Uoe1xuICAgICAgICBmb3JtOnRoaXMuZm9ybUVudGl0eSxcbiAgICAgICAgbWFwOkVudHJpZXNUb0Zvcm1MYWJlbE1hcCxcbiAgICAgIH0pO1xuXG4gICAgICAgICB0aGlzLmlzU3VibWl0ID0gZmFsc2U7XG4gICAgICAgdGhpcy5jdWx0dXJlSW5wdXQuZGlzYWJsZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9FbnRyeUFkbWluU2VydmljZVxuICAgICAgLnVwZGF0ZSh0aGlzLmVudHJ5SW5mby5pZCwgaW5wdXQpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG9hc3Rlci5zdWNjZXNzKHRoaXMuX0xvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudChgQWJwVWk6OlNhdmVkU3VjY2Vzc2Z1bGx5YCkpO1xuICAgICAgICB0aGlzLl9Mb2NhdGlvbkJhY2tTZXJ2aWNlLmJhY2tUbyh7XG4gICAgICAgICAgdXJsOiBgL2Ntcy9hZG1pbi9lbnRyaWVzYCxcbiAgICAgICAgICByZXBsZW5pc2g6ICcvZWRpdCcgXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuX3VwZGF0ZUxpc3RTZXJ2aWNlLnVwZGF0ZUxpc3QoKTtcbiAgICAgIH0pO1xuICB9XG4gIGlzU3VibWl0OiBib29sZWFuIHwgYW55ID0gZmFsc2U7XG4gIGRyYWZ0VmFsdWU6IHN0cmluZyB8IGFueSA9ICcnO1xuICAvKirngrnlh7vmj5DkuqQgKi9cbiAgY2xpY2tTdWJtaXQodHlwZSkge1xuICAgIGlmICh0aGlzLmlzU3VibWl0KSByZXR1cm47XG4gICAgdGhpcy5pc1N1Ym1pdCA9IHRydWU7XG4gICAgdGhpcy5kcmFmdFZhbHVlID0gdHlwZTtcbiAgICB0aGlzLmN1bHR1cmVJbnB1dC5lbmFibGUoKTtcbiAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xuICB9XG5cbiAgLyoq6L+U5Zue5LiK5LiA6aG1ICovXG4gIGJhY2tUbygpIHtcbiAgICB0aGlzLl9sb2NhdGlvbi5iYWNrKCk7XG4gIH1cbn1cbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0Ntczo6RWRpdCd8IGFicExvY2FsaXphdGlvblwiIFt0b29sYmFyXT1cInRydWVcIj5cbiAgICA8Zm9ybSBjbGFzcz1cInJvdyBnLTMgbmVlZHMtdmFsaWRhdGlvblwiXG4gICAgICAgIFtjbGFzc109XCJ7J3dhcy12YWxpZGF0ZWQnOmZvcm1WYWxpZGF0aW9ufVwiICBbZm9ybUdyb3VwXT1cImZvcm1FbnRpdHlcIiAgKHN1Ym1pdCk9XCJzYXZlKClcIiA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAjc3VibWl0Y2xpY2s+PC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb3JtRW50aXR5JiZlbnRyeUluZm9cIj5cbiAgICAgICAgICAgICAgICA8Y21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXMgIFtzZWN0aW9uSWRdPVwic2VjdGlvbklkXCIgW2VudHJ5VHlwZUlkXT1cImVudHJ5VHlwZUlkXCIgW2lzRWRpdF09XCJ0cnVlXCIgW3NlbGVjdF09XCJlbnRyeUluZm9cIiAgKGZlZWRiYWNrQ2hpbGRJbmZvKT1cIl9mZWVkYmFja0NoaWxkSW5mbygkZXZlbnQpXCIgIFtlbnRpdHldPVwiZm9ybUVudGl0eVwiPjwvY21zLWNyZWF0ZS1vci1lZGl0LWVudHJpZXM+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICBcbiAgICA8L2Zvcm0+XG48L2FicC1wYWdlPlxuIl19
|