@mediusinc/mng-commons 5.4.0 → 5.5.0-rc.1
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/core/descriptors/table.descriptor.d.ts +4 -2
- package/core/directives/rerender.directive.d.ts +9 -0
- package/core/helpers/route.d.ts +25 -25
- package/core/index.d.ts +2 -0
- package/core/models/version.model.d.ts +16 -4
- package/core/reactivity/effect.d.ts +16 -0
- package/esm2022/core/components/notification/notification-wrapper.component.mjs +4 -4
- package/esm2022/core/components/pages/error/error.page.component.mjs +4 -4
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +4 -4
- package/esm2022/core/data-list/data-list-params-helpers.mjs +18 -3
- package/esm2022/core/descriptors/table.descriptor.mjs +1 -1
- package/esm2022/core/directives/component.directive.mjs +4 -4
- package/esm2022/core/directives/rerender.directive.mjs +25 -0
- package/esm2022/core/directives/template.directive.mjs +4 -4
- package/esm2022/core/index.mjs +4 -1
- package/esm2022/core/models/version.model.mjs +1 -1
- package/esm2022/core/pipes/boolean.pipe.mjs +6 -6
- package/esm2022/core/pipes/class-map.pipe.mjs +4 -4
- package/esm2022/core/pipes/enum.pipe.mjs +4 -4
- package/esm2022/core/pipes/enumerate-async.pipe.mjs +4 -4
- package/esm2022/core/pipes/enumerate.pipe.mjs +4 -4
- package/esm2022/core/pipes/getter.pipe.mjs +5 -5
- package/esm2022/core/pipes/i18n-property.pipe.mjs +4 -4
- package/esm2022/core/pipes/json-path.pipe.mjs +4 -4
- package/esm2022/core/pipes/parametrize.pipe.mjs +4 -4
- package/esm2022/core/pipes/template.pipe.mjs +4 -4
- package/esm2022/core/reactivity/effect.mjs +22 -0
- package/esm2022/core/security/permission.service.mjs +4 -4
- package/esm2022/core/services/commons-init.service.mjs +4 -4
- package/esm2022/core/services/commons-router.service.mjs +4 -4
- package/esm2022/core/services/commons-storage.service.mjs +4 -4
- package/esm2022/core/services/commons.service.mjs +8 -8
- package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +32 -25
- package/esm2022/filter/descriptors/filter.descriptor.mjs +53 -1
- package/esm2022/form/components/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/form/components/date-range/date-range.component.mjs +4 -4
- package/esm2022/form/components/dropdown/dropdown.component.mjs +4 -4
- package/esm2022/form/components/number-range/number-range.component.mjs +4 -4
- package/esm2022/form/directives/input-trim.directive.mjs +4 -4
- package/esm2022/table/api/descriptors/sort.descriptor.mjs +2 -2
- package/esm2022/table/api/descriptors/table.descriptor.mjs +31 -7
- package/esm2022/table/components/column-filter/column-filter.component.mjs +33 -40
- package/esm2022/table/components/column-value/column-value.component.mjs +6 -6
- package/esm2022/table/components/filter/filter-active-tag/filter-active-tag.component.mjs +7 -7
- package/esm2022/table/components/filter/filter-form/filter-form.component.mjs +28 -35
- package/esm2022/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.mjs +44 -45
- package/esm2022/table/components/table/table.component.mjs +114 -430
- package/esm2022/table/helpers/filters.mjs +9 -25
- package/esm2022/table/helpers/table.mjs +24 -0
- package/esm2022/table/index.mjs +2 -2
- package/esm2022/table/models/column-preferences.model.mjs +1 -1
- package/esm2022/table/models/filter.model.mjs +1 -1
- package/esm2022/table/pipes/filter-value.pipe.mjs +4 -4
- package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +4 -4
- package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +4 -4
- package/esm2022/table/services/table-data.service.mjs +194 -0
- package/esm2022/table/services/table-metadata.service.mjs +136 -0
- package/esm2022/table/services/table-preferences.service.mjs +142 -0
- package/esm2022/tableview/action/components/action/action.component.mjs +6 -7
- package/esm2022/tableview/action/components/editor/action-editor.component.mjs +4 -4
- package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +69 -46
- package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +4 -4
- package/esm2022/tableview/action/components/route/action-route.component.mjs +5 -6
- package/esm2022/tableview/action/components/table/action-table.component.mjs +6 -6
- package/esm2022/tableview/action/helpers/action-execution.mjs +25 -0
- package/esm2022/tableview/action/models/execution/action-instance.model.mjs +2 -3
- package/esm2022/tableview/action/services/action-executor.service.mjs +12 -79
- package/esm2022/tableview/action/services/component-action-executor.service.mjs +4 -4
- package/esm2022/tableview/action/services/data-provider-executor.service.mjs +4 -4
- package/esm2022/tableview/action/services/navigation.service.mjs +4 -4
- package/esm2022/tableview/action/services/root-action-executor.service.mjs +4 -4
- package/esm2022/tableview/action/services/view-container.service.mjs +4 -4
- package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +13 -1
- package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +67 -10
- package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +2 -2
- package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +17 -1
- package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +32 -7
- package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +2 -2
- package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +2 -1
- package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +4 -4
- package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +13 -5
- package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +3 -2
- package/esm2022/tableview/api/tableview/helpers/tableview-descriptor-helpers.mjs +2 -2
- package/esm2022/tableview/editor/components/editor/auto-save-status/auto-save-status.component.mjs +4 -4
- package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +31 -38
- package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +7 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +7 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +7 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +5 -5
- package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +5 -6
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +5 -6
- package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +6 -7
- package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +6 -5
- package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +4 -4
- package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +4 -4
- package/esm2022/tableview/editor/helpers/editor-autosave.mjs +2 -2
- package/esm2022/tableview/editor/services/form-editor.service.mjs +4 -4
- package/esm2022/tableview/index.mjs +1 -2
- package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +4 -4
- package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +4 -4
- package/fesm2022/mediusinc-mng-commons-core.mjs +130 -71
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-filter.mjs +83 -24
- package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +15 -15
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-api.mjs +31 -7
- package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +704 -606
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +146 -26
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +260 -317
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
- package/filter/descriptors/filter-lookup.descriptor.d.ts +17 -20
- package/filter/descriptors/filter.descriptor.d.ts +32 -2
- package/form/components/date-range/date-range.component.d.ts +3 -3
- package/form/components/number-range/number-range.component.d.ts +2 -2
- package/package.json +4 -4
- package/table/api/descriptors/column.descriptor.d.ts +1 -1
- package/table/api/descriptors/sort.descriptor.d.ts +2 -2
- package/table/api/descriptors/table.descriptor.d.ts +20 -6
- package/table/components/column-filter/column-filter.component.d.ts +8 -14
- package/table/components/filter/filter-active-tag/filter-active-tag.component.d.ts +5 -5
- package/table/components/filter/filter-form/filter-form.component.d.ts +10 -19
- package/table/components/filter/filter-overlay-with-tag/filter-overlay-with-tag.component.d.ts +11 -13
- package/table/components/table/table.component.d.ts +20 -64
- package/table/helpers/filters.d.ts +4 -7
- package/table/helpers/table.d.ts +6 -0
- package/table/index.d.ts +1 -1
- package/table/models/column-preferences.model.d.ts +2 -2
- package/table/models/filter.model.d.ts +14 -2
- package/table/services/table-data.service.d.ts +36 -0
- package/table/services/table-metadata.service.d.ts +31 -0
- package/table/services/table-preferences.service.d.ts +25 -0
- package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +4 -7
- package/tableview/action/components/localization/data-language-dropdown.component.d.ts +1 -1
- package/tableview/action/helpers/action-execution.d.ts +7 -0
- package/tableview/action/models/execution/action-instance.model.d.ts +1 -2
- package/tableview/action/services/action-executor.service.d.ts +1 -2
- package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +1 -0
- package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +12 -4
- package/tableview/api/action/descriptors/action-link.descriptor.d.ts +1 -0
- package/tableview/api/action/descriptors/action.descriptor.d.ts +5 -3
- package/tableview/api/action/models/execution/action-instance-state.model.d.ts +1 -1
- package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +4 -10
- package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +1 -1
- package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +6 -4
- package/tableview/editor/components/editor/form-editor.component.d.ts +3 -2
- package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +1 -1
- package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +2 -1
- package/tableview/index.d.ts +0 -1
- package/version-info.json +6 -6
- package/esm2022/table/services/data-list.service.mjs +0 -29
- package/esm2022/tableview/action/models/execution/action-instance-state.model.mjs +0 -32
- package/table/services/data-list.service.d.ts +0 -19
- package/tableview/action/models/execution/action-instance-state.model.d.ts +0 -30
|
@@ -112,6 +112,13 @@ export function dataListParamsToUrlQuery(params, defaults = {
|
|
|
112
112
|
paramFilter.matchMode !== FilterMatchMode.DoesNotExist) {
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
+
if (paramFilter.value == null &&
|
|
116
|
+
defaultFilter?.value != null &&
|
|
117
|
+
paramFilter.matchMode !== FilterMatchMode.Exists &&
|
|
118
|
+
paramFilter.matchMode !== FilterMatchMode.DoesNotExist) {
|
|
119
|
+
urlParams[`${opts?.prependFilterName ?? ''}${k}`] = 'null';
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
115
122
|
urlParams[`${opts?.prependFilterName ?? ''}${k}`] = dataListParamsFiltersToUrlQuery(params, k, true);
|
|
116
123
|
});
|
|
117
124
|
}
|
|
@@ -275,15 +282,24 @@ export function fromUrlQueryToDataListParams(urlParams, opts) {
|
|
|
275
282
|
// empty string should be ignored
|
|
276
283
|
return;
|
|
277
284
|
}
|
|
285
|
+
const filterKey = opts?.prependFilterName ? urlParamKey.substring(opts.prependFilterName.length) : urlParamKey;
|
|
278
286
|
const filterParts = urlParamValue.split(':');
|
|
279
287
|
let partIdx = 0;
|
|
288
|
+
// removed default filter
|
|
289
|
+
if (filterParts[partIdx] === 'null') {
|
|
290
|
+
if (!params.filters) {
|
|
291
|
+
params.filters = {};
|
|
292
|
+
}
|
|
293
|
+
params.filters[filterKey] = { value: null };
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
280
296
|
// case sensitive
|
|
281
297
|
let caseSensitive = undefined;
|
|
282
298
|
if (filterParts[partIdx] === 'cs' || filterParts[partIdx] === 'ci') {
|
|
283
299
|
caseSensitive = filterParts[partIdx++] === 'cs';
|
|
284
300
|
}
|
|
285
301
|
// match mode
|
|
286
|
-
const matchMode = filterParts[partIdx] ? FilterMatchMode.fromAbbreviation(filterParts[partIdx]) ?? filterParts[partIdx] : FilterMatchMode.Equals;
|
|
302
|
+
const matchMode = filterParts[partIdx] ? (FilterMatchMode.fromAbbreviation(filterParts[partIdx]) ?? filterParts[partIdx]) : FilterMatchMode.Equals;
|
|
287
303
|
partIdx++;
|
|
288
304
|
const noVal = matchMode === FilterMatchMode.Exists || matchMode === FilterMatchMode.DoesNotExist;
|
|
289
305
|
// value
|
|
@@ -384,7 +400,6 @@ export function fromUrlQueryToDataListParams(urlParams, opts) {
|
|
|
384
400
|
if (!params.filters) {
|
|
385
401
|
params.filters = {};
|
|
386
402
|
}
|
|
387
|
-
const filterKey = opts?.prependFilterName ? urlParamKey.substring(opts.prependFilterName.length) : urlParamKey;
|
|
388
403
|
params.filters[filterKey] = { value: value, matchMode: matchMode, caseSensitive: caseSensitive };
|
|
389
404
|
}
|
|
390
405
|
});
|
|
@@ -447,4 +462,4 @@ export function dataListParamsFilterValueToUrlString(value, allowNull = false) {
|
|
|
447
462
|
}
|
|
448
463
|
return String(value);
|
|
449
464
|
}
|
|
450
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LXBhcmFtcy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGF0YS1saXN0L2RhdGEtbGlzdC1wYXJhbXMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR3JEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQXlCO0lBQ25FLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUM7SUFFbEMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFh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cmFtc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUYWJsZUxhenlMb2FkRXZlbnR9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBmcm9tICcuLi9lcnJvci9lcnJvci5tb2RlbCc7XG5pbXBvcnQge2RhdGVUb0lzb1N0cmluZ30gZnJvbSAnLi4vaGVscGVycy9kYXRlJztcbmltcG9ydCB7RGF0YUxpc3RGaWx0ZXIsIERhdGFMaXN0RmlsdGVyVmFsdWVUeXBlLCBEYXRhTGlzdEZpbHRlcnNUeXBlLCBEYXRhTGlzdFBhcmFtc30gZnJvbSAnLi9kYXRhLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJNYXRjaE1vZGV9IGZyb20gJy4vZmlsdGVyLW1hdGNoLm1vZGVsJztcbmltcG9ydCB7Q29tbW9uc0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuL2ZpbHRlci1tZXRhZGF0YS5tb2RlbCc7XG5cbi8qKlxuICogQ29udmVydHMgYSBUYWJsZUxhenlMb2FkRXZlbnQgdG8gRGF0YUxpc3RQYXJhbXMuXG4gKlxuICogQHBhcmFtIHtUYWJsZUxhenlMb2FkRXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gY29udmVydC5cbiAqIEByZXR1cm4ge0RhdGFMaXN0UGFyYW1zfSAtIFRoZSBjb252ZXJ0ZWQgRGF0YUxpc3RQYXJhbXMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbVRhYmxlTG9hZFRvRGF0YUxpc3RQYXJhbXMoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCk6IERhdGFMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IERhdGFMaXN0UGFyYW1zID0ge307XG5cbiAgICBpZiAoZXZlbnQuZmlyc3QgIT0gbnVsbCkge1xuICAgICAgICBwYXJhbXMub2Zmc2V0ID0gZXZlbnQuZmlyc3Q7XG4gICAgfVxuICAgIGlmIChldmVudC5yb3dzICE9IG51bGwpIHtcbiAgICAgICAgcGFyYW1zLmxpbWl0ID0gZXZlbnQucm93cztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV2ZW50Lmdsb2JhbEZpbHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcGFyYW1zLnNlYXJjaCA9IGV2ZW50Lmdsb2JhbEZpbHRlcjtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQuZ2xvYmFsRmlsdGVyKSAmJiBldmVudC5nbG9iYWxGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbXMuc2VhcmNoID0gZXZlbnQuZ2xvYmFsRmlsdGVyWzBdO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50Lm11bHRpU29ydE1ldGEpICYmIGV2ZW50Lm11bHRpU29ydE1ldGEubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbXMuc29ydCA9IGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKG0gPT4gKHtwcm9wZXJ0eTogbS5maWVsZCwgYXNjZW5kaW5nOiBtLm9yZGVyID49IDB9KSk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSBPYmplY3Qua2V5cyhldmVudC5maWx0ZXJzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXI6IERhdGFMaXN0RmlsdGVyID0ge307XG4gICAgICAgICAgICBjb25zdCBldmVudEZpbHRlcjogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHwgQ29tbW9uc0ZpbHRlck1ldGFkYXRhW10gfCB1bmRlZmluZWQgPSBldmVudC5maWx0ZXJzPy5ba2V5IGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudEZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSBldmVudEZpbHRlclswXS52YWx1ZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIubWF0Y2hNb2RlID0gZXZlbnRGaWx0ZXJbMF0ubWF0Y2hNb2RlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5jYXNlU2Vuc2l0aXZlID0gZXZlbnRGaWx0ZXJbMF0uY2FzZVNlbnNpdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRGaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IGV2ZW50RmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5tYXRjaE1vZGUgPSBldmVudEZpbHRlci5tYXRjaE1vZGU7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNhc2VTZW5zaXRpdmUgPSBldmVudEZpbHRlci5jYXNlU2Vuc2l0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIHNlYXJjaCBjYXNlIHNlbnNpdGl2aXR5IHRvIGJlIGFsc28gd3JpdHRlbiBvbiBzZWFyY2hDYXNlU2Vuc2l0aXZlXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnZ2xvYmFsJyAmJiB0eXBlb2YgcGFyYW1zLnNlYXJjaCA9PT0gJ3N0cmluZycgJiYgZmlsdGVyLmNhc2VTZW5zaXRpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zZWFyY2hDYXNlU2Vuc2l0aXZlID0gZmlsdGVyLmNhc2VTZW5zaXRpdmU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7Li4uYWNjLCBba2V5XTogZmlsdGVyfTtcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGdpdmVuIHBhcmFtZXRlcnMgdG8gVVJMIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gKiBTb3J0cyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBzb3J0IHF1ZXJ5IGxhbmd1YWdlOiBgYXNjOnByb3AxLGRlc2M6cHJvcDJgLCAuLi5cbiAqIEZpbHRlciBrZXlzIGFyZSBcImZsYXR0ZW5lZFwiIGluIHRoZSBuZXcgb2JqZWN0LCB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBpbiBNZWRpdXMgZGF0YSBBUEkgZmlsdGVyIHF1ZXJ5IGxhbmd1YWdlOiBgY3M6ZXE6YXNkYCwgYGluOmFzZCxxd2VgLCBgZXhgLCAuLi5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBjb252ZXJ0LlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc3xudWxsfSBkZWZhdWx0cyAtIFRoZSBkZWZhdWx0IHBhcmFtZXRlcnMgdXNlZCBpZiBubyBtYXRjaGluZyBwcm9wZXJ0eSBpbiBwYXJhbXMgaXMgYXZhaWxhYmxlLiBEZWZhdWx0cyB0byB7IGxpbWl0OiAyNSwgb2Zmc2V0OiAwIH0gaWYgbm90IHByb3ZpZGVkLlxuICogQHBhcmFtIG9wdHMgLSBPcHRpb25zIGluIGNvbnZlcnRpbmcgdG8gdXJsIHF1ZXJ5OlxuICogICAtIHByZXBlbmRGaWx0ZXJOYW1lIFByZXBlbmRzIGZpbHRlciBrZXkgd2l0aCBwcm92aWRlZCBzdHJpbmdcbiAqIEByZXR1cm5zIHtQYXJhbXN9IC0gVGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zVG9VcmxRdWVyeShcbiAgICBwYXJhbXM6IERhdGFMaXN0UGFyYW1zPGFueSwgYW55PixcbiAgICBkZWZhdWx0czogRGF0YUxpc3RQYXJhbXM8YW55LCBhbnk+IHwgbnVsbCA9IHtcbiAgICAgICAgbGltaXQ6IDI1LFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICB9LFxuICAgIG9wdHM/OiB7XG4gICAgICAgIHByZXBlbmRGaWx0ZXJOYW1lPzogc3RyaW5nO1xuICAgIH1cbik6IFBhcmFtcyB7XG4gICAgY29uc3QgdXJsUGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmIChwYXJhbXMubGltaXQgJiYgcGFyYW1zLmxpbWl0ICE9PSBkZWZhdWx0cz8ubGltaXQpIHtcbiAgICAgICAgdXJsUGFyYW1zWydsaW1pdCddID0gcGFyYW1zLmxpbWl0O1xuICAgIH1cbiAgICBpZiAocGFyYW1zLm9mZnNldCAmJiBwYXJhbXMub2Zmc2V0ICE9PSBkZWZhdWx0cz8ub2Zmc2V0KSB7XG4gICAgICAgIHVybFBhcmFtc1snb2Zmc2V0J10gPSBwYXJhbXMub2Zmc2V0O1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMuc2VhcmNoICE9PSBkZWZhdWx0cz8uc2VhcmNoKSB7XG4gICAgICAgIHVybFBhcmFtc1sncSddID0gYCR7cGFyYW1zLnNlYXJjaENhc2VTZW5zaXRpdmUgPyBgY3M6YCA6ICcnfSR7cGFyYW1zLnNlYXJjaH1gO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnNvcnQgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydCkgJiYgcGFyYW1zLnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWZhdWx0cz8uc29ydCA9PSBudWxsIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShkZWZhdWx0cy5zb3J0KSB8fFxuICAgICAgICAgICAgZGVmYXVsdHMuc29ydC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0Lmxlbmd0aCAhPT0gZGVmYXVsdHMuc29ydC5sZW5ndGggfHxcbiAgICAgICAgICAgIGRlZmF1bHRzLnNvcnQuc29tZSgoZHMsIGlkeCkgPT4gZHMucHJvcGVydHkgIT09IHBhcmFtcy5zb3J0IVtpZHhdLnByb3BlcnR5IHx8IChkcy5hc2NlbmRpbmcgPz8gdHJ1ZSkgIT09IChwYXJhbXMuc29ydCFbaWR4XS5hc2NlbmRpbmcgPz8gdHJ1ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdXJsUGFyYW1zWydzb3J0J10gPSBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5KHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcy5maWx0ZXJzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgICAgLy8gZ2xvYmFsIHNlYXJjaCBmaWx0ZXIgaXMgYWxyZWFkeSBpbmNsdWRlZCBpbiB0aGUgJ3EnIHBhcmFtZXRlciwgbm8gbmVlZCB0byBpbmNsdWRlIGl0IGhlcmVcbiAgICAgICAgICAgIGlmIChrID09PSAnZ2xvYmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcmFtRmlsdGVyID0gcGFyYW1zLmZpbHRlcnMhW2sgYXMga2V5b2Ygb2JqZWN0XSE7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RmlsdGVyID0gZGVmYXVsdHM/LmZpbHRlcnM/LltrIGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlciAmJlxuICAgICAgICAgICAgICAgICgoQXJyYXkuaXNBcnJheShkZWZhdWx0RmlsdGVyLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHBhcmFtRmlsdGVyLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLnZhbHVlLmxlbmd0aCA9PT0gcGFyYW1GaWx0ZXIudmFsdWUubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIudmFsdWUuZXZlcnkoKHYsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAocGFyYW1GaWx0ZXIudmFsdWUgYXMgQXJyYXk8RGF0YUxpc3RGaWx0ZXJWYWx1ZVR5cGU+KVtpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiB2IGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlLmdldFRpbWUoKSA9PT0gdi5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB2YWx1ZSA9PT0gdjtcbiAgICAgICAgICAgICAgICAgICAgfSkpIHx8IC8vIGhhbmRsZSBhcnJheXNcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci52YWx1ZSA9PT0gcGFyYW1GaWx0ZXIudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci5tYXRjaE1vZGUgPT09IHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAmJlxuICAgICAgICAgICAgICAgIChkZWZhdWx0RmlsdGVyLmNhc2VTZW5zaXRpdmUgPz8gZmFsc2UpID09PSAocGFyYW1GaWx0ZXIuY2FzZVNlbnNpdGl2ZSA/PyBmYWxzZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLnZhbHVlID09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyPy52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIubWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzICYmXG4gICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIubWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVybFBhcmFtc1tgJHtvcHRzPy5wcmVwZW5kRmlsdGVyTmFtZSA/PyAnJ30ke2t9YF0gPSBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5KHBhcmFtcywgaywgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdHM/LmZpbHRlcnMpIHtcbiAgICAgICAgLy8gYWRkIG90aGVyIGRlZmF1bHRzXG4gICAgICAgIGNvbnN0IHBhcmFtRmlsdGVyS2V5cyA9IHBhcmFtcy5maWx0ZXJzID8gT2JqZWN0LmtleXMocGFyYW1zLmZpbHRlcnMpIDogW107XG4gICAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLmZpbHRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKGsgPT4gcGFyYW1GaWx0ZXJLZXlzLmluZGV4T2YoaykgPCAwKVxuICAgICAgICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zW2Ake29wdHM/LnByZXBlbmRGaWx0ZXJOYW1lID8/ICcnfSR7a31gXSA9IGRhdGFMaXN0UGFyYW1zRmlsdGVyc1RvVXJsUXVlcnkoZGVmYXVsdHMsIGspO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybFBhcmFtcztcbn1cblxuLyoqXG4gKiBNZXJnZXMgdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGUgbWVyZ2VkIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBtZXJnZSB3aXRoIGRlZmF1bHRzLlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gZGVmYXVsdHMgLSBUaGUgZGVmYXVsdCB2YWx1ZXMgdG8gbWVyZ2Ugd2l0aCBwYXJhbXMgKG9wdGlvbmFsLCBkZWZhdWx0IGlzIHsgbGltaXQ6IDI1LCBvZmZzZXQ6IDAgfSkuXG4gKiBAcmV0dXJucyB7RGF0YUxpc3RQYXJhbXN9IC0gVGhlIG1lcmdlZCBwYXJhbWV0ZXJzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGF0YUxpc3RQYXJhbXNXaXRoRGVmYXVsdHM8U29ydHMgPSBhbnksIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBhbnk+KFxuICAgIHBhcmFtczogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+LFxuICAgIGRlZmF1bHRzOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4gPSB7XG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgICAgb2Zmc2V0OiAwXG4gICAgfVxuKTogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+IHtcbiAgICBjb25zdCBtZXJnZWQ6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCA/PyBkZWZhdWx0cy5saW1pdCxcbiAgICAgICAgb2Zmc2V0OiBwYXJhbXMub2Zmc2V0ID8/IGRlZmF1bHRzLm9mZnNldCxcbiAgICAgICAgc2VhcmNoOiBwYXJhbXMuc2VhcmNoID8/IGRlZmF1bHRzLnNlYXJjaCxcbiAgICAgICAgc29ydDogKHBhcmFtcy5zb3J0ID8/IGRlZmF1bHRzLnNvcnQpPy5tYXAocyA9PiAoey4uLnN9KSlcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgIG1lcmdlZC5maWx0ZXJzID0ge30gYXMgRGF0YUxpc3RGaWx0ZXJzVHlwZTxGaWx0ZXJzPjtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1zLmZpbHRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gKG1lcmdlZC5maWx0ZXJzIVtrZXkgYXMgRmlsdGVyc10gPSB7Li4uKHZhbHVlIGFzIERhdGFMaXN0RmlsdGVyKX0pKTtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRzLmZpbHRlcnMpIHtcbiAgICAgICAgaWYgKCFtZXJnZWQuZmlsdGVycykgbWVyZ2VkLmZpbHRlcnMgPSB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+O1xuICAgICAgICBPYmplY3QuZW50cmllcyhkZWZhdWx0cy5maWx0ZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmIChtZXJnZWQuZmlsdGVycyFba2V5IGFzIEZpbHRlcnNdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQuZmlsdGVycyFba2V5IGFzIEZpbHRlcnNdID0gey4uLih2YWx1ZSBhcyBEYXRhTGlzdEZpbHRlcil9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2VkO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiBwYXJhbWV0ZXJzIHRvIGEgVVJMIHF1ZXJ5IHN0cmluZyBmb3Igc29ydGluZy5cbiAqIFNvcnRzIGFyZSBmb3JtYXR0ZWQgaW4gTWVkaXVzIGRhdGEgQVBJIHNvcnQgcXVlcnkgbGFuZ3VhZ2U6IGBhc2M6cHJvcDEsZGVzYzpwcm9wMmAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXN9IHBhcmFtcyAtIEFuIG9wdGlvbmFsIG9iamVjdCBjb250YWluaW5nIHNvcnQgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgVVJMIHF1ZXJ5IG9yIHVuZGVmaW5lZCBpZiBubyBzb3J0IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YUxpc3RQYXJhbXNTb3J0VG9VcmxRdWVyeShwYXJhbXM/OiBEYXRhTGlzdFBhcmFtczxhbnksIGFueT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBwYXJhbXMgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydClcbiAgICAgICAgPyBwYXJhbXMuc29ydC5tYXAocyA9PiBgJHtzLmFzY2VuZGluZyA9PT0gdHJ1ZSB8fCBzLmFzY2VuZGluZyA9PT0gdW5kZWZpbmVkID8gJ2FzYycgOiAnZGVzYyd9OiR7U3RyaW5nKHMucHJvcGVydHkpfWApLmpvaW4oJywnKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHNwZWNpZmljIGZpbHRlciBwYXJhbWV0ZXIgKGJ5IGtleSkgZnJvbSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgdG8gYSBVUkwgcXVlcnkgc3RyaW5nLlxuICogRmlsdGVyIGtleXMgYXJlIFwiZmxhdHRlbmVkXCIgaW4gdGhlIG5ldyBvYmplY3QsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBmaWx0ZXIgcXVlcnkgbGFuZ3VhZ2U6IGBjczplcTphc2RgLCBgaW46YXNkLHF3ZWAsIGBleGAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXM8YW55LCBGaWx0ZXJzPiB8IHVuZGVmaW5lZH0gcGFyYW1zIC0gVGhlIERhdGFMaXN0UGFyYW1zIG9iamVjdCBjb250YWluaW5nIHRoZSBmaWx0ZXJzLlxuICogQHBhcmFtIHtGaWx0ZXJzfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBmaWx0ZXIgdG8gY29udmVydC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBudWxsIHZhbHVlcyBpbiB0aGUgcXVlcnkgc3RyaW5nLlxuICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFRoZSBVUkwgcXVlcnkgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWVkIGZpbHRlciwgb3IgdW5kZWZpbmVkIGlmIHRoZSBmaWx0ZXIgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YUxpc3RQYXJhbXNGaWx0ZXJzVG9VcmxRdWVyeTxGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0gc3RyaW5nPihcbiAgICBwYXJhbXM6IERhdGFMaXN0UGFyYW1zPGFueSwgRmlsdGVycz4gfCB1bmRlZmluZWQsXG4gICAga2V5OiBGaWx0ZXJzLFxuICAgIGFsbG93TnVsbCA9IGZhbHNlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhcmFtRmlsdGVyID0gcGFyYW1zPy5maWx0ZXJzPy5ba2V5XTtcbiAgICByZXR1cm4gZGF0YUxpc3RQYXJhbXNGaWx0ZXJUb1VybFF1ZXJ5KHBhcmFtRmlsdGVyLCBhbGxvd051bGwpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsdGVyIHRvIGEgVVJMIHF1ZXJ5IHN0cmluZy5cbiAqIEZpbHRlciBrZXlzIGFyZSBcImZsYXR0ZW5lZFwiIGluIHRoZSBuZXcgb2JqZWN0LCB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBpbiBNZWRpdXMgZGF0YSBBUEkgZmlsdGVyIHF1ZXJ5IGxhbmd1YWdlOiBgY3M6ZXE6YXNkYCwgYGluOmFzZCxxd2VgLCBgZXhgLCAuLi5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0RmlsdGVyfSBwYXJhbUZpbHRlciAtIFRoZSBmaWx0ZXIgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBudWxsIHZhbHVlcyBpbiB0aGUgZmlsdGVyLlxuICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IC0gVGhlIGZpbHRlciBjb252ZXJ0ZWQgdG8gYSBVUkwgcXVlcnkgc3RyaW5nLCBvciB1bmRlZmluZWQgaWYgbm8gZmlsdGVyIGlzIHByb3ZpZGVkIG9yIHRoZSBmaWx0ZXIgaGFzIGVtcHR5IG9yIGludmFsaWQgdmFsdWVzLlxuICogQHRocm93cyB7Q29tbW9uc0ludGVybmFsRXJyb3J9IC0gSWYgdGhlIGZpbHRlciBoYXMgaW52YWxpZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc0ZpbHRlclRvVXJsUXVlcnkocGFyYW1GaWx0ZXI/OiBEYXRhTGlzdEZpbHRlciwgYWxsb3dOdWxsID0gZmFsc2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlQXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyYW1GaWx0ZXI/LnZhbHVlKSA/IHBhcmFtRmlsdGVyIS52YWx1ZS5maWx0ZXIodiA9PiB2ICE9PSB1bmRlZmluZWQgJiYgKGFsbG93TnVsbCB8fCB2ICE9PSBudWxsKSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF0Y2hNb2RlID0gcGFyYW1GaWx0ZXI/Lm1hdGNoTW9kZSA/PyBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgIGlmIChcbiAgICAgICAgcGFyYW1GaWx0ZXIgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAoIWFsbG93TnVsbCAmJiBtYXRjaE1vZGUgIT09ICdleGlzdHMnICYmIG1hdGNoTW9kZSAhPT0gJ2RvZXNOb3RFeGlzdCcgJiYgcGFyYW1GaWx0ZXIudmFsdWUgPT0gbnVsbCkgfHxcbiAgICAgICAgKHR5cGVvZiBwYXJhbUZpbHRlci52YWx1ZSA9PT0gJ3N0cmluZycgJiYgcGFyYW1GaWx0ZXIudmFsdWUubGVuZ3RoID09PSAwKSB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZUFzQXJyYXkpICYmIGZpbHRlclZhbHVlQXNBcnJheS5sZW5ndGggPT09IDApXG4gICAgKSB7XG4gICAgICAgIC8vIG5vIG5lZWQgdG8gaW5jbHVkZSBmaWx0ZXJzIGZvciBlbXB0eSB2YWx1ZXNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJiAhKEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVBc0FycmF5KSAmJiBmaWx0ZXJWYWx1ZUFzQXJyYXkubGVuZ3RoID09PSAyKSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCBtb2RlIGJldHdlZW4gcmVxdWlyZXMgZXhhY3RseSAyIHZhbHVlczogJHtwYXJhbUZpbHRlci52YWx1ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoKG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkluIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLk5vdEluKSAmJiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVBc0FycmF5KSB8fCBmaWx0ZXJWYWx1ZUFzQXJyYXkubGVuZ3RoID09PSAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCBtb2RlICR7bWF0Y2hNb2RlfSByZXF1aXJlcyBub24tZW1wdHkgYXJyYXk6ICR7cGFyYW1GaWx0ZXIudmFsdWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKChbRmlsdGVyTWF0Y2hNb2RlLkluLCBGaWx0ZXJNYXRjaE1vZGUuTm90SW4sIEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihtYXRjaE1vZGUpID09PSAtMSAmJiBBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlQXNBcnJheSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBGaWx0ZXIgbWF0Y2ggbW9kZSAke21hdGNoTW9kZX0gbXVzdCBub3QgYmUgYXJyYXk6ICR7cGFyYW1GaWx0ZXIudmFsdWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9WYWwgPSBwYXJhbUZpbHRlci5tYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgcGFyYW1GaWx0ZXIubWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0O1xuICAgIGNvbnN0IHVybFZhbHVlUGFydCA9IG5vVmFsID8gJycgOiBgOiR7ZGF0YUxpc3RQYXJhbXNGaWx0ZXJWYWx1ZVRvVXJsU3RyaW5nKGZpbHRlclZhbHVlQXNBcnJheSA/PyBwYXJhbUZpbHRlci52YWx1ZSwgYWxsb3dOdWxsKX1gO1xuXG4gICAgcmV0dXJuIGAke3BhcmFtRmlsdGVyLmNhc2VTZW5zaXRpdmUgPyAnY3M6JyA6IHBhcmFtRmlsdGVyLmNhc2VTZW5zaXRpdmUgPT09IGZhbHNlID8gJ2NpOicgOiAnJ30ke0ZpbHRlck1hdGNoTW9kZS5nZXRBYmJyZXZpYXRpb24obWF0Y2hNb2RlKSA/PyBtYXRjaE1vZGV9JHt1cmxWYWx1ZVBhcnR9YDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBVUkwgcXVlcnkgcGFyYW1ldGVycyB0byBhIERhdGFMaXN0UGFyYW1zIG9iamVjdC5cbiAqIFNvcnRzIGFyZSBmb3JtYXR0ZWQgZnJvbSBNZWRpdXMgZGF0YSBBUEkgc29ydCBxdWVyeSBsYW5ndWFnZTogYGFzYzpwcm9wMSxkZXNjOnByb3AyYCwgLi4uXG4gKiBGaWx0ZXIga2V5cyBhcmUgYWxsIGtleXMgaW4gUGFyYW1zIG9iamVjdCB0aGF0IGFyZSBub3QgbWF0Y2hlZCBlbHNld2hlcmUsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGZyb20gTWVkaXVzIGRhdGEgQVBJIGZpbHRlciBxdWVyeSBsYW5ndWFnZTogYGNzOmVxOmFzZGAsIGBpbjphc2QscXdlYCwgYGV4YCwgLi4uXG4gKlxuICogQHBhcmFtIHtQYXJhbXN9IHVybFBhcmFtcyAtIFRoZSBVUkwgcXVlcnkgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSBvcHRzIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgY29udmVyc2lvbjpcbiAqICAtIHNlYXJjaEFzR2xvYmFsIC0gVGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLlxuICogIC0gcHJlcGVuZEZpbHRlck5hbWUgLSBGaWx0ZXIgbmFtZXMgYXJlIHByZXBlbmRlZCB3aXRoIHByb3ZpZGVkIHN0cmluZy5cbiAqIEByZXR1cm4ge0RhdGFMaXN0UGFyYW1zfSAtIFRoZSBjb252ZXJ0ZWQgRGF0YUxpc3RQYXJhbXMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbVVybFF1ZXJ5VG9EYXRhTGlzdFBhcmFtcyhcbiAgICB1cmxQYXJhbXM6IFBhcmFtcyxcbiAgICBvcHRzPzoge1xuICAgICAgICBzZWFyY2hBc0dsb2JhbD86IGJvb2xlYW47XG4gICAgICAgIHByZXBlbmRGaWx0ZXJOYW1lPzogc3RyaW5nO1xuICAgIH1cbik6IERhdGFMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IERhdGFMaXN0UGFyYW1zID0ge307XG5cbiAgICBPYmplY3QuZW50cmllcyh1cmxQYXJhbXMpLmZvckVhY2goKFt1cmxQYXJhbUtleSwgdXJsUGFyYW1WYWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHVybFBhcmFtS2V5ID09PSAnbGltaXQnKSB7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSArdXJsUGFyYW1WYWx1ZTtcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJhbXMubGltaXQpIHx8IHBhcmFtcy5saW1pdCA8IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW1zLmxpbWl0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVybFBhcmFtS2V5ID09PSAnb2Zmc2V0Jykge1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9ICt1cmxQYXJhbVZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzTmFOKHBhcmFtcy5vZmZzZXQpIHx8IHBhcmFtcy5vZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5vZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodXJsUGFyYW1LZXkgPT09ICdxJykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJyAmJiB1cmxQYXJhbVZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hRdWVyeSA9IHVybFBhcmFtVmFsdWUuc3RhcnRzV2l0aCgnY3M6JykgfHwgdXJsUGFyYW1WYWx1ZS5zdGFydHNXaXRoKCdjaTonKSA/IHVybFBhcmFtVmFsdWUuc3Vic3RyaW5nKDMpIDogdXJsUGFyYW1WYWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXNlU2Vuc2l0aXZlID0gdXJsUGFyYW1WYWx1ZS5zdGFydHNXaXRoKCdjczonKTtcblxuICAgICAgICAgICAgICAgIHBhcmFtcy5zZWFyY2ggPSBzZWFyY2hRdWVyeTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2VhcmNoQ2FzZVNlbnNpdGl2ZSA9IGNhc2VTZW5zaXRpdmU7XG5cbiAgICAgICAgICAgICAgICBpZiAob3B0cz8uc2VhcmNoQXNHbG9iYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZmlsdGVyc1snZ2xvYmFsJ10gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VhcmNoUXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZS5Db250YWlucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGNhc2VTZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodXJsUGFyYW1LZXkgPT09ICdzb3J0Jykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gdXJsUGFyYW1WYWx1ZS5zcGxpdCgnLCcpLm1hcChzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2RpcmVjdGlvbiwgcHJvcGVydHldID0gcy5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Byb3BlcnR5OiAocHJvcGVydHkgPz8gZGlyZWN0aW9uKSBhcyBrZXlvZiBvYmplY3QsIGFzY2VuZGluZzogZGlyZWN0aW9uICE9PSAnZGVzYyd9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFN0cmluZyBpcyBleHBlY3RlZCBhcyB2YWx1ZSBmb3IgJyR7dXJsUGFyYW1LZXl9JyB3aGVuIGNvbnZlcnRpbmcgZnJvbSB1cmxQYXJhbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgoIW9wdHM/LnByZXBlbmRGaWx0ZXJOYW1lIHx8IHVybFBhcmFtS2V5LnN0YXJ0c1dpdGgob3B0cy5wcmVwZW5kRmlsdGVyTmFtZSkpICYmIHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHVybFBhcmFtVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5nIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQYXJ0cyA9IHVybFBhcmFtVmFsdWUuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGxldCBwYXJ0SWR4ID0gMDtcblxuICAgICAgICAgICAgLy8gY2FzZSBzZW5zaXRpdmVcbiAgICAgICAgICAgIGxldCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY3MnIHx8IGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY2knKSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IGZpbHRlclBhcnRzW3BhcnRJZHgrK10gPT09ICdjcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1hdGNoIG1vZGVcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoTW9kZSA9IGZpbHRlclBhcnRzW3BhcnRJZHhdID8gRmlsdGVyTWF0Y2hNb2RlLmZyb21BYmJyZXZpYXRpb24oZmlsdGVyUGFydHNbcGFydElkeF0pID8/IGZpbHRlclBhcnRzW3BhcnRJZHhdIDogRmlsdGVyTWF0Y2hNb2RlLkVxdWFscztcbiAgICAgICAgICAgIHBhcnRJZHgrKztcblxuICAgICAgICAgICAgY29uc3Qgbm9WYWwgPSBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgbWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0O1xuXG4gICAgICAgICAgICAvLyB2YWx1ZVxuICAgICAgICAgICAgbGV0IHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCB8IG51bGwgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAoIW5vVmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwYXJ0SWR4ID09PSBmaWx0ZXJQYXJ0cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsdGVyUGFydHNbcGFydElkeF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0SWR4IDwgZmlsdGVyUGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFycmF5IHRoYXQgc2hvdWxkIG5vdCBiZSBhcnJheSwgc28gam9pbiBiYWNrIHRvZ2V0aGVyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZmlsdGVyUGFydHMuc2xpY2UocGFydElkeCwgZmlsdGVyUGFydHMubGVuZ3RoKS5qb2luKCc6Jyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgbWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzICYmIG1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB2YWx1ZSB1bmRlZmluZWQgYW5kIG1hdGNoIG1vZGUgZXhwZWN0cyB2YWx1ZSwgdGhlbiBza2lwXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5JbiB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Ob3RJbiB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhcnJheVZhbDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgbWF0Y2ggbW9kZXMgZXhwZWN0IGFycmF5XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCdcIicpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBleHBsaWNpdFF1b3RlcyA9IGZhbHNlOyAvL3Rva2VuIGlzIHF1b3RlZCwgZS5nLiBpbjoxLDIsXCIyMlwiXCJcIixcIiwxMjNcIlwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBxdW90ZXNPcGVuZWQgPSBmYWxzZTsgLy90b2tlbiBoYXMgc3RhcnRlZCBwcm9jZXNzaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcXVvdGVzRXhwbGljaXRseUNsb3NlZCA9IGZhbHNlOyAvL3Rva2VuIHByb2Nlc3NpbmcgaGFzIGZpbmlzaGVkLCBhZnRlciBzaW5nbGUgXCIgaW4gcXVvdGVkIG1vZGUsIG9yIGJlZm9yZSAsIGluIG5vdCBxdW90ZWRcblxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGMgPSB2YWx1ZVtpXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSB0b2tlbml6ZXIgd2hlbiBzZWVpbmcgdGhlIHRva2VuIHNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgaWYgZWl0aGVyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBxdW90ZXMgaGF2ZSBub3QgYmVlbiBvcGVuZWQgeWV0ICh3aGVuIHRoZXJlIGFyZSBubyBjaGFyYWN0ZXJzIGJldHdlZW4gc2VwYXJhdG9ycyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRva2VuIGhhcyBiZWVuIGV4cGxpY2l0bHkgY2xvc2VkICh3aGVuIHdlIGFjdHVhbGx5IGhhdmUgZXhwbGljaXQgb3BlbmluZyBpLmUuLCBxdW90ZXMgYXMgdGhlIGZpcnN0IGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvciB3ZSBoYXZlIGltcGxpY2l0IHF1b3RlcyAoaS5lLiwgcXVvdGVzIGFyZSBub3QgdGhlIGZpcnN0IGNoYXJhY3RlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gJywnICYmICghcXVvdGVzT3BlbmVkIHx8IHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgfHwgIWV4cGxpY2l0UXVvdGVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChjdXJyZW50VG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzT3BlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRRdW90ZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGVkIGRvdWJsZS1xdW90ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4cGxpY2l0UXVvdGVzICYmIGkgKyAxIDwgdmFsdWUubGVuZ3RoICYmIHZhbHVlW2kgKyAxXSA9PT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuICs9IGM7IC8vIEFwcGVuZCBvbmUgZG91YmxlLXF1b3RlIHRvIHRoZSBjdXJyZW50IHRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7IC8vIFNraXAgdGhlIG5leHQgZG91YmxlLXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZW5jb3VudGVyIHF1b3RlcyBhZ2FpbiBhZnRlciB0aGV5IHdlcmUgdGhlIGZpcnN0IGNoYXJhY3RlciA9PiB3ZSBjbG9zZSB0aGUgdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhwbGljaXRRdW90ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGxpY2l0IHF1b3Rlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxdW90ZXNPcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiArPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlcyBhcmUgdGhlIGZpcnN0IGNoYXJhY3RlciA9PiBleHBsaWNpdGx5IG9wZW4gdGhlIHRva2VuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZXNPcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRRdW90ZXMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rlc0V4cGxpY2l0bHlDbG9zZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiArPSBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1b3Rlc09wZW5lZCAmJiAhcXVvdGVzRXhwbGljaXRseUNsb3NlZCAmJiBleHBsaWNpdFF1b3Rlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBsYXN0IHRva2VuIGFmdGVyIHRoZSBsb29wIGVuZHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKGN1cnJlbnRUb2tlbi50b1N0cmluZygpKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlWYWwgPSB0b2tlbnM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheVZhbCA9IHZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJiBhcnJheVZhbC5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gYXJyYXlWYWw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlIS5sZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGZpbHRlciB3aXRoIGVtcHR5IHZhbHVlIGlzIHRvIGJlIGlnbm9yZWRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5maWx0ZXJzID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcktleSA9IG9wdHM/LnByZXBlbmRGaWx0ZXJOYW1lID8gdXJsUGFyYW1LZXkuc3Vic3RyaW5nKG9wdHMucHJlcGVuZEZpbHRlck5hbWUubGVuZ3RoKSA6IHVybFBhcmFtS2V5O1xuICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnNbZmlsdGVyS2V5IGFzIGtleW9mIG9iamVjdF0gPSB7dmFsdWU6IHZhbHVlLCBtYXRjaE1vZGU6IG1hdGNoTW9kZSwgY2FzZVNlbnNpdGl2ZTogY2FzZVNlbnNpdGl2ZX07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8qKlxuICogTWFrZXMgYSBjb3B5IG9mIHRoZSBnaXZlbiBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz59IHBhcmFtcyAtIFRoZSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgdG8gYmUgY29waWVkLlxuICogQHJldHVybnMge0RhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPn0gLSBSZXR1cm5zIGEgbmV3IGNvcHkgb2YgdGhlIERhdGFMaXN0UGFyYW1zIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEYXRhTGlzdFBhcmFtczxTb3J0cyA9IHN0cmluZywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IHN0cmluZz4ocGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4pOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IGNvcHk6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgb2Zmc2V0OiBwYXJhbXMub2Zmc2V0LFxuICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0LFxuICAgICAgICBzZWFyY2g6IHBhcmFtcy5zZWFyY2hcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5zb3J0KSB7XG4gICAgICAgIGNvcHkuc29ydCA9IHBhcmFtcy5zb3J0Py5tYXAocyA9PiAoey4uLnN9KSk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZmlsdGVycykge1xuICAgICAgICBjb3B5LmZpbHRlcnMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMuZmlsdGVycykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZSBhcyBEYXRhTGlzdEZpbHRlcjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZS52YWx1ZSkgPyBbLi4uZmlsdGVyVmFsdWUudmFsdWVdIDogZmlsdGVyVmFsdWUudmFsdWVcbiAgICAgICAgICAgICAgICB9IGFzIERhdGFMaXN0RmlsdGVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29weTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgVVJMIHF1ZXJ5IHBhcmFtIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciBudWxsIHZhbHVlcyBhcmUgYWxsb3dlZC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBVUkwgcGFyYW1ldGVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEB0aHJvd3Mge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBJZiBhbiB1bmRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIHdpdGhvdXQgYWxsb3dOdWxsIHNldCB0byB0cnVlLlxuICogQHRocm93cyB7Q29tbW9uc0ludGVybmFsRXJyb3J9IElmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QgKGV4Y2x1ZGluZyBEYXRlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2YWx1ZTogdW5rbm93biwgYWxsb3dOdWxsID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiBhbGxvd051bGwpIHJldHVybiAnbnVsbCc7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignVW5kZWZpbmVkIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gdXJsIHBhcmFtLicpOyAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuLCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0IGVhcmxpZXJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLm1hcCh2ID0+IGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2LCBhbGxvd051bGwpKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh2LmluZGV4T2YoJywnKSA+PSAwIHx8IHYuaW5kZXhPZignXCInKSA+PSAwID8gYFwiJHt2LnJlcGxhY2VBbGwoJ1wiJywgJ1wiXCInKX1cImAgOiB2KSlcbiAgICAgICAgICAgIC5qb2luKCcsJyk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGRhdGVUb0lzb1N0cmluZyh2YWx1ZSwgJ2RhdGVUaW1lJywge3V0YzogdHJ1ZX0pO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignRmlsdGVyIHZhbHVlIGNhbm5vdCBiZSBvYmplY3QnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiJdfQ==
|
|
465
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1saXN0LXBhcmFtcy1oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGF0YS1saXN0L2RhdGEtbGlzdC1wYXJhbXMtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBR3JEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QixDQUFDLEtBQXlCO0lBQ25FLE1BQU0sTUFBTSxHQUFtQixFQUFFLENBQUM7SUFFbEMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssQ0FBQyxZQUFZLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFh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Q0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMzRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM1QixJQUFJLEtBQUssWUFBWSxJQUFJO1lBQUUsT0FBTyxlQUFlLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO2FBQzdFLENBQUM7WUFDRixNQUFNLElBQUksb0JBQW9CLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNwRSxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BhcmFtc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUYWJsZUxhenlMb2FkRXZlbnR9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBmcm9tICcuLi9lcnJvci9lcnJvci5tb2RlbCc7XG5pbXBvcnQge2RhdGVUb0lzb1N0cmluZ30gZnJvbSAnLi4vaGVscGVycy9kYXRlJztcbmltcG9ydCB7RGF0YUxpc3RGaWx0ZXIsIERhdGFMaXN0RmlsdGVyVmFsdWVUeXBlLCBEYXRhTGlzdEZpbHRlcnNUeXBlLCBEYXRhTGlzdFBhcmFtc30gZnJvbSAnLi9kYXRhLWxpc3QubW9kZWwnO1xuaW1wb3J0IHtGaWx0ZXJNYXRjaE1vZGV9IGZyb20gJy4vZmlsdGVyLW1hdGNoLm1vZGVsJztcbmltcG9ydCB7Q29tbW9uc0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuL2ZpbHRlci1tZXRhZGF0YS5tb2RlbCc7XG5cbi8qKlxuICogQ29udmVydHMgYSBUYWJsZUxhenlMb2FkRXZlbnQgdG8gRGF0YUxpc3RQYXJhbXMuXG4gKlxuICogQHBhcmFtIHtUYWJsZUxhenlMb2FkRXZlbnR9IGV2ZW50IC0gVGhlIGV2ZW50IGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gY29udmVydC5cbiAqIEByZXR1cm4ge0RhdGFMaXN0UGFyYW1zfSAtIFRoZSBjb252ZXJ0ZWQgRGF0YUxpc3RQYXJhbXMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbVRhYmxlTG9hZFRvRGF0YUxpc3RQYXJhbXMoZXZlbnQ6IFRhYmxlTGF6eUxvYWRFdmVudCk6IERhdGFMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IERhdGFMaXN0UGFyYW1zID0ge307XG5cbiAgICBpZiAoZXZlbnQuZmlyc3QgIT0gbnVsbCkge1xuICAgICAgICBwYXJhbXMub2Zmc2V0ID0gZXZlbnQuZmlyc3Q7XG4gICAgfVxuICAgIGlmIChldmVudC5yb3dzICE9IG51bGwpIHtcbiAgICAgICAgcGFyYW1zLmxpbWl0ID0gZXZlbnQucm93cztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGV2ZW50Lmdsb2JhbEZpbHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcGFyYW1zLnNlYXJjaCA9IGV2ZW50Lmdsb2JhbEZpbHRlcjtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQuZ2xvYmFsRmlsdGVyKSAmJiBldmVudC5nbG9iYWxGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbXMuc2VhcmNoID0gZXZlbnQuZ2xvYmFsRmlsdGVyWzBdO1xuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50Lm11bHRpU29ydE1ldGEpICYmIGV2ZW50Lm11bHRpU29ydE1ldGEubGVuZ3RoID4gMCkge1xuICAgICAgICBwYXJhbXMuc29ydCA9IGV2ZW50Lm11bHRpU29ydE1ldGEubWFwKG0gPT4gKHtwcm9wZXJ0eTogbS5maWVsZCwgYXNjZW5kaW5nOiBtLm9yZGVyID49IDB9KSk7XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LmZpbHRlcnMpIHtcbiAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSBPYmplY3Qua2V5cyhldmVudC5maWx0ZXJzKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXI6IERhdGFMaXN0RmlsdGVyID0ge307XG4gICAgICAgICAgICBjb25zdCBldmVudEZpbHRlcjogQ29tbW9uc0ZpbHRlck1ldGFkYXRhIHwgQ29tbW9uc0ZpbHRlck1ldGFkYXRhW10gfCB1bmRlZmluZWQgPSBldmVudC5maWx0ZXJzPy5ba2V5IGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudEZpbHRlcikpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXIudmFsdWUgPSBldmVudEZpbHRlclswXS52YWx1ZTtcbiAgICAgICAgICAgICAgICBmaWx0ZXIubWF0Y2hNb2RlID0gZXZlbnRGaWx0ZXJbMF0ubWF0Y2hNb2RlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5jYXNlU2Vuc2l0aXZlID0gZXZlbnRGaWx0ZXJbMF0uY2FzZVNlbnNpdGl2ZTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnRGaWx0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZpbHRlci52YWx1ZSA9IGV2ZW50RmlsdGVyLnZhbHVlO1xuICAgICAgICAgICAgICAgIGZpbHRlci5tYXRjaE1vZGUgPSBldmVudEZpbHRlci5tYXRjaE1vZGU7XG4gICAgICAgICAgICAgICAgZmlsdGVyLmNhc2VTZW5zaXRpdmUgPSBldmVudEZpbHRlci5jYXNlU2Vuc2l0aXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGFuZGxlIHNlYXJjaCBjYXNlIHNlbnNpdGl2aXR5IHRvIGJlIGFsc28gd3JpdHRlbiBvbiBzZWFyY2hDYXNlU2Vuc2l0aXZlXG4gICAgICAgICAgICBpZiAoa2V5ID09PSAnZ2xvYmFsJyAmJiB0eXBlb2YgcGFyYW1zLnNlYXJjaCA9PT0gJ3N0cmluZycgJiYgZmlsdGVyLmNhc2VTZW5zaXRpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zZWFyY2hDYXNlU2Vuc2l0aXZlID0gZmlsdGVyLmNhc2VTZW5zaXRpdmU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7Li4uYWNjLCBba2V5XTogZmlsdGVyfTtcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGdpdmVuIHBhcmFtZXRlcnMgdG8gVVJMIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gKiBTb3J0cyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBzb3J0IHF1ZXJ5IGxhbmd1YWdlOiBgYXNjOnByb3AxLGRlc2M6cHJvcDJgLCAuLi5cbiAqIEZpbHRlciBrZXlzIGFyZSBcImZsYXR0ZW5lZFwiIGluIHRoZSBuZXcgb2JqZWN0LCB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBpbiBNZWRpdXMgZGF0YSBBUEkgZmlsdGVyIHF1ZXJ5IGxhbmd1YWdlOiBgY3M6ZXE6YXNkYCwgYGluOmFzZCxxd2VgLCBgZXhgLCAuLi5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBjb252ZXJ0LlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc3xudWxsfSBkZWZhdWx0cyAtIFRoZSBkZWZhdWx0IHBhcmFtZXRlcnMgdXNlZCBpZiBubyBtYXRjaGluZyBwcm9wZXJ0eSBpbiBwYXJhbXMgaXMgYXZhaWxhYmxlLiBEZWZhdWx0cyB0byB7IGxpbWl0OiAyNSwgb2Zmc2V0OiAwIH0gaWYgbm90IHByb3ZpZGVkLlxuICogQHBhcmFtIG9wdHMgLSBPcHRpb25zIGluIGNvbnZlcnRpbmcgdG8gdXJsIHF1ZXJ5OlxuICogICAtIHByZXBlbmRGaWx0ZXJOYW1lIFByZXBlbmRzIGZpbHRlciBrZXkgd2l0aCBwcm92aWRlZCBzdHJpbmdcbiAqIEByZXR1cm5zIHtQYXJhbXN9IC0gVGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zVG9VcmxRdWVyeShcbiAgICBwYXJhbXM6IERhdGFMaXN0UGFyYW1zPGFueSwgYW55PixcbiAgICBkZWZhdWx0czogRGF0YUxpc3RQYXJhbXM8YW55LCBhbnk+IHwgbnVsbCA9IHtcbiAgICAgICAgbGltaXQ6IDI1LFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICB9LFxuICAgIG9wdHM/OiB7XG4gICAgICAgIHByZXBlbmRGaWx0ZXJOYW1lPzogc3RyaW5nO1xuICAgIH1cbik6IFBhcmFtcyB7XG4gICAgY29uc3QgdXJsUGFyYW1zOiBQYXJhbXMgPSB7fTtcblxuICAgIGlmIChwYXJhbXMubGltaXQgJiYgcGFyYW1zLmxpbWl0ICE9PSBkZWZhdWx0cz8ubGltaXQpIHtcbiAgICAgICAgdXJsUGFyYW1zWydsaW1pdCddID0gcGFyYW1zLmxpbWl0O1xuICAgIH1cbiAgICBpZiAocGFyYW1zLm9mZnNldCAmJiBwYXJhbXMub2Zmc2V0ICE9PSBkZWZhdWx0cz8ub2Zmc2V0KSB7XG4gICAgICAgIHVybFBhcmFtc1snb2Zmc2V0J10gPSBwYXJhbXMub2Zmc2V0O1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMuc2VhcmNoICE9PSBkZWZhdWx0cz8uc2VhcmNoKSB7XG4gICAgICAgIHVybFBhcmFtc1sncSddID0gYCR7cGFyYW1zLnNlYXJjaENhc2VTZW5zaXRpdmUgPyBgY3M6YCA6ICcnfSR7cGFyYW1zLnNlYXJjaH1gO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnNvcnQgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydCkgJiYgcGFyYW1zLnNvcnQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBkZWZhdWx0cz8uc29ydCA9PSBudWxsIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShkZWZhdWx0cy5zb3J0KSB8fFxuICAgICAgICAgICAgZGVmYXVsdHMuc29ydC5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgIHBhcmFtcy5zb3J0Lmxlbmd0aCAhPT0gZGVmYXVsdHMuc29ydC5sZW5ndGggfHxcbiAgICAgICAgICAgIGRlZmF1bHRzLnNvcnQuc29tZSgoZHMsIGlkeCkgPT4gZHMucHJvcGVydHkgIT09IHBhcmFtcy5zb3J0IVtpZHhdLnByb3BlcnR5IHx8IChkcy5hc2NlbmRpbmcgPz8gdHJ1ZSkgIT09IChwYXJhbXMuc29ydCFbaWR4XS5hc2NlbmRpbmcgPz8gdHJ1ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdXJsUGFyYW1zWydzb3J0J10gPSBkYXRhTGlzdFBhcmFtc1NvcnRUb1VybFF1ZXJ5KHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHBhcmFtcy5maWx0ZXJzKS5mb3JFYWNoKGsgPT4ge1xuICAgICAgICAgICAgLy8gZ2xvYmFsIHNlYXJjaCBmaWx0ZXIgaXMgYWxyZWFkeSBpbmNsdWRlZCBpbiB0aGUgJ3EnIHBhcmFtZXRlciwgbm8gbmVlZCB0byBpbmNsdWRlIGl0IGhlcmVcbiAgICAgICAgICAgIGlmIChrID09PSAnZ2xvYmFsJykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcmFtRmlsdGVyID0gcGFyYW1zLmZpbHRlcnMhW2sgYXMga2V5b2Ygb2JqZWN0XSE7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0RmlsdGVyID0gZGVmYXVsdHM/LmZpbHRlcnM/LltrIGFzIGtleW9mIG9iamVjdF07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlciAmJlxuICAgICAgICAgICAgICAgICgoQXJyYXkuaXNBcnJheShkZWZhdWx0RmlsdGVyLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICBBcnJheS5pc0FycmF5KHBhcmFtRmlsdGVyLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyLnZhbHVlLmxlbmd0aCA9PT0gcGFyYW1GaWx0ZXIudmFsdWUubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRGaWx0ZXIudmFsdWUuZXZlcnkoKHYsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAocGFyYW1GaWx0ZXIudmFsdWUgYXMgQXJyYXk8RGF0YUxpc3RGaWx0ZXJWYWx1ZVR5cGU+KVtpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSAmJiB2IGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIHZhbHVlLmdldFRpbWUoKSA9PT0gdi5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiB2YWx1ZSA9PT0gdjtcbiAgICAgICAgICAgICAgICAgICAgfSkpIHx8IC8vIGhhbmRsZSBhcnJheXNcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci52YWx1ZSA9PT0gcGFyYW1GaWx0ZXIudmFsdWUpICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlci5tYXRjaE1vZGUgPT09IHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAmJlxuICAgICAgICAgICAgICAgIChkZWZhdWx0RmlsdGVyLmNhc2VTZW5zaXRpdmUgPz8gZmFsc2UpID09PSAocGFyYW1GaWx0ZXIuY2FzZVNlbnNpdGl2ZSA/PyBmYWxzZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLnZhbHVlID09IG51bGwgJiZcbiAgICAgICAgICAgICAgICBkZWZhdWx0RmlsdGVyPy52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIubWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRXhpc3RzICYmXG4gICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIubWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci52YWx1ZSA9PSBudWxsICYmXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlcj8udmFsdWUgIT0gbnVsbCAmJlxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyAmJlxuICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLm1hdGNoTW9kZSAhPT0gRmlsdGVyTWF0Y2hNb2RlLkRvZXNOb3RFeGlzdFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zW2Ake29wdHM/LnByZXBlbmRGaWx0ZXJOYW1lID8/ICcnfSR7a31gXSA9ICdudWxsJztcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHVybFBhcmFtc1tgJHtvcHRzPy5wcmVwZW5kRmlsdGVyTmFtZSA/PyAnJ30ke2t9YF0gPSBkYXRhTGlzdFBhcmFtc0ZpbHRlcnNUb1VybFF1ZXJ5KHBhcmFtcywgaywgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZGVmYXVsdHM/LmZpbHRlcnMpIHtcbiAgICAgICAgLy8gYWRkIG90aGVyIGRlZmF1bHRzXG4gICAgICAgIGNvbnN0IHBhcmFtRmlsdGVyS2V5cyA9IHBhcmFtcy5maWx0ZXJzID8gT2JqZWN0LmtleXMocGFyYW1zLmZpbHRlcnMpIDogW107XG4gICAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLmZpbHRlcnMpXG4gICAgICAgICAgICAuZmlsdGVyKGsgPT4gcGFyYW1GaWx0ZXJLZXlzLmluZGV4T2YoaykgPCAwKVxuICAgICAgICAgICAgLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgdXJsUGFyYW1zW2Ake29wdHM/LnByZXBlbmRGaWx0ZXJOYW1lID8/ICcnfSR7a31gXSA9IGRhdGFMaXN0UGFyYW1zRmlsdGVyc1RvVXJsUXVlcnkoZGVmYXVsdHMsIGspO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybFBhcmFtcztcbn1cblxuLyoqXG4gKiBNZXJnZXMgdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgcmV0dXJucyB0aGUgbWVyZ2VkIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0UGFyYW1zfSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyB0byBtZXJnZSB3aXRoIGRlZmF1bHRzLlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtc30gZGVmYXVsdHMgLSBUaGUgZGVmYXVsdCB2YWx1ZXMgdG8gbWVyZ2Ugd2l0aCBwYXJhbXMgKG9wdGlvbmFsLCBkZWZhdWx0IGlzIHsgbGltaXQ6IDI1LCBvZmZzZXQ6IDAgfSkuXG4gKiBAcmV0dXJucyB7RGF0YUxpc3RQYXJhbXN9IC0gVGhlIG1lcmdlZCBwYXJhbWV0ZXJzIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRGF0YUxpc3RQYXJhbXNXaXRoRGVmYXVsdHM8U29ydHMgPSBhbnksIEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBhbnkgPSBhbnk+KFxuICAgIHBhcmFtczogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+LFxuICAgIGRlZmF1bHRzOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4gPSB7XG4gICAgICAgIGxpbWl0OiAyNSxcbiAgICAgICAgb2Zmc2V0OiAwXG4gICAgfVxuKTogRGF0YUxpc3RQYXJhbXM8U29ydHMsIEZpbHRlcnM+IHtcbiAgICBjb25zdCBtZXJnZWQ6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgbGltaXQ6IHBhcmFtcy5saW1pdCA/PyBkZWZhdWx0cy5saW1pdCxcbiAgICAgICAgb2Zmc2V0OiBwYXJhbXMub2Zmc2V0ID8/IGRlZmF1bHRzLm9mZnNldCxcbiAgICAgICAgc2VhcmNoOiBwYXJhbXMuc2VhcmNoID8/IGRlZmF1bHRzLnNlYXJjaCxcbiAgICAgICAgc29ydDogKHBhcmFtcy5zb3J0ID8/IGRlZmF1bHRzLnNvcnQpPy5tYXAocyA9PiAoey4uLnN9KSlcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgIG1lcmdlZC5maWx0ZXJzID0ge30gYXMgRGF0YUxpc3RGaWx0ZXJzVHlwZTxGaWx0ZXJzPjtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1zLmZpbHRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4gKG1lcmdlZC5maWx0ZXJzIVtrZXkgYXMgRmlsdGVyc10gPSB7Li4uKHZhbHVlIGFzIERhdGFMaXN0RmlsdGVyKX0pKTtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRzLmZpbHRlcnMpIHtcbiAgICAgICAgaWYgKCFtZXJnZWQuZmlsdGVycykgbWVyZ2VkLmZpbHRlcnMgPSB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+O1xuICAgICAgICBPYmplY3QuZW50cmllcyhkZWZhdWx0cy5maWx0ZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgIGlmIChtZXJnZWQuZmlsdGVycyFba2V5IGFzIEZpbHRlcnNdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXJnZWQuZmlsdGVycyFba2V5IGFzIEZpbHRlcnNdID0gey4uLih2YWx1ZSBhcyBEYXRhTGlzdEZpbHRlcil9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVyZ2VkO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiBwYXJhbWV0ZXJzIHRvIGEgVVJMIHF1ZXJ5IHN0cmluZyBmb3Igc29ydGluZy5cbiAqIFNvcnRzIGFyZSBmb3JtYXR0ZWQgaW4gTWVkaXVzIGRhdGEgQVBJIHNvcnQgcXVlcnkgbGFuZ3VhZ2U6IGBhc2M6cHJvcDEsZGVzYzpwcm9wMmAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXN9IHBhcmFtcyAtIEFuIG9wdGlvbmFsIG9iamVjdCBjb250YWluaW5nIHNvcnQgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgVVJMIHF1ZXJ5IG9yIHVuZGVmaW5lZCBpZiBubyBzb3J0IHBhcmFtZXRlcnMgYXJlIHByb3ZpZGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YUxpc3RQYXJhbXNTb3J0VG9VcmxRdWVyeShwYXJhbXM/OiBEYXRhTGlzdFBhcmFtczxhbnksIGFueT4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBwYXJhbXMgJiYgQXJyYXkuaXNBcnJheShwYXJhbXMuc29ydClcbiAgICAgICAgPyBwYXJhbXMuc29ydC5tYXAocyA9PiBgJHtzLmFzY2VuZGluZyA9PT0gdHJ1ZSB8fCBzLmFzY2VuZGluZyA9PT0gdW5kZWZpbmVkID8gJ2FzYycgOiAnZGVzYyd9OiR7U3RyaW5nKHMucHJvcGVydHkpfWApLmpvaW4oJywnKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHNwZWNpZmljIGZpbHRlciBwYXJhbWV0ZXIgKGJ5IGtleSkgZnJvbSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgdG8gYSBVUkwgcXVlcnkgc3RyaW5nLlxuICogRmlsdGVyIGtleXMgYXJlIFwiZmxhdHRlbmVkXCIgaW4gdGhlIG5ldyBvYmplY3QsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGluIE1lZGl1cyBkYXRhIEFQSSBmaWx0ZXIgcXVlcnkgbGFuZ3VhZ2U6IGBjczplcTphc2RgLCBgaW46YXNkLHF3ZWAsIGBleGAsIC4uLlxuICpcbiAqIEBwYXJhbSB7RGF0YUxpc3RQYXJhbXM8YW55LCBGaWx0ZXJzPiB8IHVuZGVmaW5lZH0gcGFyYW1zIC0gVGhlIERhdGFMaXN0UGFyYW1zIG9iamVjdCBjb250YWluaW5nIHRoZSBmaWx0ZXJzLlxuICogQHBhcmFtIHtGaWx0ZXJzfSBrZXkgLSBUaGUga2V5IG9mIHRoZSBmaWx0ZXIgdG8gY29udmVydC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBudWxsIHZhbHVlcyBpbiB0aGUgcXVlcnkgc3RyaW5nLlxuICogQHJldHVybiB7c3RyaW5nIHwgdW5kZWZpbmVkfSAtIFRoZSBVUkwgcXVlcnkgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWVkIGZpbHRlciwgb3IgdW5kZWZpbmVkIGlmIHRoZSBmaWx0ZXIgaXMgbm90IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YUxpc3RQYXJhbXNGaWx0ZXJzVG9VcmxRdWVyeTxGaWx0ZXJzIGV4dGVuZHMga2V5b2YgYW55ID0gc3RyaW5nPihcbiAgICBwYXJhbXM6IERhdGFMaXN0UGFyYW1zPGFueSwgRmlsdGVycz4gfCB1bmRlZmluZWQsXG4gICAga2V5OiBGaWx0ZXJzLFxuICAgIGFsbG93TnVsbCA9IGZhbHNlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhcmFtRmlsdGVyID0gcGFyYW1zPy5maWx0ZXJzPy5ba2V5XTtcbiAgICByZXR1cm4gZGF0YUxpc3RQYXJhbXNGaWx0ZXJUb1VybFF1ZXJ5KHBhcmFtRmlsdGVyLCBhbGxvd051bGwpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZmlsdGVyIHRvIGEgVVJMIHF1ZXJ5IHN0cmluZy5cbiAqIEZpbHRlciBrZXlzIGFyZSBcImZsYXR0ZW5lZFwiIGluIHRoZSBuZXcgb2JqZWN0LCB2YWx1ZXMgYXJlIGZvcm1hdHRlZCBpbiBNZWRpdXMgZGF0YSBBUEkgZmlsdGVyIHF1ZXJ5IGxhbmd1YWdlOiBgY3M6ZXE6YXNkYCwgYGluOmFzZCxxd2VgLCBgZXhgLCAuLi5cbiAqXG4gKiBAcGFyYW0ge0RhdGFMaXN0RmlsdGVyfSBwYXJhbUZpbHRlciAtIFRoZSBmaWx0ZXIgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciB0byBhbGxvdyBudWxsIHZhbHVlcyBpbiB0aGUgZmlsdGVyLlxuICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9IC0gVGhlIGZpbHRlciBjb252ZXJ0ZWQgdG8gYSBVUkwgcXVlcnkgc3RyaW5nLCBvciB1bmRlZmluZWQgaWYgbm8gZmlsdGVyIGlzIHByb3ZpZGVkIG9yIHRoZSBmaWx0ZXIgaGFzIGVtcHR5IG9yIGludmFsaWQgdmFsdWVzLlxuICogQHRocm93cyB7Q29tbW9uc0ludGVybmFsRXJyb3J9IC0gSWYgdGhlIGZpbHRlciBoYXMgaW52YWxpZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhTGlzdFBhcmFtc0ZpbHRlclRvVXJsUXVlcnkocGFyYW1GaWx0ZXI/OiBEYXRhTGlzdEZpbHRlciwgYWxsb3dOdWxsID0gZmFsc2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZpbHRlclZhbHVlQXNBcnJheSA9IEFycmF5LmlzQXJyYXkocGFyYW1GaWx0ZXI/LnZhbHVlKSA/IHBhcmFtRmlsdGVyIS52YWx1ZS5maWx0ZXIodiA9PiB2ICE9PSB1bmRlZmluZWQgJiYgKGFsbG93TnVsbCB8fCB2ICE9PSBudWxsKSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgbWF0Y2hNb2RlID0gcGFyYW1GaWx0ZXI/Lm1hdGNoTW9kZSA/PyBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgIGlmIChcbiAgICAgICAgcGFyYW1GaWx0ZXIgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAoIWFsbG93TnVsbCAmJiBtYXRjaE1vZGUgIT09ICdleGlzdHMnICYmIG1hdGNoTW9kZSAhPT0gJ2RvZXNOb3RFeGlzdCcgJiYgcGFyYW1GaWx0ZXIudmFsdWUgPT0gbnVsbCkgfHxcbiAgICAgICAgKHR5cGVvZiBwYXJhbUZpbHRlci52YWx1ZSA9PT0gJ3N0cmluZycgJiYgcGFyYW1GaWx0ZXIudmFsdWUubGVuZ3RoID09PSAwKSB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZUFzQXJyYXkpICYmIGZpbHRlclZhbHVlQXNBcnJheS5sZW5ndGggPT09IDApXG4gICAgKSB7XG4gICAgICAgIC8vIG5vIG5lZWQgdG8gaW5jbHVkZSBmaWx0ZXJzIGZvciBlbXB0eSB2YWx1ZXNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAobWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuQmV0d2VlbiAmJiAhKEFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVBc0FycmF5KSAmJiBmaWx0ZXJWYWx1ZUFzQXJyYXkubGVuZ3RoID09PSAyKSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCBtb2RlIGJldHdlZW4gcmVxdWlyZXMgZXhhY3RseSAyIHZhbHVlczogJHtwYXJhbUZpbHRlci52YWx1ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoKG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkluIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLk5vdEluKSAmJiAoIUFycmF5LmlzQXJyYXkoZmlsdGVyVmFsdWVBc0FycmF5KSB8fCBmaWx0ZXJWYWx1ZUFzQXJyYXkubGVuZ3RoID09PSAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYEZpbHRlciBtYXRjaCBtb2RlICR7bWF0Y2hNb2RlfSByZXF1aXJlcyBub24tZW1wdHkgYXJyYXk6ICR7cGFyYW1GaWx0ZXIudmFsdWV9YCk7XG4gICAgfVxuXG4gICAgaWYgKChbRmlsdGVyTWF0Y2hNb2RlLkluLCBGaWx0ZXJNYXRjaE1vZGUuTm90SW4sIEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuXSBhcyBzdHJpbmdbXSkuaW5kZXhPZihtYXRjaE1vZGUpID09PSAtMSAmJiBBcnJheS5pc0FycmF5KGZpbHRlclZhbHVlQXNBcnJheSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBGaWx0ZXIgbWF0Y2ggbW9kZSAke21hdGNoTW9kZX0gbXVzdCBub3QgYmUgYXJyYXk6ICR7cGFyYW1GaWx0ZXIudmFsdWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9WYWwgPSBwYXJhbUZpbHRlci5tYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgfHwgcGFyYW1GaWx0ZXIubWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0O1xuICAgIGNvbnN0IHVybFZhbHVlUGFydCA9IG5vVmFsID8gJycgOiBgOiR7ZGF0YUxpc3RQYXJhbXNGaWx0ZXJWYWx1ZVRvVXJsU3RyaW5nKGZpbHRlclZhbHVlQXNBcnJheSA/PyBwYXJhbUZpbHRlci52YWx1ZSwgYWxsb3dOdWxsKX1gO1xuXG4gICAgcmV0dXJuIGAke3BhcmFtRmlsdGVyLmNhc2VTZW5zaXRpdmUgPyAnY3M6JyA6IHBhcmFtRmlsdGVyLmNhc2VTZW5zaXRpdmUgPT09IGZhbHNlID8gJ2NpOicgOiAnJ30ke0ZpbHRlck1hdGNoTW9kZS5nZXRBYmJyZXZpYXRpb24obWF0Y2hNb2RlKSA/PyBtYXRjaE1vZGV9JHt1cmxWYWx1ZVBhcnR9YDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBVUkwgcXVlcnkgcGFyYW1ldGVycyB0byBhIERhdGFMaXN0UGFyYW1zIG9iamVjdC5cbiAqIFNvcnRzIGFyZSBmb3JtYXR0ZWQgZnJvbSBNZWRpdXMgZGF0YSBBUEkgc29ydCBxdWVyeSBsYW5ndWFnZTogYGFzYzpwcm9wMSxkZXNjOnByb3AyYCwgLi4uXG4gKiBGaWx0ZXIga2V5cyBhcmUgYWxsIGtleXMgaW4gUGFyYW1zIG9iamVjdCB0aGF0IGFyZSBub3QgbWF0Y2hlZCBlbHNld2hlcmUsIHZhbHVlcyBhcmUgZm9ybWF0dGVkIGZyb20gTWVkaXVzIGRhdGEgQVBJIGZpbHRlciBxdWVyeSBsYW5ndWFnZTogYGNzOmVxOmFzZGAsIGBpbjphc2QscXdlYCwgYGV4YCwgLi4uXG4gKlxuICogQHBhcmFtIHtQYXJhbXN9IHVybFBhcmFtcyAtIFRoZSBVUkwgcXVlcnkgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSBvcHRzIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgY29udmVyc2lvbjpcbiAqICAtIHNlYXJjaEFzR2xvYmFsIC0gVGhlIFVSTCBxdWVyeSBwYXJhbWV0ZXJzLlxuICogIC0gcHJlcGVuZEZpbHRlck5hbWUgLSBGaWx0ZXIgbmFtZXMgYXJlIHByZXBlbmRlZCB3aXRoIHByb3ZpZGVkIHN0cmluZy5cbiAqIEByZXR1cm4ge0RhdGFMaXN0UGFyYW1zfSAtIFRoZSBjb252ZXJ0ZWQgRGF0YUxpc3RQYXJhbXMgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZnJvbVVybFF1ZXJ5VG9EYXRhTGlzdFBhcmFtcyhcbiAgICB1cmxQYXJhbXM6IFBhcmFtcyxcbiAgICBvcHRzPzoge1xuICAgICAgICBzZWFyY2hBc0dsb2JhbD86IGJvb2xlYW47XG4gICAgICAgIHByZXBlbmRGaWx0ZXJOYW1lPzogc3RyaW5nO1xuICAgIH1cbik6IERhdGFMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXM6IERhdGFMaXN0UGFyYW1zID0ge307XG5cbiAgICBPYmplY3QuZW50cmllcyh1cmxQYXJhbXMpLmZvckVhY2goKFt1cmxQYXJhbUtleSwgdXJsUGFyYW1WYWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKHVybFBhcmFtS2V5ID09PSAnbGltaXQnKSB7XG4gICAgICAgICAgICBwYXJhbXMubGltaXQgPSArdXJsUGFyYW1WYWx1ZTtcbiAgICAgICAgICAgIGlmIChpc05hTihwYXJhbXMubGltaXQpIHx8IHBhcmFtcy5saW1pdCA8IDApIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcGFyYW1zLmxpbWl0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHVybFBhcmFtS2V5ID09PSAnb2Zmc2V0Jykge1xuICAgICAgICAgICAgcGFyYW1zLm9mZnNldCA9ICt1cmxQYXJhbVZhbHVlO1xuICAgICAgICAgICAgaWYgKGlzTmFOKHBhcmFtcy5vZmZzZXQpIHx8IHBhcmFtcy5vZmZzZXQgPCAwKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHBhcmFtcy5vZmZzZXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodXJsUGFyYW1LZXkgPT09ICdxJykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJyAmJiB1cmxQYXJhbVZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hRdWVyeSA9IHVybFBhcmFtVmFsdWUuc3RhcnRzV2l0aCgnY3M6JykgfHwgdXJsUGFyYW1WYWx1ZS5zdGFydHNXaXRoKCdjaTonKSA/IHVybFBhcmFtVmFsdWUuc3Vic3RyaW5nKDMpIDogdXJsUGFyYW1WYWx1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjYXNlU2Vuc2l0aXZlID0gdXJsUGFyYW1WYWx1ZS5zdGFydHNXaXRoKCdjczonKTtcblxuICAgICAgICAgICAgICAgIHBhcmFtcy5zZWFyY2ggPSBzZWFyY2hRdWVyeTtcbiAgICAgICAgICAgICAgICBwYXJhbXMuc2VhcmNoQ2FzZVNlbnNpdGl2ZSA9IGNhc2VTZW5zaXRpdmU7XG5cbiAgICAgICAgICAgICAgICBpZiAob3B0cz8uc2VhcmNoQXNHbG9iYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJhbXMuZmlsdGVycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZmlsdGVyc1snZ2xvYmFsJ10gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc2VhcmNoUXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaE1vZGU6IEZpbHRlck1hdGNoTW9kZS5Db250YWlucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VTZW5zaXRpdmU6IGNhc2VTZW5zaXRpdmVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodXJsUGFyYW1LZXkgPT09ICdzb3J0Jykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5zb3J0ID0gdXJsUGFyYW1WYWx1ZS5zcGxpdCgnLCcpLm1hcChzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2RpcmVjdGlvbiwgcHJvcGVydHldID0gcy5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge3Byb3BlcnR5OiAocHJvcGVydHkgPz8gZGlyZWN0aW9uKSBhcyBrZXlvZiBvYmplY3QsIGFzY2VuZGluZzogZGlyZWN0aW9uICE9PSAnZGVzYyd9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFN0cmluZyBpcyBleHBlY3RlZCBhcyB2YWx1ZSBmb3IgJyR7dXJsUGFyYW1LZXl9JyB3aGVuIGNvbnZlcnRpbmcgZnJvbSB1cmxQYXJhbXNgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgoIW9wdHM/LnByZXBlbmRGaWx0ZXJOYW1lIHx8IHVybFBhcmFtS2V5LnN0YXJ0c1dpdGgob3B0cy5wcmVwZW5kRmlsdGVyTmFtZSkpICYmIHR5cGVvZiB1cmxQYXJhbVZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgaWYgKHVybFBhcmFtVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLy8gZW1wdHkgc3RyaW5nIHNob3VsZCBiZSBpZ25vcmVkXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJLZXkgPSBvcHRzPy5wcmVwZW5kRmlsdGVyTmFtZSA/IHVybFBhcmFtS2V5LnN1YnN0cmluZyhvcHRzLnByZXBlbmRGaWx0ZXJOYW1lLmxlbmd0aCkgOiB1cmxQYXJhbUtleTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclBhcnRzID0gdXJsUGFyYW1WYWx1ZS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgbGV0IHBhcnRJZHggPSAwO1xuXG4gICAgICAgICAgICAvLyByZW1vdmVkIGRlZmF1bHQgZmlsdGVyXG4gICAgICAgICAgICBpZiAoZmlsdGVyUGFydHNbcGFydElkeF0gPT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgIGlmICghcGFyYW1zLmZpbHRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnNbZmlsdGVyS2V5IGFzIGtleW9mIG9iamVjdF0gPSB7dmFsdWU6IG51bGx9O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gY2FzZSBzZW5zaXRpdmVcbiAgICAgICAgICAgIGxldCBjYXNlU2Vuc2l0aXZlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY3MnIHx8IGZpbHRlclBhcnRzW3BhcnRJZHhdID09PSAnY2knKSB7XG4gICAgICAgICAgICAgICAgY2FzZVNlbnNpdGl2ZSA9IGZpbHRlclBhcnRzW3BhcnRJZHgrK10gPT09ICdjcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG1hdGNoIG1vZGVcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoTW9kZSA9IGZpbHRlclBhcnRzW3BhcnRJZHhdID8gKEZpbHRlck1hdGNoTW9kZS5mcm9tQWJicmV2aWF0aW9uKGZpbHRlclBhcnRzW3BhcnRJZHhdKSA/PyBmaWx0ZXJQYXJ0c1twYXJ0SWR4XSkgOiBGaWx0ZXJNYXRjaE1vZGUuRXF1YWxzO1xuICAgICAgICAgICAgcGFydElkeCsrO1xuXG4gICAgICAgICAgICBjb25zdCBub1ZhbCA9IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkV4aXN0cyB8fCBtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5Eb2VzTm90RXhpc3Q7XG5cbiAgICAgICAgICAgIC8vIHZhbHVlXG4gICAgICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHwgbnVsbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICghbm9WYWwpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyUGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHBhcnRJZHggPT09IGZpbHRlclBhcnRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWx0ZXJQYXJ0c1twYXJ0SWR4XTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnRJZHggPCBmaWx0ZXJQYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgdGhhdCBzaG91bGQgbm90IGJlIGFycmF5LCBzbyBqb2luIGJhY2sgdG9nZXRoZXJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmaWx0ZXJQYXJ0cy5zbGljZShwYXJ0SWR4LCBmaWx0ZXJQYXJ0cy5sZW5ndGgpLmpvaW4oJzonKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiBtYXRjaE1vZGUgIT09IEZpbHRlck1hdGNoTW9kZS5FeGlzdHMgJiYgbWF0Y2hNb2RlICE9PSBGaWx0ZXJNYXRjaE1vZGUuRG9lc05vdEV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHZhbHVlIHVuZGVmaW5lZCBhbmQgbWF0Y2ggbW9kZSBleHBlY3RzIHZhbHVlLCB0aGVuIHNraXBcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoKG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkluIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLk5vdEluIHx8IG1hdGNoTW9kZSA9PT0gRmlsdGVyTWF0Y2hNb2RlLkJldHdlZW4pICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFycmF5VmFsOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGVzZSBtYXRjaCBtb2RlcyBleHBlY3QgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmluZGV4T2YoJ1wiJykgPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9rZW5zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRUb2tlbiA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV4cGxpY2l0UXVvdGVzID0gZmFsc2U7IC8vdG9rZW4gaXMgcXVvdGVkLCBlLmcuIGluOjEsMixcIjIyXCJcIlwiLFwiLDEyM1wiXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHF1b3Rlc09wZW5lZCA9IGZhbHNlOyAvL3Rva2VuIGhhcyBzdGFydGVkIHByb2Nlc3NpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBxdW90ZXNFeHBsaWNpdGx5Q2xvc2VkID0gZmFsc2U7IC8vdG9rZW4gcHJvY2Vzc2luZyBoYXMgZmluaXNoZWQsIGFmdGVyIHNpbmdsZSBcIiBpbiBxdW90ZWQgbW9kZSwgb3IgYmVmb3JlICwgaW4gbm90IHF1b3RlZFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYyA9IHZhbHVlW2ldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHRva2VuaXplciB3aGVuIHNlZWluZyB0aGUgdG9rZW4gc2VwYXJhdG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBpZiBlaXRoZXI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHF1b3RlcyBoYXZlIG5vdCBiZWVuIG9wZW5lZCB5ZXQgKHdoZW4gdGhlcmUgYXJlIG5vIGNoYXJhY3RlcnMgYmV0d2VlbiBzZXBhcmF0b3JzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgdG9rZW4gaGFzIGJlZW4gZXhwbGljaXRseSBjbG9zZWQgKHdoZW4gd2UgYWN0dWFsbHkgaGF2ZSBleHBsaWNpdCBvcGVuaW5nIGkuZS4sIHF1b3RlcyBhcyB0aGUgZmlyc3QgY2hhcmFjdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yIHdlIGhhdmUgaW1wbGljaXQgcXVvdGVzIChpLmUuLCBxdW90ZXMgYXJlIG5vdCB0aGUgZmlyc3QgY2hhcmFjdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09PSAnLCcgJiYgKCFxdW90ZXNPcGVuZWQgfHwgcXVvdGVzRXhwbGljaXRseUNsb3NlZCB8fCAhZXhwbGljaXRRdW90ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vucy5wdXNoKGN1cnJlbnRUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZXNPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzRXhwbGljaXRseUNsb3NlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdFF1b3RlcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXCInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVzY2FwZWQgZG91YmxlLXF1b3Rlc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhwbGljaXRRdW90ZXMgJiYgaSArIDEgPCB2YWx1ZS5sZW5ndGggJiYgdmFsdWVbaSArIDFdID09PSAnXCInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gKz0gYzsgLy8gQXBwZW5kIG9uZSBkb3VibGUtcXVvdGUgdG8gdGhlIGN1cnJlbnQgdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsgLy8gU2tpcCB0aGUgbmV4dCBkb3VibGUtcXVvdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBlbmNvdW50ZXIgcXVvdGVzIGFnYWluIGFmdGVyIHRoZXkgd2VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyID0+IHdlIGNsb3NlIHRoZSB0b2tlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChleHBsaWNpdFF1b3Rlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzRXhwbGljaXRseUNsb3NlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wbGljaXQgcXVvdGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHF1b3Rlc09wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuICs9IGM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcXVvdGVzIGFyZSB0aGUgZmlyc3QgY2hhcmFjdGVyID0+IGV4cGxpY2l0bHkgb3BlbiB0aGUgdG9rZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3Rlc09wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBsaWNpdFF1b3RlcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVvdGVzRXhwbGljaXRseUNsb3NlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVzT3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuICs9IGM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVvdGVzT3BlbmVkICYmICFxdW90ZXNFeHBsaWNpdGx5Q2xvc2VkICYmIGV4cGxpY2l0UXVvdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIGxhc3QgdG9rZW4gYWZ0ZXIgdGhlIGxvb3AgZW5kc1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goY3VycmVudFRva2VuLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJheVZhbCA9IHRva2VucztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5VmFsID0gdmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZS5CZXR3ZWVuICYmIGFycmF5VmFsLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBhcnJheVZhbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB8fCAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUhLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyIHdpdGggZW1wdHkgdmFsdWUgaXMgdG8gYmUgaWdub3JlZFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYXNlU2Vuc2l0aXZlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBhcmFtcy5maWx0ZXJzKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnMgPSB7fTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyYW1zLmZpbHRlcnNbZmlsdGVyS2V5IGFzIGtleW9mIG9iamVjdF0gPSB7dmFsdWU6IHZhbHVlLCBtYXRjaE1vZGU6IG1hdGNoTW9kZSwgY2FzZVNlbnNpdGl2ZTogY2FzZVNlbnNpdGl2ZX07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbi8qKlxuICogTWFrZXMgYSBjb3B5IG9mIHRoZSBnaXZlbiBEYXRhTGlzdFBhcmFtcyBvYmplY3QuXG4gKlxuICogQHBhcmFtIHtEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz59IHBhcmFtcyAtIFRoZSBEYXRhTGlzdFBhcmFtcyBvYmplY3QgdG8gYmUgY29waWVkLlxuICogQHJldHVybnMge0RhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPn0gLSBSZXR1cm5zIGEgbmV3IGNvcHkgb2YgdGhlIERhdGFMaXN0UGFyYW1zIG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHlEYXRhTGlzdFBhcmFtczxTb3J0cyA9IHN0cmluZywgRmlsdGVycyBleHRlbmRzIGtleW9mIGFueSA9IHN0cmluZz4ocGFyYW1zOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4pOiBEYXRhTGlzdFBhcmFtczxTb3J0cywgRmlsdGVycz4ge1xuICAgIGNvbnN0IGNvcHk6IERhdGFMaXN0UGFyYW1zPFNvcnRzLCBGaWx0ZXJzPiA9IHtcbiAgICAgICAgb2Zmc2V0OiBwYXJhbXMub2Zmc2V0LFxuICAgICAgICBsaW1pdDogcGFyYW1zLmxpbWl0LFxuICAgICAgICBzZWFyY2g6IHBhcmFtcy5zZWFyY2hcbiAgICB9O1xuXG4gICAgaWYgKHBhcmFtcy5zb3J0KSB7XG4gICAgICAgIGNvcHkuc29ydCA9IHBhcmFtcy5zb3J0Py5tYXAocyA9PiAoey4uLnN9KSk7XG4gICAgfVxuICAgIGlmIChwYXJhbXMuZmlsdGVycykge1xuICAgICAgICBjb3B5LmZpbHRlcnMgPSBPYmplY3QuZW50cmllcyhwYXJhbXMuZmlsdGVycykucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZSBhcyBEYXRhTGlzdEZpbHRlcjtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIFtrZXldOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmZpbHRlclZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogQXJyYXkuaXNBcnJheShmaWx0ZXJWYWx1ZS52YWx1ZSkgPyBbLi4uZmlsdGVyVmFsdWUudmFsdWVdIDogZmlsdGVyVmFsdWUudmFsdWVcbiAgICAgICAgICAgICAgICB9IGFzIERhdGFMaXN0RmlsdGVyXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCB7fSBhcyBEYXRhTGlzdEZpbHRlcnNUeXBlPEZpbHRlcnM+KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29weTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHZhbHVlIHRvIGEgVVJMIHF1ZXJ5IHBhcmFtIHN0cmluZyByZXByZXNlbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3Vua25vd259IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FsbG93TnVsbD1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciBudWxsIHZhbHVlcyBhcmUgYWxsb3dlZC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBVUkwgcGFyYW1ldGVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEB0aHJvd3Mge0NvbW1vbnNJbnRlcm5hbEVycm9yfSBJZiBhbiB1bmRlZmluZWQgdmFsdWUgaXMgcGFzc2VkIHdpdGhvdXQgYWxsb3dOdWxsIHNldCB0byB0cnVlLlxuICogQHRocm93cyB7Q29tbW9uc0ludGVybmFsRXJyb3J9IElmIHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QgKGV4Y2x1ZGluZyBEYXRlKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2YWx1ZTogdW5rbm93biwgYWxsb3dOdWxsID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCAmJiBhbGxvd051bGwpIHJldHVybiAnbnVsbCc7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignVW5kZWZpbmVkIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gdXJsIHBhcmFtLicpOyAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuLCBzaG91bGQgYmUgZmlsdGVyZWQgb3V0IGVhcmxpZXJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLm1hcCh2ID0+IGRhdGFMaXN0UGFyYW1zRmlsdGVyVmFsdWVUb1VybFN0cmluZyh2LCBhbGxvd051bGwpKVxuICAgICAgICAgICAgLm1hcCh2ID0+ICh2LmluZGV4T2YoJywnKSA+PSAwIHx8IHYuaW5kZXhPZignXCInKSA+PSAwID8gYFwiJHt2LnJlcGxhY2VBbGwoJ1wiJywgJ1wiXCInKX1cImAgOiB2KSlcbiAgICAgICAgICAgIC5qb2luKCcsJyk7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGRhdGVUb0lzb1N0cmluZyh2YWx1ZSwgJ2RhdGVUaW1lJywge3V0YzogdHJ1ZX0pO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignRmlsdGVyIHZhbHVlIGNhbm5vdCBiZSBvYmplY3QnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL2Rlc2NyaXB0b3JzL3RhYmxlLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SUNvbHVtbkRlc2NyaXB0b3J9IGZyb20gJy4vY29sdW1uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtJRmlsdGVyRGVzY3JpcHRvcn0gZnJvbSAnLi9maWx0ZXIuZGVzY3JpcHRvcic7XG5pbXBvcnQge0lNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4vbW9kZWwuZGVzY3JpcHRvcic7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlRGVzY3JpcHRvcjxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4ge1xuICAgIG1vZGVsOiBJTW9kZWxEZXNjcmlwdG9yPFRhYmxlTW9kZWw+O1xuXG4gICAgd2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGFzY2VuZGluZz86IGJvb2xlYW4sIGVuYWJsZWQ/OiBib29sZWFuKTogdGhpcztcblxuICAgIHdpdGhTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGlzRGVmYXVsdDogYm9vbGVhbiwgYXNjZW5kaW5nPzogYm9vbGVhbik6IHRoaXM7XG5cbiAgICB3aXRoRGVmYXVsdFNvcnRzKC4uLnByb3BlcnRpZXM6IFNvcnRzW10pOiB0aGlzO1xuXG4gICAgd2l0aG91dERlZmF1bHRTb3J0cygpOiB0aGlzO1xuXG4gICAgYWRkRmlsdGVyRnJvbUNvbHVtbkRlc2NyaXB0b3JVbnNhZmU8RmlsdGVyTW9kZWw+KGNvbHVtbjogSUNvbHVtbkRlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWwsIGFueT4sIGZvcmNlU2ltcGxlOiBib29sZWFuKTogSUZpbHRlckRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPjtcbn1cbiJdfQ==
|
|
@@ -47,10 +47,10 @@ export class ComponentDirective {
|
|
|
47
47
|
}
|
|
48
48
|
this.componentInstanceEventEmitter.next(this.componentRef.instance);
|
|
49
49
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
51
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComponentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
51
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: ComponentDirective, isStandalone: true, selector: "[mngComponent]", inputs: { component: ["mngComponent", "component"], componentIt: ["injectionToken", "componentIt"], inputs: "inputs", attachToHost: "attachToHost", parentInjector: "parentInjector" }, outputs: { componentInstanceEventEmitter: "instanceCreated" }, ngImport: i0 }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ComponentDirective, decorators: [{
|
|
54
54
|
type: Directive,
|
|
55
55
|
args: [{
|
|
56
56
|
standalone: true,
|
|
@@ -72,4 +72,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
72
72
|
type: Output,
|
|
73
73
|
args: ['instanceCreated']
|
|
74
74
|
}] } });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL2RpcmVjdGl2ZXMvY29tcG9uZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsY0FBYyxFQUVkLFNBQVMsRUFDVCxVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLFlBQVksRUFDWixjQUFjLEVBQ2QsUUFBUSxFQUNSLEtBQUssRUFFTCxNQUFNLEVBQ04sSUFBSSxFQUNKLGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsTUFBTSxFQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDOztBQU0xRCxNQUFNLE9BQU8sa0JBQWtCO0lBSi9CO1FBS3FCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUtwRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUVLLGtDQUE2QixHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7S0E2QzVGO0lBekNHLFFBQVE7UUFDSixJQUFJLFNBQVMsR0FBbUIsSUFBSSxDQUFDO1FBQ3JDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pCLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQy9CLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMxQixTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLG9CQUFvQixDQUFDLDhDQUE4QyxJQUFJLENBQUMsU0FBUyxnREFBZ0QsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDckssQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3RCxNQUFNLG1CQUFtQixHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFFN0gsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsU0FBUyxFQUFFO2dCQUMzQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhO2dCQUMxQyxtQkFBbUIsRUFBRSxtQkFBbUI7Z0JBQ3hDLGVBQWUsRUFBRSxlQUFlO2FBQ25DLENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBTSxTQUFTLEVBQUU7Z0JBQ3RFLG1CQUFtQixFQUFFLG1CQUFtQjtnQkFDeEMsUUFBUSxFQUFFLGVBQWU7YUFDNUIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDMUQsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDeEUsQ0FBQzsrR0F2RFEsa0JBQWtCO21HQUFsQixrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzdCOzhCQU9tQyxTQUFTO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBQztnQkFDSSxXQUFXO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFDO2dCQUN2QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUM2Qiw2QkFBNkI7c0JBQS9ELE1BQU07dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBcHBsaWNhdGlvblJlZixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBUeXBlLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgY3JlYXRlQ29tcG9uZW50LFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtDb21tb25zSW50ZXJuYWxFcnJvcn0gZnJvbSAnLi4vZXJyb3IvZXJyb3IubW9kZWwnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW21uZ0NvbXBvbmVudF0nXG59KVxuZXhwb3J0IGNsYXNzIENvbXBvbmVudERpcmVjdGl2ZTxDPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwbGljYXRpb25SZWYgPSBpbmplY3QoQXBwbGljYXRpb25SZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICAgIEBJbnB1dCh7YWxpYXM6ICdtbmdDb21wb25lbnQnfSkgY29tcG9uZW50PzogVHlwZTxDPjtcbiAgICBASW5wdXQoe2FsaWFzOiAnaW5qZWN0aW9uVG9rZW4nfSkgY29tcG9uZW50SXQ/OiBJbmplY3Rpb25Ub2tlbjxUeXBlPEM+PjtcbiAgICBASW5wdXQoKSBpbnB1dHM/OiB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgICBASW5wdXQoKSBhdHRhY2hUb0hvc3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwYXJlbnRJbmplY3Rvcj86IEluamVjdG9yO1xuICAgIEBPdXRwdXQoJ2luc3RhbmNlQ3JlYXRlZCcpIHByaXZhdGUgY29tcG9uZW50SW5zdGFuY2VFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEM+KCk7XG5cbiAgICBwdWJsaWMgY29tcG9uZW50UmVmITogQ29tcG9uZW50UmVmPEM+O1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGxldCBjb21wb25lbnQ6IFR5cGU8Qz4gfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbXBvbmVudEl0KSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmNvbXBvbmVudEl0LCBudWxsLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYENvbXBvbmVudCBjYW5ub3QgYmUgY3JlYXRlZCwgbm8gY29tcG9uZW50ICgke3RoaXMuY29tcG9uZW50fSkgb3Igbm8gb3IgaW52YWxpZCBpbmplY3Rpb24gdG9rZW4gcHJvdmlkZWQgKCR7dGhpcy5jb21wb25lbnRJdH0pLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZWxlbWVudEluamVjdG9yID0gdGhpcy5wYXJlbnRJbmplY3RvciA/PyB0aGlzLmluamVjdG9yO1xuICAgICAgICBjb25zdCBlbnZpcm9ubWVudEluamVjdG9yID0gZWxlbWVudEluamVjdG9yLmdldChFbnZpcm9ubWVudEluamVjdG9yLCBudWxsLCB7b3B0aW9uYWw6IHRydWV9KSA/PyB0aGlzLmFwcGxpY2F0aW9uUmVmLmluamVjdG9yO1xuXG4gICAgICAgIGlmICh0aGlzLmF0dGFjaFRvSG9zdCkge1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYgPSBjcmVhdGVDb21wb25lbnQoY29tcG9uZW50LCB7XG4gICAgICAgICAgICAgICAgaG9zdEVsZW1lbnQ6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIGVudmlyb25tZW50SW5qZWN0b3I6IGVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgICAgICAgICAgICAgZWxlbWVudEluamVjdG9yOiBlbGVtZW50SW5qZWN0b3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8YW55Pihjb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudEluamVjdG9yOiBlbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgICAgICAgIGluamVjdG9yOiBlbGVtZW50SW5qZWN0b3JcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlucHV0IGluIHRoaXMuaW5wdXRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoaW5wdXQsIHRoaXMuaW5wdXRzW2lucHV0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hdHRhY2hUb0hvc3QpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25SZWYuYXR0YWNoVmlldyh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNvbXBvbmVudEluc3RhbmNlRXZlbnRFbWl0dGVyLm5leHQodGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Directive, TemplateRef, ViewContainerRef, effect, inject, input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class RerenderDirective {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.templateRef = inject((TemplateRef));
|
|
6
|
+
this.viewContainerRef = inject(ViewContainerRef);
|
|
7
|
+
this.mngRerender = input.required();
|
|
8
|
+
effect(() => {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
10
|
+
const doRerender = this.mngRerender();
|
|
11
|
+
this.viewContainerRef.clear();
|
|
12
|
+
this.viewContainerRef.createEmbeddedView(this.templateRef);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: RerenderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
16
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.12", type: RerenderDirective, isStandalone: true, selector: "[mngRerender]", inputs: { mngRerender: { classPropertyName: "mngRerender", publicName: "mngRerender", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: RerenderDirective, decorators: [{
|
|
19
|
+
type: Directive,
|
|
20
|
+
args: [{
|
|
21
|
+
standalone: true,
|
|
22
|
+
selector: '[mngRerender]'
|
|
23
|
+
}]
|
|
24
|
+
}], ctorParameters: () => [] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVyZW5kZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGlyZWN0aXZlcy9yZXJlbmRlci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBTTlGLE1BQU0sT0FBTyxpQkFBaUI7SUFNMUI7UUFMaUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQSxXQUFvQixDQUFBLENBQUMsQ0FBQztRQUMzQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU3RCxnQkFBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUczQixNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1IsNkRBQTZEO1lBQzdELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBYlEsaUJBQWlCO21HQUFqQixpQkFBaUI7OzRGQUFqQixpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxlQUFlO2lCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgZWZmZWN0LCBpbmplY3QsIGlucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ1ttbmdSZXJlbmRlcl0nXG59KVxuZXhwb3J0IGNsYXNzIFJlcmVuZGVyRGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPHVua25vd24+KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgICBtbmdSZXJlbmRlciA9IGlucHV0LnJlcXVpcmVkKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICAgIGNvbnN0IGRvUmVyZW5kZXIgPSB0aGlzLm1uZ1JlcmVuZGVyKCk7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -11,10 +11,10 @@ export class TemplateDirective {
|
|
|
11
11
|
getViewContainerRef() {
|
|
12
12
|
return this.viewContainerRef;
|
|
13
13
|
}
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
15
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.12", type: TemplateDirective, isStandalone: true, selector: "[mngTemplate]", inputs: { type: "type", name: ["mngTemplate", "name"] }, ngImport: i0 }); }
|
|
16
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TemplateDirective, decorators: [{
|
|
18
18
|
type: Directive,
|
|
19
19
|
args: [{
|
|
20
20
|
standalone: true,
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
26
26
|
type: Input,
|
|
27
27
|
args: [{ required: true, alias: 'mngTemplate' }]
|
|
28
28
|
}] } });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvZGlyZWN0aXZlcy90ZW1wbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFNdEYsTUFBTSxPQUFPLGlCQUFpQjtJQUo5QjtRQUtvQixhQUFRLEdBQUcsTUFBTSxDQUFDLENBQUEsV0FBZ0IsQ0FBQSxDQUFDLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FZaEU7SUFQVSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxtQkFBbUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQzsrR0FiUSxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLGVBQWU7aUJBQzVCOzhCQUtZLElBQUk7c0JBQVosS0FBSztnQkFDeUMsSUFBSTtzQkFBbEQsS0FBSzt1QkFBQyxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYsIGluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdbbW5nVGVtcGxhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gICAgcHVibGljIHJlYWRvbmx5IHRlbXBsYXRlID0gaW5qZWN0KFRlbXBsYXRlUmVmPGFueT4pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdmlld0NvbnRhaW5lclJlZiA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICAgIEBJbnB1dCgpIHR5cGUhOiBzdHJpbmc7XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZSwgYWxpYXM6ICdtbmdUZW1wbGF0ZSd9KSBuYW1lITogc3RyaW5nO1xuXG4gICAgcHVibGljIGdldFR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Vmlld0NvbnRhaW5lclJlZigpOiBWaWV3Q29udGFpbmVyUmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRhaW5lclJlZjtcbiAgICB9XG59XG4iXX0=
|
package/esm2022/core/index.mjs
CHANGED
|
@@ -26,6 +26,7 @@ export * from './descriptors/table.descriptor';
|
|
|
26
26
|
export * from './descriptors/tableview.descriptor';
|
|
27
27
|
// directives
|
|
28
28
|
export * from './directives/component.directive';
|
|
29
|
+
export * from './directives/rerender.directive';
|
|
29
30
|
export * from './directives/template.directive';
|
|
30
31
|
// enums
|
|
31
32
|
export * from './enum/enum.model';
|
|
@@ -71,6 +72,8 @@ export * from './pipes/i18n-property.pipe';
|
|
|
71
72
|
export * from './pipes/json-path.pipe';
|
|
72
73
|
export * from './pipes/parametrize.pipe';
|
|
73
74
|
export * from './pipes/template.pipe';
|
|
75
|
+
// reactivity
|
|
76
|
+
export * from './reactivity/effect';
|
|
74
77
|
// reflect
|
|
75
78
|
export * from './reflect/type-enum-decorator';
|
|
76
79
|
export * from './reflect/type-enum-metadata';
|
|
@@ -104,4 +107,4 @@ export * from './styles/style.model';
|
|
|
104
107
|
export * from './styles/style-constants';
|
|
105
108
|
// provide
|
|
106
109
|
export * from './provide';
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTO0FBQ1QsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGFBQWE7QUFDYixjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyx1REFBdUQsQ0FBQztBQUV0RSxZQUFZO0FBQ1osY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxpQkFBaUI7QUFDakIsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsY0FBYztBQUNkLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELGFBQWE7QUFDYixjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxRQUFRO0FBQ1IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLFFBQVE7QUFDUixjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUM7QUFFcEMsT0FBTztBQUNQLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGtCQUFrQixDQUFDO0FBRWpDLE1BQU07QUFDTixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxTQUFTO0FBQ1QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxRQUFRO0FBQ1IsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxhQUFhO0FBQ2IsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxVQUFVO0FBQ1YsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLFdBQVc7QUFDWCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsU0FBUztBQUNULGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLE9BQU87QUFDUCxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELFdBQVc7QUFDWCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLFdBQVc7QUFDWCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELFNBQVM7QUFDVCxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUM7QUFFekMsVUFBVTtBQUNWLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYWN0aW9uXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9hY3Rpb24tZGF0YS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9hY3Rpb24tcGFyYW1ldGVycy5tb2RlbCc7XG5cbi8vIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLXdyYXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9wYWdlcy9lcnJvci9lcnJvci5wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcGFnZXMvbm90LWZvdW5kL25vdC1mb3VuZC5wYWdlLmNvbXBvbmVudCc7XG5cbi8vIGRhdGEtbGlzdFxuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWxpc3QvZGF0YS1saXN0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1saXN0L2RhdGEtbGlzdC1wYXJhbXMtaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGEtbGlzdC9maWx0ZXItbWF0Y2gubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLWxpc3QvZmlsdGVyLW1ldGFkYXRhLm1vZGVsJztcblxuLy8gZGF0YS1wcm92aWRlcnNcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1wcm92aWRlcnMvYmFzZS5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1wcm92aWRlcnMvYmFzZS1kYXRhLXByb3ZpZGVyLmZhY3RvcnknO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLXByb3ZpZGVycy9sb29rdXAuZGF0YS1wcm92aWRlcic7XG5cbi8vIGRlc2NyaXB0b3JzXG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvY29sdW1uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9lZGl0b3IuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL2VudW0uZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL2ZpbHRlci5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvbG9va3VwLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9kZXNjcmlwdG9ycy9tb2RlbC5kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZGVzY3JpcHRvcnMvdGFibGUuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL2Rlc2NyaXB0b3JzL3RhYmxldmlldy5kZXNjcmlwdG9yJztcblxuLy8gZGlyZWN0aXZlc1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2NvbXBvbmVudC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL3JlcmVuZGVyLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMvdGVtcGxhdGUuZGlyZWN0aXZlJztcblxuLy8gZW51bXNcbmV4cG9ydCAqIGZyb20gJy4vZW51bS9lbnVtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vZW51bS9lbnVtLWhlbHBlcnMnO1xuXG4vLyBlcnJvclxuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9lcnJvci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2Vycm9yL2Vycm9yLWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvci9lcnJvci1oZWxwZXJzJztcblxuLy8gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL2NvZXJjaW9uJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9kYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL251bWJlcic7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvb2JqZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9yb3V0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2hlbHBlcnMvc3RyaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy90eXBlLWhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9oZWxwZXJzL3RlbXBsYXRlcyc7XG5cbi8vIGkxOG5cbmV4cG9ydCAqIGZyb20gJy4vaTE4bi9pMThuLWNvbW1vbic7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4vaTE4bi1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2kxOG4vaTE4bi10eXBlJztcblxuLy8gbG9nXG5leHBvcnQgKiBmcm9tICcuL2xvZy9sb2cubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2cvbG9nLXB1Ymxpc2hlci1jb25zb2xlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2cvbG9nZ2VyLnNlcnZpY2UnO1xuXG4vLyBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2NsYXNzLWF0dHJpYnV0ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9jbGFzcy1zZXJ2aWNlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL2dldHRlci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9pMThuLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kZWxzL21lbnUubW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvdXNlci5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL21vZGVscy92ZXJzaW9uLm1vZGVsJztcblxuLy8gcGlwZXNcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvYm9vbGVhbi5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvY2xhc3MtbWFwLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9lbnVtLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9lbnVtZXJhdGUucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL2VudW1lcmF0ZS1hc3luYy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvZ2V0dGVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9pMThuLXByb3BlcnR5LnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9qc29uLXBhdGgucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3BpcGVzL3BhcmFtZXRyaXplLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy90ZW1wbGF0ZS5waXBlJztcblxuLy8gcmVhY3Rpdml0eVxuZXhwb3J0ICogZnJvbSAnLi9yZWFjdGl2aXR5L2VmZmVjdCc7XG5cbi8vIHJlZmxlY3RcbmV4cG9ydCAqIGZyb20gJy4vcmVmbGVjdC90eXBlLWVudW0tZGVjb3JhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vcmVmbGVjdC90eXBlLWVudW0tbWV0YWRhdGEnO1xuXG4vLyByZWdpc3RyeVxuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3RyeS9yZWdpc3RyeS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdHJ5L3R5cGUtcmVnaXN0cnknO1xuXG4vLyByb3V0ZXJcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyL3JvdXRlLWJ1aWxkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0ZXIvcm91dGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyL3JvdXRlcy1idWlsZGVyJztcblxuLy8gcnhqc1xuZXhwb3J0ICogZnJvbSAnLi9yeGpzL21hcC1kYXRhLWxpc3QtcmVzdWx0LW9wZXJhdG9yJztcblxuLy8gc2VjdXJpdHlcbmV4cG9ydCAqIGZyb20gJy4vc2VjdXJpdHkvcGVybWlzc2lvbi5ndWFyZCc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb24taGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL3NlY3VyaXR5L3Blcm1pc3Npb25zLm1vZGVsJztcblxuLy8gc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvcHJvdmlkZXJzL2NvbW1vbnMtaW5pdC5wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3Rva2Vucy9icm93c2VyLXN0b3JhZ2UudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvY29tbW9ucy1pbml0LnRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvdG9rZW5zL2xvZy1wdWJsaXNoZXIudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy90b2tlbnMvbW9kdWxlLWNvbmZpZy50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2NvbW1vbnMtY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1pbml0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9jb21tb25zLXJvdXRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvY29tbW9ucy1zdG9yYWdlLnNlcnZpY2UnO1xuXG4vLyBzdHlsZXNcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGVzL3N0eWxlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc3R5bGVzL3N0eWxlLWNvbnN0YW50cyc7XG5cbi8vIHByb3ZpZGVcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZSc7XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL21vZGVscy92ZXJzaW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBWZXJzaW9uQ29uZmlnVHlwZSA9IFZlcnNpb25Db25maWcgfCBWZXJzaW9uSW5mbyB8IHN0cmluZyB8IEFycmF5PFZlcnNpb25Db25maWc+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL21vZGVscy92ZXJzaW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBWZXJzaW9uQ29uZmlnVHlwZSA9IFZlcnNpb25Db25maWcgfCBWZXJzaW9uSW5mbyB8IHN0cmluZyB8IEFycmF5PFZlcnNpb25Db25maWc+IHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBWZXJzaW9uQ29uZmlnID0ge1xuICAgIHNvdXJjZTogJ2luZm8nIHwgJ2h0dHBSZXNvdXJjZScgfCAnY29uZmlnJztcbiAgICBkaXNwbGF5TmFtZT86IHN0cmluZztcbn0gJiAoVmVyc2lvbkNvbmZpZ0Zyb21JbmZvIHwgVmVyc2lvbkNvbmZpZ0Zyb21IdHRwUmVzb3VyY2UgfCBWZXJzaW9uQ29uZmlnRnJvbUNvbmZpZ3VyYXRpb24pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25Db25maWdGcm9tSW5mbyB7XG4gICAgc291cmNlOiAnaW5mbyc7XG4gICAgaW5mbzogVmVyc2lvbkluZm8gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbkNvbmZpZ0Zyb21IdHRwUmVzb3VyY2Uge1xuICAgIHNvdXJjZTogJ2h0dHBSZXNvdXJjZSc7XG4gICAgdXJsUGF0aDogc3RyaW5nO1xuICAgIHVybEJhc2VDb25maWdLZXk/OiBzdHJpbmc7XG4gICAgaW5mb0pzb25QYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25Db25maWdGcm9tQ29uZmlndXJhdGlvbiB7XG4gICAgc291cmNlOiAnY29uZmlnJztcbiAgICBjb25maWdLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uSW5mbyB7XG4gICAgc291cmNlPzogdW5kZWZpbmVkO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgIHRhZzogc3RyaW5nIHwgbnVsbDtcbiAgICBkaXN0YW5jZTogbnVtYmVyIHwgbnVsbDtcbiAgICBoYXNoOiBzdHJpbmcgfCBudWxsO1xuICAgIGRpcnR5OiBib29sZWFuO1xuICAgIHNlbXZlcjogc3RyaW5nIHwgbnVsbDtcbiAgICByYXc6IHN0cmluZztcbiAgICBidWlsZFRpbWVzdGFtcDogbnVtYmVyIHwgbnVsbDtcbn1cbiJdfQ==
|
|
@@ -10,20 +10,20 @@ export class BooleanPipe {
|
|
|
10
10
|
}
|
|
11
11
|
if (typeof value === 'boolean') {
|
|
12
12
|
if (icon) {
|
|
13
|
-
return value ? yes ?? 'pi pi-check' : no ?? 'pi pi-times';
|
|
13
|
+
return value ? (yes ?? 'pi pi-check') : (no ?? 'pi pi-times');
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
16
|
-
return value ? yes ?? 'general.yes' : no ?? 'general.no';
|
|
16
|
+
return value ? (yes ?? 'general.yes') : (no ?? 'general.no');
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
20
|
return value;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
24
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.
|
|
23
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BooleanPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
24
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: BooleanPipe, isStandalone: true, name: "mngBoolean" }); }
|
|
25
25
|
}
|
|
26
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BooleanPipe, decorators: [{
|
|
27
27
|
type: Pipe,
|
|
28
28
|
args: [{
|
|
29
29
|
standalone: true,
|
|
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
31
31
|
pure: true
|
|
32
32
|
}]
|
|
33
33
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvcGlwZXMvYm9vbGVhbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDOztBQU9sRCxNQUFNLE9BQU8sV0FBVztJQUNwQixTQUFTLENBQUMsS0FBVSxFQUFFLEdBQVksRUFBRSxFQUFXLEVBQUUsSUFBSSxHQUFHLEtBQUs7UUFDekQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixLQUFLLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQztRQUMzQyxDQUFDO2FBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNuQyxLQUFLLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksYUFBYSxDQUFDLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksWUFBWSxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztJQUNMLENBQUM7K0dBaEJRLFdBQVc7NkdBQVgsV0FBVzs7NEZBQVgsV0FBVztrQkFMdkIsSUFBSTttQkFBQztvQkFDRixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxJQUFJO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ21uZ0Jvb2xlYW4nLFxuICAgIHB1cmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQm9vbGVhblBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgaWNvbiA9IGZhbHNlKTogYW55IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPT09IDE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBpZiAoaWNvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/ICh5ZXMgPz8gJ3BpIHBpLWNoZWNrJykgOiAobm8gPz8gJ3BpIHBpLXRpbWVzJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/ICh5ZXMgPz8gJ2dlbmVyYWwueWVzJykgOiAobm8gPz8gJ2dlbmVyYWwubm8nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -9,10 +9,10 @@ export class ClassMapPipe {
|
|
|
9
9
|
return className ?? '';
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.
|
|
13
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ClassMapPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
13
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: ClassMapPipe, isStandalone: true, name: "mngClassMap" }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: ClassMapPipe, decorators: [{
|
|
16
16
|
type: Pipe,
|
|
17
17
|
args: [{
|
|
18
18
|
standalone: true,
|
|
@@ -20,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
|
|
|
20
20
|
pure: true
|
|
21
21
|
}]
|
|
22
22
|
}] });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MtbWFwLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9waXBlcy9jbGFzcy1tYXAucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFnQixNQUFNLGVBQWUsQ0FBQzs7QUFPbEQsTUFBTSxPQUFPLFlBQVk7SUFDckIsU0FBUyxDQUFDLFNBQWtCLEVBQUUsY0FBeUQsRUFBRSxJQUFRO1FBQzdGLElBQUksY0FBYyxJQUFJLE9BQU8sY0FBYyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3pELE9BQU8sY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0wsQ0FBQzsrR0FQUSxZQUFZOzZHQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBTHhCLElBQUk7bUJBQUM7b0JBQ0YsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRSxhQUFhO29CQUNuQixJQUFJLEVBQUUsSUFBSTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdtbmdDbGFzc01hcCcsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBDbGFzc01hcFBpcGU8VD4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oY2xhc3NOYW1lPzogc3RyaW5nLCBjbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUKSA9PiBzdHJpbmcsIGl0ZW0/OiBUKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGNsYXNzTmFtZU1hcEZuICYmIHR5cGVvZiBjbGFzc05hbWVNYXBGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzTmFtZU1hcEZuKGNsYXNzTmFtZSwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gY2xhc3NOYW1lID8/ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|